📄 gsegydataview.c
字号:
}}static void g_segy_data_view_hlight_scroll_down_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); if (private->ensemble_select) { if (private->seis_view_is_threaded) gdk_threads_enter (); g_segy_ensemble_select_next (private->ensemble_select); if (private->seis_view_is_threaded) gdk_threads_leave (); }}static void g_segy_data_view_aux_scroll_up_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); if (private->seis_view_is_threaded) gdk_threads_enter (); g_segy_color_manager_previous_palette (private->color_manager); if (private->seis_view_is_threaded) gdk_threads_leave ();}static void g_segy_data_view_aux_scroll_down_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); if (private->seis_view_is_threaded) gdk_threads_enter (); g_segy_color_manager_next_palette (private->color_manager); if (private->seis_view_is_threaded) gdk_threads_leave ();}static void g_segy_data_view_display_mode_change_handler (GSEGYWigglePanel *wiggle_panel, gint display_mode, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gtk_seis_view_gl_set_display_mode (GTK_SEIS_VIEW_GL (private->seis_view_gl), (GtkSeisViewDisplayMode)display_mode); gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));}static void g_segy_data_view_va_fill_mode_change_handler (GSEGYWigglePanel *wiggle_panel, gint va_fill_mode, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gtk_seis_view_gl_set_va_fill_mode (GTK_SEIS_VIEW_GL (private->seis_view_gl), (GtkSeisViewVAFill)va_fill_mode); gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));}static void g_segy_data_view_polarity_change_handler (GSEGYWigglePanel *wiggle_panel, gboolean inverse, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gtk_seis_view_gl_set_inverse_polarity (GTK_SEIS_VIEW_GL (private->seis_view_gl), inverse); gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl));}static void g_segy_data_view_minmax_mode_change_handler (GSEGYGainPanel *gain_panel, gint minmax_mode, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gtk_seis_view_gl_set_minmax_mode (GTK_SEIS_VIEW_GL (private->seis_view_gl), (GtkSeisViewMinMax)minmax_mode);}static void g_segy_data_view_use_agc_change_handler (GSEGYGainPanel *gain_panel, gfloat agc_window, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gtk_seis_view_gl_set_agc_use (GTK_SEIS_VIEW_GL (private->seis_view_gl), agc_window > 0, agc_window);}static void g_segy_data_view_reload_data_handler (GSEGYGainPanel *gain_panel, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); private->reload = TRUE; g_segy_data_view_select_ensemble (G_SEGY_DATA_VIEW (data));}static gboolean g_segy_data_view_magnify_close_handler (GtkWidget *widget, GdkEvent* event, gpointer data) { return TRUE;}static void g_segy_data_view_magnify_view_area_handler (GtkWidget *widget, gdouble slow_start_data, gdouble slow_size_data, gdouble fast_start_data, gdouble fast_size_data, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); if (private->seis_view_is_threaded) gdk_threads_enter (); gtk_seis_view_gl_set_data_viewport (GTK_SEIS_VIEW_GL (private->magnify_view_gl), slow_start_data, slow_size_data, fast_start_data, fast_size_data); gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->magnify_view_gl)); if (private->seis_view_is_threaded) gdk_threads_leave ();}static GtkWidget* g_segy_data_view_get_magnify_view_window (GSEGYDataView *self) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self); if (NULL == private->magnify_view_window) { private->magnify_view_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (private->magnify_view_window), 7); gtk_widget_set_size_request (GTK_WIDGET (private->magnify_view_window), 350, 300); gtk_window_set_default_size (GTK_WINDOW (private->magnify_view_window), 350, 300); gtk_window_set_modal (GTK_WINDOW (private->magnify_view_window), FALSE); gtk_window_set_title (GTK_WINDOW (private->magnify_view_window), _("Magnify viewer")); gtk_window_set_transient_for (GTK_WINDOW (private->magnify_view_window), GTK_WINDOW (private->data_window)); gtk_window_set_resizable (GTK_WINDOW (private->magnify_view_window), TRUE); private->magnify_view_frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (private->magnify_view_window), private->magnify_view_frame); private->magnify_view_gl = gtk_seis_view_gl_new_shared (GTK_SEIS_VIEW_GL (private->seis_view_gl)); gtk_container_add (GTK_CONTAINER (private->magnify_view_frame), private->magnify_view_gl); gtk_signal_connect (GTK_OBJECT (private->magnify_view_window), "delete_event", GTK_SIGNAL_FUNC (g_segy_data_view_magnify_close_handler), (gpointer)self); g_signal_connect (G_OBJECT (private->magnify_tool), "magnify_viewport", (GCallback)g_segy_data_view_magnify_view_area_handler, (gpointer)self); gtk_widget_show_all (private->magnify_view_frame); gdouble slow_start_data, slow_end_data, fast_start_data, fast_end_data; g_object_get (G_OBJECT (private->magnify_tool), "slow_start", &slow_start_data, "slow_end", &slow_end_data, "fast_start", &fast_start_data, "fast_end", &fast_end_data, NULL); gtk_seis_view_gl_set_data_viewport (GTK_SEIS_VIEW_GL (private->magnify_view_gl), slow_start_data, slow_end_data - slow_start_data, fast_start_data, fast_end_data - fast_start_data); gtk_window_group_add_window (private->window_group, GTK_WINDOW (private->magnify_view_window)); gsegy_view_set_window_icon (GTK_WINDOW (private->magnify_view_window)); } return private->magnify_view_window;}static GtkWidget* g_segy_data_view_get_trace_info_window (GSEGYDataView *self) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self); if (NULL == private->trace_info_window) { gint root_width, root_height; gdk_drawable_get_size (GDK_DRAWABLE (gdk_get_default_root_window ()), &root_width, &root_height); private->trace_info_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (private->trace_info_window), 7); if (root_height > 800) { gtk_widget_set_size_request (GTK_WIDGET (private->trace_info_window), 450, 800); gtk_window_set_default_size (GTK_WINDOW (private->trace_info_window), 450, 800); } else { gtk_widget_set_size_request (GTK_WIDGET (private->trace_info_window), 450, root_height * 0.8); gtk_window_set_default_size (GTK_WINDOW (private->trace_info_window), 450, root_height * 0.8); } gtk_window_set_modal (GTK_WINDOW (private->trace_info_window), FALSE); gtk_window_set_title (GTK_WINDOW (private->trace_info_window), _("Trace info")); gtk_window_set_transient_for (GTK_WINDOW (private->trace_info_window), GTK_WINDOW (private->data_window)); gtk_window_set_resizable (GTK_WINDOW (private->trace_info_window), TRUE); private->trace_info_frame = gtk_frame_new (NULL); gtk_container_add (GTK_CONTAINER (private->trace_info_window), private->trace_info_frame); private->trace_info_scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (private->trace_info_scrolled), GTK_SHADOW_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (private->trace_info_scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (private->trace_info_frame), private->trace_info_scrolled); gtk_container_add (GTK_CONTAINER (private->trace_info_scrolled), g_segy_trace_info_get_main_widget (private->trace_info)); g_segy_trace_info_set_fields_names (private->trace_info, g_segy_seismic_accessor_get_trace_header_fields_names (private->seismic_accessor), g_segy_seismic_accessor_get_trace_header_fields_desc (private->seismic_accessor)); gtk_signal_connect (GTK_OBJECT (private->trace_info_window), "delete_event", GTK_SIGNAL_FUNC (g_segy_data_view_magnify_close_handler), (gpointer)self); gtk_widget_show_all (private->trace_info_frame); gtk_window_group_add_window (private->window_group, GTK_WINDOW (private->trace_info_window)); gsegy_view_set_window_icon (GTK_WINDOW (private->trace_info_window)); } return private->trace_info_window;}static void g_segy_data_view_hightlight_area_start_handler (GObject *gobject, GParamSpec *arg1, gpointer user_data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (user_data)); if (FALSE == private->show_trace_info) return; gdouble hlight_start; g_object_get (G_OBJECT (private->seis_view_gl), arg1->name, &hlight_start, NULL); if (private->trace_header_chunk) { g_string_chunk_free (private->trace_header_chunk); private->trace_header_chunk = NULL; } if (private->trace_header_labels) { g_ptr_array_free (private->trace_header_labels, TRUE); private->trace_header_labels = NULL; } if (hlight_start < 0) { if (private->trace_info_window) { if (private->seis_view_is_threaded) gdk_threads_enter (); gtk_widget_hide (private->trace_info_window); if (private->seis_view_is_threaded) gdk_threads_leave (); } return; } g_segy_seismic_accessor_get_labels_for_trace_header (private->seismic_accessor, private->current_ensemble, hlight_start * private->slow_num, &private->trace_header_chunk, &private->trace_header_labels); if (private->seis_view_is_threaded) gdk_threads_enter (); if (private->trace_header_chunk) { if (NULL == private->trace_info_window) gtk_widget_show (g_segy_data_view_get_trace_info_window (G_SEGY_DATA_VIEW (user_data))); g_segy_trace_info_set_fields_values (private->trace_info, private->trace_header_labels); gtk_widget_show (private->trace_info_window);#ifdef DEBUG } else { g_printf ("Trace header values extraction failed.\n");#endif } if (private->seis_view_is_threaded) gdk_threads_leave ();}static void g_segy_data_view_trace_info_scroll_up_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gdouble hlight_start, new_hlight_start; g_object_get (G_OBJECT (private->seis_view_gl), "highlight_area_start", &hlight_start, NULL); new_hlight_start = hlight_start - 1.0 / (gdouble)private->slow_num; if (new_hlight_start < 0) return; if (private->seis_view_is_threaded) gdk_threads_enter (); gtk_seis_view_gl_set_highlight_area (GTK_SEIS_VIEW_GL (private->seis_view_gl), new_hlight_start, 0.0); gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl)); if (private->seis_view_is_threaded) gdk_threads_leave ();}static void g_segy_data_view_trace_info_scroll_down_handler (GSeisViewToolHighlight *hlight_tool, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gdouble hlight_start, new_hlight_start; g_object_get (G_OBJECT (private->seis_view_gl), "highlight_area_start", &hlight_start, NULL); new_hlight_start = hlight_start + 1.0 / (gdouble)private->slow_num; if (new_hlight_start > 1.0) return; if (private->seis_view_is_threaded) gdk_threads_enter (); gtk_seis_view_gl_set_highlight_area (GTK_SEIS_VIEW_GL (private->seis_view_gl), new_hlight_start, 0.0); gtk_seis_view_gl_redraw (GTK_SEIS_VIEW_GL (private->seis_view_gl)); if (private->seis_view_is_threaded) gdk_threads_leave ();}static void g_segy_data_view_motion_tool_handler (GSEGYToolPanel *tool_panel, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); if (private->magnify_view_window) gtk_widget_hide (private->magnify_view_window); if (private->trace_info_window) gtk_widget_hide (private->trace_info_window); g_segy_view_scaling_enable_viewport_change (private->view_scaling, TRUE); gtk_seis_view_gl_set_active_tool (GTK_SEIS_VIEW_GL (private->seis_view_gl), G_SEIS_VIEW_TOOL (private->motion_tool)); private->show_trace_info = FALSE;}static void g_segy_data_view_magnify_tool_handler (GSEGYToolPanel *tool_panel, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data)); gboolean first_time = (NULL == private->magnify_view_window); if (private->trace_info_window) gtk_widget_hide (private->trace_info_window); gtk_widget_show (g_segy_data_view_get_magnify_view_window (G_SEGY_DATA_VIEW (data))); if (first_time) g_segy_cursor_panel_set_aux_seis_view (private->cursor_panel, GTK_SEIS_VIEW_GL (private->magnify_view_gl)); g_segy_view_scaling_enable_viewport_change (private->view_scaling, FALSE); gtk_seis_view_gl_set_active_tool (GTK_SEIS_VIEW_GL (private->seis_view_gl), G_SEIS_VIEW_TOOL (private->magnify_tool)); private->show_trace_info = FALSE;}static void g_segy_data_view_highlight_tool_handler (GSEGYToolPanel *tool_panel, gpointer data) { GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -