📄 gsegyproperties.c
字号:
gtk_table_attach (GTK_TABLE (*table), *font_label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); *font_button = gtk_font_button_new_with_font (font_name); gtk_font_button_set_font_name (GTK_FONT_BUTTON (*font_button), font_name); gtk_font_button_set_title (GTK_FONT_BUTTON (*font_button), font_title); gtk_table_attach (GTK_TABLE (*table), *font_button, 1, 2, 0, 1, 0, 0, 0, 0); gtk_size_group_add_widget (GTK_SIZE_GROUP (size_group), *font_button); *fg_label = gtk_label_new (_("Foreground")); gtk_misc_set_alignment (GTK_MISC (*fg_label), 0, 1); gtk_table_attach (GTK_TABLE (*table), *fg_label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); *fg_button = gtk_color_button_new_with_color (fg_color); gtk_color_button_set_title (GTK_COLOR_BUTTON (*fg_button), fg_title); gtk_color_button_set_color (GTK_COLOR_BUTTON (*fg_button), fg_color); gtk_table_attach (GTK_TABLE (*table), *fg_button, 1, 2, 1, 2, 0, 0, 0, 0); gtk_size_group_add_widget (GTK_SIZE_GROUP (size_group), *fg_button); *bg_label = gtk_label_new (_("Background")); gtk_misc_set_alignment (GTK_MISC (*bg_label), 0, 1); gtk_table_attach (GTK_TABLE (*table), *bg_label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0); *bg_button = gtk_color_button_new_with_color (bg_color); gtk_color_button_set_title (GTK_COLOR_BUTTON (*bg_button), bg_title); gtk_color_button_set_color (GTK_COLOR_BUTTON (*bg_button), bg_color); gtk_table_attach (GTK_TABLE (*table), *bg_button, 1, 2, 2, 3, 0, 0, 0, 0); gtk_size_group_add_widget (GTK_SIZE_GROUP (size_group), *bg_button);}GtkWidget* g_segy_properties_get_main_widget (GSEGYProperties *self) { GSEGYPropertiesPrivate *private = G_SEGY_PROPERTIES_GET_PRIVATE (self); guint i, j; 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), _("Properties")); gtk_signal_connect (GTK_OBJECT (private->window), "delete_event", GTK_SIGNAL_FUNC (g_segy_properties_window_close_handler), (gpointer)G_OBJECT (self)); private->vbox = gtk_vbox_new (FALSE, 3); gtk_container_add (GTK_CONTAINER (private->window), private->vbox); private->notebook = gtk_notebook_new (); g_object_set (G_OBJECT (private->notebook), "tab-hborder", 5, "tab-vborder", 3, NULL); gtk_box_pack_start (GTK_BOX (private->vbox), private->notebook, TRUE, TRUE, 5); private->axes_vbox = gtk_vbox_new (FALSE, 3); gtk_container_set_border_width (GTK_CONTAINER (private->axes_vbox), 5); gtk_notebook_append_page (GTK_NOTEBOOK (private->notebook), private->axes_vbox, gtk_label_new (_("Axes"))); private->common_frame = gtk_frame_new (_("Common")); gtk_box_pack_start (GTK_BOX (private->axes_vbox), private->common_frame, FALSE, FALSE, 3); private->axes_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); private->common_table = gtk_table_new (3, 2, FALSE); g_segy_properties_build_axis_font_color_table (&private->common_table, &private->axes_font_label, &private->axes_font_button, &private->axes_fg_label, &private->axes_fg_button, &private->axes_bg_label, &private->axes_bg_button, private->axes_size_group, private->default_font, _("Font for all axes"), _("Foreground for all axes"), _("Background for all axes"), &private->axes_fg_color, &private->axes_bg_color); gtk_container_add (GTK_CONTAINER (private->common_frame), private->common_table); gtk_signal_connect (GTK_OBJECT (private->axes_font_button), "font-set", GTK_SIGNAL_FUNC (g_segy_properties_axes_font_set_handler), (gpointer)G_OBJECT (self)); gtk_signal_connect (GTK_OBJECT (private->axes_fg_button), "color-set", GTK_SIGNAL_FUNC (g_segy_properties_axes_fg_color_set_handler), (gpointer)G_OBJECT (self)); gtk_signal_connect (GTK_OBJECT (private->axes_bg_button), "color-set", GTK_SIGNAL_FUNC (g_segy_properties_axes_bg_color_set_handler), (gpointer)G_OBJECT (self)); private->axis_frame = gtk_frame_new (NULL); gtk_box_pack_start (GTK_BOX (private->axes_vbox), private->axis_frame, FALSE, FALSE, 3); private->axes_combo = gtk_combo_box_new_text (); gtk_combo_box_append_text (GTK_COMBO_BOX (private->axes_combo), _("Top")); gtk_combo_box_append_text (GTK_COMBO_BOX (private->axes_combo), _("Bottom")); gtk_combo_box_append_text (GTK_COMBO_BOX (private->axes_combo), _("Left")); gtk_combo_box_append_text (GTK_COMBO_BOX (private->axes_combo), _("Right")); gtk_combo_box_set_active (GTK_COMBO_BOX (private->axes_combo), private->active_axis); gtk_signal_connect (GTK_OBJECT (private->axes_combo), "changed", GTK_SIGNAL_FUNC (g_segy_properties_axes_combo_changed_handler), (gpointer)G_OBJECT (self)); gtk_frame_set_label_widget (GTK_FRAME (private->axis_frame), private->axes_combo); private->axis_vbox = gtk_vbox_new (FALSE, 3); gtk_container_add (GTK_CONTAINER (private->axis_frame), private->axis_vbox); for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) { private->axis_vboxs[i] = gtk_vbox_new (FALSE, 3); gtk_container_set_border_width (GTK_CONTAINER (private->axis_vboxs[i]), 5); gtk_box_pack_start (GTK_BOX (private->axis_vbox), private->axis_vboxs[i], FALSE, FALSE, 3); private->axis_show_toggle[i] = gtk_check_button_new_with_label (_("Show")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->axis_show_toggle[i]), private->axis_is_shown[i]); gtk_box_pack_start (GTK_BOX (private->axis_vboxs[i]), private->axis_show_toggle[i], FALSE, FALSE, 3); gtk_signal_connect (GTK_OBJECT (private->axis_show_toggle[i]), "toggled", GTK_SIGNAL_FUNC (g_segy_properties_axis_show_toggle_handler), (gpointer)G_OBJECT (self)); private->axis_hbox[i] = gtk_hbox_new (FALSE, 3); if (i <= G_SEIS_VIEW_AXIS_BOTTOM && private->sort_labels) { gtk_box_pack_start (GTK_BOX (private->axis_vboxs[i]), private->axis_hbox[i], FALSE, FALSE, 3); private->axis_label[i] = gtk_label_new (_("Labels")); gtk_misc_set_alignment (GTK_MISC (private->axis_label[i]), 0, 0.5); gtk_box_pack_start (GTK_BOX (private->axis_hbox[i]), private->axis_label[i], TRUE, TRUE, 3); private->axis_sort_combo[i] = gtk_combo_box_new_text (); for (j = 0; j < private->sort_labels->len - 1; j++) { gtk_combo_box_append_text (GTK_COMBO_BOX (private->axis_sort_combo[i]), g_ptr_array_index (private->sort_labels, j)); } gtk_combo_box_set_active (GTK_COMBO_BOX (private->axis_sort_combo[i]), private->axis_label_id[i]); gtk_size_group_add_widget (GTK_SIZE_GROUP (private->axes_size_group), private->axis_sort_combo[i]); gtk_box_pack_start (GTK_BOX (private->axis_hbox[i]), private->axis_sort_combo[i], FALSE, FALSE, 3); gtk_signal_connect (GTK_OBJECT (private->axis_sort_combo[i]), "changed", GTK_SIGNAL_FUNC (g_segy_properties_axis_label_combo_changed_handler), (gpointer)G_OBJECT (self)); } else { GtkWidget *integer_radio_alignment, *float_radio_alignment; GtkSizeGroup *radio_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); integer_radio_alignment = gtk_alignment_new (0, 0.5, 0, 0); private->axis_integer_radio[i] = gtk_radio_button_new_with_label (NULL, _("Integer")); gtk_container_add (GTK_CONTAINER (integer_radio_alignment), private->axis_integer_radio[i]); gtk_box_pack_start (GTK_BOX (private->axis_vboxs[i]), integer_radio_alignment, TRUE, TRUE, 0); gtk_size_group_add_widget (radio_size_group, private->axis_integer_radio[i]); float_radio_alignment = gtk_alignment_new (0, 0.5, 0, 0); private->axis_float_radio[i] = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (private->axis_integer_radio[i]), _("Float")); gtk_size_group_add_widget (radio_size_group, private->axis_float_radio[i]); gtk_container_add (GTK_CONTAINER (float_radio_alignment), private->axis_float_radio[i]); gtk_box_pack_start (GTK_BOX (private->axis_vboxs[i]), float_radio_alignment, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (private->axis_vboxs[i]), private->axis_hbox[i], FALSE, FALSE, 3); private->axis_label[i] = gtk_label_new (_("Precision")); gtk_misc_set_alignment (GTK_MISC (private->axis_label[i]), 0, 0.5); gtk_box_pack_start (GTK_BOX (private->axis_hbox[i]), private->axis_label[i], TRUE, TRUE, 3); private->axis_precision_spin[i] = gtk_spin_button_new_with_range (0, 6, 1); gtk_spin_button_set_value (GTK_SPIN_BUTTON (private->axis_precision_spin[i]), private->axis_precision[i]); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (private->axis_precision_spin[i]), 2); gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (private->axis_precision_spin[i]), TRUE); gtk_box_pack_start (GTK_BOX (private->axis_hbox[i]), private->axis_precision_spin[i], FALSE, FALSE, 3); gtk_widget_set_sensitive (private->axis_precision_spin[i], private->axis_is_float[i]); if (private->axis_is_float[i]) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->axis_float_radio[i]), TRUE); else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->axis_integer_radio[i]), TRUE); gtk_signal_connect (GTK_OBJECT (private->axis_float_radio[i]), "toggled", GTK_SIGNAL_FUNC (g_segy_properties_axis_format_changed_handler), (gpointer)G_OBJECT (self)); gtk_signal_connect (GTK_OBJECT (private->axis_precision_spin[i]), "value_changed", GTK_SIGNAL_FUNC (g_segy_properties_axis_precision_set_handler), (gpointer)G_OBJECT (self)); } g_segy_properties_build_axis_font_color_table (&private->axis_table[i], &private->axis_font_label[i], &private->axis_font_button[i], &private->axis_fg_label[i], &private->axis_fg_button[i], &private->axis_bg_label[i], &private->axis_bg_button[i], private->axes_size_group, private->default_font, _("Axis fonr"), _("Axis foreground"), _("Axis background"), &private->axis_fg_color[i], &private->axis_bg_color[i]); gtk_box_pack_start (GTK_BOX (private->axis_vboxs[i]), private->axis_table[i], FALSE, FALSE, 3); gtk_signal_connect (GTK_OBJECT (private->axis_font_button[i]), "font-set", GTK_SIGNAL_FUNC (g_segy_properties_axis_font_set_handler), (gpointer)G_OBJECT (self)); gtk_signal_connect (GTK_OBJECT (private->axis_fg_button[i]), "color-set", GTK_SIGNAL_FUNC (g_segy_properties_axis_fg_color_set_handler), (gpointer)G_OBJECT (self)); gtk_signal_connect (GTK_OBJECT (private->axis_bg_button[i]), "color-set", GTK_SIGNAL_FUNC (g_segy_properties_axis_bg_color_set_handler), (gpointer)G_OBJECT (self)); } private->data_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); private->data_vbox = gtk_vbox_new (FALSE, 3); gtk_container_set_border_width (GTK_CONTAINER (private->data_vbox), 5); gtk_notebook_append_page (GTK_NOTEBOOK (private->notebook), private->data_vbox, gtk_label_new (_("Data"))); private->data_colors_frame = gtk_frame_new (_("Colors")); gtk_box_pack_start (GTK_BOX (private->data_vbox), private->data_colors_frame, FALSE, FALSE, 3); private->data_table = gtk_table_new (3, 2, FALSE); gtk_container_set_border_width (GTK_CONTAINER (private->data_table), 5); gtk_table_set_row_spacings (GTK_TABLE (private->data_table), 5); gtk_table_set_col_spacings (GTK_TABLE (private->data_table), 10); private->trace_label = gtk_label_new (_("Trace")); gtk_misc_set_alignment (GTK_MISC (private->trace_label), 0, 1); gtk_table_attach (GTK_TABLE (private->data_table), private->trace_label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); private->trace_button = gtk_color_button_new_with_color (&private->trace_color); gtk_color_button_set_title (GTK_COLOR_BUTTON (private->trace_button), _("Trace color")); gtk_color_button_set_color (GTK_COLOR_BUTTON (private->trace_button), &private->trace_color); gtk_table_attach (GTK_TABLE (private->data_table), private->trace_button, 1, 2, 0, 1, 0, 0, 0, 0); gtk_size_group_add_widget (GTK_SIZE_GROUP (private->data_size_group), private->trace_button); gtk_signal_connect (GTK_OBJECT (private->trace_button), "color-set", GTK_SIGNAL_FUNC (g_segy_properties_trace_color_set_handler), (gpointer)G_OBJECT (self)); private->underlayer_label = gtk_label_new (_("Underlayer")); gtk_misc_set_alignment (GTK_MISC (private->underlayer_label), 0, 1); gtk_table_attach (GTK_TABLE (private->data_table), private->underlayer_label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); private->underlayer_button = gtk_color_button_new_with_color (&private->underlayer_color); gtk_color_button_set_title (GTK_COLOR_BUTTON (private->underlayer_button), _("Underlayer color")); gtk_color_button_set_color (GTK_COLOR_BUTTON (private->underlayer_button), &private->underlayer_color); gtk_table_attach (GTK_TABLE (private->data_table), private->underlayer_button, 1, 2, 1, 2, 0, 0, 0, 0); gtk_size_group_add_widget (GTK_SIZE_GROUP (private->data_size_group), private->underlayer_button); gtk_signal_connect (GTK_OBJECT (private->underlayer_button), "color-set", GTK_SIGNAL_FUNC (g_segy_properties_underlayer_color_set_handler), (gpointer)G_OBJECT (self)); private->highlight_label = gtk_label_new (_("Highlight")); gtk_misc_set_alignment (GTK_MISC (private->highlight_label), 0, 1); gtk_table_attach (GTK_TABLE (private->data_table), private->highlight_label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0); private->highlight_button = gtk_color_button_new_with_color (&private->highlight_color); gtk_color_button_set_title (GTK_COLOR_BUTTON (private->highlight_button), _("Highlight color")); gtk_color_button_set_color (GTK_COLOR_BUTTON (private->highlight_button), &private->highlight_color); gtk_table_attach (GTK_TABLE (private->data_table), private->highlight_button, 1, 2, 2, 3, 0, 0, 0, 0); gtk_size_group_add_widget (GTK_SIZE_GROUP (private->data_size_group), private->highlight_button); gtk_signal_connect (GTK_OBJECT (private->highlight_button), "color-set", GTK_SIGNAL_FUNC (g_segy_properties_highlight_color_set_handler), (gpointer)G_OBJECT (self)); gtk_container_add (GTK_CONTAINER (private->data_colors_frame), private->data_table); private->data_cursor_frame = gtk_frame_new (_("Cursor")); gtk_box_pack_start (GTK_BOX (private->data_vbox), private->data_cursor_frame, FALSE, FALSE, 3); private->data_cursor_vbox = gtk_vbox_new (FALSE, 3); gtk_container_set_border_width (GTK_CONTAINER (private->data_cursor_vbox), 5); gtk_container_add (GTK_CONTAINER (private->data_cursor_frame), private->data_cursor_vbox); private->show_cursor_toggle = gtk_check_button_new_with_label (_("Show cross")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->show_cursor_toggle), private->show_cross); gtk_box_pack_start (GTK_BOX (private->data_cursor_vbox), private->show_cursor_toggle, FALSE, FALSE, 3); gtk_signal_connect (GTK_OBJECT (private->show_cursor_toggle), "toggled", GTK_SIGNAL_FUNC (g_segy_properties_cursor_show_cross_toggle_handler), (gpointer)G_OBJECT (self)); private->real_amplitude_toggle = gtk_check_button_new_with_label (_("Real amplitude")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->real_amplitude_toggle), private->real_amplitude); gtk_box_pack_start (GTK_BOX (private->data_cursor_vbox), private->real_amplitude_toggle, FALSE, FALSE, 3); gtk_widget_set_sensitive (private->real_amplitude_toggle, FALSE == gtk_seis_view_gl_has_real_amplitudes (private->seis_view)); gtk_signal_connect (GTK_OBJECT (private->real_amplitude_toggle), "toggled", GTK_SIGNAL_FUNC (g_segy_properties_cursor_real_amplitude_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_properties_close_button_handler), (gpointer)G_OBJECT (self)); gtk_widget_show_all (private->vbox); for (i = 0; i < G_SEIS_VIEW_AXES_TYPES_NUM; i++) gtk_widget_hide (private->axis_vboxs[i]); gtk_widget_show (private->axis_vboxs[private->active_axis]); gsegy_view_set_window_icon (GTK_WINDOW (private->window)); } return private->window;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -