diff options
author | Joakim Sindholt <opensource@zhasha.com> | 2010-04-06 13:37:39 +0200 |
---|---|---|
committer | Joakim Sindholt <opensource@zhasha.com> | 2010-04-06 13:37:39 +0200 |
commit | d2e587d78f3e1fdc54306597a3750e3c8ea65bcc (patch) | |
tree | 75e1be417db298a235129c0a55c4fdb3d895ab11 | |
parent | eacd0d55054313151b7477b7dc0c0176f30c4919 (diff) |
csview: convert to GtkBuilder
-rw-r--r-- | src/csview.c | 170 | ||||
-rw-r--r-- | src/csview.vala | 218 | ||||
-rw-r--r-- | src/main.c | 16 |
3 files changed, 224 insertions, 180 deletions
diff --git a/src/csview.c b/src/csview.c index ab4d7e8..c4bd35a 100644 --- a/src/csview.c +++ b/src/csview.c @@ -7,6 +7,7 @@ #include <gtk/gtk.h> #include <stdlib.h> #include <string.h> +#include <stdio.h> #include <gobject/gvaluecollector.h> @@ -153,6 +154,7 @@ typedef struct _GUICSListModelParamSpecCSIter GUICSListModelParamSpecCSIter; typedef struct _GUICSView GUICSView; typedef struct _GUICSViewClass GUICSViewClass; typedef struct _GUICSViewPrivate GUICSViewPrivate; +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define EMULATION_TYPE_SPEC_ENTRY (emulation_spec_entry_get_type ()) typedef struct _EmulationSpecEntry EmulationSpecEntry; @@ -248,7 +250,6 @@ struct _GUICSViewPrivate { gint models_length1; gint models_size; GtkTreeView* cs_view; - guint m_pos; }; struct _EmulationSpecEntry { @@ -295,6 +296,8 @@ static gint gui_cs_list_model_packet_headers_length_size = 0; static gpointer gui_cs_list_model_cs_iter_parent_class = NULL; static gpointer gui_cs_list_model_parent_class = NULL; static GtkTreeModelIface* gui_cs_list_model_gtk_tree_model_parent_iface = NULL; +static char* gui_cs_view_xml_ui; +static char* gui_cs_view_xml_ui = NULL; extern EmulationSpecEntry* emulation_specs; extern gint emulation_specs_length1; extern guint emulation_spec_default; @@ -407,8 +410,6 @@ GType gui_cs_view_get_type (void); enum { GUI_CS_VIEW_DUMMY_PROPERTY }; -static void gui_cs_view_current_dword_renderer (GUICSView* self, GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter); -static void _gui_cs_view_current_dword_renderer_gtk_tree_cell_data_func (GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); GType emulation_spec_entry_get_type (void); EmulationSpecEntry* emulation_spec_entry_dup (const EmulationSpecEntry* self); void emulation_spec_entry_free (EmulationSpecEntry* self); @@ -2065,8 +2066,11 @@ GType gui_cs_list_model_get_type (void) { } -static void _gui_cs_view_current_dword_renderer_gtk_tree_cell_data_func (GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) { - gui_cs_view_current_dword_renderer (self, tree_column, cell, tree_model, iter); +static glong string_get_length (const char* self) { + glong result; + g_return_val_if_fail (self != NULL, 0L); + result = g_utf8_strlen (self, -1); + return result; } @@ -2082,109 +2086,102 @@ static void __lambda8__gtk_combo_box_changed (GtkComboBox* _sender, gpointer sel GUICSView* gui_cs_view_construct (GType object_type, EmulationCS* cs) { + GError * _inner_error_; GUICSView * self; - GtkTreeView* _tmp0_; - GtkCellRendererPixbuf* _tmp1_; - GtkCellRendererText* _tmp2_; - GtkTreeViewColumn* _tmp3_; - GtkTreeViewColumn* ec_name; - GtkCellRendererText* _tmp4_; - GtkTreeViewColumn* _tmp5_; - GtkTreeViewColumn* ec_value; - GtkCellRendererText* _tmp6_; - GtkTreeViewColumn* _tmp7_; - GtkTreeViewColumn* ec_target; - GUICSListModel** _tmp8_; + GtkBuilder* builder; + GUICSListModel** _tmp0_; GtkComboBox* chips; - GtkScrolledWindow* cs_sw; - GtkLabel* chip_label; + GObject* _tmp3_; GtkHBox* chips_box; - GtkButton* _tmp11_; - GtkImage* _tmp12_; + GtkTreeView* _tmp5_; + GObject* _tmp4_; + GtkTreeViewColumn* _tmp7_; + GtkCellRendererText* _tmp6_; + GtkTreeViewColumn* _tmp9_; + GtkCellRendererText* _tmp8_; + GtkTreeViewColumn* _tmp11_; + GtkCellRendererText* _tmp10_; GtkButton* _tmp13_; - GtkImage* _tmp14_; - GtkVBox* btnbox; - GtkHBox* hbl; - GtkVBox* vbl; + GObject* _tmp12_; + GtkButton* _tmp15_; + GObject* _tmp14_; + GObject* _tmp16_; g_return_val_if_fail (cs != NULL, NULL); + _inner_error_ = NULL; self = g_object_newv (object_type, 0, NULL); - self->priv->m_pos = (guint) 0; - self->priv->cs_view = (_tmp0_ = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new ()), _g_object_unref0 (self->priv->cs_view), _tmp0_); - gtk_tree_view_insert_column_with_data_func (self->priv->cs_view, -1, "", (GtkCellRenderer*) (_tmp1_ = g_object_ref_sink ((GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ())), _gui_cs_view_current_dword_renderer_gtk_tree_cell_data_func, g_object_ref (self), g_object_unref); - _g_object_unref0 (_tmp1_); - ec_name = (_tmp3_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Name", (GtkCellRenderer*) (_tmp2_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_NAME, NULL, NULL)), _g_object_unref0 (_tmp2_), _tmp3_); - ec_value = (_tmp5_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Value", (GtkCellRenderer*) (_tmp4_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_VALUE, NULL, NULL)), _g_object_unref0 (_tmp4_), _tmp5_); - ec_target = (_tmp7_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Target", (GtkCellRenderer*) (_tmp6_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_TARGET, NULL, NULL)), _g_object_unref0 (_tmp6_), _tmp7_); - gtk_tree_view_insert_column (self->priv->cs_view, ec_name, -1); - gtk_tree_view_insert_column (self->priv->cs_view, ec_value, -1); - gtk_tree_view_insert_column (self->priv->cs_view, ec_target, -1); - gtk_tree_view_column_set_resizable (ec_name, TRUE); - gtk_tree_view_column_set_resizable (ec_value, TRUE); - gtk_tree_view_column_set_resizable (ec_target, TRUE); - self->priv->models = (_tmp8_ = g_new0 (GUICSListModel*, emulation_specs_length1 + 1), self->priv->models = (_vala_array_free (self->priv->models, self->priv->models_length1, (GDestroyNotify) g_object_unref), NULL), self->priv->models_length1 = emulation_specs_length1, self->priv->models_size = self->priv->models_length1, _tmp8_); + builder = gtk_builder_new (); + { + gtk_builder_add_from_string (builder, gui_cs_view_xml_ui, (gsize) string_get_length (gui_cs_view_xml_ui), &_inner_error_); + if (_inner_error_ != NULL) { + goto __catch2_g_error; + } + } + goto __finally2; + __catch2_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + fprintf (stderr, "Unable to construct cs viewer: %s\n", e->message); + _g_error_free0 (e); + _g_object_unref0 (builder); + return self; + } + } + __finally2: + if (_inner_error_ != NULL) { + _g_object_unref0 (builder); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return NULL; + } + gtk_window_set_title ((GtkWindow*) self, "Viewing CS"); + gtk_container_set_border_width ((GtkContainer*) self, (guint) 10); + gtk_window_set_default_size ((GtkWindow*) self, 640, 480); + self->priv->models = (_tmp0_ = g_new0 (GUICSListModel*, emulation_specs_length1 + 1), self->priv->models = (_vala_array_free (self->priv->models, self->priv->models_length1, (GDestroyNotify) g_object_unref), NULL), self->priv->models_length1 = emulation_specs_length1, self->priv->models_size = self->priv->models_length1, _tmp0_); chips = g_object_ref_sink ((GtkComboBox*) gtk_combo_box_new_text ()); { guint i; i = (guint) 0; { - gboolean _tmp9_; - _tmp9_ = TRUE; + gboolean _tmp1_; + _tmp1_ = TRUE; while (TRUE) { - GUICSListModel* _tmp10_; - if (!_tmp9_) { + GUICSListModel* _tmp2_; + if (!_tmp1_) { i++; } - _tmp9_ = FALSE; + _tmp1_ = FALSE; if (!(i < emulation_specs_length1)) { break; } gtk_combo_box_append_text (chips, emulation_specs[i].name); - self->priv->models[i] = (_tmp10_ = gui_cs_list_model_new (cs, emulation_specs[i].spec), _g_object_unref0 (self->priv->models[i]), _tmp10_); + self->priv->models[i] = (_tmp2_ = gui_cs_list_model_new (cs, emulation_specs[i].spec), _g_object_unref0 (self->priv->models[i]), _tmp2_); } } } gtk_combo_box_set_active (chips, (gint) emulation_spec_default); g_signal_connect_object (chips, "changed", (GCallback) __lambda8__gtk_combo_box_changed, self, 0); - gtk_tree_view_set_model (self->priv->cs_view, (GtkTreeModel*) self->priv->models[emulation_spec_default]); - gtk_tree_view_set_expander_column (self->priv->cs_view, ec_name); - cs_sw = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); - gtk_container_add ((GtkContainer*) cs_sw, (GtkWidget*) self->priv->cs_view); - gtk_scrolled_window_set_shadow_type (cs_sw, GTK_SHADOW_ETCHED_IN); - g_object_set (cs_sw, "hscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - g_object_set (cs_sw, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - chip_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (NULL)); - gtk_label_set_markup (chip_label, "<b>Emulated chip:</b>"); - chips_box = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 4)); - gtk_box_pack_start ((GtkBox*) chips_box, (GtkWidget*) chip_label, FALSE, FALSE, (guint) 0); + chips_box = _g_object_ref0 ((_tmp3_ = gtk_builder_get_object (builder, "chips_box"), GTK_IS_HBOX (_tmp3_) ? ((GtkHBox*) _tmp3_) : NULL)); gtk_box_pack_start ((GtkBox*) chips_box, (GtkWidget*) chips, FALSE, FALSE, (guint) 0); - self->priv->up_btn = (_tmp11_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->up_btn), _tmp11_); - gtk_container_add ((GtkContainer*) self->priv->up_btn, (GtkWidget*) (_tmp12_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_stock ("gtk-go-up", GTK_ICON_SIZE_BUTTON)))); - _g_object_unref0 (_tmp12_); - self->priv->down_btn = (_tmp13_ = g_object_ref_sink ((GtkButton*) gtk_button_new ()), _g_object_unref0 (self->priv->down_btn), _tmp13_); - gtk_container_add ((GtkContainer*) self->priv->down_btn, (GtkWidget*) (_tmp14_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_stock ("gtk-go-down", GTK_ICON_SIZE_BUTTON)))); - _g_object_unref0 (_tmp14_); - btnbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); - gtk_box_pack_start ((GtkBox*) btnbox, (GtkWidget*) self->priv->up_btn, FALSE, FALSE, (guint) 0); - gtk_box_pack_end ((GtkBox*) btnbox, (GtkWidget*) self->priv->down_btn, FALSE, FALSE, (guint) 0); - hbl = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 4)); - gtk_box_pack_start ((GtkBox*) hbl, (GtkWidget*) cs_sw, TRUE, TRUE, (guint) 0); - gtk_box_pack_start ((GtkBox*) hbl, (GtkWidget*) btnbox, FALSE, TRUE, (guint) 0); - vbl = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 4)); - gtk_box_pack_start ((GtkBox*) vbl, (GtkWidget*) chips_box, FALSE, TRUE, (guint) 0); - gtk_box_pack_start ((GtkBox*) vbl, (GtkWidget*) hbl, TRUE, TRUE, (guint) 0); - gtk_container_add ((GtkContainer*) self, (GtkWidget*) vbl); - gtk_container_set_border_width ((GtkContainer*) self, (guint) 10); - gtk_window_set_default_size ((GtkWindow*) self, 640, 480); - _g_object_unref0 (ec_name); - _g_object_unref0 (ec_value); - _g_object_unref0 (ec_target); + self->priv->cs_view = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_builder_get_object (builder, "packet_tree"), GTK_IS_TREE_VIEW (_tmp4_) ? ((GtkTreeView*) _tmp4_) : NULL)), _g_object_unref0 (self->priv->cs_view), _tmp5_); + gtk_tree_view_set_model (self->priv->cs_view, (GtkTreeModel*) self->priv->models[emulation_spec_default]); + gtk_tree_view_insert_column (self->priv->cs_view, _tmp7_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Name", (GtkCellRenderer*) (_tmp6_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_NAME, NULL, NULL)), -1); + _g_object_unref0 (_tmp7_); + _g_object_unref0 (_tmp6_); + gtk_tree_view_insert_column (self->priv->cs_view, _tmp9_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Value", (GtkCellRenderer*) (_tmp8_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_VALUE, NULL, NULL)), -1); + _g_object_unref0 (_tmp9_); + _g_object_unref0 (_tmp8_); + gtk_tree_view_insert_column (self->priv->cs_view, _tmp11_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Target", (GtkCellRenderer*) (_tmp10_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_TARGET, NULL, NULL)), -1); + _g_object_unref0 (_tmp11_); + _g_object_unref0 (_tmp10_); + self->priv->up_btn = (_tmp13_ = _g_object_ref0 ((_tmp12_ = gtk_builder_get_object (builder, "up_button"), GTK_IS_BUTTON (_tmp12_) ? ((GtkButton*) _tmp12_) : NULL)), _g_object_unref0 (self->priv->up_btn), _tmp13_); + self->priv->down_btn = (_tmp15_ = _g_object_ref0 ((_tmp14_ = gtk_builder_get_object (builder, "down_button"), GTK_IS_BUTTON (_tmp14_) ? ((GtkButton*) _tmp14_) : NULL)), _g_object_unref0 (self->priv->down_btn), _tmp15_); + gtk_container_add ((GtkContainer*) self, (_tmp16_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_WIDGET (_tmp16_) ? ((GtkWidget*) _tmp16_) : NULL)); + _g_object_unref0 (builder); _g_object_unref0 (chips); - _g_object_unref0 (cs_sw); - _g_object_unref0 (chip_label); _g_object_unref0 (chips_box); - _g_object_unref0 (btnbox); - _g_object_unref0 (hbl); - _g_object_unref0 (vbl); return self; } @@ -2194,18 +2191,11 @@ GUICSView* gui_cs_view_new (EmulationCS* cs) { } -static void gui_cs_view_current_dword_renderer (GUICSView* self, GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter) { - g_return_if_fail (self != NULL); - g_return_if_fail (tree_column != NULL); - g_return_if_fail (cell != NULL); - g_return_if_fail (model != NULL); -} - - static void gui_cs_view_class_init (GUICSViewClass * klass) { gui_cs_view_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (GUICSViewPrivate)); G_OBJECT_CLASS (klass)->finalize = gui_cs_view_finalize; + gui_cs_view_xml_ui = g_strdup ("\n <?xml version=\"1.0\"?>\n <interface>\n <requires lib=\"gtk+\" version=\"2.16\"/>\n <!-- interface-naming-policy project-wide -->\n <object class=\"GtkVBox\" id=\"mainbox\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <property name=\"spacing\">4</property>\n <child>\n <object class=\"GtkHBox\" id=\"chips_box\">\n <property name=\"visible\">True</property>\n <property name=\"spacing\">4</property>\n <child>\n <object class=\"GtkLabel\" id=\"label1\">\n <property name=\"visible\">True</property>\n <property name=\"label\" translatable=\"yes\"><b>Chip</b></property>\n <property name=\"use_markup\">True</property>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">0</property>\n </packing>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">0</property>\n </packing>\n </child>\n <child>\n <object class=\"GtkHBox\" id=\"hbox2\">\n <property name=\"visible\">True</property>\n <property name=\"spacing\">4</property>\n <child>\n <object class=\"GtkScrolledWindow\" id=\"scrolledwindow1\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"hscrollbar_policy\">automatic</property>\n <property name=\"vscrollbar_policy\">automatic</property>\n <property name=\"shadow_type\">etched-in</property>\n <child>\n <object class=\"GtkTreeView\" id=\"packet_tree\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"position\">0</property>\n </packing>\n </child>\n <child>\n <object class=\"GtkVBox\" id=\"vbox2\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <child>\n <object class=\"GtkButton\" id=\"up_button\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"receives_default\">True</property>\n <child>\n <object class=\"GtkImage\" id=\"image2\">\n <property name=\"visible\">True</property>\n <property name=\"stock\">gtk-go-up</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">0</property>\n </packing>\n </child>\n <child>\n <object class=\"GtkButton\" id=\"down_button\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"receives_default\">True</property>\n <child>\n <object class=\"GtkImage\" id=\"image1\">\n <property name=\"visible\">True</property>\n <property name=\"stock\">gtk-go-down</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"pack_type\">end</property>\n <property name=\"position\">1</property>\n </packing>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">1</property>\n </packing>\n </child>\n </object>\n <packing>\n <property name=\"position\">1</property>\n </packing>\n </child>\n </object>\n </interface>\n "); } diff --git a/src/csview.vala b/src/csview.vala index 18371fe..870339c 100644 --- a/src/csview.vala +++ b/src/csview.vala @@ -672,32 +672,136 @@ namespace GUI public class CSView : Window { + private static string xml_ui = """ + <?xml version="1.0"?> + <interface> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy project-wide --> + <object class="GtkVBox" id="mainbox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">4</property> + <child> + <object class="GtkHBox" id="chips_box"> + <property name="visible">True</property> + <property name="spacing">4</property> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Chip</b></property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="spacing">4</property> + <child> + <object class="GtkScrolledWindow" id="scrolledwindow1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">etched-in</property> + <child> + <object class="GtkTreeView" id="packet_tree"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </object> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkButton" id="up_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <child> + <object class="GtkImage" id="image2"> + <property name="visible">True</property> + <property name="stock">gtk-go-up</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="down_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <child> + <object class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-go-down</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </interface> + """; + //private CS m_cs; private Button up_btn; private Button down_btn; private CSListModel[] models; private TreeView cs_view; - //private ListStore m_reg_store; - //private ListStore m_raw_store; - private uint m_pos; + //private uint m_pos; public CSView(CS cs) { //m_cs = cs; - m_pos = 0; - - cs_view = new TreeView(); - cs_view.insert_column_with_data_func(-1, "", new Gtk.CellRendererPixbuf(), current_dword_renderer); - var ec_name = new Gtk.TreeViewColumn.with_attributes("Name", new Gtk.CellRendererText(), "text", CSListModel.Columns.NAME, null); - var ec_value = new Gtk.TreeViewColumn.with_attributes("Value", new Gtk.CellRendererText(), "text", CSListModel.Columns.VALUE, null); - var ec_target = new Gtk.TreeViewColumn.with_attributes("Target", new Gtk.CellRendererText(), "text", CSListModel.Columns.TARGET, null); - cs_view.insert_column(ec_name, -1); - cs_view.insert_column(ec_value, -1); - cs_view.insert_column(ec_target, -1); - ec_name.resizable = true; - ec_value.resizable = true; - ec_target.resizable = true; + //m_pos = 0; + + var builder = new Builder(); + try { + builder.add_from_string(xml_ui, xml_ui.length); + } catch (Error e) { + stderr.printf("Unable to construct cs viewer: %s\n", e.message); + return; + } + title = "Viewing CS"; + border_width = 10; + set_default_size(640, 480); + /* can't make a ComboBox.text with GtkBuilder to my knowledge */ models = new CSListModel[specs.length]; var chips = new ComboBox.text(); for (uint i = 0; i < specs.length; i++) { @@ -707,80 +811,30 @@ namespace GUI chips.set_active((int)spec_default); chips.changed.connect((combo) => { cs_view.set_model(models[combo.get_active()]); }); - cs_view.set_model(models[spec_default]); - cs_view.set_expander_column(ec_name); - - var cs_sw = new ScrolledWindow(null, null); - cs_sw.add(cs_view); - cs_sw.shadow_type = ShadowType.ETCHED_IN; - cs_sw.hscrollbar_policy = PolicyType.AUTOMATIC; - cs_sw.vscrollbar_policy = PolicyType.AUTOMATIC; + var chips_box = builder.get_object("chips_box") as HBox; + chips_box.pack_start(chips, false, false, 0); - var chip_label = new Label(null); - chip_label.set_markup("<b>Emulated chip:</b>"); + /* populate tree view */ + cs_view = builder.get_object("packet_tree") as TreeView; + cs_view.set_model(models[spec_default]); + //cs_view.insert_column_with_data_func(-1, "", new CellRendererPixbuf(), current_dword_renderer); + cs_view.insert_column(new TreeViewColumn.with_attributes("Name", new CellRendererText(), "text", CSListModel.Columns.NAME, null), -1); + cs_view.insert_column(new TreeViewColumn.with_attributes("Value", new CellRendererText(), "text", CSListModel.Columns.VALUE, null), -1); + cs_view.insert_column(new TreeViewColumn.with_attributes("Target", new CellRendererText(), "text", CSListModel.Columns.TARGET, null), -1); - var chips_box = new HBox(false, 4); - chips_box.pack_start(chip_label, false, false, 0); - chips_box.pack_start(chips, false, false, 0); + up_btn = builder.get_object("up_button") as Button; + down_btn = builder.get_object("down_button") as Button; - up_btn = new Button(); - up_btn.add(new Image.from_stock("gtk-go-up", IconSize.BUTTON)); - down_btn = new Button(); - down_btn.add(new Image.from_stock("gtk-go-down", IconSize.BUTTON)); - - var btnbox = new VBox(false, 0); - btnbox.pack_start(up_btn, false, false, 0); - btnbox.pack_end(down_btn, false, false, 0); - - var hbl = new HBox(false, 4); - hbl.pack_start(cs_sw, true, true, 0); - hbl.pack_start(btnbox, false, true, 0); - - var vbl = new VBox(false, 4); - vbl.pack_start(chips_box, false, true, 0); - vbl.pack_start(hbl, true, true, 0); - - /*var state_reg_list = new TreeView(); - state_reg_list.set_model(m_reg_store = new ListStore(2, typeof(string), typeof(uint32))); - - var sreg_sw = new ScrolledWindow(null, null); - sreg_sw.add(state_reg_list); - sreg_sw.shadow_type = ShadowType.ETCHED_IN; - sreg_sw.hscrollbar_policy = PolicyType.AUTOMATIC; - sreg_sw.vscrollbar_policy = PolicyType.AUTOMATIC; - - var state_raw_list = new TreeView(); - state_raw_list.set_model(m_raw_store = new ListStore(2, typeof(string), typeof(uint32))); - - var sraw_sw = new ScrolledWindow(null, null); - sraw_sw.add(state_raw_list); - sraw_sw.shadow_type = ShadowType.ETCHED_IN; - sraw_sw.hscrollbar_policy = PolicyType.AUTOMATIC; - sraw_sw.vscrollbar_policy = PolicyType.AUTOMATIC; - - var nb = new Notebook(); - nb.append_page(sreg_sw, new Label("Registers")); - nb.append_page(sraw_sw, new Label("Raw")); - nb.scrollable = true; - - var paned = new HPaned(); - paned.add1(vbl); - paned.add2(nb); - paned.position = 400;*/ - - //this.add(paned); - add(vbl); - border_width = 10; - set_default_size(640, 480); + add(builder.get_object("mainbox") as Widget); } - private void current_dword_renderer(TreeViewColumn tree_column, CellRenderer cell, TreeModel model, TreeIter iter) + /*private void current_dword_renderer(TreeViewColumn tree_column, CellRenderer cell, TreeModel model, TreeIter iter) { - /*if (m_pos == (model as CSListModel).get_packet_num(iter)) { + if (m_pos == (model as CSListModel).get_packet_num(iter)) { (cell as Gtk.CellRendererPixbuf).stock_id = "gtk-media-record"; } else { (cell as Gtk.CellRendererPixbuf).stock_id = ""; - }*/ - } + } + }*/ } } @@ -471,11 +471,11 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop { gtk_builder_add_from_string (builder, gui_main_window_xml_ui, (gsize) string_get_length (gui_main_window_xml_ui), &_inner_error_); if (_inner_error_ != NULL) { - goto __catch2_g_error; + goto __catch3_g_error; } } - goto __finally2; - __catch2_g_error: + goto __finally3; + __catch3_g_error: { GError * e; e = _inner_error_; @@ -486,7 +486,7 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop _g_error_free0 (e); } } - __finally2: + __finally3: if (_inner_error_ != NULL) { _g_object_unref0 (builder); block1_data_unref (_data1_); @@ -516,11 +516,11 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop { gtk_window_set_icon_from_file ((GtkWindow*) self, "/usr/share/pixmaps/rsim.png", &_inner_error_); if (_inner_error_ != NULL) { - goto __catch3_g_error; + goto __catch4_g_error; } } - goto __finally3; - __catch3_g_error: + goto __finally4; + __catch4_g_error: { GError * e; e = _inner_error_; @@ -529,7 +529,7 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop _g_error_free0 (e); } } - __finally3: + __finally4: if (_inner_error_ != NULL) { _g_object_unref0 (builder); _g_object_unref0 (col); |