Using a toolbar to list the actions available
This commit is contained in:
parent
afa9a153e7
commit
c0119f7034
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user