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

📄 gsegydataview.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 4 页
字号:
    if (private->magnify_view_window)        gtk_widget_hide (private->magnify_view_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->trace_tool));    private->show_trace_info = TRUE;}static void g_segy_data_view_fullscreen_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    if (private->fullscreen)        gtk_window_unfullscreen (GTK_WINDOW (private->data_window));    else        gtk_window_fullscreen (GTK_WINDOW (private->data_window));    private->fullscreen = !private->fullscreen;}static void g_segy_data_view_scaling_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_widget_show (g_segy_view_scaling_get_main_widget (private->view_scaling));    gtk_window_present (GTK_WINDOW (g_segy_view_scaling_get_main_widget (private->view_scaling)));}static void g_segy_data_view_save_image_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_widget_show (g_segy_save_image_get_main_widget (private->save_image));    gtk_window_present (GTK_WINDOW (g_segy_save_image_get_main_widget (private->save_image)));}static void g_segy_data_view_color_manager_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_widget_show (g_segy_color_manager_get_main_widget (private->color_manager));    gtk_window_present (GTK_WINDOW (g_segy_color_manager_get_main_widget (private->color_manager)));}static void g_segy_data_view_properties_handler (GSEGYToolPanel *tool_panel, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    gtk_widget_show (g_segy_properties_get_main_widget (private->properties));    gtk_window_present (GTK_WINDOW (g_segy_properties_get_main_widget (private->properties)));}void g_segy_data_view_show (GSEGYDataView *self) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self);    if (NULL == private->data_window)        g_segy_data_view_get_main_widget (self);     if (FALSE == GTK_WIDGET_REALIZED (private->data_window)) {        gtk_widget_show (private->data_window);        if (FALSE == private->ensemble_select)            g_segy_data_view_select_ensemble (self);        else            g_segy_ensemble_select_reset (private->ensemble_select);        return;    }    gtk_window_present (GTK_WINDOW (private->data_window));    gtk_widget_show (private->handle);    if (private->ensemble_select)        gtk_widget_show (g_segy_ensemble_select_get_main_widget (private->ensemble_select));}void g_segy_data_view_hide (GSEGYDataView *self) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self);     if (NULL == private->data_window)        return;    if (GTK_WIDGET_MAPPED (private->data_window)) {        gtk_widget_hide (private->handle);        gtk_widget_hide (private->data_window);        if (private->ensemble_select) {            g_segy_ensemble_select_stop_animation (private->ensemble_select);            gtk_widget_hide (g_segy_ensemble_select_get_main_widget (private->ensemble_select));        }        if (g_segy_view_scaling_has_main_widget (private->view_scaling))            gtk_widget_hide (g_segy_view_scaling_get_main_widget (private->view_scaling));        if (g_segy_save_image_has_main_widget (private->save_image))            gtk_widget_hide (g_segy_save_image_get_main_widget (private->save_image));        if (g_segy_color_manager_has_main_widget (private->color_manager))            gtk_widget_hide (g_segy_color_manager_get_main_widget (private->color_manager));        if (g_segy_properties_has_main_widget (private->properties))            gtk_widget_hide (g_segy_properties_get_main_widget (private->properties));        if (private->magnify_view_window)            gtk_widget_hide (private->magnify_view_window);        if (private->trace_info_window)            gtk_widget_hide (private->trace_info_window);    }}static gboolean g_segy_data_view_key_event_handler (GtkWidget *widget, GdkEventKey *event, gpointer data) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (G_SEGY_DATA_VIEW (data));    if (GDK_F11 == event->keyval)        g_segy_data_view_fullscreen_handler (private->tool_panel, data);    return FALSE;}GtkWidget* g_segy_data_view_get_main_widget (GSEGYDataView *self) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self);    if (NULL == private->data_window) {        gint root_width, root_height;        gdk_drawable_get_size (GDK_DRAWABLE (gdk_get_default_root_window ()), &root_width, &root_height);        private->data_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);        gtk_container_set_border_width (GTK_CONTAINER (private->data_window), 7);        gtk_widget_set_size_request (GTK_WIDGET (private->data_window), 730, 570);        if (root_height < root_width)            gtk_window_set_default_size (GTK_WINDOW (private->data_window), root_height * 0.8, root_height * 0.8);        else            gtk_window_set_default_size (GTK_WINDOW (private->data_window), root_width * 0.8, root_width * 0.8);        gtk_window_set_modal (GTK_WINDOW (private->data_window), FALSE);        if (private->name)            gtk_window_set_title (GTK_WINDOW (private->data_window), private->name);        gtk_signal_connect (GTK_OBJECT (private->data_window), "delete_event",                            GTK_SIGNAL_FUNC (g_segy_data_view_close_handler), (gpointer)G_OBJECT (self));        gtk_signal_connect (GTK_OBJECT (private->data_window), "key-press-event",                            GTK_SIGNAL_FUNC (g_segy_data_view_key_event_handler), (gpointer)G_OBJECT (self));        private->main_vbox = gtk_vbox_new (FALSE, 2);        gtk_container_add (GTK_CONTAINER (private->data_window), private->main_vbox);        private->handle = gtk_handle_box_new ();        gtk_handle_box_set_shadow_type (GTK_HANDLE_BOX (private->handle), GTK_SHADOW_IN);        gtk_handle_box_set_handle_position (GTK_HANDLE_BOX (private->handle), GTK_POS_LEFT);        gtk_handle_box_set_snap_edge (GTK_HANDLE_BOX (private->handle), GTK_POS_TOP);        gtk_container_set_border_width (GTK_CONTAINER (private->handle), 0);        gtk_box_pack_start (GTK_BOX (private->main_vbox), private->handle, FALSE, FALSE, 0);        private->top_hbox = gtk_hbox_new (FALSE, 2);        gtk_container_set_border_width (GTK_CONTAINER (private->top_hbox), 3);        gtk_container_add (GTK_CONTAINER (private->handle), private->top_hbox);        private->bottom_hbox = gtk_hbox_new (FALSE, 2);        gtk_box_pack_start (GTK_BOX (private->main_vbox), private->bottom_hbox, TRUE, TRUE, 0);        gtk_widget_show_all (private->main_vbox);        private->seis_view_frame = gtk_frame_new (NULL);        g_segy_seismic_accessor_get_labels_for_first_level (private->seismic_accessor,                                                            &private->ensembles_chunk,                                                            &private->ensembles_labels);        if (private->data_view_pref)            private->seis_view_is_threaded = private->data_view_pref->threaded;        if (private->seis_view_is_threaded)            private->seis_view_gl = gtk_seis_view_gl_new_threaded ();        else            private->seis_view_gl = gtk_seis_view_gl_new ();        gtk_container_add (GTK_CONTAINER (private->seis_view_frame), private->seis_view_gl);        gtk_widget_show (private->seis_view_gl);        g_signal_connect (G_OBJECT (private->seis_view_gl), "data_is_set",                          (GCallback)g_segy_data_view_data_is_set_handler, (gpointer)self);        private->motion_tool = g_seis_view_tool_motion_new ();        private->hlight_tool = g_seis_view_tool_highlight_new ();        private->scale_tool = g_seis_view_tool_scale_new ();        private->aux_tool = g_seis_view_tool_auxilary_new ();        g_seis_view_tool_set_alt_tool1 (G_SEIS_VIEW_TOOL (private->motion_tool),                                        G_SEIS_VIEW_TOOL (private->hlight_tool));        g_seis_view_tool_set_alt_tool2 (G_SEIS_VIEW_TOOL (private->motion_tool),                                        G_SEIS_VIEW_TOOL (private->scale_tool));        g_seis_view_tool_set_alt_tool3 (G_SEIS_VIEW_TOOL (private->motion_tool),                                        G_SEIS_VIEW_TOOL (private->aux_tool));        gtk_seis_view_gl_set_active_tool (GTK_SEIS_VIEW_GL (private->seis_view_gl), G_SEIS_VIEW_TOOL (private->motion_tool));        if (private->ensembles_labels) {            g_signal_connect (G_OBJECT (private->hlight_tool), "highlight_scroll_up",                              (GCallback)g_segy_data_view_hlight_scroll_up_handler, (gpointer)self);            g_signal_connect (G_OBJECT (private->hlight_tool), "highlight_scroll_down",                              (GCallback)g_segy_data_view_hlight_scroll_down_handler, (gpointer)self);        }        g_signal_connect (G_OBJECT (private->aux_tool), "auxilary_scroll_up",                          (GCallback)g_segy_data_view_aux_scroll_up_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->aux_tool), "auxilary_scroll_down",                          (GCallback)g_segy_data_view_aux_scroll_down_handler, (gpointer)self);        private->magnify_tool = g_seis_view_tool_magnify_new ();        g_seis_view_tool_set_alt_tool3 (G_SEIS_VIEW_TOOL (private->magnify_tool),                                        G_SEIS_VIEW_TOOL (private->aux_tool));        private->trace_info = g_segy_trace_info_new ();        private->trace_tool = g_seis_view_tool_highlight_new ();        g_seis_view_tool_highlight_set_rubberband_selection (private->trace_tool, FALSE);        g_seis_view_tool_set_alt_tool3 (G_SEIS_VIEW_TOOL (private->trace_tool),                                        G_SEIS_VIEW_TOOL (private->aux_tool));        g_signal_connect (G_OBJECT (private->seis_view_gl), "notify::highlight-area-start",                          (GCallback)g_segy_data_view_hightlight_area_start_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->trace_tool), "highlight_scroll_up",                          (GCallback)g_segy_data_view_trace_info_scroll_up_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->trace_tool), "highlight_scroll_down",                          (GCallback)g_segy_data_view_trace_info_scroll_down_handler, (gpointer)self);        private->show_trace_info = FALSE;        if (private->data_view_pref->generate_wiggles) {            gtk_box_pack_start (GTK_BOX (private->top_hbox), gtk_label_new (NULL), FALSE, FALSE, 0);            private->wiggle_panel = g_segy_wiggle_panel_new ();            gtk_box_pack_start (GTK_BOX (private->top_hbox),                                g_segy_wiggle_panel_get_main_widget (private->wiggle_panel), FALSE, FALSE, 0);            g_signal_connect (G_OBJECT (private->wiggle_panel), "display_mode_change",                              (GCallback)g_segy_data_view_display_mode_change_handler, (gpointer)self);            g_signal_connect (G_OBJECT (private->wiggle_panel), "va_fill_mode_change",                              (GCallback)g_segy_data_view_va_fill_mode_change_handler, (gpointer)self);            g_signal_connect (G_OBJECT (private->wiggle_panel), "polarity_change",                              (GCallback)g_segy_data_view_polarity_change_handler, (gpointer)self);        }        private->middle_vbox = gtk_vbox_new (FALSE, 3);        gtk_box_pack_start (GTK_BOX (private->top_hbox), private->middle_vbox, FALSE, FALSE, 3);        gtk_box_pack_start (GTK_BOX (private->middle_vbox), gtk_vbox_new (FALSE, 0), FALSE, FALSE, 2);        gtk_widget_show_all (private->middle_vbox);        private->tool_panel = g_segy_tool_panel_new ();        gtk_box_pack_start (GTK_BOX (private->middle_vbox),                            g_segy_tool_panel_get_main_widget (private->tool_panel), FALSE, FALSE, 0);        g_signal_connect (G_OBJECT (private->tool_panel), "motion_tool",                          (GCallback)g_segy_data_view_motion_tool_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->tool_panel), "magnify_tool",                          (GCallback)g_segy_data_view_magnify_tool_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->tool_panel), "highlight_tool",                          (GCallback)g_segy_data_view_highlight_tool_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->tool_panel), "fullscreen",                          (GCallback)g_segy_data_view_fullscreen_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->tool_panel), "scaling",                          (GCallback)g_segy_data_view_scaling_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->tool_panel), "save_image",                          (GCallback)g_segy_data_view_save_image_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->tool_panel), "color_manager",                          (GCallback)g_segy_data_view_color_manager_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->tool_panel), "properties",                          (GCallback)g_segy_data_view_properties_handler, (gpointer)self);        private->cursor_panel = g_segy_cursor_panel_new (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                                         private->seismic_accessor);        gtk_box_pack_start (GTK_BOX (private->middle_vbox),                            g_segy_cursor_panel_get_main_widget (private->cursor_panel), TRUE, TRUE, 2);        private->gain_panel = g_segy_gain_panel_new ();        gtk_box_pack_start (GTK_BOX (private->top_hbox),                            g_segy_gain_panel_get_main_widget (private->gain_panel), FALSE, FALSE, 0);        g_signal_connect (G_OBJECT (private->gain_panel), "minmax_mode_change",                          (GCallback)g_segy_data_view_minmax_mode_change_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->gain_panel), "agc_use_change",                          (GCallback)g_segy_data_view_use_agc_change_handler, (gpointer)self);        g_signal_connect (G_OBJECT (private->gain_panel), "reload_data_request",                          (GCallback)g_segy_data_view_reload_data_handler, (gpointer)self);        gtk_box_pack_start (GTK_BOX (private->top_hbox), gtk_label_new (NULL), FALSE, FALSE, 0);        if (private->ensembles_labels) {            private->ensemble_select = g_segy_ensemble_select_new (private->ensembles_labels);            gtk_box_pack_start (GTK_BOX (private->bottom_hbox),                                g_segy_ensemble_select_get_main_widget (private->ensemble_select), FALSE, FALSE, 0);            g_signal_connect (G_OBJECT (private->ensemble_select), "ensemble_select",                              (GCallback)g_segy_data_view_ensemble_select_handler, (gpointer)self);            GPtrArray *sort_labels = g_segy_seismic_accessor_get_sorting_fields_names (private->seismic_accessor);            guint16 first_level_id = g_segy_seismic_accessor_get_first_level_sort_id (private->seismic_accessor) - 1;            g_segy_ensemble_select_set_title (private->ensemble_select, g_ptr_array_index (sort_labels, first_level_id));        }        private->view_scaling = g_segy_view_scaling_new (GTK_SEIS_VIEW_GL (private->seis_view_gl));        private->save_image = g_segy_save_image_new (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                                     private->data_window);        private->color_manager = g_segy_color_manager_new (g_seis_view_get_predefined_palettes (),                                                           GTK_SEIS_VIEW_GL (private->seis_view_gl));        private->properties = g_segy_properties_new (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                                     private->seismic_accessor, private->cursor_panel,                                                     private->ensembles_labels != NULL);        gtk_box_pack_start (GTK_BOX (private->bottom_hbox), private->seis_view_frame, TRUE, TRUE, 0);        gtk_widget_show_all (private->seis_view_frame);        gtk_widget_grab_focus (private->seis_view_gl);        if (private->data_view_pref) {            gtk_seis_view_gl_set_generate_wiggles (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                                   private->data_view_pref->generate_wiggles);            gtk_seis_view_gl_set_signal_type (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                              (GtkSeisViewSignal)private->data_view_pref->signal);            gtk_seis_view_gl_set_coloring_mode (GTK_SEIS_VIEW_GL (private->seis_view_gl),                                                (GtkSeisViewColoring)private->data_view_pref->coloring);        }        private->window_group = gtk_window_group_new ();        gtk_window_group_add_window (private->window_group, GTK_WINDOW (private->data_window));        gsegy_view_set_window_icon (GTK_WINDOW (private->data_window));    }    return private->data_window;}void g_segy_data_view_set_data_view_pref (GSEGYDataView *self, GSEGYDataViewPref *data_view_pref) {    GSEGYDataViewPrivate *private = G_SEGY_DATA_VIEW_GET_PRIVATE (self);    private->data_view_pref = data_view_pref;    }

⌨️ 快捷键说明

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