summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Sindholt <opensource@zhasha.com>2010-04-06 13:37:39 +0200
committerJoakim Sindholt <opensource@zhasha.com>2010-04-06 13:37:39 +0200
commitd2e587d78f3e1fdc54306597a3750e3c8ea65bcc (patch)
tree75e1be417db298a235129c0a55c4fdb3d895ab11
parenteacd0d55054313151b7477b7dc0c0176f30c4919 (diff)
csview: convert to GtkBuilder
-rw-r--r--src/csview.c170
-rw-r--r--src/csview.vala218
-rw-r--r--src/main.c16
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\">&lt;b&gt;Chip&lt;/b&gt;</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">&lt;b&gt;Chip&lt;/b&gt;</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 = "";
- }*/
- }
+ }
+ }*/
}
}
diff --git a/src/main.c b/src/main.c
index 391f839..c78229c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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);