📄 gseisviewtool.c
字号:
/* * GTKSEISVIEWGL - Library for rendering of 2D seismic data * * 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 <gdk/gdkkeysyms.h>#include "gseisviewtool.h"G_DEFINE_TYPE (GSeisViewTool, g_seis_view_tool, G_TYPE_OBJECT)#define G_SEIS_VIEW_TOOL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), G_SEIS_TYPE_VIEW_TOOL, GSeisViewToolPrivate))typedef struct _GSeisViewToolPrivate GSeisViewToolPrivate;struct _GSeisViewToolPrivate { GSeisViewTool *current_tool; GSeisViewTool *alt_tool1; GSeisViewTool *alt_tool2; GSeisViewTool *alt_tool3;};static void g_seis_view_tool_attach_notify_base (GSeisViewTool *self, GtkWidget *seis_view_gl) {}static void g_seis_view_tool_detach_notify_base (GSeisViewTool *self, GtkWidget *seis_view_gl) {}static void g_seis_view_tool_button_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventButton *event, GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_scroll_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventScroll *event, GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_enter_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventCrossing *event, GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_leave_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventCrossing *event, GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_motion_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventMotion *event, GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_key_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GdkEventKey *event, GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_redraw_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GSeisViewDataVisibility *data_visibility) {}static void g_seis_view_tool_resize_event_base (GSeisViewTool *self, GtkWidget *seis_view_gl, GSeisViewDataVisibility *data_visibility) {}void g_seis_view_tool_set_alt_tool1 (GSeisViewTool *tool, GSeisViewTool *alt_tool1) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (private->alt_tool1) g_object_unref (G_OBJECT (private->alt_tool1)); private->alt_tool1 = alt_tool1; if (private->alt_tool1) g_object_ref (G_OBJECT (private->alt_tool1));}void g_seis_view_tool_set_alt_tool2 (GSeisViewTool *tool, GSeisViewTool *alt_tool2) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (private->alt_tool2) g_object_unref (G_OBJECT (private->alt_tool2)); private->alt_tool2 = alt_tool2; if (private->alt_tool2) g_object_ref (G_OBJECT (private->alt_tool2));}void g_seis_view_tool_set_alt_tool3 (GSeisViewTool *tool, GSeisViewTool *alt_tool3) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (private->alt_tool3) g_object_unref (G_OBJECT (private->alt_tool3)); private->alt_tool3 = alt_tool3; if (private->alt_tool3) g_object_ref (G_OBJECT (private->alt_tool3));}void g_seis_view_tool_attach_notify (GSeisViewTool *tool, GtkWidget *seis_view_gl) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_attach_notify (private->current_tool, seis_view_gl); if (private->current_tool != tool) tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_detach_notify (GSeisViewTool *tool, GtkWidget *seis_view_gl) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_detach_notify (private->current_tool, seis_view_gl); if (private->current_tool != tool) tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_button_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventButton *event, GSeisViewDataVisibility *data_visibility) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_BUTTON_EVENT)) return; G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_button_event (private->current_tool, seis_view_gl, event, data_visibility); if (private->current_tool != tool) tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_scroll_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventScroll *event, GSeisViewDataVisibility *data_visibility) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_SCROLL_EVENT)) return; G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_scroll_event (private->current_tool, seis_view_gl, event, data_visibility); if (private->current_tool != tool) tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_enter_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventCrossing *event, GSeisViewDataVisibility *data_visibility) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_ENTER_EVENT)) return; G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_enter_event (private->current_tool, seis_view_gl, event, data_visibility); if (private->current_tool != tool) tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_leave_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventCrossing *event, GSeisViewDataVisibility *data_visibility) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_LEAVE_EVENT)) return; G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_leave_event (private->current_tool, seis_view_gl, event, data_visibility); if (private->current_tool != tool) tool->show_cross = private->current_tool->show_cross;}void g_seis_view_tool_motion_event (GSeisViewTool *tool, GtkWidget *seis_view_gl, GdkEventMotion *event, GSeisViewDataVisibility *data_visibility) { GSeisViewToolPrivate *private = G_SEIS_VIEW_TOOL_GET_PRIVATE (tool); if (0 == (private->current_tool->event_mask & G_SEIS_VIEW_TOOL_MOTION_EVENT)) return; G_SEIS_VIEW_TOOL_GET_CLASS (G_OBJECT (private->current_tool))->view_motion_event (private->current_tool, seis_view_gl, event, data_visibility); if (private->current_tool != tool) tool->show_cross = private->current_tool->show_cross;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -