⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 layout_util.c

📁 Gqview,Linux下基于GTK+库写成的轻量级而能丰富的图像浏览程序。
💻 C
📖 第 1 页 / 共 3 页
字号:
}GtkWidget *layout_actions_menu_bar(LayoutWindow *lw){	return gtk_ui_manager_get_widget(lw->ui_manager, "/MainMenu");}/* *----------------------------------------------------------------------------- * toolbar *----------------------------------------------------------------------------- */ static void layout_button_thumb_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	layout_thumb_set(lw, gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(widget)));}static void layout_button_home_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	const gchar *path = homedir();	if (path) layout_set_path(lw, path);}static void layout_button_refresh_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	layout_refresh(lw);}static void layout_button_zoom_in_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	layout_image_zoom_adjust(lw, get_zoom_increment());}static void layout_button_zoom_out_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	layout_image_zoom_adjust(lw, -get_zoom_increment());}static void layout_button_zoom_fit_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	layout_image_zoom_set(lw, 0.0);}static void layout_button_zoom_1_1_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	layout_image_zoom_set(lw, 1.0);}static void layout_button_config_cb(GtkWidget *widget, gpointer data){	show_config_window();}static void layout_button_float_cb(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	layout_tools_float_toggle(lw);}static void layout_button_custom_icon(GtkWidget *button, const gchar *key){	GtkWidget *icon;	GdkPixbuf *pixbuf;	pixbuf = pixbuf_inline(key);	if (!pixbuf) return;	icon = gtk_image_new_from_pixbuf(pixbuf);	g_object_unref(pixbuf);	pref_toolbar_button_set_icon(button, icon, NULL);	gtk_widget_show(icon);}GtkWidget *layout_button_bar(LayoutWindow *lw){	GtkWidget *box;	GtkWidget *button;	box =  pref_toolbar_new(NULL, GTK_TOOLBAR_ICONS);	button = pref_toolbar_button(box, NULL, _("_Thumbnails"), TRUE,				     _("Show thumbnails"), G_CALLBACK(layout_button_thumb_cb), lw);	layout_button_custom_icon(button, PIXBUF_INLINE_ICON_THUMB);	lw->thumb_button = button;	pref_toolbar_button(box, GTK_STOCK_HOME, NULL, FALSE,			    _("Change to home folder"), G_CALLBACK(layout_button_home_cb), lw);	pref_toolbar_button(box, GTK_STOCK_REFRESH, NULL, FALSE,			    _("Refresh file list"), G_CALLBACK(layout_button_refresh_cb), lw);	pref_toolbar_button(box, GTK_STOCK_ZOOM_IN, NULL, FALSE,			    _("Zoom in"), G_CALLBACK(layout_button_zoom_in_cb), lw);	pref_toolbar_button(box, GTK_STOCK_ZOOM_OUT, NULL, FALSE,			    _("Zoom out"), G_CALLBACK(layout_button_zoom_out_cb), lw);	pref_toolbar_button(box, GTK_STOCK_ZOOM_FIT, NULL, FALSE,			    _("Fit image to window"), G_CALLBACK(layout_button_zoom_fit_cb), lw);	pref_toolbar_button(box, GTK_STOCK_ZOOM_100, NULL, FALSE,			    _("Set zoom 1:1"), G_CALLBACK(layout_button_zoom_1_1_cb), lw);	pref_toolbar_button(box, GTK_STOCK_PREFERENCES, NULL, FALSE,			    _("Configure options"), G_CALLBACK(layout_button_config_cb), lw);	button = pref_toolbar_button(box, NULL, _("_Float"), FALSE,				     _("Float Controls"), G_CALLBACK(layout_button_float_cb), lw);	layout_button_custom_icon(button, PIXBUF_INLINE_ICON_FLOAT);	return box;}/* *----------------------------------------------------------------------------- * misc *----------------------------------------------------------------------------- */static void layout_util_sync_views(LayoutWindow *lw){	GtkAction *action;	if (!lw->action_group) return;	action = gtk_action_group_get_action(lw->action_group, "FolderTree");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->tree_view);	action = gtk_action_group_get_action(lw->action_group, "ViewIcons");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->icon_view);	action = gtk_action_group_get_action(lw->action_group, "FloatTools");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->tools_float);	action = gtk_action_group_get_action(lw->action_group, "SBarKeywords");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_info_enabled);	action = gtk_action_group_get_action(lw->action_group, "SBarExif");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_exif_enabled);	action = gtk_action_group_get_action(lw->action_group, "SBarSort");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->bar_sort_enabled);	action = gtk_action_group_get_action(lw->action_group, "HideToolbar");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->toolbar_hidden);}void layout_util_sync_thumb(LayoutWindow *lw){	GtkAction *action;	if (!lw->action_group) return;	action = gtk_action_group_get_action(lw->action_group, "Thumbnails");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), lw->thumbs_enabled);	g_object_set(action, "sensitive", !lw->icon_view, NULL);	gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(lw->thumb_button), lw->thumbs_enabled);	gtk_widget_set_sensitive(lw->thumb_button, !lw->icon_view);}void layout_util_sync(LayoutWindow *lw){	layout_util_sync_views(lw);	layout_util_sync_thumb(lw);	layout_menu_recent_update(lw);	layout_menu_edit_update(lw);}/* *----------------------------------------------------------------------------- * icons (since all the toolbar icons are included here, best place as any) *----------------------------------------------------------------------------- */PixmapFolders *folder_icons_new(void){	PixmapFolders *pf;	pf = g_new0(PixmapFolders, 1);	pf->close = pixbuf_inline(PIXBUF_INLINE_FOLDER_CLOSED);	pf->open = pixbuf_inline(PIXBUF_INLINE_FOLDER_OPEN);	pf->deny = pixbuf_inline(PIXBUF_INLINE_FOLDER_LOCKED);	pf->parent = pixbuf_inline(PIXBUF_INLINE_FOLDER_UP);	return pf;}void folder_icons_free(PixmapFolders *pf){	if (!pf) return;	g_object_unref(pf->close);	g_object_unref(pf->open);	g_object_unref(pf->deny);	g_object_unref(pf->parent);	g_free(pf);}/* *----------------------------------------------------------------------------- * sidebars *----------------------------------------------------------------------------- */#define SIDEBAR_WIDTH 288static void layout_bar_info_destroyed(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	lw->bar_info = NULL;	if (lw->utility_box)		{		/* destroyed from within itself */		lw->bar_info_enabled = FALSE;		layout_util_sync_views(lw);		}}static GList *layout_bar_info_list_cb(gpointer data){	LayoutWindow *lw = data;	return layout_selection_list(lw);}static void layout_bar_info_new(LayoutWindow *lw){	if (!lw->utility_box) return;                                                                                                                    	lw->bar_info = bar_info_new(layout_image_get_path(lw), FALSE, lw->utility_box);	bar_info_set_selection_func(lw->bar_info, layout_bar_info_list_cb, lw);	bar_info_selection(lw->bar_info, layout_selection_count(lw, NULL) - 1);	bar_info_size_request(lw->bar_info, SIDEBAR_WIDTH * 3 / 4);	g_signal_connect(G_OBJECT(lw->bar_info), "destroy",			 G_CALLBACK(layout_bar_info_destroyed), lw);	lw->bar_info_enabled = TRUE;	gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_info, FALSE, FALSE, 0);	gtk_widget_show(lw->bar_info);}                                                                                                                    static void layout_bar_info_close(LayoutWindow *lw){	if (lw->bar_info)		{		bar_info_close(lw->bar_info);		lw->bar_info = NULL;		}	lw->bar_info_enabled = FALSE;}void layout_bar_info_toggle(LayoutWindow *lw){	if (lw->bar_info_enabled)		{		layout_bar_info_close(lw);		}	else		{		layout_bar_info_new(lw);		}}static void layout_bar_info_new_image(LayoutWindow *lw){	if (!lw->bar_info || !lw->bar_info_enabled) return;	bar_info_set(lw->bar_info, layout_image_get_path(lw));}static void layout_bar_info_new_selection(LayoutWindow *lw, gint count){	if (!lw->bar_info || !lw->bar_info_enabled) return;	bar_info_selection(lw->bar_info, count - 1);}static void layout_bar_info_maint_renamed(LayoutWindow *lw){	if (!lw->bar_info || !lw->bar_info_enabled) return;	bar_info_maint_renamed(lw->bar_info, layout_image_get_path(lw));}static void layout_bar_exif_destroyed(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	if (lw->bar_exif)		{		lw->bar_exif_advanced = bar_exif_is_advanced(lw->bar_exif);		}	lw->bar_exif = NULL;	if (lw->utility_box)		{		/* destroyed from within itself */		lw->bar_exif_enabled = FALSE;		layout_util_sync_views(lw);		}}static void layout_bar_exif_sized(GtkWidget *widget, GtkAllocation *allocation, gpointer data){	LayoutWindow *lw = data;	if (lw->bar_exif)		{		lw->bar_exif_size = allocation->width;		}}static void layout_bar_exif_new(LayoutWindow *lw){	if (!lw->utility_box) return;	lw->bar_exif = bar_exif_new(TRUE, layout_image_get_path(lw),				    lw->bar_exif_advanced, lw->utility_box);	g_signal_connect(G_OBJECT(lw->bar_exif), "destroy",			 G_CALLBACK(layout_bar_exif_destroyed), lw);	g_signal_connect(G_OBJECT(lw->bar_exif), "size_allocate",			 G_CALLBACK(layout_bar_exif_sized), lw);        lw->bar_exif_enabled = TRUE;	if (lw->bar_exif_size < 1) lw->bar_exif_size = SIDEBAR_WIDTH;	gtk_widget_set_size_request(lw->bar_exif, lw->bar_exif_size, -1);	gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_exif, FALSE, FALSE, 0);	if (lw->bar_info) gtk_box_reorder_child(GTK_BOX(lw->utility_box), lw->bar_exif, 1);	gtk_widget_show(lw->bar_exif);}static void layout_bar_exif_close(LayoutWindow *lw){	if (lw->bar_exif)		{		bar_exif_close(lw->bar_exif);		lw->bar_exif = NULL;		}        lw->bar_exif_enabled = FALSE;}void layout_bar_exif_toggle(LayoutWindow *lw){	if (lw->bar_exif_enabled)		{		layout_bar_exif_close(lw);		}	else		{		layout_bar_exif_new(lw);		}}static void layout_bar_exif_new_image(LayoutWindow *lw){	if (!lw->bar_exif || !lw->bar_exif_enabled) return;	bar_exif_set(lw->bar_exif, layout_image_get_path(lw));}static void layout_bar_sort_destroyed(GtkWidget *widget, gpointer data){	LayoutWindow *lw = data;	lw->bar_sort = NULL;	if (lw->utility_box)		{		/* destroyed from within itself */		lw->bar_sort_enabled = FALSE;		layout_util_sync_views(lw);		}}static void layout_bar_sort_new(LayoutWindow *lw){	if (!lw->utility_box) return;	lw->bar_sort = bar_sort_new(lw);	g_signal_connect(G_OBJECT(lw->bar_sort), "destroy",			 G_CALLBACK(layout_bar_sort_destroyed), lw);	lw->bar_sort_enabled = TRUE;	gtk_box_pack_end(GTK_BOX(lw->utility_box), lw->bar_sort, FALSE, FALSE, 0);	gtk_widget_show(lw->bar_sort);}static void layout_bar_sort_close(LayoutWindow *lw){	if (lw->bar_sort)		{		bar_sort_close(lw->bar_sort);		lw->bar_sort = NULL;		}	lw->bar_sort_enabled = FALSE;}void layout_bar_sort_toggle(LayoutWindow *lw){	if (lw->bar_sort_enabled)		{		layout_bar_sort_close(lw);		}	else		{		layout_bar_sort_new(lw);		}}void layout_bars_new_image(LayoutWindow *lw){	layout_bar_info_new_image(lw);	layout_bar_exif_new_image(lw);}void layout_bars_new_selection(LayoutWindow *lw, gint count){	layout_bar_info_new_selection(lw, count);}GtkWidget *layout_bars_prepare(LayoutWindow *lw, GtkWidget *image){	lw->utility_box = gtk_hbox_new(FALSE, PREF_PAD_GAP);	gtk_box_pack_start(GTK_BOX(lw->utility_box), image, TRUE, TRUE, 0);	gtk_widget_show(image);	if (lw->bar_sort_enabled)		{		layout_bar_sort_new(lw);		}	if (lw->bar_info_enabled)		{		layout_bar_info_new(lw);		}	if (lw->bar_exif_enabled)		{		layout_bar_exif_new(lw);		}	return lw->utility_box;}void layout_bars_close(LayoutWindow *lw){	layout_bar_sort_close(lw);	layout_bar_exif_close(lw);	layout_bar_info_close(lw);}void layout_bars_maint_renamed(LayoutWindow *lw){	layout_bar_info_maint_renamed(lw);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -