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

📄 gsegyfileinfo.c

📁 segy 显示程序!希望能给正在做这部分朋友提供一部分资料
💻 C
📖 第 1 页 / 共 2 页
字号:
    if (private->trace_header_labels) {        g_ptr_array_free (private->trace_header_labels, TRUE);        private->trace_header_labels = NULL;    }    g_segy_format_wizard_get_labels_for_trace_header (format_wizard, decoded_trace_header,                                                      &private->trace_header_chunk,                                                      &private->trace_header_labels);    if (private->trace_header_chunk) {        g_segy_trace_info_set_fields_values (private->trace_info, private->trace_header_labels);#ifdef DEBUG    } else {        g_printf ("Trace header values extraction failed in the file info.\n");#endif    }}static void g_segy_file_info_trace_number_change_handler (GtkWidget *widget, gpointer data) {    GSEGYFileInfoPrivate *private = G_SEGY_FILE_INFO_GET_PRIVATE (G_SEGY_FILE_INFO (data));    private->trace_index = gtk_spin_button_get_value (GTK_SPIN_BUTTON (private->trace_spin)) - 1;    g_segy_file_info_fill_trace_header_values (G_SEGY_FILE_INFO (data));}GtkWidget* g_segy_file_info_get_main_widget (GSEGYFileInfo *self) {    GSEGYFileInfoPrivate *private = G_SEGY_FILE_INFO_GET_PRIVATE (self);    gchar gbuffer[120];    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), _("File info"));        gtk_widget_set_size_request (GTK_WIDGET (private->window), 500, 600);        gtk_signal_connect (GTK_OBJECT (private->window), "delete_event",                            GTK_SIGNAL_FUNC (g_segy_file_info_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);        if (g_segy_format_wizard_get_ebcdic_header_size (g_segy_file_accessor_get_format_wizard (private->file_accessor))) {            private->text_vbox = gtk_vbox_new (FALSE, 3);            gtk_container_set_border_width (GTK_CONTAINER (private->text_vbox), 5);            gtk_notebook_append_page (GTK_NOTEBOOK (private->notebook), private->text_vbox, gtk_label_new (_("Text header")));            private->text_frame = gtk_frame_new (NULL);            gtk_box_pack_start (GTK_BOX (private->text_vbox), private->text_frame, TRUE, TRUE, 3);            private->text_scrolled = gtk_scrolled_window_new (NULL, NULL);            gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (private->text_scrolled), GTK_SHADOW_IN);            gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (private->text_scrolled),                                            GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);            gtk_container_add (GTK_CONTAINER (private->text_frame), private->text_scrolled);            private->text_view = gtk_text_view_new ();            gtk_text_view_set_editable (GTK_TEXT_VIEW (private->text_view), FALSE);            gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (private->text_view), FALSE);            GtkTextBuffer *text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (private->text_view));            GtkTextIter iter;            gtk_text_buffer_get_iter_at_offset (text_buffer, &iter, 0);            gtk_text_buffer_insert (text_buffer, &iter, g_segy_file_accessor_get_ebcdic_header (private->file_accessor), -1);            gint buffer_length = gtk_text_buffer_get_char_count (text_buffer);            gint line_length = 80, i = 0, n = buffer_length / line_length;            while (i < n) {                gtk_text_buffer_get_iter_at_offset (text_buffer, &iter, (i + 1) * line_length + i);                gtk_text_buffer_insert (text_buffer, &iter, "\n", 1);                i++;            }            gtk_text_view_set_left_margin (GTK_TEXT_VIEW (private->text_view), 3);            gtk_text_view_set_right_margin (GTK_TEXT_VIEW (private->text_view), 3);            gtk_container_add (GTK_CONTAINER (private->text_scrolled), private->text_view);        }        if (g_segy_format_wizard_get_binary_header_size (g_segy_file_accessor_get_format_wizard (private->file_accessor))) {            private->binary_vbox = gtk_vbox_new (FALSE, 3);            gtk_container_set_border_width (GTK_CONTAINER (private->binary_vbox), 5);            gtk_notebook_append_page (GTK_NOTEBOOK (private->notebook), private->binary_vbox, gtk_label_new (_("Binary header")));            private->binary_frame = gtk_frame_new (NULL);            gtk_box_pack_start (GTK_BOX (private->binary_vbox), private->binary_frame, TRUE, TRUE, 3);            private->binary_scrolled = gtk_scrolled_window_new (NULL, NULL);            gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (private->binary_scrolled), GTK_SHADOW_IN);            gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (private->binary_scrolled),                                            GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);            gtk_container_add (GTK_CONTAINER (private->binary_frame), private->binary_scrolled);            private->tree_view = gtk_tree_view_new ();            gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (private->tree_view), TRUE);            gtk_tree_view_set_reorderable (GTK_TREE_VIEW (private->tree_view), FALSE);            gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (private->tree_view)),                                         GTK_SELECTION_SINGLE);            private->field_value_renderer = gtk_cell_renderer_text_new ();            gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (private->tree_view),                                                         0, _("Value"), private->field_value_renderer,                                                         "text", 0, NULL);            g_object_set (G_OBJECT (private->field_value_renderer), "xalign", 1.0, "xpad", 5, "ypad", 5, NULL);            private->field_desc_renderer = gtk_cell_renderer_text_new ();            gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (private->tree_view),                                                         1, _("Description"), private->field_desc_renderer,                                                         "text", 1, NULL);            private->fields_list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);            gtk_tree_view_set_model (GTK_TREE_VIEW (private->tree_view), GTK_TREE_MODEL (private->fields_list_store));            gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (private->tree_view), FALSE);            g_segy_file_info_fill_binary_header_list (self);            gtk_container_add (GTK_CONTAINER (private->binary_scrolled), private->tree_view);        }        private->trace_vbox = gtk_vbox_new (FALSE, 3);        gtk_container_set_border_width (GTK_CONTAINER (private->trace_vbox), 5);        gtk_notebook_append_page (GTK_NOTEBOOK (private->notebook), private->trace_vbox, gtk_label_new (_("Trace header")));        private->trace_hbox = gtk_hbox_new (FALSE, 3);        gtk_box_pack_start (GTK_BOX (private->trace_vbox), private->trace_hbox, FALSE, FALSE, 3);        private->trace_number_label = gtk_label_new (_("Trace number"));        gtk_box_pack_start (GTK_BOX (private->trace_hbox), private->trace_number_label, FALSE, FALSE, 3);        private->trace_spin = gtk_spin_button_new_with_range (1, g_segy_file_accessor_get_number_of_traces (private->file_accessor), 1);        gtk_spin_button_set_digits (GTK_SPIN_BUTTON (private->trace_spin), 0);        gtk_spin_button_set_increments (GTK_SPIN_BUTTON (private->trace_spin), 1, 10);        gtk_spin_button_set_value (GTK_SPIN_BUTTON (private->trace_spin), 1);        gtk_box_pack_start (GTK_BOX (private->trace_hbox), private->trace_spin, FALSE, FALSE, 3);        gtk_signal_connect (GTK_OBJECT (private->trace_spin), "value_changed",                            GTK_SIGNAL_FUNC (g_segy_file_info_trace_number_change_handler),                            (gpointer)G_OBJECT (self));        g_snprintf (gbuffer, 120, "of total %d traces", g_segy_file_accessor_get_number_of_traces (private->file_accessor));        private->trace_total_label = gtk_label_new (gbuffer);        gtk_box_pack_start (GTK_BOX (private->trace_hbox), private->trace_total_label, FALSE, FALSE, 3);        private->trace_frame = gtk_frame_new (NULL);        gtk_box_pack_start (GTK_BOX (private->trace_vbox), private->trace_frame, TRUE, TRUE, 3);        private->trace_scrolled = gtk_scrolled_window_new (NULL, NULL);        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (private->trace_scrolled), GTK_SHADOW_IN);        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (private->trace_scrolled),                                        GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);        gtk_container_add (GTK_CONTAINER (private->trace_frame), private->trace_scrolled);        private->trace_info = g_segy_trace_info_new ();        gtk_container_add (GTK_CONTAINER (private->trace_scrolled), g_segy_trace_info_get_main_widget (private->trace_info));        gtk_box_pack_start (GTK_BOX (private->vbox), gtk_hseparator_new (), FALSE, FALSE, 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_file_info_close_button_handler),                            (gpointer)G_OBJECT (self));        g_segy_file_info_fill_trace_header_list (self);        g_segy_file_info_fill_trace_header_values (self);        gtk_widget_show_all (private->vbox);        gsegy_view_set_window_icon (GTK_WINDOW (private->window));    }    return private->window;}gboolean g_segy_file_info_has_main_widget (GSEGYFileInfo *self) {    GSEGYFileInfoPrivate *private = G_SEGY_FILE_INFO_GET_PRIVATE (self);    return (private->tree_view != NULL);}/*void g_segy_file_info_set_fields_names (GSEGYFileInfo *self, GPtrArray *names, GPtrArray *desc) {    GSEGYFileInfoPrivate *private = G_SEGY_FILE_INFO_GET_PRIVATE (self);    guint i;    const gchar *field_name, *field_desc;    GtkTreeIter iter;    if (NULL == private->tree_view)        g_segy_file_info_get_main_widget (self);    gtk_list_store_clear (private->fields_list_store);    for (i = 0; i < names->len; i++) {        field_name = (const gchar*)g_ptr_array_index (names, i);        field_desc = (const gchar*)g_ptr_array_index (desc, i);        if (NULL == field_name)            continue;        gtk_list_store_append (private->fields_list_store, &iter);        gtk_list_store_set (private->fields_list_store, &iter, 0,                            field_name, 1, "", 2, field_desc, -1);    }}void g_segy_file_info_set_fields_values (GSEGYFileInfo *self, GPtrArray *values) {    GSEGYFileInfoPrivate *private = G_SEGY_FILE_INFO_GET_PRIVATE (self);    guint i;    const gchar *value;    GtkTreeIter iter;    GValue gvalue;    if (NULL == private->tree_view)        return;    for (i = 0; i < sizeof (GValue); i++) {        ((guint8*)&gvalue)[i] = 0;    }    g_value_init (&gvalue, G_TYPE_STRING);    gtk_tree_model_get_iter_first (GTK_TREE_MODEL (private->fields_list_store), &iter);    for (i = 0; i < values->len; i++) {        value = (const gchar*)g_ptr_array_index (values, i);        if (NULL == value)            continue;        g_value_set_static_string (&gvalue, value);        gtk_list_store_set_value (private->fields_list_store, &iter, 1, &gvalue);        if (FALSE == gtk_tree_model_iter_next (GTK_TREE_MODEL (private->fields_list_store), &iter))            break;    }    g_value_unset (&gvalue);}*/GSEGYFileInfo* g_segy_file_info_new (GSEGYFileAccessor *file_accessor) {    GSEGYFileInfo *new_file_info = G_SEGY_FILE_INFO (g_object_new (G_SEGY_TYPE_FILE_INFO, NULL));    GSEGYFileInfoPrivate *private = G_SEGY_FILE_INFO_GET_PRIVATE (new_file_info);    private->file_accessor = file_accessor;    g_object_ref (G_OBJECT (private->file_accessor));    return new_file_info;}

⌨️ 快捷键说明

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