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

📄 gsegypreferences.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 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 "gsegyfileaux.h"#include "gsegypreferences.h"G_DEFINE_TYPE (GSEGYPreferences, g_segy_preferences, G_TYPE_OBJECT)#define G_SEGY_PREFERENCES_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), G_SEGY_TYPE_PREFERENCES, GSEGYPreferencesPrivate))typedef struct _GSEGYPreferencesPrivate GSEGYPreferencesPrivate;struct _GSEGYPreferencesPrivate {    GtkWidget     *window;    GtkWidget     *vbox;    GtkSizeGroup  *size_group;    GtkWidget     *table;    GtkWidget     *coloring_label;    GtkWidget     *coloring_combo;    GtkWidget     *signal_label;    GtkWidget     *signal_combo;    GtkWidget     *first_key_label;    GtkWidget     *first_key_combo;    GtkWidget     *second_key_label;    GtkWidget     *second_key_combo;    GtkWidget     *generate_toggle;    GtkWidget     *threaded_toggle;    GtkWidget     *button_box;    GtkWidget     *close_button;    GSEGYDataViewPref data_view_pref;};static void g_segy_preferences_signal_combo_changed_handler (GtkComboBox *combo_box, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    private->data_view_pref.signal = gtk_combo_box_get_active (GTK_COMBO_BOX (private->signal_combo));    if (0 == private->data_view_pref.signal) {        gtk_widget_set_sensitive (private->coloring_combo, FALSE);        gtk_combo_box_set_active (GTK_COMBO_BOX (private->coloring_combo), 0);        private->data_view_pref.coloring = 0;    } else        gtk_widget_set_sensitive (private->coloring_combo, TRUE);}static void g_segy_preferences_coloring_combo_changed_handler (GtkComboBox *combo_box, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    private->data_view_pref.coloring = gtk_combo_box_get_active (GTK_COMBO_BOX (private->coloring_combo));}static void g_segy_preferences_first_key_combo_changed_handler (GtkComboBox *combo_box, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    private->data_view_pref.first_key_order = gtk_combo_box_get_active (GTK_COMBO_BOX (private->first_key_combo));}static void g_segy_preferences_second_key_combo_changed_handler (GtkComboBox *combo_box, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    private->data_view_pref.second_key_order = gtk_combo_box_get_active (GTK_COMBO_BOX (private->second_key_combo));}static void g_segy_preferences_generate_toggle_handler (GtkWidget *widget, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    private->data_view_pref.generate_wiggles = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (private->generate_toggle));}static void g_segy_preferences_threaded_toggle_handler (GtkWidget *widget, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    private->data_view_pref.threaded = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (private->threaded_toggle));}static void g_segy_preferences_close_button_handler (GtkWidget *widget, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    gtk_widget_hide (private->window);}static gboolean g_segy_preferences_window_close_handler (GtkWidget *widget, GdkEvent *event, gpointer data) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (G_SEGY_PREFERENCES (data));    gtk_widget_hide (private->window);    return TRUE;}GtkWidget* g_segy_preferences_get_main_widget (GSEGYPreferences *self) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (self);    if (NULL == private->window) {        private->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);        gtk_container_set_border_width (GTK_CONTAINER (private->window), 7);        gtk_window_set_modal (GTK_WINDOW (private->window), FALSE);        gtk_window_set_resizable (GTK_WINDOW (private->window), FALSE);        gtk_window_set_title (GTK_WINDOW (private->window), _("Preferences"));        gtk_signal_connect (GTK_OBJECT (private->window), "delete_event",                            GTK_SIGNAL_FUNC (g_segy_preferences_window_close_handler), (gpointer)G_OBJECT (self));        private->vbox = gtk_vbox_new (FALSE, 3);        gtk_container_add (GTK_CONTAINER (private->window), private->vbox);        private->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);        private->table = gtk_table_new (4, 2, FALSE);        gtk_container_set_border_width (GTK_CONTAINER (private->table), 5);        gtk_table_set_row_spacings (GTK_TABLE (private->table), 5);        gtk_table_set_col_spacings (GTK_TABLE (private->table), 10);        private->signal_label = gtk_label_new (_("Signal"));        gtk_misc_set_alignment (GTK_MISC (private->signal_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table), private->signal_label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->signal_combo = gtk_combo_box_new_text  ();        gtk_combo_box_append_text (GTK_COMBO_BOX (private->signal_combo), _("Autodetect"));        gtk_combo_box_append_text (GTK_COMBO_BOX (private->signal_combo), _("Bipolar"));        gtk_combo_box_append_text (GTK_COMBO_BOX (private->signal_combo), _("Unipolar"));        gtk_combo_box_set_active (GTK_COMBO_BOX (private->signal_combo), private->data_view_pref.signal);        gtk_table_attach (GTK_TABLE (private->table), private->signal_combo, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0);        gtk_signal_connect (GTK_OBJECT (private->signal_combo), "changed",                            GTK_SIGNAL_FUNC (g_segy_preferences_signal_combo_changed_handler),                            (gpointer)G_OBJECT (self));        gtk_size_group_add_widget (GTK_SIZE_GROUP (private->size_group), private->signal_combo);        private->coloring_label = gtk_label_new (_("Coloring"));        gtk_misc_set_alignment (GTK_MISC (private->coloring_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table), private->coloring_label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->coloring_combo = gtk_combo_box_new_text  ();        gtk_combo_box_append_text (GTK_COMBO_BOX (private->coloring_combo), _("Symmetric"));        gtk_combo_box_append_text (GTK_COMBO_BOX (private->coloring_combo), _("Asymmetric"));        gtk_combo_box_set_active (GTK_COMBO_BOX (private->coloring_combo), private->data_view_pref.coloring);        gtk_table_attach (GTK_TABLE (private->table), private->coloring_combo, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0);        gtk_signal_connect (GTK_OBJECT (private->coloring_combo), "changed",                            GTK_SIGNAL_FUNC (g_segy_preferences_coloring_combo_changed_handler),                            (gpointer)G_OBJECT (self));        gtk_widget_set_sensitive (private->coloring_combo, FALSE);        gtk_size_group_add_widget (GTK_SIZE_GROUP (private->size_group), private->coloring_combo);        private->first_key_label = gtk_label_new (_("1st key order"));        gtk_misc_set_alignment (GTK_MISC (private->first_key_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table), private->first_key_label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->first_key_combo = gtk_combo_box_new_text  ();        gtk_combo_box_append_text (GTK_COMBO_BOX (private->first_key_combo), _("Ascending"));        gtk_combo_box_append_text (GTK_COMBO_BOX (private->first_key_combo), _("Descending"));        gtk_combo_box_set_active (GTK_COMBO_BOX (private->first_key_combo), private->data_view_pref.first_key_order);        gtk_table_attach (GTK_TABLE (private->table), private->first_key_combo, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0);        gtk_signal_connect (GTK_OBJECT (private->first_key_combo), "changed",                            GTK_SIGNAL_FUNC (g_segy_preferences_first_key_combo_changed_handler),                            (gpointer)G_OBJECT (self));        gtk_size_group_add_widget (GTK_SIZE_GROUP (private->size_group), private->first_key_combo);        private->second_key_label = gtk_label_new (_("2nd key order"));        gtk_misc_set_alignment (GTK_MISC (private->second_key_label), 0, 1);        gtk_table_attach (GTK_TABLE (private->table), private->second_key_label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0);        private->second_key_combo = gtk_combo_box_new_text  ();        gtk_combo_box_append_text (GTK_COMBO_BOX (private->second_key_combo), _("Ascending"));        gtk_combo_box_append_text (GTK_COMBO_BOX (private->second_key_combo), _("Descending"));        gtk_combo_box_set_active (GTK_COMBO_BOX (private->second_key_combo), private->data_view_pref.second_key_order);        gtk_table_attach (GTK_TABLE (private->table), private->second_key_combo, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0);        gtk_signal_connect (GTK_OBJECT (private->second_key_combo), "changed",                            GTK_SIGNAL_FUNC (g_segy_preferences_second_key_combo_changed_handler),                            (gpointer)G_OBJECT (self));        gtk_size_group_add_widget (GTK_SIZE_GROUP (private->size_group), private->second_key_combo);        gtk_box_pack_start (GTK_BOX (private->vbox), private->table, FALSE, FALSE, 3);        private->generate_toggle = gtk_check_button_new_with_label (_("Generate wiggles"));        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->generate_toggle), private->data_view_pref.generate_wiggles);        gtk_box_pack_start (GTK_BOX (private->vbox), private->generate_toggle, FALSE, FALSE, 3);        gtk_signal_connect (GTK_OBJECT (private->generate_toggle), "toggled",                            GTK_SIGNAL_FUNC (g_segy_preferences_generate_toggle_handler),                            (gpointer)G_OBJECT (self));        private->threaded_toggle = gtk_check_button_new_with_label (_("Threaded"));        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->threaded_toggle), private->data_view_pref.threaded);        gtk_box_pack_start (GTK_BOX (private->vbox), private->threaded_toggle, FALSE, FALSE, 3);        gtk_signal_connect (GTK_OBJECT (private->threaded_toggle), "toggled",                            GTK_SIGNAL_FUNC (g_segy_preferences_threaded_toggle_handler),                            (gpointer)G_OBJECT (self));        gtk_box_pack_start (GTK_BOX (private->vbox), gtk_hseparator_new (), TRUE, TRUE, 5);        private->button_box = gtk_hbutton_box_new ();        gtk_button_box_set_layout (GTK_BUTTON_BOX (private->button_box), GTK_BUTTONBOX_SPREAD);        gtk_box_pack_start (GTK_BOX (private->vbox), private->button_box, FALSE, FALSE, 5);        private->close_button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);        gtk_container_add (GTK_CONTAINER (private->button_box), private->close_button);        gtk_signal_connect (GTK_OBJECT (private->close_button), "clicked",                            GTK_SIGNAL_FUNC (g_segy_preferences_close_button_handler),                            (gpointer)G_OBJECT (self));        gtk_widget_show_all (private->vbox);        gsegy_view_set_window_icon (GTK_WINDOW (private->window));    }    return private->window;}gboolean g_segy_preferences_has_main_widget (GSEGYPreferences *self) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (self);    return (private->window != NULL);}GSEGYDataViewPref* g_segy_preferences_get_data_view_pref (GSEGYPreferences *self) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (self);    return &private->data_view_pref;}GSEGYPreferences* g_segy_preferences_new (void) {    return G_SEGY_PREFERENCES (g_object_new (G_SEGY_TYPE_PREFERENCES, NULL));}static void g_segy_preferences_init (GSEGYPreferences *self) {    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (self);    private->window = NULL;    private->vbox = NULL;    private->table = NULL;    private->coloring_label = NULL;    private->coloring_combo = NULL;    private->signal_label = NULL;    private->signal_combo = NULL;    private->first_key_label = NULL;    private->first_key_combo = NULL;    private->second_key_label = NULL;    private->second_key_combo = NULL;    private->generate_toggle = NULL;    private->threaded_toggle = NULL;    private->size_group = NULL;    private->data_view_pref.signal = 0;    private->data_view_pref.coloring = 0;    private->data_view_pref.first_key_order = 0;    private->data_view_pref.second_key_order = 0;    private->data_view_pref.generate_wiggles = TRUE;    private->data_view_pref.threaded = TRUE;#ifdef DEBUG    g_print ("<GSEGYPreferences is inited>\n");#endif}static void g_segy_preferences_finalize (GObject *object) {    GSEGYPreferences *self = G_SEGY_PREFERENCES (object);    GSEGYPreferencesPrivate *private = G_SEGY_PREFERENCES_GET_PRIVATE (self);    if (private->window)        gtk_widget_destroy (private->window);#ifdef DEBUG    g_print ("<GSEGYPreferences is finalized>\n");#endif    if (G_OBJECT_CLASS (g_segy_preferences_parent_class)->finalize)        G_OBJECT_CLASS (g_segy_preferences_parent_class)->finalize (object);}static void g_segy_preferences_class_init (GSEGYPreferencesClass *klass) {    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);    gobject_class->finalize = g_segy_preferences_finalize;    g_type_class_add_private (klass, sizeof (GSEGYPreferencesPrivate));#ifdef DEBUG    g_print ("<GSEGYPreferences class is inited>\n");#endif}

⌨️ 快捷键说明

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