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 */
|
/* widgets */
|
||||||
GtkWidget * widget;
|
GtkWidget * widget;
|
||||||
GtkWidget * name;
|
GtkWidget * name;
|
||||||
|
GtkWidget * toolbar;
|
||||||
GtkWidget * open;
|
GtkWidget * open;
|
||||||
GtkWidget * edit;
|
GtkWidget * edit;
|
||||||
GtkWidget * view_image;
|
GtkWidget * view_image;
|
||||||
|
@ -83,7 +84,6 @@ static Preview * _preview_init(BrowserPluginHelper * helper)
|
||||||
{
|
{
|
||||||
Preview * preview;
|
Preview * preview;
|
||||||
PangoFontDescription * font;
|
PangoFontDescription * font;
|
||||||
GtkSizeGroup * group;
|
|
||||||
GtkWidget * vbox;
|
GtkWidget * vbox;
|
||||||
GtkWidget * widget;
|
GtkWidget * widget;
|
||||||
|
|
||||||
|
@ -93,9 +93,23 @@ static Preview * _preview_init(BrowserPluginHelper * helper)
|
||||||
preview->path = NULL;
|
preview->path = NULL;
|
||||||
preview->source = 0;
|
preview->source = 0;
|
||||||
/* widgets */
|
/* widgets */
|
||||||
group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
|
|
||||||
vbox = gtk_vbox_new(FALSE, 4);
|
vbox = gtk_vbox_new(FALSE, 4);
|
||||||
preview->widget = vbox;
|
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 */
|
/* name */
|
||||||
preview->name = gtk_label_new(NULL);
|
preview->name = gtk_label_new(NULL);
|
||||||
gtk_label_set_ellipsize(GTK_LABEL(preview->name),
|
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);
|
gtk_widget_modify_font(preview->name, font);
|
||||||
pango_font_description_free(font);
|
pango_font_description_free(font);
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), preview->name, FALSE, TRUE, 0);
|
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 */
|
/* image */
|
||||||
preview->view_image = gtk_image_new();
|
preview->view_image = gtk_image_new();
|
||||||
gtk_widget_set_no_show_all(preview->view_image, TRUE);
|
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;
|
char * path = (selection != NULL) ? selection->data : NULL;
|
||||||
Mime * mime = preview->helper->get_mime(preview->helper->browser);
|
Mime * mime = preview->helper->get_mime(preview->helper->browser);
|
||||||
char const image[] = "image/";
|
char const image[6] = "image/";
|
||||||
char const text[] = "text/";
|
char const text[5] = "text/";
|
||||||
char const * types[] = { "application/x-perl",
|
char const * types[] = { "application/x-perl",
|
||||||
"application/x-shellscript",
|
"application/x-shellscript",
|
||||||
"application/xml",
|
"application/xml",
|
||||||
|
@ -192,9 +191,9 @@ static void _preview_refresh(Preview * preview, GList * selection)
|
||||||
if((type = mime_type(mime, path)) == NULL)
|
if((type = mime_type(mime, path)) == NULL)
|
||||||
return;
|
return;
|
||||||
_refresh_mime(preview, mime, type);
|
_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);
|
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);
|
preview->source = g_idle_add(_preview_on_idle_text, preview);
|
||||||
else
|
else
|
||||||
for(i = 0; i < sizeof(types) / sizeof(*types); i++)
|
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)
|
static void _refresh_mime(Preview * preview, Mime * mime, char const * type)
|
||||||
{
|
{
|
||||||
if(mime_get_handler(mime, type, "open") != NULL)
|
if(mime_get_handler(mime, type, "open") != NULL)
|
||||||
|
{
|
||||||
|
gtk_widget_show(preview->toolbar);
|
||||||
gtk_widget_show(preview->open);
|
gtk_widget_show(preview->open);
|
||||||
|
}
|
||||||
if(mime_get_handler(mime, type, "edit") != NULL)
|
if(mime_get_handler(mime, type, "edit") != NULL)
|
||||||
|
{
|
||||||
|
gtk_widget_show(preview->toolbar);
|
||||||
gtk_widget_show(preview->edit);
|
gtk_widget_show(preview->edit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _refresh_name(Preview * preview, char const * path)
|
static int _refresh_name(Preview * preview, char const * path)
|
||||||
|
@ -233,6 +238,7 @@ static void _refresh_reset(Preview * preview)
|
||||||
if(preview->source != 0)
|
if(preview->source != 0)
|
||||||
g_source_remove(preview->source);
|
g_source_remove(preview->source);
|
||||||
preview->source = 0;
|
preview->source = 0;
|
||||||
|
gtk_widget_hide(preview->toolbar);
|
||||||
gtk_widget_hide(preview->open);
|
gtk_widget_hide(preview->open);
|
||||||
gtk_widget_hide(preview->edit);
|
gtk_widget_hide(preview->edit);
|
||||||
gtk_widget_hide(preview->view_image);
|
gtk_widget_hide(preview->view_image);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user