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

📄 gsegytraceinfo.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 "gsegytraceinfo.h"G_DEFINE_TYPE (GSEGYTraceInfo, g_segy_trace_info, G_TYPE_OBJECT)#define G_SEGY_TRACE_INFO_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), G_SEGY_TYPE_TRACE_INFO, GSEGYTraceInfoPrivate))typedef struct _GSEGYTraceInfoPrivate GSEGYTraceInfoPrivate;struct _GSEGYTraceInfoPrivate {    GtkWidget       *tree_view;    GtkListStore    *fields_list_store;    GtkCellRenderer *field_name_renderer;    GtkCellRenderer *field_desc_renderer;    GtkCellRenderer *field_value_renderer;};static void g_segy_trace_info_init (GSEGYTraceInfo *self) {    GSEGYTraceInfoPrivate *private = G_SEGY_TRACE_INFO_GET_PRIVATE (self);    private->tree_view = NULL;    private->fields_list_store = NULL;    private->field_name_renderer = NULL;    private->field_desc_renderer = NULL;    private->field_value_renderer = NULL;#ifdef DEBUG    g_print ("<GSEGYTraceInfo is inited>\n");#endif}static void g_segy_trace_info_finalize (GObject *object) {    GSEGYTraceInfo *self = G_SEGY_TRACE_INFO (object);    GSEGYTraceInfoPrivate *private = G_SEGY_TRACE_INFO_GET_PRIVATE (self);    if (private->fields_list_store)        g_object_unref (G_OBJECT (private->fields_list_store));#ifdef DEBUG    g_print ("<GSEGYTraceInfo is finalized>\n");#endif    if (G_OBJECT_CLASS (g_segy_trace_info_parent_class)->finalize)        G_OBJECT_CLASS (g_segy_trace_info_parent_class)->finalize (object);}static void g_segy_trace_info_class_init (GSEGYTraceInfoClass *klass) {    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);    gobject_class->finalize = g_segy_trace_info_finalize;    g_type_class_add_private (klass, sizeof (GSEGYTraceInfoPrivate));#ifdef DEBUG    g_print ("<GSEGYTraceInfo class is inited>\n");#endif}GtkWidget* g_segy_trace_info_get_main_widget (GSEGYTraceInfo *self) {    GSEGYTraceInfoPrivate *private = G_SEGY_TRACE_INFO_GET_PRIVATE (self);    if (NULL == private->tree_view) {        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_name_renderer = gtk_cell_renderer_text_new ();        gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (private->tree_view),                                                     0, _("Name"), private->field_name_renderer,                                                     "text", 0, NULL);        g_object_set (G_OBJECT (private->field_name_renderer), "xalign", 1.0, "xpad", 5, "ypad", 5, NULL);        private->field_value_renderer = gtk_cell_renderer_text_new ();        gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (private->tree_view),                                                     1, _("Value"), private->field_value_renderer,                                                     "text", 1, 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),                                                     2, _("Description"), private->field_desc_renderer,                                                     "text", 2, NULL);        private->fields_list_store = gtk_list_store_new (3, G_TYPE_STRING, 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);        gtk_widget_show_all (private->tree_view);    }    return private->tree_view;}gboolean g_segy_trace_info_has_main_widget (GSEGYTraceInfo *self) {    GSEGYTraceInfoPrivate *private = G_SEGY_TRACE_INFO_GET_PRIVATE (self);    return (private->tree_view != NULL);}void g_segy_trace_info_set_fields_names (GSEGYTraceInfo *self, GPtrArray *names, GPtrArray *desc) {    GSEGYTraceInfoPrivate *private = G_SEGY_TRACE_INFO_GET_PRIVATE (self);    guint i;    const gchar *field_name, *field_desc;    GtkTreeIter iter;    if (NULL == private->tree_view)        g_segy_trace_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_trace_info_set_fields_values (GSEGYTraceInfo *self, GPtrArray *values) {    GSEGYTraceInfoPrivate *private = G_SEGY_TRACE_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);}GSEGYTraceInfo* g_segy_trace_info_new (void) {    return G_SEGY_TRACE_INFO (g_object_new (G_SEGY_TYPE_TRACE_INFO, NULL));}

⌨️ 快捷键说明

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