diff --git a/src/plugins/preview.c b/src/plugins/preview.c index 2dbfdd9..13fb3d3 100644 --- a/src/plugins/preview.c +++ b/src/plugins/preview.c @@ -40,6 +40,7 @@ typedef struct _BrowserPlugin /* widgets */ GtkWidget * widget; GtkWidget * name; + GtkWidget * toolbar; GtkWidget * open; GtkWidget * edit; GtkWidget * view_image; @@ -83,7 +84,6 @@ static Preview * _preview_init(BrowserPluginHelper * helper) { Preview * preview; PangoFontDescription * font; - GtkSizeGroup * group; GtkWidget * vbox; GtkWidget * widget; @@ -93,9 +93,23 @@ static Preview * _preview_init(BrowserPluginHelper * helper) preview->path = NULL; preview->source = 0; /* widgets */ - group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); vbox = gtk_vbox_new(FALSE, 4); preview->widget = vbox; + /* toolbar */ + preview->toolbar = gtk_toolbar_new(); + gtk_widget_set_no_show_all(preview->toolbar, TRUE); + /* mime */ + preview->open = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN); + g_signal_connect_swapped(preview->open, "clicked", G_CALLBACK( + _preview_on_open), preview); + gtk_toolbar_insert(GTK_TOOLBAR(preview->toolbar), + GTK_TOOL_ITEM(preview->open), -1); + preview->edit = gtk_tool_button_new_from_stock(GTK_STOCK_EDIT); + g_signal_connect_swapped(preview->edit, "clicked", G_CALLBACK( + _preview_on_edit), preview); + gtk_toolbar_insert(GTK_TOOLBAR(preview->toolbar), + GTK_TOOL_ITEM(preview->edit), -1); + gtk_box_pack_start(GTK_BOX(vbox), preview->toolbar, FALSE, TRUE, 0); /* name */ preview->name = gtk_label_new(NULL); gtk_label_set_ellipsize(GTK_LABEL(preview->name), @@ -106,21 +120,6 @@ static Preview * _preview_init(BrowserPluginHelper * helper) gtk_widget_modify_font(preview->name, font); pango_font_description_free(font); gtk_box_pack_start(GTK_BOX(vbox), preview->name, FALSE, TRUE, 0); - /* mime */ - widget = gtk_hbox_new(FALSE, 4); - preview->open = gtk_button_new_from_stock(GTK_STOCK_OPEN); - gtk_size_group_add_widget(group, preview->open); - g_signal_connect_swapped(preview->open, "clicked", G_CALLBACK( - _preview_on_open), preview); - gtk_box_pack_start(GTK_BOX(widget), preview->open, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0); - widget = gtk_hbox_new(FALSE, 4); - preview->edit = gtk_button_new_from_stock(GTK_STOCK_EDIT); - gtk_size_group_add_widget(group, preview->edit); - g_signal_connect_swapped(preview->edit, "clicked", G_CALLBACK( - _preview_on_edit), preview); - gtk_box_pack_start(GTK_BOX(widget), preview->edit, FALSE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0); /* image */ preview->view_image = gtk_image_new(); gtk_widget_set_no_show_all(preview->view_image, TRUE); @@ -175,8 +174,8 @@ static void _preview_refresh(Preview * preview, GList * selection) { char * path = (selection != NULL) ? selection->data : NULL; Mime * mime = preview->helper->get_mime(preview->helper->browser); - char const image[] = "image/"; - char const text[] = "text/"; + char const image[6] = "image/"; + char const text[5] = "text/"; char const * types[] = { "application/x-perl", "application/x-shellscript", "application/xml", @@ -192,9 +191,9 @@ static void _preview_refresh(Preview * preview, GList * selection) if((type = mime_type(mime, path)) == NULL) return; _refresh_mime(preview, mime, type); - if(strncmp(type, image, sizeof(image) - 1) == 0) + if(strncmp(type, image, sizeof(image)) == 0) preview->source = g_idle_add(_preview_on_idle_image, preview); - else if(strncmp(type, text, sizeof(text) - 1) == 0) + else if(strncmp(type, text, sizeof(text)) == 0) preview->source = g_idle_add(_preview_on_idle_text, preview); else for(i = 0; i < sizeof(types) / sizeof(*types); i++) @@ -209,9 +208,15 @@ static void _preview_refresh(Preview * preview, GList * selection) static void _refresh_mime(Preview * preview, Mime * mime, char const * type) { if(mime_get_handler(mime, type, "open") != NULL) + { + gtk_widget_show(preview->toolbar); gtk_widget_show(preview->open); + } if(mime_get_handler(mime, type, "edit") != NULL) + { + gtk_widget_show(preview->toolbar); gtk_widget_show(preview->edit); + } } static int _refresh_name(Preview * preview, char const * path) @@ -233,6 +238,7 @@ static void _refresh_reset(Preview * preview) if(preview->source != 0) g_source_remove(preview->source); preview->source = 0; + gtk_widget_hide(preview->toolbar); gtk_widget_hide(preview->open); gtk_widget_hide(preview->edit); gtk_widget_hide(preview->view_image);