📄 gsegytoolpanel.c
字号:
/* * GTKSEISVIEWUI - Library of interface elements for GSEGYView * * Copyright (C) 2006 Vladimir Bashkardin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more av. * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * Author: Vladimir Bashkardin <vovizmus@users.sourceforge.net> */#include <gtkseisviewgl/gtkseisviewgl.h>#include "gsegyfileaux.h"#include "gsegyfileui_marshal.h"#include "gsegytoolpanel.h"G_DEFINE_TYPE (GSEGYToolPanel, g_segy_tool_panel, G_TYPE_OBJECT)#define G_SEGY_TOOL_PANEL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), G_SEGY_TYPE_TOOL_PANEL, GSEGYToolPanelPrivate))typedef struct _GSEGYToolPanelPrivate GSEGYToolPanelPrivate;struct _GSEGYToolPanelPrivate { GtkWidget *frame; GtkWidget *hbox; GtkWidget *motion_tool_button; GtkWidget *motion_tool_icon; GtkWidget *magnify_tool_button; GtkWidget *magnify_tool_icon; GtkWidget *highlight_tool_button; GtkWidget *highlight_tool_icon; GtkWidget *scaling_button; GtkWidget *scaling_icon; GtkWidget *fullscreen_button; GtkWidget *fullscreen_icon; GtkWidget *save_image_button; GtkWidget *save_image_icon; GtkWidget *color_manager_button; GtkWidget *color_manager_icon; GtkWidget *properties_button; GtkWidget *properties_icon; GtkTooltips *toolpanel_tips; GtkWidget *active_tool;};static void g_segy_tool_panel_init (GSEGYToolPanel *self) { GSEGYToolPanelPrivate *private = G_SEGY_TOOL_PANEL_GET_PRIVATE (self); private->frame = NULL; private->hbox = NULL; private->motion_tool_button = NULL; private->motion_tool_icon = NULL; private->magnify_tool_button = NULL; private->magnify_tool_icon = NULL; private->highlight_tool_button = NULL; private->highlight_tool_icon = NULL; private->scaling_button = NULL; private->scaling_icon = NULL; private->fullscreen_button = NULL; private->fullscreen_icon = NULL; private->save_image_button = NULL; private->save_image_icon = NULL; private->color_manager_button = NULL; private->color_manager_icon = NULL; private->properties_button = NULL; private->properties_icon = NULL; private->toolpanel_tips = NULL; private->active_tool = NULL;#ifdef DEBUG g_print ("<GSEGYToolPanel is inited>\n");#endif}static void g_segy_tool_panel_finalize (GObject *object) { GSEGYToolPanel *self = G_SEGY_TOOL_PANEL (object); GSEGYToolPanelPrivate *private = G_SEGY_TOOL_PANEL_GET_PRIVATE (self); if (private->frame) gtk_widget_destroy (private->frame); if (private->toolpanel_tips) g_object_unref (G_OBJECT (private->toolpanel_tips));#ifdef DEBUG g_print ("<GSEGYToolPanel is finalized>\n");#endif if (G_OBJECT_CLASS (g_segy_tool_panel_parent_class)->finalize) G_OBJECT_CLASS (g_segy_tool_panel_parent_class)->finalize (object);}static void g_segy_tool_panel_class_init (GSEGYToolPanelClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = g_segy_tool_panel_finalize; g_type_class_add_private (klass, sizeof (GSEGYToolPanelPrivate)); klass->motion_tool = NULL; klass->magnify_tool = NULL; klass->highlight_tool = NULL; klass->scaling = NULL; klass->fullscreen = NULL; klass->save_image = NULL; klass->color_manager = NULL; klass->properties = NULL; klass->motion_tool_id = g_signal_new ("motion_tool", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, motion_tool), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->magnify_tool_id = g_signal_new ("magnify_tool", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, magnify_tool), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->highlight_tool_id = g_signal_new ("highlight_tool", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, highlight_tool), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->scaling_id = g_signal_new ("scaling", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, scaling), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->fullscreen_id = g_signal_new ("fullscreen", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, fullscreen), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->save_image_id = g_signal_new ("save_image", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, save_image), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->color_manager_id = g_signal_new ("color_manager", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, color_manager), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->properties_id = g_signal_new ("properties", G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSEGYToolPanelClass, properties), NULL, NULL, g_segyui_marshal_VOID__VOID, G_TYPE_NONE, 0);#ifdef DEBUG g_print ("<GSEGYToolPanel class is inited>\n");#endif}static void g_segy_tool_panel_icon_activate_signal (GSEGYToolPanel *self, guint signal_id) { g_signal_emit (self, signal_id, 0);}static void g_segy_tool_panel_change_activate_tool (GSEGYToolPanel *self, GtkWidget *new_tool) { GSEGYToolPanelPrivate *private = G_SEGY_TOOL_PANEL_GET_PRIVATE (self); if (private->active_tool) { GTK_BUTTON (private->active_tool)->depressed = FALSE; gtk_widget_queue_resize (private->active_tool); gtk_widget_set_sensitive (private->active_tool, TRUE); } private->active_tool = new_tool; if (private->active_tool) { GTK_BUTTON (private->active_tool)->depressed = TRUE; gtk_widget_set_sensitive (private->active_tool, FALSE); gtk_widget_queue_resize (private->active_tool); }}static void g_segy_tool_panel_active_tool_leave_handler (GtkWidget *button, gpointer data) { GSEGYToolPanel *self = G_SEGY_TOOL_PANEL (data); GSEGYToolPanelPrivate *private = G_SEGY_TOOL_PANEL_GET_PRIVATE (self); if (button == private->active_tool) { GTK_BUTTON (private->active_tool)->depressed = TRUE; gtk_widget_queue_resize (private->active_tool); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -