diff options
author | Joakim Sindholt <opensource@zhasha.com> | 2010-04-06 13:09:52 +0200 |
---|---|---|
committer | Joakim Sindholt <opensource@zhasha.com> | 2010-04-06 13:09:52 +0200 |
commit | eacd0d55054313151b7477b7dc0c0176f30c4919 (patch) | |
tree | a28eeaf783256e10d017d0c888a10f3933efc5b4 | |
parent | 62db69dae43a88db235877ba2b6adb9be8076fe2 (diff) |
main: convert to GtkBuilder
This spells the death of SpecLoadDialog. It was originally made because
of a bug I introduced that made loading incredibly slow. It's fixed now
and even valgrind loads near instantaneously.
-rw-r--r-- | src/csexport.c | 20 | ||||
-rw-r--r-- | src/csimport.c | 126 | ||||
-rw-r--r-- | src/csimport.vala | 16 | ||||
-rw-r--r-- | src/main.c | 1223 | ||||
-rw-r--r-- | src/main.vala | 513 |
5 files changed, 650 insertions, 1248 deletions
diff --git a/src/csexport.c b/src/csexport.c index 925ed7c..a1fde3c 100644 --- a/src/csexport.c +++ b/src/csexport.c @@ -33,15 +33,15 @@ typedef struct _EmulationCSClass EmulationCSClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) -#define GUI_TYPE_CMAIN (gui_cmain_get_type ()) -#define GUI_CMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CMAIN, GUICMain)) -#define GUI_CMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CMAIN, GUICMainClass)) -#define GUI_IS_CMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CMAIN)) -#define GUI_IS_CMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CMAIN)) -#define GUI_CMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CMAIN, GUICMainClass)) +#define GUI_TYPE_MAIN_WINDOW (gui_main_window_get_type ()) +#define GUI_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_MAIN_WINDOW, GUIMainWindow)) +#define GUI_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_MAIN_WINDOW, GUIMainWindowClass)) +#define GUI_IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_MAIN_WINDOW)) +#define GUI_IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_MAIN_WINDOW)) +#define GUI_MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_MAIN_WINDOW, GUIMainWindowClass)) -typedef struct _GUICMain GUICMain; -typedef struct _GUICMainClass GUICMainClass; +typedef struct _GUIMainWindow GUIMainWindow; +typedef struct _GUIMainWindowClass GUIMainWindowClass; #define EMULATION_TYPE_SPEC_ENTRY (emulation_spec_entry_get_type ()) @@ -207,7 +207,7 @@ struct _EmulationCSClass { static char* gui_cs_export_ui_xml; static char* gui_cs_export_ui_xml = NULL; -extern GUICMain* gui_main; +extern GUIMainWindow* gui_main; extern EmulationSpecEntry* emulation_specs; extern gint emulation_specs_length1; extern guint emulation_spec_default; @@ -219,7 +219,7 @@ GType emulation_cs_get_type (void); enum { GUI_CS_EXPORT_DUMMY_PROPERTY }; -GType gui_cmain_get_type (void); +GType gui_main_window_get_type (void); static void _lambda9_ (GtkToggleButton* source, GUICSExport* self); static void __lambda9__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self); GType emulation_spec_entry_get_type (void); diff --git a/src/csimport.c b/src/csimport.c index cb4e4ff..c00fc8c 100644 --- a/src/csimport.c +++ b/src/csimport.c @@ -11,37 +11,6 @@ #include <gdk/gdk.h> -#define GUI_TYPE_CMAIN (gui_cmain_get_type ()) -#define GUI_CMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CMAIN, GUICMain)) -#define GUI_CMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CMAIN, GUICMainClass)) -#define GUI_IS_CMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CMAIN)) -#define GUI_IS_CMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CMAIN)) -#define GUI_CMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CMAIN, GUICMainClass)) - -typedef struct _GUICMain GUICMain; -typedef struct _GUICMainClass GUICMainClass; -typedef struct _GUICMainPrivate GUICMainPrivate; - -#define GUI_TYPE_CMENUS (gui_cmenus_get_type ()) -#define GUI_CMENUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CMENUS, GUICMenus)) -#define GUI_CMENUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CMENUS, GUICMenusClass)) -#define GUI_IS_CMENUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CMENUS)) -#define GUI_IS_CMENUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CMENUS)) -#define GUI_CMENUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CMENUS, GUICMenusClass)) - -typedef struct _GUICMenus GUICMenus; -typedef struct _GUICMenusClass GUICMenusClass; - -#define EMULATION_TYPE_CS (emulation_cs_get_type ()) -#define EMULATION_CS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_CS, EmulationCS)) -#define EMULATION_CS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_CS, EmulationCSClass)) -#define EMULATION_IS_CS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_CS)) -#define EMULATION_IS_CS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_CS)) -#define EMULATION_CS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_CS, EmulationCSClass)) - -typedef struct _EmulationCS EmulationCS; -typedef struct _EmulationCSClass EmulationCSClass; - #define GUI_TYPE_CS_IMPORT (gui_cs_import_get_type ()) #define GUI_CS_IMPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CS_IMPORT, GUICSImport)) #define GUI_CS_IMPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CS_IMPORT, GUICSImportClass)) @@ -55,8 +24,28 @@ typedef struct _GUICSImportPrivate GUICSImportPrivate; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_array_free0(var) ((var == NULL) ? NULL : (var = (g_array_free (var, TRUE), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +#define GUI_TYPE_MAIN_WINDOW (gui_main_window_get_type ()) +#define GUI_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_MAIN_WINDOW, GUIMainWindow)) +#define GUI_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_MAIN_WINDOW, GUIMainWindowClass)) +#define GUI_IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_MAIN_WINDOW)) +#define GUI_IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_MAIN_WINDOW)) +#define GUI_MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_MAIN_WINDOW, GUIMainWindowClass)) + +typedef struct _GUIMainWindow GUIMainWindow; +typedef struct _GUIMainWindowClass GUIMainWindowClass; #define _g_free0(var) (var = (g_free (var), NULL)) #define _gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (gtk_tree_path_free (var), NULL))) + +#define EMULATION_TYPE_CS (emulation_cs_get_type ()) +#define EMULATION_CS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_CS, EmulationCS)) +#define EMULATION_CS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_CS, EmulationCSClass)) +#define EMULATION_IS_CS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_CS)) +#define EMULATION_IS_CS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_CS)) +#define EMULATION_CS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_CS, EmulationCSClass)) + +typedef struct _EmulationCS EmulationCS; +typedef struct _EmulationCSClass EmulationCSClass; #define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL))) #define EMULATION_TYPE_PACKET_BASE (emulation_packet_base_get_type ()) @@ -69,20 +58,6 @@ typedef struct _GUICSImportPrivate GUICSImportPrivate; typedef struct _EmulationPacketBase EmulationPacketBase; typedef struct _EmulationPacketBaseClass EmulationPacketBaseClass; -struct _GUICMain { - GtkWindow parent_instance; - GUICMainPrivate * priv; - GUICMenus* menu; - GtkMenuBar* menubar; - GtkToolbar* toolbar; - GtkListStore* cs_store; - GtkTreeView* cs_list; -}; - -struct _GUICMainClass { - GtkWindowClass parent_class; -}; - struct _GUICSImport { GtkDialog parent_instance; GUICSImportPrivate * priv; @@ -102,7 +77,6 @@ struct _GUICSImportPrivate { }; -extern GUICMain* gui_main; static char* gui_cs_import_xml_ui; static char* gui_cs_import_xml_ui = NULL; static char** gui_cs_import_packets; @@ -110,33 +84,28 @@ static gint gui_cs_import_packets_length1; static char** gui_cs_import_packets = NULL; static gint gui_cs_import_packets_length1 = 0; static gint gui_cs_import_packets_size = 0; +extern GUIMainWindow* gui_main; static gpointer gui_cs_import_parent_class = NULL; -GType gui_cmain_get_type (void); -gpointer gui_cmenus_ref (gpointer instance); -void gui_cmenus_unref (gpointer instance); -GParamSpec* gui_param_spec_cmenus (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void gui_value_set_cmenus (GValue* value, gpointer v_object); -gpointer gui_value_get_cmenus (const GValue* value); -GType gui_cmenus_get_type (void); -GType emulation_cs_get_type (void); -void emulation_add_cs (const char* name, EmulationCS* cs); GType gui_cs_import_get_type (void); #define GUI_CS_IMPORT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GUI_TYPE_CS_IMPORT, GUICSImportPrivate)) enum { GUI_CS_IMPORT_DUMMY_PROPERTY }; -static void _lambda12_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self); -static void __lambda12__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); +GType gui_main_window_get_type (void); +static void _lambda17_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self); +static void __lambda17__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); static void gui_cs_import_open_cs (GUICSImport* self, const char* filename); -static void _lambda13_ (GtkButton* source, GUICSImport* self); -static void __lambda13__gtk_button_clicked (GtkButton* _sender, gpointer self); +static void _lambda18_ (GtkButton* source, GUICSImport* self); +static void __lambda18__gtk_button_clicked (GtkButton* _sender, gpointer self); static void gui_cs_import_update_ok_button (GUICSImport* self); static void _gui_cs_import_update_ok_button_gtk_editable_changed (GtkEditable* _sender, gpointer self); +GType emulation_cs_get_type (void); +void gui_main_window_add_cs (GUIMainWindow* self, const char* name, EmulationCS* cs); EmulationCS* emulation_cs_new (guint32* cs, guint len); EmulationCS* emulation_cs_construct (GType object_type, guint32* cs, guint len); -static void _lambda14_ (GtkDialog* source, gint id, GUICSImport* self); -static void __lambda14__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self); +static void _lambda19_ (GtkDialog* source, gint id, GUICSImport* self); +static void __lambda19__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self); GUICSImport* gui_cs_import_new (void); GUICSImport* gui_cs_import_construct (GType object_type); GType emulation_packet_base_get_type (void); @@ -147,15 +116,6 @@ static void gui_cs_import_finalize (GObject* obj); -void emulation_add_cs (const char* name, EmulationCS* cs) { - GtkTreeIter iter = {0}; - g_return_if_fail (name != NULL); - g_return_if_fail (cs != NULL); - gtk_list_store_append (gui_main->cs_store, &iter); - gtk_list_store_set (gui_main->cs_store, &iter, 0, name, 1, cs, -1, -1); -} - - static glong string_get_length (const char* self) { glong result; g_return_val_if_fail (self != NULL, 0L); @@ -169,7 +129,7 @@ static gpointer _g_object_ref0 (gpointer self) { } -static void _lambda12_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) { +static void _lambda17_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) { GtkTreePath* path; gint* indices; char* _tmp0_; @@ -187,12 +147,12 @@ static void _lambda12_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeMode } -static void __lambda12__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) { - _lambda12_ (cell_layout, cell, tree_model, iter, self); +static void __lambda17__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) { + _lambda17_ (cell_layout, cell, tree_model, iter, self); } -static void _lambda13_ (GtkButton* source, GUICSImport* self) { +static void _lambda18_ (GtkButton* source, GUICSImport* self) { GtkFileChooserDialog* fc; g_return_if_fail (source != NULL); fc = g_object_ref_sink ((GtkFileChooserDialog*) gtk_file_chooser_dialog_new ("Open File", (GtkWindow*) self, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL, NULL)); @@ -206,8 +166,8 @@ static void _lambda13_ (GtkButton* source, GUICSImport* self) { } -static void __lambda13__gtk_button_clicked (GtkButton* _sender, gpointer self) { - _lambda13_ (_sender, self); +static void __lambda18__gtk_button_clicked (GtkButton* _sender, gpointer self) { + _lambda18_ (_sender, self); } @@ -216,19 +176,19 @@ static void _gui_cs_import_update_ok_button_gtk_editable_changed (GtkEditable* _ } -static void _lambda14_ (GtkDialog* source, gint id, GUICSImport* self) { +static void _lambda19_ (GtkDialog* source, gint id, GUICSImport* self) { g_return_if_fail (source != NULL); if (id == GTK_RESPONSE_OK) { EmulationCS* _tmp0_; - emulation_add_cs (gtk_entry_get_text (self->priv->name_entry), _tmp0_ = emulation_cs_new (&g_array_index (self->priv->dwords, guint32, (guint) 0), self->priv->dwords->len)); + gui_main_window_add_cs (gui_main, gtk_entry_get_text (self->priv->name_entry), _tmp0_ = emulation_cs_new (&g_array_index (self->priv->dwords, guint32, (guint) 0), self->priv->dwords->len)); _g_object_unref0 (_tmp0_); } gtk_object_destroy ((GtkObject*) self); } -static void __lambda14__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) { - _lambda14_ (_sender, response_id, self); +static void __lambda19__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) { + _lambda19_ (_sender, response_id, self); } @@ -287,13 +247,13 @@ GUICSImport* gui_cs_import_construct (GType object_type) { gtk_window_set_title ((GtkWindow*) self, "Import CS"); col = _g_object_ref0 ((_tmp0_ = gtk_builder_get_object (builder, "value_column"), GTK_IS_TREE_VIEW_COLUMN (_tmp0_) ? ((GtkTreeViewColumn*) _tmp0_) : NULL)); cell = _g_object_ref0 ((_tmp1_ = gtk_builder_get_object (builder, "value_cell"), GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL)); - gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda12__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref); + gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda17__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref); self->priv->meta_store = (_tmp3_ = _g_object_ref0 ((_tmp2_ = gtk_builder_get_object (builder, "meta_store"), GTK_IS_LIST_STORE (_tmp2_) ? ((GtkListStore*) _tmp2_) : NULL)), _g_object_unref0 (self->priv->meta_store), _tmp3_); gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_CANCEL, (gint) GTK_RESPONSE_CANCEL); self->priv->ok_button = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_OK, (gint) GTK_RESPONSE_OK), GTK_IS_BUTTON (_tmp4_) ? ((GtkButton*) _tmp4_) : NULL)), _g_object_unref0 (self->priv->ok_button), _tmp5_); gtk_widget_set_sensitive ((GtkWidget*) self->priv->ok_button, FALSE); load_button = _g_object_ref0 ((_tmp6_ = gtk_builder_get_object (builder, "load_button"), GTK_IS_BUTTON (_tmp6_) ? ((GtkButton*) _tmp6_) : NULL)); - g_signal_connect_object (load_button, "clicked", (GCallback) __lambda13__gtk_button_clicked, self, 0); + g_signal_connect_object (load_button, "clicked", (GCallback) __lambda18__gtk_button_clicked, self, 0); self->priv->validcs = FALSE; self->priv->dwords = (_tmp7_ = g_array_new (FALSE, FALSE, (guint) sizeof (guint32)), _g_array_free0 (self->priv->dwords), _tmp7_); self->priv->name_entry = (_tmp9_ = _g_object_ref0 ((_tmp8_ = gtk_builder_get_object (builder, "name_entry"), GTK_IS_ENTRY (_tmp8_) ? ((GtkEntry*) _tmp8_) : NULL)), _g_object_unref0 (self->priv->name_entry), _tmp9_); @@ -305,7 +265,7 @@ GUICSImport* gui_cs_import_construct (GType object_type) { self->priv->status_label = (_tmp12_ = _g_object_ref0 ((_tmp11_ = gtk_builder_get_object (builder, "status_label"), GTK_IS_LABEL (_tmp11_) ? ((GtkLabel*) _tmp11_) : NULL)), _g_object_unref0 (self->priv->status_label), _tmp12_); gtk_widget_modify_fg ((GtkWidget*) self->priv->status_label, GTK_STATE_NORMAL, &color); gtk_box_pack_start ((GtkBox*) ((GtkDialog*) self)->vbox, (GtkWidget*) (_tmp13_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_VBOX (_tmp13_) ? ((GtkVBox*) _tmp13_) : NULL), TRUE, TRUE, (guint) 0); - g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) __lambda14__gtk_dialog_response, self, 0); + g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) __lambda19__gtk_dialog_response, self, 0); gtk_window_set_default_size ((GtkWindow*) self, 300, 400); _g_object_unref0 (builder); _g_object_unref0 (col); diff --git a/src/csimport.vala b/src/csimport.vala index be35e34..5d88434 100644 --- a/src/csimport.vala +++ b/src/csimport.vala @@ -1,15 +1,5 @@ using Gtk; -namespace Emulation -{ - public void add_cs(string name, CS cs) - { - TreeIter iter; - GUI.main.cs_store.append(out iter); - GUI.main.cs_store.set(iter, 0, name, 1, cs, -1); - } -} - namespace GUI { class CSImport : Dialog @@ -240,9 +230,9 @@ namespace GUI response.connect((source, id) => { if (id == ResponseType.OK) { - Emulation.add_cs(name_entry.text, - new Emulation.CS(&dwords.index(0), - dwords.length)); + main.add_cs(name_entry.text, + new Emulation.CS(&dwords.index(0), + dwords.length)); } destroy(); }); @@ -7,57 +7,22 @@ #include <gtk/gtk.h> #include <stdlib.h> #include <string.h> -#include <gdk/gdk.h> #include <stdio.h> -#include <gobject/gvaluecollector.h> +#include <gdk/gdk.h> -#define GUI_TYPE_CACTIONS (gui_cactions_get_type ()) -#define GUI_CACTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CACTIONS, GUICActions)) -#define GUI_CACTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CACTIONS, GUICActionsClass)) -#define GUI_IS_CACTIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CACTIONS)) -#define GUI_IS_CACTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CACTIONS)) -#define GUI_CACTIONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CACTIONS, GUICActionsClass)) +#define GUI_TYPE_MAIN_WINDOW (gui_main_window_get_type ()) +#define GUI_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_MAIN_WINDOW, GUIMainWindow)) +#define GUI_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_MAIN_WINDOW, GUIMainWindowClass)) +#define GUI_IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_MAIN_WINDOW)) +#define GUI_IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_MAIN_WINDOW)) +#define GUI_MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_MAIN_WINDOW, GUIMainWindowClass)) -typedef struct _GUICActions GUICActions; -typedef struct _GUICActionsClass GUICActionsClass; -typedef struct _GUICActionsPrivate GUICActionsPrivate; +typedef struct _GUIMainWindow GUIMainWindow; +typedef struct _GUIMainWindowClass GUIMainWindowClass; +typedef struct _GUIMainWindowPrivate GUIMainWindowPrivate; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define GUI_TYPE_CMAIN (gui_cmain_get_type ()) -#define GUI_CMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CMAIN, GUICMain)) -#define GUI_CMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CMAIN, GUICMainClass)) -#define GUI_IS_CMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CMAIN)) -#define GUI_IS_CMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CMAIN)) -#define GUI_CMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CMAIN, GUICMainClass)) - -typedef struct _GUICMain GUICMain; -typedef struct _GUICMainClass GUICMainClass; - -#define GUI_TYPE_CS_IMPORT (gui_cs_import_get_type ()) -#define GUI_CS_IMPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CS_IMPORT, GUICSImport)) -#define GUI_CS_IMPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CS_IMPORT, GUICSImportClass)) -#define GUI_IS_CS_IMPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CS_IMPORT)) -#define GUI_IS_CS_IMPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CS_IMPORT)) -#define GUI_CS_IMPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CS_IMPORT, GUICSImportClass)) - -typedef struct _GUICSImport GUICSImport; -typedef struct _GUICSImportClass GUICSImportClass; - -#define GUI_TYPE_CMENUS (gui_cmenus_get_type ()) -#define GUI_CMENUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CMENUS, GUICMenus)) -#define GUI_CMENUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CMENUS, GUICMenusClass)) -#define GUI_IS_CMENUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CMENUS)) -#define GUI_IS_CMENUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CMENUS)) -#define GUI_CMENUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CMENUS, GUICMenusClass)) - -typedef struct _GUICMenus GUICMenus; -typedef struct _GUICMenusClass GUICMenusClass; -typedef struct _GUICMenusPrivate GUICMenusPrivate; -typedef struct _GUIParamSpecCMenus GUIParamSpecCMenus; -typedef struct _GUICMainPrivate GUICMainPrivate; -#define _gui_cmenus_unref0(var) ((var == NULL) ? NULL : (var = (gui_cmenus_unref (var), NULL))) - #define EMULATION_TYPE_CS (emulation_cs_get_type ()) #define EMULATION_CS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_CS, EmulationCS)) #define EMULATION_CS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_CS, EmulationCSClass)) @@ -67,18 +32,6 @@ typedef struct _GUICMainPrivate GUICMainPrivate; typedef struct _EmulationCS EmulationCS; typedef struct _EmulationCSClass EmulationCSClass; -typedef struct _EmulationCSPrivate EmulationCSPrivate; - -#define EMULATION_TYPE_PACKET_BASE (emulation_packet_base_get_type ()) -#define EMULATION_PACKET_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_PACKET_BASE, EmulationPacketBase)) -#define EMULATION_PACKET_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_PACKET_BASE, EmulationPacketBaseClass)) -#define EMULATION_IS_PACKET_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_PACKET_BASE)) -#define EMULATION_IS_PACKET_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_PACKET_BASE)) -#define EMULATION_PACKET_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_PACKET_BASE, EmulationPacketBaseClass)) - -typedef struct _EmulationPacketBase EmulationPacketBase; -typedef struct _EmulationPacketBaseClass EmulationPacketBaseClass; -#define _g_free0(var) (var = (g_free (var), NULL)) #define GUI_TYPE_CS_VIEW (gui_cs_view_get_type ()) #define GUI_CS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CS_VIEW, GUICSView)) @@ -100,17 +53,29 @@ typedef struct _GUICSViewClass GUICSViewClass; typedef struct _GUICSExport GUICSExport; typedef struct _GUICSExportClass GUICSExportClass; #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +typedef struct _EmulationCSPrivate EmulationCSPrivate; -#define GUI_TYPE_SPEC_LOAD_DIALOG (gui_spec_load_dialog_get_type ()) -#define GUI_SPEC_LOAD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_SPEC_LOAD_DIALOG, GUISpecLoadDialog)) -#define GUI_SPEC_LOAD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_SPEC_LOAD_DIALOG, GUISpecLoadDialogClass)) -#define GUI_IS_SPEC_LOAD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_SPEC_LOAD_DIALOG)) -#define GUI_IS_SPEC_LOAD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_SPEC_LOAD_DIALOG)) -#define GUI_SPEC_LOAD_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_SPEC_LOAD_DIALOG, GUISpecLoadDialogClass)) +#define EMULATION_TYPE_PACKET_BASE (emulation_packet_base_get_type ()) +#define EMULATION_PACKET_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_PACKET_BASE, EmulationPacketBase)) +#define EMULATION_PACKET_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_PACKET_BASE, EmulationPacketBaseClass)) +#define EMULATION_IS_PACKET_BASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_PACKET_BASE)) +#define EMULATION_IS_PACKET_BASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_PACKET_BASE)) +#define EMULATION_PACKET_BASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_PACKET_BASE, EmulationPacketBaseClass)) -typedef struct _GUISpecLoadDialog GUISpecLoadDialog; -typedef struct _GUISpecLoadDialogClass GUISpecLoadDialogClass; -typedef struct _GUISpecLoadDialogPrivate GUISpecLoadDialogPrivate; +typedef struct _EmulationPacketBase EmulationPacketBase; +typedef struct _EmulationPacketBaseClass EmulationPacketBaseClass; +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define GUI_TYPE_CS_IMPORT (gui_cs_import_get_type ()) +#define GUI_CS_IMPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CS_IMPORT, GUICSImport)) +#define GUI_CS_IMPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_TYPE_CS_IMPORT, GUICSImportClass)) +#define GUI_IS_CS_IMPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_TYPE_CS_IMPORT)) +#define GUI_IS_CS_IMPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_TYPE_CS_IMPORT)) +#define GUI_CS_IMPORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_TYPE_CS_IMPORT, GUICSImportClass)) + +typedef struct _GUICSImport GUICSImport; +typedef struct _GUICSImportClass GUICSImportClass; +typedef struct _Block1Data Block1Data; #define EMULATION_TYPE_SPEC_ENTRY (emulation_spec_entry_get_type ()) @@ -125,54 +90,21 @@ typedef struct _EmulationSpec EmulationSpec; typedef struct _EmulationSpecClass EmulationSpecClass; typedef struct _EmulationSpecEntry EmulationSpecEntry; -struct _GUICActions { - GObject parent_instance; - GUICActionsPrivate * priv; - GtkAction* New; - GtkAction* Open; - GtkAction* Save; - GtkAction* SaveAs; - GtkAction* RemoveCS; - GtkAction* ImportCS; - GtkAction* ExportCS; - GtkAction* OpenCS; - GtkAction* Quit; -}; - -struct _GUICActionsClass { - GObjectClass parent_class; -}; - -struct _GUICMenus { - GTypeInstance parent_instance; - volatile int ref_count; - GUICMenusPrivate * priv; - GtkMenu* file; - GtkMenu* edit; - GtkMenu* cs; -}; - -struct _GUICMenusClass { - GTypeClass parent_class; - void (*finalize) (GUICMenus *self); +struct _GUIMainWindow { + GtkWindow parent_instance; + GUIMainWindowPrivate * priv; }; -struct _GUIParamSpecCMenus { - GParamSpec parent_instance; +struct _GUIMainWindowClass { + GtkWindowClass parent_class; }; -struct _GUICMain { - GtkWindow parent_instance; - GUICMainPrivate * priv; - GUICMenus* menu; - GtkMenuBar* menubar; - GtkToolbar* toolbar; +struct _GUIMainWindowPrivate { GtkListStore* cs_store; GtkTreeView* cs_list; -}; - -struct _GUICMainClass { - GtkWindowClass parent_class; + GtkMenu* edit_menu; + GtkAction* action_exportcs; + GtkAction* action_removecs; }; struct _EmulationCS { @@ -188,19 +120,10 @@ struct _EmulationCSClass { GObjectClass parent_class; }; -struct _GUISpecLoadDialog { - GtkWindow parent_instance; - GUISpecLoadDialogPrivate * priv; -}; - -struct _GUISpecLoadDialogClass { - GtkWindowClass parent_class; -}; - -struct _GUISpecLoadDialogPrivate { - GtkLabel* loading; - GtkProgressBar* progress; - gboolean done; +struct _Block1Data { + int _ref_count_; + GUIMainWindow * self; + GtkCellRendererText* cell; }; struct _EmulationSpecEntry { @@ -209,88 +132,61 @@ struct _EmulationSpecEntry { }; -extern GUICMain* gui_main; -static gpointer gui_cactions_parent_class = NULL; -static gpointer gui_cmenus_parent_class = NULL; -extern GUICActions* gui_actions; -static gpointer gui_cmain_parent_class = NULL; +static char* gui_main_window_xml_ui; +static char* gui_main_window_xml_ui = NULL; +static gpointer gui_main_window_parent_class = NULL; +extern GUIMainWindow* gui_main; +GUIMainWindow* gui_main = NULL; extern EmulationSpecEntry* emulation_specs; extern gint emulation_specs_length1; -static gpointer gui_spec_load_dialog_parent_class = NULL; -GUICActions* gui_actions = NULL; -GUICMain* gui_main = NULL; EmulationSpecEntry* emulation_specs = NULL; gint emulation_specs_length1 = 0; extern guint emulation_spec_default; guint emulation_spec_default = (guint) 1; -GType gui_cactions_get_type (void); +GType gui_main_window_get_type (void); +#define GUI_MAIN_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GUI_TYPE_MAIN_WINDOW, GUIMainWindowPrivate)) enum { - GUI_CACTIONS_DUMMY_PROPERTY + GUI_MAIN_WINDOW_DUMMY_PROPERTY }; -void gui_cactions_pcsop_set_sensitive (GUICActions* self, gboolean setting); -GUICActions* gui_cactions_new (void); -GUICActions* gui_cactions_construct (GType object_type); -GType gui_cmain_get_type (void); -void gui_cmain_remove_cs (GUICMain* self); -static void _lambda10_ (GtkAction* source, GUICActions* self); -static void __lambda10__gtk_action_activate (GtkAction* _sender, gpointer self); -GUICSImport* gui_cs_import_new (void); -GUICSImport* gui_cs_import_construct (GType object_type); -GType gui_cs_import_get_type (void); -static void _lambda11_ (GtkAction* source, GUICActions* self); -static void __lambda11__gtk_action_activate (GtkAction* _sender, gpointer self); -void gui_cmain_open_csexport (GUICMain* self); -static void _lambda15_ (GtkAction* source, GUICActions* self); -static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self); -void gui_cmain_open_csview (GUICMain* self); -static void _lambda16_ (GtkAction* source, GUICActions* self); -static void __lambda16__gtk_action_activate (GtkAction* _sender, gpointer self); -static GObject * gui_cactions_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); -static void gui_cactions_finalize (GObject* obj); -gpointer gui_cmenus_ref (gpointer instance); -void gui_cmenus_unref (gpointer instance); -GParamSpec* gui_param_spec_cmenus (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void gui_value_set_cmenus (GValue* value, gpointer v_object); -gpointer gui_value_get_cmenus (const GValue* value); -GType gui_cmenus_get_type (void); -enum { - GUI_CMENUS_DUMMY_PROPERTY -}; -GUICMenus* gui_cmenus_new (void); -GUICMenus* gui_cmenus_construct (GType object_type); -static void gui_cmenus_finalize (GUICMenus* obj); -enum { - GUI_CMAIN_DUMMY_PROPERTY -}; -static void gui_cmain_add_toolitem (GUICMain* self, GtkAction* action); +static void gui_main_window_edit_set_sensitive (GUIMainWindow* self, gboolean setting); GType emulation_cs_get_type (void); -GType emulation_packet_base_get_type (void); -static void gui_cmain_dwords_cellrenderer (GUICMain* self, GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter); -static EmulationCS* gui_cmain_get_selected_cs (GUICMain* self); +static EmulationCS* gui_main_window_get_selected_cs (GUIMainWindow* self); +void gui_main_window_add_cs (GUIMainWindow* self, const char* name, EmulationCS* cs); +void gui_main_window_remove_cs (GUIMainWindow* self); GUICSView* gui_cs_view_new (EmulationCS* cs); GUICSView* gui_cs_view_construct (GType object_type, EmulationCS* cs); GType gui_cs_view_get_type (void); +static void gui_main_window_open_csview (GUIMainWindow* self); GUICSExport* gui_cs_export_new (EmulationCS* _cs); GUICSExport* gui_cs_export_construct (GType object_type, EmulationCS* _cs); GType gui_cs_export_get_type (void); -GUICMain* gui_cmain_new (void); -GUICMain* gui_cmain_construct (GType object_type); -static void _gui_cmain_dwords_cellrenderer_gtk_tree_cell_data_func (GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); -static void _lambda17_ (GtkTreePath* path, GtkTreeViewColumn* column, GUICMain* self); -static void __lambda17__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self); -static gboolean _lambda18_ (GdkEventButton* event, GUICMain* self); -static gboolean __lambda18__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); -static void _lambda19_ (GtkTreeView* source, GUICMain* self); -static void __lambda19__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self); +static void gui_main_window_open_csexport (GUIMainWindow* self); +GUIMainWindow* gui_main_window_new (void); +GUIMainWindow* gui_main_window_construct (GType object_type); +GType emulation_packet_base_get_type (void); +static void _lambda10_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, Block1Data* _data1_); +static void __lambda10__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); +GUICSImport* gui_cs_import_new (void); +GUICSImport* gui_cs_import_construct (GType object_type); +GType gui_cs_import_get_type (void); +static void _lambda11_ (GtkAction* source, GUIMainWindow* self); +static void __lambda11__gtk_action_activate (GtkAction* _sender, gpointer self); +static void _lambda12_ (GtkAction* source, GUIMainWindow* self); +static void __lambda12__gtk_action_activate (GtkAction* _sender, gpointer self); +static void _lambda13_ (GtkAction* source, GUIMainWindow* self); +static void __lambda13__gtk_action_activate (GtkAction* _sender, gpointer self); +static void _lambda14_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self); +static void __lambda14__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self); +static gboolean _lambda15_ (GdkEventButton* event, GUIMainWindow* self); +static gboolean __lambda15__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); +static void _lambda16_ (GtkTreeView* source, GUIMainWindow* self); +static void __lambda16__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self); static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self); -static GObject * gui_cmain_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); -static void gui_cmain_finalize (GObject* obj); -GType gui_spec_load_dialog_get_type (void); -#define GUI_SPEC_LOAD_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GUI_TYPE_SPEC_LOAD_DIALOG, GUISpecLoadDialogPrivate)) -enum { - GUI_SPEC_LOAD_DIALOG_DUMMY_PROPERTY -}; +static Block1Data* block1_data_ref (Block1Data* _data1_); +static void block1_data_unref (Block1Data* _data1_); +static GObject * gui_main_window_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); +static void gui_main_window_finalize (GObject* obj); GType emulation_spec_entry_get_type (void); GType emulation_spec_get_type (void); EmulationSpecEntry* emulation_spec_entry_dup (const EmulationSpecEntry* self); @@ -298,313 +194,17 @@ void emulation_spec_entry_free (EmulationSpecEntry* self); void emulation_spec_entry_copy (const EmulationSpecEntry* self, EmulationSpecEntry* dest); void emulation_spec_entry_destroy (EmulationSpecEntry* self); static void _vala_EmulationSpecEntry_array_free (EmulationSpecEntry* array, gint array_length); -GUISpecLoadDialog* gui_spec_load_dialog_new (GtkWindow* parent); -GUISpecLoadDialog* gui_spec_load_dialog_construct (GType object_type, GtkWindow* parent); -static void* gui_spec_load_dialog_pulse_thread (GUISpecLoadDialog* self); -static void* _gui_spec_load_dialog_pulse_thread_gthread_func (gpointer self); -static void* gui_spec_load_dialog_specload_thread (GUISpecLoadDialog* self); -static void* _gui_spec_load_dialog_specload_thread_gthread_func (gpointer self); -void* gui_spec_load_dialog_run (GUISpecLoadDialog* self); EmulationSpec* emulation_spec_new (const char* filename, const char* variant); EmulationSpec* emulation_spec_construct (GType object_type, const char* filename, const char* variant); -static void gui_spec_load_dialog_finalize (GObject* obj); -static void* _gui_spec_load_dialog_run_gthread_func (gpointer self); void gui_init (char*** args, int* args_length1); gint _main (char** args, int args_length1); -void gui_cactions_pcsop_set_sensitive (GUICActions* self, gboolean setting) { +static void gui_main_window_edit_set_sensitive (GUIMainWindow* self, gboolean setting) { g_return_if_fail (self != NULL); - gtk_action_set_sensitive (self->RemoveCS, setting); - gtk_action_set_sensitive (self->ExportCS, setting); - gtk_action_set_sensitive (self->OpenCS, setting); -} - - -GUICActions* gui_cactions_construct (GType object_type) { - GUICActions * self; - self = g_object_newv (object_type, 0, NULL); - return self; -} - - -GUICActions* gui_cactions_new (void) { - return gui_cactions_construct (GUI_TYPE_CACTIONS); -} - - -static void _lambda10_ (GtkAction* source, GUICActions* self) { - g_return_if_fail (source != NULL); - gui_cmain_remove_cs (gui_main); -} - - -static void __lambda10__gtk_action_activate (GtkAction* _sender, gpointer self) { - _lambda10_ (_sender, self); -} - - -static void _lambda11_ (GtkAction* source, GUICActions* self) { - GUICSImport* d; - g_return_if_fail (source != NULL); - d = g_object_ref_sink (gui_cs_import_new ()); - gtk_dialog_run ((GtkDialog*) d); - _g_object_unref0 (d); -} - - -static void __lambda11__gtk_action_activate (GtkAction* _sender, gpointer self) { - _lambda11_ (_sender, self); -} - - -static void _lambda15_ (GtkAction* source, GUICActions* self) { - g_return_if_fail (source != NULL); - gui_cmain_open_csexport (gui_main); -} - - -static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self) { - _lambda15_ (_sender, self); -} - - -static void _lambda16_ (GtkAction* source, GUICActions* self) { - g_return_if_fail (source != NULL); - gui_cmain_open_csview (gui_main); -} - - -static void __lambda16__gtk_action_activate (GtkAction* _sender, gpointer self) { - _lambda16_ (_sender, self); -} - - -static GObject * gui_cactions_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { - GObject * obj; - GObjectClass * parent_class; - GUICActions * self; - parent_class = G_OBJECT_CLASS (gui_cactions_parent_class); - obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = GUI_CACTIONS (obj); - { - GtkAction* _tmp0_; - GtkAction* _tmp1_; - GtkAction* _tmp2_; - GtkAction* _tmp3_; - GtkAction* _tmp4_; - GtkAction* _tmp5_; - GtkAction* _tmp6_; - GtkAction* _tmp7_; - GtkAction* _tmp8_; - self->New = (_tmp0_ = gtk_action_new ("New", NULL, NULL, "gtk-new"), _g_object_unref0 (self->New), _tmp0_); - self->Open = (_tmp1_ = gtk_action_new ("Open", NULL, NULL, "gtk-open"), _g_object_unref0 (self->Open), _tmp1_); - self->Save = (_tmp2_ = gtk_action_new ("Save", NULL, NULL, "gtk-save"), _g_object_unref0 (self->Save), _tmp2_); - self->SaveAs = (_tmp3_ = gtk_action_new ("SaveAs", NULL, NULL, "gtk-save-as"), _g_object_unref0 (self->SaveAs), _tmp3_); - self->RemoveCS = (_tmp4_ = gtk_action_new ("RemoveCS", "Remove", "Remove selected CS' from the list", "gtk-remove"), _g_object_unref0 (self->RemoveCS), _tmp4_); - self->ImportCS = (_tmp5_ = gtk_action_new ("ImportCS", "Import", "Import a command stream to the list", "gtk-add"), _g_object_unref0 (self->ImportCS), _tmp5_); - self->ExportCS = (_tmp6_ = gtk_action_new ("ExportCS", "Export", "Export a CS to a file", "gtk-convert"), _g_object_unref0 (self->ExportCS), _tmp6_); - self->OpenCS = (_tmp7_ = gtk_action_new ("OpenCS", "Open", "Export a CS to a file", "gtk-open"), _g_object_unref0 (self->OpenCS), _tmp7_); - self->Quit = (_tmp8_ = gtk_action_new ("Quit", NULL, NULL, "gtk-quit"), _g_object_unref0 (self->Quit), _tmp8_); - g_signal_connect_object (self->RemoveCS, "activate", (GCallback) __lambda10__gtk_action_activate, self, 0); - g_signal_connect_object (self->ImportCS, "activate", (GCallback) __lambda11__gtk_action_activate, self, 0); - g_signal_connect_object (self->ExportCS, "activate", (GCallback) __lambda15__gtk_action_activate, self, 0); - g_signal_connect_object (self->OpenCS, "activate", (GCallback) __lambda16__gtk_action_activate, self, 0); - } - return obj; -} - - -static void gui_cactions_class_init (GUICActionsClass * klass) { - gui_cactions_parent_class = g_type_class_peek_parent (klass); - G_OBJECT_CLASS (klass)->constructor = gui_cactions_constructor; - G_OBJECT_CLASS (klass)->finalize = gui_cactions_finalize; -} - - -static void gui_cactions_instance_init (GUICActions * self) { -} - - -static void gui_cactions_finalize (GObject* obj) { - GUICActions * self; - self = GUI_CACTIONS (obj); - _g_object_unref0 (self->New); - _g_object_unref0 (self->Open); - _g_object_unref0 (self->Save); - _g_object_unref0 (self->SaveAs); - _g_object_unref0 (self->RemoveCS); - _g_object_unref0 (self->ImportCS); - _g_object_unref0 (self->ExportCS); - _g_object_unref0 (self->OpenCS); - _g_object_unref0 (self->Quit); - G_OBJECT_CLASS (gui_cactions_parent_class)->finalize (obj); -} - - -GType gui_cactions_get_type (void) { - static GType gui_cactions_type_id = 0; - if (gui_cactions_type_id == 0) { - static const GTypeInfo g_define_type_info = { sizeof (GUICActionsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gui_cactions_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GUICActions), 0, (GInstanceInitFunc) gui_cactions_instance_init, NULL }; - gui_cactions_type_id = g_type_register_static (G_TYPE_OBJECT, "GUICActions", &g_define_type_info, 0); - } - return gui_cactions_type_id; -} - - -GUICMenus* gui_cmenus_construct (GType object_type) { - GUICMenus* self; - self = (GUICMenus*) g_type_create_instance (object_type); - return self; -} - - -GUICMenus* gui_cmenus_new (void) { - return gui_cmenus_construct (GUI_TYPE_CMENUS); -} - - -static void gui_value_cmenus_init (GValue* value) { - value->data[0].v_pointer = NULL; -} - - -static void gui_value_cmenus_free_value (GValue* value) { - if (value->data[0].v_pointer) { - gui_cmenus_unref (value->data[0].v_pointer); - } -} - - -static void gui_value_cmenus_copy_value (const GValue* src_value, GValue* dest_value) { - if (src_value->data[0].v_pointer) { - dest_value->data[0].v_pointer = gui_cmenus_ref (src_value->data[0].v_pointer); - } else { - dest_value->data[0].v_pointer = NULL; - } -} - - -static gpointer gui_value_cmenus_peek_pointer (const GValue* value) { - return value->data[0].v_pointer; -} - - -static gchar* gui_value_cmenus_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { - if (collect_values[0].v_pointer) { - GUICMenus* object; - object = collect_values[0].v_pointer; - if (object->parent_instance.g_class == NULL) { - return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); - } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { - return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); - } - value->data[0].v_pointer = gui_cmenus_ref (object); - } else { - value->data[0].v_pointer = NULL; - } - return NULL; -} - - -static gchar* gui_value_cmenus_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { - GUICMenus** object_p; - object_p = collect_values[0].v_pointer; - if (!object_p) { - return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); - } - if (!value->data[0].v_pointer) { - *object_p = NULL; - } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { - *object_p = value->data[0].v_pointer; - } else { - *object_p = gui_cmenus_ref (value->data[0].v_pointer); - } - return NULL; -} - - -GParamSpec* gui_param_spec_cmenus (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { - GUIParamSpecCMenus* spec; - g_return_val_if_fail (g_type_is_a (object_type, GUI_TYPE_CMENUS), NULL); - spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); - G_PARAM_SPEC (spec)->value_type = object_type; - return G_PARAM_SPEC (spec); -} - - -gpointer gui_value_get_cmenus (const GValue* value) { - g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GUI_TYPE_CMENUS), NULL); - return value->data[0].v_pointer; -} - - -void gui_value_set_cmenus (GValue* value, gpointer v_object) { - GUICMenus* old; - g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GUI_TYPE_CMENUS)); - old = value->data[0].v_pointer; - if (v_object) { - g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GUI_TYPE_CMENUS)); - g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); - value->data[0].v_pointer = v_object; - gui_cmenus_ref (value->data[0].v_pointer); - } else { - value->data[0].v_pointer = NULL; - } - if (old) { - gui_cmenus_unref (old); - } -} - - -static void gui_cmenus_class_init (GUICMenusClass * klass) { - gui_cmenus_parent_class = g_type_class_peek_parent (klass); - GUI_CMENUS_CLASS (klass)->finalize = gui_cmenus_finalize; -} - - -static void gui_cmenus_instance_init (GUICMenus * self) { - self->ref_count = 1; -} - - -static void gui_cmenus_finalize (GUICMenus* obj) { - GUICMenus * self; - self = GUI_CMENUS (obj); - _g_object_unref0 (self->file); - _g_object_unref0 (self->edit); - _g_object_unref0 (self->cs); -} - - -GType gui_cmenus_get_type (void) { - static GType gui_cmenus_type_id = 0; - if (gui_cmenus_type_id == 0) { - static const GTypeValueTable g_define_type_value_table = { gui_value_cmenus_init, gui_value_cmenus_free_value, gui_value_cmenus_copy_value, gui_value_cmenus_peek_pointer, "p", gui_value_cmenus_collect_value, "p", gui_value_cmenus_lcopy_value }; - static const GTypeInfo g_define_type_info = { sizeof (GUICMenusClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gui_cmenus_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GUICMenus), 0, (GInstanceInitFunc) gui_cmenus_instance_init, &g_define_type_value_table }; - static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; - gui_cmenus_type_id = g_type_register_fundamental (g_type_fundamental_next (), "GUICMenus", &g_define_type_info, &g_define_type_fundamental_info, 0); - } - return gui_cmenus_type_id; -} - - -gpointer gui_cmenus_ref (gpointer instance) { - GUICMenus* self; - self = instance; - g_atomic_int_inc (&self->ref_count); - return instance; -} - - -void gui_cmenus_unref (gpointer instance) { - GUICMenus* self; - self = instance; - if (g_atomic_int_dec_and_test (&self->ref_count)) { - GUI_CMENUS_GET_CLASS (self)->finalize (self); - g_type_free_instance ((GTypeInstance *) self); - } + gtk_action_set_sensitive (self->priv->action_exportcs, setting); + gtk_action_set_sensitive (self->priv->action_removecs, setting); } @@ -613,74 +213,55 @@ static gpointer _g_object_ref0 (gpointer self) { } -static void gui_cmain_add_toolitem (GUICMain* self, GtkAction* action) { - GtkWidget* _tmp0_; - GtkToolItem* titem; - g_return_if_fail (self != NULL); - g_return_if_fail (action != NULL); - titem = _g_object_ref0 ((_tmp0_ = gtk_action_create_tool_item (action), GTK_IS_TOOL_ITEM (_tmp0_) ? ((GtkToolItem*) _tmp0_) : NULL)); - gtk_tool_item_set_homogeneous (titem, FALSE); - gtk_toolbar_insert (self->toolbar, titem, -1); - _g_object_unref0 (titem); -} - - -static void gui_cmain_dwords_cellrenderer (GUICMain* self, GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter) { - EmulationCS* cs; - char* _tmp0_; - GtkCellRenderer* _tmp1_; - 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); - cs = NULL; - gtk_tree_model_get (model, iter, 1, &cs, -1, -1); - g_assert (cs != NULL); - g_object_set ((_tmp1_ = cell, GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL), "text", _tmp0_ = g_strdup_printf ("%i", cs->dwords_length1), NULL); - _g_free0 (_tmp0_); - _g_object_unref0 (cs); -} - - -static EmulationCS* gui_cmain_get_selected_cs (GUICMain* self) { +static EmulationCS* gui_main_window_get_selected_cs (GUIMainWindow* self) { EmulationCS* result; GtkTreeIter iter = {0}; EmulationCS* cs; GtkTreeSelection* selection; g_return_val_if_fail (self != NULL, NULL); cs = NULL; - selection = _g_object_ref0 (gtk_tree_view_get_selection (self->cs_list)); + selection = _g_object_ref0 (gtk_tree_view_get_selection (self->priv->cs_list)); if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) { result = NULL; _g_object_unref0 (cs); _g_object_unref0 (selection); return result; } - gtk_tree_model_get ((GtkTreeModel*) self->cs_store, &iter, 1, &cs, -1, -1); + gtk_tree_model_get ((GtkTreeModel*) self->priv->cs_store, &iter, 1, &cs, -1, -1); result = cs; _g_object_unref0 (selection); return result; } -void gui_cmain_remove_cs (GUICMain* self) { +void gui_main_window_add_cs (GUIMainWindow* self, const char* name, EmulationCS* cs) { + GtkTreeIter iter = {0}; + g_return_if_fail (self != NULL); + g_return_if_fail (name != NULL); + g_return_if_fail (cs != NULL); + gtk_list_store_append (self->priv->cs_store, &iter); + gtk_list_store_set (self->priv->cs_store, &iter, 0, name, 1, cs, -1, -1); +} + + +void gui_main_window_remove_cs (GUIMainWindow* self) { GtkTreeIter iter = {0}; GtkTreeSelection* selection; g_return_if_fail (self != NULL); - selection = _g_object_ref0 (gtk_tree_view_get_selection (self->cs_list)); + selection = _g_object_ref0 (gtk_tree_view_get_selection (self->priv->cs_list)); if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) { _g_object_unref0 (selection); return; } - gtk_list_store_remove (self->cs_store, &iter); + gtk_list_store_remove (self->priv->cs_store, &iter); _g_object_unref0 (selection); } -void gui_cmain_open_csview (GUICMain* self) { +static void gui_main_window_open_csview (GUIMainWindow* self) { EmulationCS* cs; g_return_if_fail (self != NULL); - cs = gui_cmain_get_selected_cs (self); + cs = gui_main_window_get_selected_cs (self); if (cs != NULL) { GUICSView* csv; csv = g_object_ref_sink (gui_cs_view_new (cs)); @@ -691,10 +272,10 @@ void gui_cmain_open_csview (GUICMain* self) { } -void gui_cmain_open_csexport (GUICMain* self) { +static void gui_main_window_open_csexport (GUIMainWindow* self) { EmulationCS* cs; g_return_if_fail (self != NULL); - cs = gui_cmain_get_selected_cs (self); + cs = gui_main_window_get_selected_cs (self); if (cs != NULL) { GUICSExport* d; d = g_object_ref_sink (gui_cs_export_new (cs)); @@ -705,41 +286,103 @@ void gui_cmain_open_csexport (GUICMain* self) { } -GUICMain* gui_cmain_construct (GType object_type) { - GUICMain * self; +GUIMainWindow* gui_main_window_construct (GType object_type) { + GUIMainWindow * self; self = g_object_newv (object_type, 0, NULL); return self; } -GUICMain* gui_cmain_new (void) { - return gui_cmain_construct (GUI_TYPE_CMAIN); +GUIMainWindow* gui_main_window_new (void) { + return gui_main_window_construct (GUI_TYPE_MAIN_WINDOW); +} + + +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; +} + + +static void _lambda10_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, Block1Data* _data1_) { + GUIMainWindow * self; + EmulationCS* cs; + char* _tmp0_; + GtkCellRendererText* _tmp1_; + self = _data1_->self; + g_return_if_fail (coll != NULL); + g_return_if_fail (celll != NULL); + g_return_if_fail (model != NULL); + cs = NULL; + gtk_tree_model_get (model, iter, 1, &cs, -1, -1); + g_assert (cs != NULL); + g_object_set ((_tmp1_ = _data1_->cell, GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL), "text", _tmp0_ = g_strdup_printf ("%i", cs->dwords_length1), NULL); + _g_free0 (_tmp0_); + _g_object_unref0 (cs); +} + + +static void __lambda10__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) { + _lambda10_ (cell_layout, cell, tree_model, iter, self); +} + + +static void _lambda11_ (GtkAction* source, GUIMainWindow* self) { + GUICSImport* d; + g_return_if_fail (source != NULL); + d = g_object_ref_sink (gui_cs_import_new ()); + gtk_dialog_run ((GtkDialog*) d); + _g_object_unref0 (d); +} + + +static void __lambda11__gtk_action_activate (GtkAction* _sender, gpointer self) { + _lambda11_ (_sender, self); +} + + +static void _lambda12_ (GtkAction* source, GUIMainWindow* self) { + g_return_if_fail (source != NULL); + gui_main_window_open_csexport (self); +} + + +static void __lambda12__gtk_action_activate (GtkAction* _sender, gpointer self) { + _lambda12_ (_sender, self); +} + + +static void _lambda13_ (GtkAction* source, GUIMainWindow* self) { + g_return_if_fail (source != NULL); + gui_main_window_remove_cs (self); } -static void _gui_cmain_dwords_cellrenderer_gtk_tree_cell_data_func (GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) { - gui_cmain_dwords_cellrenderer (self, tree_column, cell, tree_model, iter); +static void __lambda13__gtk_action_activate (GtkAction* _sender, gpointer self) { + _lambda13_ (_sender, self); } -static void _lambda17_ (GtkTreePath* path, GtkTreeViewColumn* column, GUICMain* self) { +static void _lambda14_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self) { g_return_if_fail (path != NULL); g_return_if_fail (column != NULL); - gui_cmain_open_csview (self); + gui_main_window_open_csview (self); } -static void __lambda17__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) { - _lambda17_ (path, column, self); +static void __lambda14__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) { + _lambda14_ (path, column, self); } -static gboolean _lambda18_ (GdkEventButton* event, GUICMain* self) { +static gboolean _lambda15_ (GdkEventButton* event, GUIMainWindow* self) { gboolean result; EmulationCS* cs; gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; - cs = gui_cmain_get_selected_cs (self); + cs = gui_main_window_get_selected_cs (self); if (cs != NULL) { _tmp1_ = (*event).type == GDK_BUTTON_PRESS; } else { @@ -751,25 +394,25 @@ static gboolean _lambda18_ (GdkEventButton* event, GUICMain* self) { _tmp0_ = FALSE; } if (_tmp0_) { - gtk_menu_popup (self->menu->cs, NULL, NULL, NULL, NULL, (*event).button, (*event).time); + gtk_menu_popup (self->priv->edit_menu, NULL, NULL, NULL, NULL, (*event).button, (*event).time); } _g_object_unref0 (cs); } -static gboolean __lambda18__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { - return _lambda18_ (event, self); +static gboolean __lambda15__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { + return _lambda15_ (event, self); } -static void _lambda19_ (GtkTreeView* source, GUICMain* self) { +static void _lambda16_ (GtkTreeView* source, GUIMainWindow* self) { g_return_if_fail (source != NULL); - gui_cactions_pcsop_set_sensitive (gui_actions, gtk_tree_selection_get_selected (gtk_tree_view_get_selection (self->cs_list), NULL, NULL)); + gui_main_window_edit_set_sensitive (self, gtk_tree_selection_get_selected (gtk_tree_view_get_selection (self->priv->cs_list), NULL, NULL)); } -static void __lambda19__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) { - _lambda19_ (_sender, self); +static void __lambda16__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) { + _lambda16_ (_sender, self); } @@ -778,107 +421,55 @@ static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self } -static GObject * gui_cmain_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { +static Block1Data* block1_data_ref (Block1Data* _data1_) { + ++_data1_->_ref_count_; + return _data1_; +} + + +static void block1_data_unref (Block1Data* _data1_) { + if ((--_data1_->_ref_count_) == 0) { + _g_object_unref0 (_data1_->self); + _g_object_unref0 (_data1_->cell); + g_slice_free (Block1Data, _data1_); + } +} + + +static GObject * gui_main_window_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { GObject * obj; GObjectClass * parent_class; - GUICMain * self; + GUIMainWindow * self; GError * _inner_error_; - parent_class = G_OBJECT_CLASS (gui_cmain_parent_class); + parent_class = G_OBJECT_CLASS (gui_main_window_parent_class); obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = GUI_CMAIN (obj); + self = GUI_MAIN_WINDOW (obj); _inner_error_ = NULL; { - GUICMenus* _tmp9_; - GtkToolbar* _tmp10_; - GtkToolItem* _tmp12_; - GtkSeparatorToolItem* _tmp11_; - GtkMenu* _tmp13_; - GtkWidget* _tmp14_; - GtkWidget* _tmp15_; - GtkWidget* _tmp16_; - GtkWidget* _tmp17_; - GtkMenuItem* _tmp19_; - GtkSeparatorMenuItem* _tmp18_; - GtkWidget* _tmp20_; - GtkMenuItem* menu_file_item; - GtkMenu* _tmp21_; - GtkWidget* _tmp22_; - GtkWidget* _tmp23_; - GtkWidget* _tmp24_; - GtkMenuItem* menu_edit_item; - GtkMenuBar* _tmp25_; - GtkMenu* _tmp26_; - GtkWidget* _tmp27_; - GtkWidget* _tmp28_; - GtkMenuItem* _tmp30_; - GtkSeparatorMenuItem* _tmp29_; - GtkWidget* _tmp31_; - GtkListStore* _tmp32_; - GtkTreeView* _tmp33_; - GtkCellRendererText* _tmp34_; - GtkCellRendererText* _tmp35_; - GtkScrolledWindow* sw; - GtkVBox* mainbox; - self->menu = (_tmp9_ = gui_cmenus_new (), _gui_cmenus_unref0 (self->menu), _tmp9_); - self->toolbar = (_tmp10_ = g_object_ref_sink ((GtkToolbar*) gtk_toolbar_new ()), _g_object_unref0 (self->toolbar), _tmp10_); - gui_cmain_add_toolitem (self, gui_actions->New); - gui_cmain_add_toolitem (self, gui_actions->Open); - gui_cmain_add_toolitem (self, gui_actions->Save); - gtk_toolbar_insert (self->toolbar, _tmp12_ = (_tmp11_ = g_object_ref_sink ((GtkSeparatorToolItem*) gtk_separator_tool_item_new ()), GTK_IS_TOOL_ITEM (_tmp11_) ? ((GtkToolItem*) _tmp11_) : NULL), -1); - _g_object_unref0 (_tmp12_); - gui_cmain_add_toolitem (self, gui_actions->RemoveCS); - gui_cmain_add_toolitem (self, gui_actions->ImportCS); - gui_cmain_add_toolitem (self, gui_actions->ExportCS); - self->menu->file = (_tmp13_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), _g_object_unref0 (self->menu->file), _tmp13_); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp14_ = gtk_action_create_menu_item (gui_actions->New), GTK_IS_MENU_ITEM (_tmp14_) ? ((GtkMenuItem*) _tmp14_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp15_ = gtk_action_create_menu_item (gui_actions->Open), GTK_IS_MENU_ITEM (_tmp15_) ? ((GtkMenuItem*) _tmp15_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp16_ = gtk_action_create_menu_item (gui_actions->Save), GTK_IS_MENU_ITEM (_tmp16_) ? ((GtkMenuItem*) _tmp16_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp17_ = gtk_action_create_menu_item (gui_actions->SaveAs), GTK_IS_MENU_ITEM (_tmp17_) ? ((GtkMenuItem*) _tmp17_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp19_ = (_tmp18_ = g_object_ref_sink ((GtkSeparatorMenuItem*) gtk_separator_menu_item_new ()), GTK_IS_MENU_ITEM (_tmp18_) ? ((GtkMenuItem*) _tmp18_) : NULL))); - _g_object_unref0 (_tmp19_); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp20_ = gtk_action_create_menu_item (gui_actions->Quit), GTK_IS_MENU_ITEM (_tmp20_) ? ((GtkMenuItem*) _tmp20_) : NULL)); - menu_file_item = g_object_ref_sink ((GtkMenuItem*) gtk_menu_item_new_with_label ("File")); - gtk_menu_item_set_submenu (menu_file_item, self->menu->file); - self->menu->edit = (_tmp21_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), _g_object_unref0 (self->menu->edit), _tmp21_); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->edit, (GtkWidget*) (_tmp22_ = gtk_action_create_menu_item (gui_actions->RemoveCS), GTK_IS_MENU_ITEM (_tmp22_) ? ((GtkMenuItem*) _tmp22_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->edit, (GtkWidget*) (_tmp23_ = gtk_action_create_menu_item (gui_actions->ImportCS), GTK_IS_MENU_ITEM (_tmp23_) ? ((GtkMenuItem*) _tmp23_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->edit, (GtkWidget*) (_tmp24_ = gtk_action_create_menu_item (gui_actions->ExportCS), GTK_IS_MENU_ITEM (_tmp24_) ? ((GtkMenuItem*) _tmp24_) : NULL)); - menu_edit_item = g_object_ref_sink ((GtkMenuItem*) gtk_menu_item_new_with_label ("Edit")); - gtk_menu_item_set_submenu (menu_edit_item, self->menu->edit); - self->menubar = (_tmp25_ = g_object_ref_sink ((GtkMenuBar*) gtk_menu_bar_new ()), _g_object_unref0 (self->menubar), _tmp25_); - gtk_menu_shell_append ((GtkMenuShell*) self->menubar, (GtkWidget*) menu_file_item); - gtk_menu_shell_append ((GtkMenuShell*) self->menubar, (GtkWidget*) menu_edit_item); - self->menu->cs = (_tmp26_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), _g_object_unref0 (self->menu->cs), _tmp26_); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->cs, (GtkWidget*) (_tmp27_ = gtk_action_create_menu_item (gui_actions->OpenCS), GTK_IS_MENU_ITEM (_tmp27_) ? ((GtkMenuItem*) _tmp27_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->cs, (GtkWidget*) (_tmp28_ = gtk_action_create_menu_item (gui_actions->ExportCS), GTK_IS_MENU_ITEM (_tmp28_) ? ((GtkMenuItem*) _tmp28_) : NULL)); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->cs, (GtkWidget*) (_tmp30_ = (_tmp29_ = g_object_ref_sink ((GtkSeparatorMenuItem*) gtk_separator_menu_item_new ()), GTK_IS_MENU_ITEM (_tmp29_) ? ((GtkMenuItem*) _tmp29_) : NULL))); - _g_object_unref0 (_tmp30_); - gtk_menu_shell_append ((GtkMenuShell*) self->menu->cs, (GtkWidget*) (_tmp31_ = gtk_action_create_menu_item (gui_actions->RemoveCS), GTK_IS_MENU_ITEM (_tmp31_) ? ((GtkMenuItem*) _tmp31_) : NULL)); - self->cs_store = (_tmp32_ = gtk_list_store_new (2, G_TYPE_STRING, EMULATION_TYPE_CS, NULL), _g_object_unref0 (self->cs_store), _tmp32_); - self->cs_list = (_tmp33_ = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new ()), _g_object_unref0 (self->cs_list), _tmp33_); - gtk_tree_view_insert_column_with_data_func (self->cs_list, -1, "DWORDs", (GtkCellRenderer*) (_tmp34_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), _gui_cmain_dwords_cellrenderer_gtk_tree_cell_data_func, g_object_ref (self), g_object_unref); - _g_object_unref0 (_tmp34_); - gtk_tree_view_insert_column_with_attributes (self->cs_list, -1, "Name", (GtkCellRenderer*) (_tmp35_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", 0, NULL, NULL); - _g_object_unref0 (_tmp35_); - gtk_tree_view_set_model (self->cs_list, (GtkTreeModel*) self->cs_store); - g_signal_connect_object (self->cs_list, "row-activated", (GCallback) __lambda17__gtk_tree_view_row_activated, self, 0); - g_signal_connect_object ((GtkWidget*) self->cs_list, "button-press-event", (GCallback) __lambda18__gtk_widget_button_press_event, self, 0); - g_signal_connect_object (self->cs_list, "cursor-changed", (GCallback) __lambda19__gtk_tree_view_cursor_changed, self, 0); - gui_cactions_pcsop_set_sensitive (gui_actions, FALSE); - sw = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); - g_object_set (sw, "hscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - g_object_set (sw, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - gtk_container_add ((GtkContainer*) sw, (GtkWidget*) self->cs_list); - mainbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); - gtk_box_pack_start ((GtkBox*) mainbox, (GtkWidget*) self->menubar, FALSE, TRUE, (guint) 0); - gtk_box_pack_start ((GtkBox*) mainbox, (GtkWidget*) self->toolbar, FALSE, TRUE, (guint) 0); - gtk_box_pack_start ((GtkBox*) mainbox, (GtkWidget*) sw, TRUE, TRUE, (guint) 0); - gtk_widget_set_size_request ((GtkWidget*) self, 400, 200); - gtk_window_set_title ((GtkWindow*) self, "Radeon Simulator"); - gtk_container_add ((GtkContainer*) self, (GtkWidget*) mainbox); - g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL); + Block1Data* _data1_; + GtkBuilder* builder; + GObject* _tmp0_; + GtkTreeViewColumn* col; + GObject* _tmp1_; + GtkAction* _tmp3_; + GObject* _tmp2_; + GtkAction* _tmp5_; + GObject* _tmp4_; + GObject* _tmp6_; + GtkAction* action_importcs; + GtkListStore* _tmp8_; + GObject* _tmp7_; + GtkTreeView* _tmp10_; + GObject* _tmp9_; + GtkMenu* _tmp12_; + GObject* _tmp11_; + GObject* _tmp13_; + _data1_ = g_slice_new0 (Block1Data); + _data1_->_ref_count_ = 1; + _data1_->self = g_object_ref (self); + builder = gtk_builder_new (); { - gtk_window_set_icon_from_file ((GtkWindow*) self, "/usr/share/pixmaps/rsim.png", &_inner_error_); + 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; } @@ -890,58 +481,105 @@ static GObject * gui_cmain_constructor (GType type, guint n_construct_properties e = _inner_error_; _inner_error_ = NULL; { + fprintf (stderr, "Unable to construct main window: %s.\n", e->message); + g_assert (FALSE); _g_error_free0 (e); } } __finally2: if (_inner_error_ != NULL) { - _g_object_unref0 (menu_file_item); - _g_object_unref0 (menu_edit_item); - _g_object_unref0 (sw); - _g_object_unref0 (mainbox); + _g_object_unref0 (builder); + block1_data_unref (_data1_); 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_); } - gtk_widget_show_all ((GtkWidget*) self); - _g_object_unref0 (menu_file_item); - _g_object_unref0 (menu_edit_item); - _g_object_unref0 (sw); - _g_object_unref0 (mainbox); + gtk_widget_set_size_request ((GtkWidget*) self, 400, 200); + gtk_window_set_title ((GtkWindow*) self, "Radeon Simulator"); + col = _g_object_ref0 ((_tmp0_ = gtk_builder_get_object (builder, "dwords_column"), GTK_IS_TREE_VIEW_COLUMN (_tmp0_) ? ((GtkTreeViewColumn*) _tmp0_) : NULL)); + _data1_->cell = _g_object_ref0 ((_tmp1_ = gtk_builder_get_object (builder, "dwords_cell"), GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL)); + gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) _data1_->cell, __lambda10__gtk_cell_layout_data_func, block1_data_ref (_data1_), block1_data_unref); + self->priv->action_exportcs = (_tmp3_ = _g_object_ref0 ((_tmp2_ = gtk_builder_get_object (builder, "ExportCS"), GTK_IS_ACTION (_tmp2_) ? ((GtkAction*) _tmp2_) : NULL)), _g_object_unref0 (self->priv->action_exportcs), _tmp3_); + self->priv->action_removecs = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_builder_get_object (builder, "RemoveCS"), GTK_IS_ACTION (_tmp4_) ? ((GtkAction*) _tmp4_) : NULL)), _g_object_unref0 (self->priv->action_removecs), _tmp5_); + action_importcs = _g_object_ref0 ((_tmp6_ = gtk_builder_get_object (builder, "ImportCS"), GTK_IS_ACTION (_tmp6_) ? ((GtkAction*) _tmp6_) : NULL)); + g_signal_connect_object (action_importcs, "activate", (GCallback) __lambda11__gtk_action_activate, self, 0); + g_signal_connect_object (self->priv->action_exportcs, "activate", (GCallback) __lambda12__gtk_action_activate, self, 0); + g_signal_connect_object (self->priv->action_removecs, "activate", (GCallback) __lambda13__gtk_action_activate, self, 0); + self->priv->cs_store = (_tmp8_ = _g_object_ref0 ((_tmp7_ = gtk_builder_get_object (builder, "cs_store"), GTK_IS_LIST_STORE (_tmp7_) ? ((GtkListStore*) _tmp7_) : NULL)), _g_object_unref0 (self->priv->cs_store), _tmp8_); + self->priv->cs_list = (_tmp10_ = _g_object_ref0 ((_tmp9_ = gtk_builder_get_object (builder, "cs_list"), GTK_IS_TREE_VIEW (_tmp9_) ? ((GtkTreeView*) _tmp9_) : NULL)), _g_object_unref0 (self->priv->cs_list), _tmp10_); + self->priv->edit_menu = (_tmp12_ = _g_object_ref0 ((_tmp11_ = gtk_builder_get_object (builder, "popup1"), GTK_IS_MENU (_tmp11_) ? ((GtkMenu*) _tmp11_) : NULL)), _g_object_unref0 (self->priv->edit_menu), _tmp12_); + g_signal_connect_object (self->priv->cs_list, "row-activated", (GCallback) __lambda14__gtk_tree_view_row_activated, self, 0); + g_signal_connect_object ((GtkWidget*) self->priv->cs_list, "button-press-event", (GCallback) __lambda15__gtk_widget_button_press_event, self, 0); + g_signal_connect_object (self->priv->cs_list, "cursor-changed", (GCallback) __lambda16__gtk_tree_view_cursor_changed, self, 0); + gui_main_window_edit_set_sensitive (self, FALSE); + gtk_container_add ((GtkContainer*) self, (_tmp13_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_WIDGET (_tmp13_) ? ((GtkWidget*) _tmp13_) : NULL)); + g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL); + { + gtk_window_set_icon_from_file ((GtkWindow*) self, "/usr/share/pixmaps/rsim.png", &_inner_error_); + if (_inner_error_ != NULL) { + goto __catch3_g_error; + } + } + goto __finally3; + __catch3_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + _g_error_free0 (e); + } + } + __finally3: + if (_inner_error_ != NULL) { + _g_object_unref0 (builder); + _g_object_unref0 (col); + _g_object_unref0 (action_importcs); + block1_data_unref (_data1_); + 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_); + } + _g_object_unref0 (builder); + _g_object_unref0 (col); + _g_object_unref0 (action_importcs); + block1_data_unref (_data1_); } return obj; } -static void gui_cmain_class_init (GUICMainClass * klass) { - gui_cmain_parent_class = g_type_class_peek_parent (klass); - G_OBJECT_CLASS (klass)->constructor = gui_cmain_constructor; - G_OBJECT_CLASS (klass)->finalize = gui_cmain_finalize; +static void gui_main_window_class_init (GUIMainWindowClass * klass) { + gui_main_window_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (GUIMainWindowPrivate)); + G_OBJECT_CLASS (klass)->constructor = gui_main_window_constructor; + G_OBJECT_CLASS (klass)->finalize = gui_main_window_finalize; + gui_main_window_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=\"GtkUIManager\" id=\"uimanager1\">\n <child>\n <object class=\"GtkActionGroup\" id=\"actiongroup1\">\n <child>\n <object class=\"GtkAction\" id=\"New\">\n <property name=\"name\">New</property>\n <property name=\"stock_id\">gtk-new</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Open\">\n <property name=\"name\">Open</property>\n <property name=\"stock_id\">gtk-open</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Save\">\n <property name=\"name\">Save</property>\n <property name=\"stock_id\">gtk-save</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"SaveAs\">\n <property name=\"name\">SaveAs</property>\n <property name=\"stock_id\">gtk-save-as</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Quit\">\n <property name=\"name\">Quit</property>\n <property name=\"stock_id\">gtk-quit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"RemoveCS\">\n <property name=\"name\">RemoveCS</property>\n <property name=\"label\">Remove CS</property>\n <property name=\"tooltip\">Remove the selected command stream from the current project.</property>\n <property name=\"stock_id\">gtk-delete</property>\n </object>\n <accelerator key=\"Delete\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ImportCS\">\n <property name=\"name\">ImportCS</property>\n <property name=\"label\">Import CS</property>\n <property name=\"tooltip\">Import a new command stream to the current project.</property>\n <property name=\"stock_id\">gtk-add</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ExportCS\">\n <property name=\"name\">ExportCS</property>\n <property name=\"label\">Export CS</property>\n <property name=\"tooltip\">Export the selected command stream to a file.</property>\n <property name=\"stock_id\">gtk-convert</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"About\">\n <property name=\"name\">About</property>\n <property name=\"stock_id\">gtk-about</property>\n </object>\n <accelerator key=\"F1\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"FileMenu\">\n <property name=\"name\">FileMenu</property>\n <property name=\"label\" translatable=\"yes\">_File</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"EditMenu\">\n <property name=\"name\">EditMenu</property>\n <property name=\"label\" translatable=\"yes\">_Edit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"HelpMenu\">\n <property name=\"name\">HelpMenu</property>\n <property name=\"label\" translatable=\"yes\">_Help</property>\n </object>\n </child>\n </object>\n </child>\n <ui>\n <menubar name=\"menubar1\">\n <menu action=\"FileMenu\" name=\"FileMenu\">\n <menuitem action=\"New\" name=\"New\"/>\n <menuitem action=\"Open\" name=\"Open\"/>\n <menuitem action=\"Save\" name=\"Save\"/>\n <menuitem action=\"SaveAs\" name=\"SaveAs\"/>\n <separator/>\n <menuitem action=\"Quit\" name=\"Quit\"/>\n </menu>\n <menu action=\"EditMenu\" name=\"EditMenu\">\n <menuitem action=\"ImportCS\" name=\"ImportCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </menu>\n <menu action=\"HelpMenu\" name=\"HelpMenu\">\n <menuitem action=\"About\" name=\"About\"/>\n </menu>\n </menubar>\n <toolbar name=\"toolbar1\">\n <toolitem action=\"New\" name=\"New\"/>\n <toolitem action=\"Open\" name=\"Open\"/>\n <toolitem action=\"Save\" name=\"Save\"/>\n <separator/>\n <toolitem action=\"ImportCS\" name=\"ImportCS\"/>\n <toolitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <toolitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </toolbar>\n <popup name=\"popup1\">\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </popup>\n </ui>\n </object>\n <object class=\"GtkVBox\" id=\"mainbox\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkMenuBar\" id=\"menubar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-menubar\">\n <property name=\"AtkObject::accessible-name\">The menubar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n </packing>\n </child>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkToolbar\" id=\"toolbar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-toolbar\">\n <property name=\"AtkObject::accessible-name\">The toolbar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">1</property>\n </packing>\n </child>\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 <child>\n <object class=\"GtkTreeView\" id=\"cs_list\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"model\">cs_store</property>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"dwords_column\">\n <property name=\"title\">DWORDs</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"dwords_cell\"/>\n </child>\n </object>\n </child>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"treeviewcolumn1\">\n <property name=\"title\">Name</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"cellrenderertext1\"/>\n <attributes>\n <attribute name=\"text\">0</attribute>\n </attributes>\n </child>\n </object>\n </child>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"position\">2</property>\n </packing>\n </child>\n </object>\n <object class=\"GtkListStore\" id=\"cs_store\">\n <columns>\n <!-- column-name Name -->\n <column type=\"gchararray\"/>\n <!-- column-name CS -->\n <column type=\"GObject\"/>\n </columns>\n </object>\n <object constructor=\"uimanager1\" class=\"GtkMenu\" id=\"popup1\">\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-popup\">\n <property name=\"AtkObject::accessible-name\">The popup menu</property>\n </object>\n </child>\n </object>\n </interface>\n "); } -static void gui_cmain_instance_init (GUICMain * self) { +static void gui_main_window_instance_init (GUIMainWindow * self) { + self->priv = GUI_MAIN_WINDOW_GET_PRIVATE (self); } -static void gui_cmain_finalize (GObject* obj) { - GUICMain * self; - self = GUI_CMAIN (obj); - _gui_cmenus_unref0 (self->menu); - _g_object_unref0 (self->menubar); - _g_object_unref0 (self->toolbar); - _g_object_unref0 (self->cs_store); - _g_object_unref0 (self->cs_list); - G_OBJECT_CLASS (gui_cmain_parent_class)->finalize (obj); +static void gui_main_window_finalize (GObject* obj) { + GUIMainWindow * self; + self = GUI_MAIN_WINDOW (obj); + _g_object_unref0 (self->priv->cs_store); + _g_object_unref0 (self->priv->cs_list); + _g_object_unref0 (self->priv->edit_menu); + _g_object_unref0 (self->priv->action_exportcs); + _g_object_unref0 (self->priv->action_removecs); + G_OBJECT_CLASS (gui_main_window_parent_class)->finalize (obj); } -GType gui_cmain_get_type (void) { - static GType gui_cmain_type_id = 0; - if (gui_cmain_type_id == 0) { - static const GTypeInfo g_define_type_info = { sizeof (GUICMainClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gui_cmain_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GUICMain), 0, (GInstanceInitFunc) gui_cmain_instance_init, NULL }; - gui_cmain_type_id = g_type_register_static (GTK_TYPE_WINDOW, "GUICMain", &g_define_type_info, 0); +GType gui_main_window_get_type (void) { + static GType gui_main_window_type_id = 0; + if (gui_main_window_type_id == 0) { + static const GTypeInfo g_define_type_info = { sizeof (GUIMainWindowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gui_main_window_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GUIMainWindow), 0, (GInstanceInitFunc) gui_main_window_instance_init, NULL }; + gui_main_window_type_id = g_type_register_static (GTK_TYPE_WINDOW, "GUIMainWindow", &g_define_type_info, 0); } - return gui_cmain_type_id; + return gui_main_window_type_id; } @@ -956,247 +594,21 @@ static void _vala_EmulationSpecEntry_array_free (EmulationSpecEntry* array, gint } -GUISpecLoadDialog* gui_spec_load_dialog_construct (GType object_type, GtkWindow* parent) { - GUISpecLoadDialog * self; - EmulationSpecEntry* _tmp0_; - GtkLabel* _tmp1_; - GtkProgressBar* _tmp2_; - GtkVBox* box; - self = g_object_newv (object_type, 0, NULL); - if (parent != NULL) { - gtk_window_set_transient_for ((GtkWindow*) self, parent); - gtk_window_set_modal ((GtkWindow*) self, TRUE); - gtk_window_set_destroy_with_parent ((GtkWindow*) self, TRUE); - } - gtk_window_set_deletable ((GtkWindow*) self, FALSE); - emulation_specs = (_tmp0_ = g_new0 (EmulationSpecEntry, 2), emulation_specs = (_vala_EmulationSpecEntry_array_free (emulation_specs, emulation_specs_length1), NULL), emulation_specs_length1 = 2, _tmp0_); - self->priv->loading = (_tmp1_ = g_object_ref_sink ((GtkLabel*) gtk_label_new ("Loading...")), _g_object_unref0 (self->priv->loading), _tmp1_); - self->priv->progress = (_tmp2_ = g_object_ref_sink ((GtkProgressBar*) gtk_progress_bar_new ()), _g_object_unref0 (self->priv->progress), _tmp2_); - self->priv->progress->pulse_fraction = 0.1; - box = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 5)); - gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) self->priv->loading, FALSE, TRUE, (guint) 0); - gtk_box_pack_start ((GtkBox*) box, (GtkWidget*) self->priv->progress, FALSE, TRUE, (guint) 0); - gtk_container_set_border_width ((GtkContainer*) self, (guint) 10); - gtk_window_set_default_size ((GtkWindow*) self, 300, 10); - gtk_container_add ((GtkContainer*) self, (GtkWidget*) box); - _g_object_unref0 (box); - return self; -} - - -GUISpecLoadDialog* gui_spec_load_dialog_new (GtkWindow* parent) { - return gui_spec_load_dialog_construct (GUI_TYPE_SPEC_LOAD_DIALOG, parent); -} - - -static void* _gui_spec_load_dialog_pulse_thread_gthread_func (gpointer self) { - return gui_spec_load_dialog_pulse_thread (self); -} - - -static void* _gui_spec_load_dialog_specload_thread_gthread_func (gpointer self) { - return gui_spec_load_dialog_specload_thread (self); -} - - -void* gui_spec_load_dialog_run (GUISpecLoadDialog* self) { - void* result; - GError * _inner_error_; - GThread* load; - GThread* pulse; - void* _result_; - g_return_val_if_fail (self != NULL, NULL); - _inner_error_ = NULL; - gdk_threads_enter (); - gtk_widget_show_all ((GtkWidget*) self); - gdk_threads_leave (); - self->priv->done = FALSE; - load = NULL; - pulse = NULL; - { - GThread* _tmp0_; - GThread* _tmp1_; - _tmp0_ = g_thread_create (_gui_spec_load_dialog_pulse_thread_gthread_func, self, TRUE, &_inner_error_); - if (_inner_error_ != NULL) { - if (_inner_error_->domain == G_THREAD_ERROR) { - goto __catch3_g_thread_error; - } - g_critical ("file %s: line %d: unexpected 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; - } - pulse = _tmp0_; - _tmp1_ = g_thread_create (_gui_spec_load_dialog_specload_thread_gthread_func, self, TRUE, &_inner_error_); - if (_inner_error_ != NULL) { - if (_inner_error_->domain == G_THREAD_ERROR) { - goto __catch3_g_thread_error; - } - g_critical ("file %s: line %d: unexpected 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; - } - load = _tmp1_; - } - goto __finally3; - __catch3_g_thread_error: - { - GError * e; - e = _inner_error_; - _inner_error_ = NULL; - { - fprintf (stderr, "Unable to start loading thread.\n"); - g_assert (FALSE); - result = NULL; - _g_error_free0 (e); - return result; - } - } - __finally3: - if (_inner_error_ != NULL) { - 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; - } - _result_ = g_thread_join (load); - self->priv->done = TRUE; - g_thread_join (pulse); - gdk_threads_enter (); - gtk_widget_hide_all ((GtkWidget*) self); - gdk_threads_leave (); - result = _result_; - return result; -} - - -static void* gui_spec_load_dialog_pulse_thread (GUISpecLoadDialog* self) { - void* result; - g_return_val_if_fail (self != NULL, NULL); - while (TRUE) { - if (!(!self->priv->done)) { - break; - } - gdk_threads_enter (); - gtk_progress_bar_pulse (self->priv->progress); - gdk_threads_leave (); - g_usleep ((gulong) 50000); - } - result = NULL; - return result; -} - - -static void* gui_spec_load_dialog_specload_thread (GUISpecLoadDialog* self) { - void* result; - EmulationSpec* r300_registers; - EmulationSpec* r500_registers; - EmulationSpec* _tmp0_; - char* _tmp1_; - EmulationSpec* _tmp2_; - char* _tmp3_; - g_return_val_if_fail (self != NULL, NULL); - gdk_threads_enter (); - gtk_label_set_label (self->priv->loading, "Loading r300 registers..."); - gdk_threads_leave (); - r300_registers = emulation_spec_new ("/usr/share/rsim/r300reg.xml", "r300"); - gdk_threads_enter (); - gtk_label_set_label (self->priv->loading, "Loading r500 registers..."); - gdk_threads_leave (); - r500_registers = emulation_spec_new ("/usr/share/rsim/r300reg.xml", "r500"); - gdk_threads_enter (); - gtk_label_set_label (self->priv->loading, "Done"); - gdk_threads_leave (); - emulation_specs[0].spec = (_tmp0_ = _g_object_ref0 (r300_registers), _g_object_unref0 (emulation_specs[0].spec), _tmp0_); - emulation_specs[0].name = (_tmp1_ = g_strdup ("r300"), _g_free0 (emulation_specs[0].name), _tmp1_); - emulation_specs[1].spec = (_tmp2_ = _g_object_ref0 (r500_registers), _g_object_unref0 (emulation_specs[1].spec), _tmp2_); - emulation_specs[1].name = (_tmp3_ = g_strdup ("r500"), _g_free0 (emulation_specs[1].name), _tmp3_); - result = (void*) 123; - _g_object_unref0 (r300_registers); - _g_object_unref0 (r500_registers); - return result; -} - - -static void gui_spec_load_dialog_class_init (GUISpecLoadDialogClass * klass) { - gui_spec_load_dialog_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (GUISpecLoadDialogPrivate)); - G_OBJECT_CLASS (klass)->finalize = gui_spec_load_dialog_finalize; -} - - -static void gui_spec_load_dialog_instance_init (GUISpecLoadDialog * self) { - self->priv = GUI_SPEC_LOAD_DIALOG_GET_PRIVATE (self); -} - - -static void gui_spec_load_dialog_finalize (GObject* obj) { - GUISpecLoadDialog * self; - self = GUI_SPEC_LOAD_DIALOG (obj); - _g_object_unref0 (self->priv->loading); - _g_object_unref0 (self->priv->progress); - G_OBJECT_CLASS (gui_spec_load_dialog_parent_class)->finalize (obj); -} - - -GType gui_spec_load_dialog_get_type (void) { - static GType gui_spec_load_dialog_type_id = 0; - if (gui_spec_load_dialog_type_id == 0) { - static const GTypeInfo g_define_type_info = { sizeof (GUISpecLoadDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gui_spec_load_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GUISpecLoadDialog), 0, (GInstanceInitFunc) gui_spec_load_dialog_instance_init, NULL }; - gui_spec_load_dialog_type_id = g_type_register_static (GTK_TYPE_WINDOW, "GUISpecLoadDialog", &g_define_type_info, 0); - } - return gui_spec_load_dialog_type_id; -} - - -static void* _gui_spec_load_dialog_run_gthread_func (gpointer self) { - return gui_spec_load_dialog_run (self); -} - - void gui_init (char*** args, int* args_length1) { - GError * _inner_error_; - GUICActions* _tmp0_; - GUICMain* _tmp1_; - _inner_error_ = NULL; + EmulationSpecEntry* _tmp0_; + EmulationSpec* _tmp1_; + char* _tmp2_; + EmulationSpec* _tmp3_; + char* _tmp4_; + GUIMainWindow* _tmp5_; gtk_init (args_length1, args); - gui_actions = (_tmp0_ = gui_cactions_new (), _g_object_unref0 (gui_actions), _tmp0_); - gui_main = (_tmp1_ = g_object_ref_sink (gui_cmain_new ()), _g_object_unref0 (gui_main), _tmp1_); - { - GUISpecLoadDialog* specload; - gdk_threads_init (); - specload = g_object_ref_sink (gui_spec_load_dialog_new ((GtkWindow*) gui_main)); - { - g_thread_create (_gui_spec_load_dialog_run_gthread_func, specload, FALSE, &_inner_error_); - if (_inner_error_ != NULL) { - if (_inner_error_->domain == G_THREAD_ERROR) { - goto __catch4_g_thread_error; - } - _g_object_unref0 (specload); - g_critical ("file %s: line %d: unexpected 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; - } - } - goto __finally4; - __catch4_g_thread_error: - { - GError * e; - e = _inner_error_; - _inner_error_ = NULL; - { - fprintf (stderr, "Unable to start loading thread.\n"); - g_assert (FALSE); - _g_error_free0 (e); - } - } - __finally4: - if (_inner_error_ != NULL) { - _g_object_unref0 (specload); - 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; - } - _g_object_unref0 (specload); - } + emulation_specs = (_tmp0_ = g_new0 (EmulationSpecEntry, 2), emulation_specs = (_vala_EmulationSpecEntry_array_free (emulation_specs, emulation_specs_length1), NULL), emulation_specs_length1 = 2, _tmp0_); + emulation_specs[0].spec = (_tmp1_ = emulation_spec_new ("/usr/share/rsim/r300reg.xml", "r300"), _g_object_unref0 (emulation_specs[0].spec), _tmp1_); + emulation_specs[0].name = (_tmp2_ = g_strdup ("r300"), _g_free0 (emulation_specs[0].name), _tmp2_); + emulation_specs[1].spec = (_tmp3_ = emulation_spec_new ("/usr/share/rsim/r300reg.xml", "r500"), _g_object_unref0 (emulation_specs[1].spec), _tmp3_); + emulation_specs[1].name = (_tmp4_ = g_strdup ("r500"), _g_free0 (emulation_specs[1].name), _tmp4_); + gui_main = (_tmp5_ = g_object_ref_sink (gui_main_window_new ()), _g_object_unref0 (gui_main), _tmp5_); + gtk_widget_show_all ((GtkWidget*) gui_main); gtk_main (); } @@ -1262,7 +674,6 @@ gint _main (char** args, int args_length1) { } } } - g_object_unref ((GObject*) gui_actions); g_object_unref ((GObject*) gui_main); result = 0; return result; diff --git a/src/main.vala b/src/main.vala index 40f1992..7b80cb9 100644 --- a/src/main.vala +++ b/src/main.vala @@ -3,149 +3,289 @@ using Gtk; namespace GUI { - public class CActions : GLib.Object + public class MainWindow : Window { - public Action New; - public Action Open; - public Action Save; - public Action SaveAs; - public Action RemoveCS; - public Action ImportCS; - public Action ExportCS; - public Action OpenCS; - public Action Quit; + private static string xml_ui = """ + <?xml version="1.0"?> + <interface> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy project-wide --> + <object class="GtkUIManager" id="uimanager1"> + <child> + <object class="GtkActionGroup" id="actiongroup1"> + <child> + <object class="GtkAction" id="New"> + <property name="name">New</property> + <property name="stock_id">gtk-new</property> + </object> + </child> + <child> + <object class="GtkAction" id="Open"> + <property name="name">Open</property> + <property name="stock_id">gtk-open</property> + </object> + </child> + <child> + <object class="GtkAction" id="Save"> + <property name="name">Save</property> + <property name="stock_id">gtk-save</property> + </object> + </child> + <child> + <object class="GtkAction" id="SaveAs"> + <property name="name">SaveAs</property> + <property name="stock_id">gtk-save-as</property> + </object> + </child> + <child> + <object class="GtkAction" id="Quit"> + <property name="name">Quit</property> + <property name="stock_id">gtk-quit</property> + </object> + </child> + <child> + <object class="GtkAction" id="RemoveCS"> + <property name="name">RemoveCS</property> + <property name="label">Remove CS</property> + <property name="tooltip">Remove the selected command stream from the current project.</property> + <property name="stock_id">gtk-delete</property> + </object> + <accelerator key="Delete"/> + </child> + <child> + <object class="GtkAction" id="ImportCS"> + <property name="name">ImportCS</property> + <property name="label">Import CS</property> + <property name="tooltip">Import a new command stream to the current project.</property> + <property name="stock_id">gtk-add</property> + </object> + </child> + <child> + <object class="GtkAction" id="ExportCS"> + <property name="name">ExportCS</property> + <property name="label">Export CS</property> + <property name="tooltip">Export the selected command stream to a file.</property> + <property name="stock_id">gtk-convert</property> + </object> + </child> + <child> + <object class="GtkAction" id="About"> + <property name="name">About</property> + <property name="stock_id">gtk-about</property> + </object> + <accelerator key="F1"/> + </child> + <child> + <object class="GtkAction" id="FileMenu"> + <property name="name">FileMenu</property> + <property name="label" translatable="yes">_File</property> + </object> + </child> + <child> + <object class="GtkAction" id="EditMenu"> + <property name="name">EditMenu</property> + <property name="label" translatable="yes">_Edit</property> + </object> + </child> + <child> + <object class="GtkAction" id="HelpMenu"> + <property name="name">HelpMenu</property> + <property name="label" translatable="yes">_Help</property> + </object> + </child> + </object> + </child> + <ui> + <menubar name="menubar1"> + <menu action="FileMenu" name="FileMenu"> + <menuitem action="New" name="New"/> + <menuitem action="Open" name="Open"/> + <menuitem action="Save" name="Save"/> + <menuitem action="SaveAs" name="SaveAs"/> + <separator/> + <menuitem action="Quit" name="Quit"/> + </menu> + <menu action="EditMenu" name="EditMenu"> + <menuitem action="ImportCS" name="ImportCS"/> + <menuitem action="ExportCS" name="ExportCS"/> + <separator/> + <menuitem action="RemoveCS" name="RemoveCS"/> + </menu> + <menu action="HelpMenu" name="HelpMenu"> + <menuitem action="About" name="About"/> + </menu> + </menubar> + <toolbar name="toolbar1"> + <toolitem action="New" name="New"/> + <toolitem action="Open" name="Open"/> + <toolitem action="Save" name="Save"/> + <separator/> + <toolitem action="ImportCS" name="ImportCS"/> + <toolitem action="ExportCS" name="ExportCS"/> + <separator/> + <toolitem action="RemoveCS" name="RemoveCS"/> + </toolbar> + <popup name="popup1"> + <menuitem action="ExportCS" name="ExportCS"/> + <menuitem action="RemoveCS" name="RemoveCS"/> + </popup> + </ui> + </object> + <object class="GtkVBox" id="mainbox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <object constructor="uimanager1" class="GtkMenuBar" id="menubar1"> + <property name="visible">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="a11y-menubar"> + <property name="AtkObject::accessible-name">The menubar</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + </packing> + </child> + <child> + <object constructor="uimanager1" class="GtkToolbar" id="toolbar1"> + <property name="visible">True</property> + <child internal-child="accessible"> + <object class="AtkObject" id="a11y-toolbar"> + <property name="AtkObject::accessible-name">The toolbar</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + <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> + <child> + <object class="GtkTreeView" id="cs_list"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="model">cs_store</property> + <child> + <object class="GtkTreeViewColumn" id="dwords_column"> + <property name="title">DWORDs</property> + <child> + <object class="GtkCellRendererText" id="dwords_cell"/> + </child> + </object> + </child> + <child> + <object class="GtkTreeViewColumn" id="treeviewcolumn1"> + <property name="title">Name</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext1"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + </child> + </object> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <object class="GtkListStore" id="cs_store"> + <columns> + <!-- column-name Name --> + <column type="gchararray"/> + <!-- column-name CS --> + <column type="GObject"/> + </columns> + </object> + <object constructor="uimanager1" class="GtkMenu" id="popup1"> + <child internal-child="accessible"> + <object class="AtkObject" id="a11y-popup"> + <property name="AtkObject::accessible-name">The popup menu</property> + </object> + </child> + </object> + </interface> + """; + + private ListStore cs_store; + private TreeView cs_list; + private Menu edit_menu; + + private Action action_exportcs; + private Action action_removecs; construct { - New = new Action("New", null, null, "gtk-new"); - Open = new Action("Open", null, null, "gtk-open"); - Save = new Action("Save", null, null, "gtk-save"); - SaveAs = new Action("SaveAs", null, null, "gtk-save-as"); - RemoveCS = new Action("RemoveCS", "Remove", "Remove selected CS' from the list", "gtk-remove"); - ImportCS = new Action("ImportCS", "Import", "Import a command stream to the list", "gtk-add"); - ExportCS = new Action("ExportCS", "Export", "Export a CS to a file", "gtk-convert"); - OpenCS = new Action("OpenCS", "Open", "Export a CS to a file", "gtk-open"); - Quit = new Action("Quit", null, null, "gtk-quit"); - - RemoveCS.activate.connect((source) => { main.remove_cs(); }); - ImportCS.activate.connect((source) => { var d = new CSImport(); d.run(); }); - ExportCS.activate.connect((source) => { main.open_csexport(); }); - OpenCS.activate.connect((source) => { main.open_csview(); }); - } - - public void pcsop_set_sensitive(bool setting) - { - RemoveCS.set_sensitive(setting); - ExportCS.set_sensitive(setting); - OpenCS.set_sensitive(setting); - } - } - - public class CMenus - { - public Menu file; - public Menu edit; - public Menu cs; - } - - public class CMain : Window - { - public CMenus menu; - public MenuBar menubar; - public Toolbar toolbar; - public ListStore cs_store; - public TreeView cs_list; - - construct { - menu = new CMenus(); - - toolbar = new Toolbar(); - add_toolitem(actions.New); - add_toolitem(actions.Open); - add_toolitem(actions.Save); - toolbar.insert(new SeparatorToolItem() as ToolItem, -1); - add_toolitem(actions.RemoveCS); - add_toolitem(actions.ImportCS); - add_toolitem(actions.ExportCS); - - menu.file = new Menu(); - menu.file.append(actions.New.create_menu_item() as MenuItem); - menu.file.append(actions.Open.create_menu_item() as MenuItem); - menu.file.append(actions.Save.create_menu_item() as MenuItem); - menu.file.append(actions.SaveAs.create_menu_item() as MenuItem); - menu.file.append(new SeparatorMenuItem() as MenuItem); - menu.file.append(actions.Quit.create_menu_item() as MenuItem); - var menu_file_item = new MenuItem.with_label("File"); - menu_file_item.submenu = menu.file; + var builder = new Builder(); + try { + builder.add_from_string(xml_ui, xml_ui.length); + } catch (Error e) { + stderr.printf("Unable to construct main window: %s.\n", e.message); + assert(false); + } + set_size_request(400, 200); + title = "Radeon Simulator"; - menu.edit = new Menu(); - menu.edit.append(actions.RemoveCS.create_menu_item() as MenuItem); - menu.edit.append(actions.ImportCS.create_menu_item() as MenuItem); - menu.edit.append(actions.ExportCS.create_menu_item() as MenuItem); - var menu_edit_item = new MenuItem.with_label("Edit"); - menu_edit_item.submenu = menu.edit; + /* DWORDs column */ + var col = builder.get_object("dwords_column") as TreeViewColumn; + var cell = builder.get_object("dwords_cell") as CellRendererText; + col.set_cell_data_func(cell, (coll, celll, model, iter) => { + CS cs; + model.get(iter, 1, out cs, -1); + assert(cs != null); + (cell as CellRendererText).text = cs.dwords.length.to_string(); + }); - menubar = new MenuBar(); - menubar.append(menu_file_item); - menubar.append(menu_edit_item); + /* connect actions */ + action_exportcs = builder.get_object("ExportCS") as Action; + action_removecs = builder.get_object("RemoveCS") as Action; + var action_importcs = builder.get_object("ImportCS") as Action; - /* used on right clicks */ - menu.cs = new Menu(); - menu.cs.append(actions.OpenCS.create_menu_item() as MenuItem); - menu.cs.append(actions.ExportCS.create_menu_item() as MenuItem); - menu.cs.append(new SeparatorMenuItem() as MenuItem); - menu.cs.append(actions.RemoveCS.create_menu_item() as MenuItem); + action_importcs.activate.connect((source) => { var d = new CSImport(); d.run(); }); + action_exportcs.activate.connect((source) => { open_csexport(); }); + action_removecs.activate.connect((source) => { remove_cs(); }); - cs_store = new ListStore(2, typeof(string), typeof(CS)); - cs_list = new TreeView(); - cs_list.insert_column_with_data_func(-1, "DWORDs", new CellRendererText(), dwords_cellrenderer); - cs_list.insert_column_with_attributes(-1, "Name", new CellRendererText(), "text", 0, null); - cs_list.set_model(cs_store); + /* menus */ + cs_store = builder.get_object("cs_store") as ListStore; + cs_list = builder.get_object("cs_list") as TreeView; + edit_menu = builder.get_object("popup1") as Menu; + /* double clicking a row */ cs_list.row_activated.connect((path, column) => { open_csview(); }); + /* right clicking */ cs_list.button_press_event.connect((event) => { CS? cs = get_selected_cs(); if (cs != null && event.type == Gdk.EventType.BUTTON_PRESS && event.button == 3) { - menu.cs.popup(null, null, null, event.button, event.time); + edit_menu.popup(null, null, null, event.button, event.time); } }); - cs_list.cursor_changed.connect((source) => { actions.pcsop_set_sensitive(cs_list.get_selection().get_selected(null, null)); }); - actions.pcsop_set_sensitive(false); - - var sw = new ScrolledWindow(null, null); - sw.hscrollbar_policy = PolicyType.AUTOMATIC; - sw.vscrollbar_policy = PolicyType.AUTOMATIC; - sw.add(cs_list); - - var mainbox = new VBox(false, 0); - mainbox.pack_start(menubar, false, true, 0); - mainbox.pack_start(toolbar, false, true, 0); - mainbox.pack_start(sw, true, true, 0); + /* selecting something */ + cs_list.cursor_changed.connect((source) => { + edit_set_sensitive(cs_list.get_selection().get_selected(null, null)); + }); + edit_set_sensitive(false); - set_size_request(400, 200); - title = "Radeon Simulator"; - add(mainbox); + add(builder.get_object("mainbox") as Widget); destroy.connect(main_quit); try { /* XXX This shouldn't be hardcoded */ set_icon_from_file("/usr/share/pixmaps/rsim.png"); } catch (Error e) { /* don't care */ } - - show_all(); } - private void add_toolitem(Action action) + private void edit_set_sensitive(bool setting) { - ToolItem titem = action.create_tool_item() as ToolItem; - titem.set_homogeneous(false); - toolbar.insert(titem, -1); - } - - private void dwords_cellrenderer(TreeViewColumn tree_column, CellRenderer cell, TreeModel model, TreeIter iter) - { - CS cs; - model.get(iter, 1, out cs, -1); - assert(cs != null); - (cell as CellRendererText).text = cs.dwords.length.to_string(); + action_exportcs.sensitive = setting; + action_removecs.sensitive = setting; } private CS? get_selected_cs() @@ -160,6 +300,13 @@ namespace GUI return cs; } + public void add_cs(string name, CS cs) + { + TreeIter iter; + cs_store.append(out iter); + cs_store.set(iter, 0, name, 1, cs, -1); + } + public void remove_cs() { TreeIter iter; @@ -170,7 +317,7 @@ namespace GUI cs_store.remove(iter); } - public void open_csview() + private void open_csview() { CS? cs = get_selected_cs(); if (cs != null) { @@ -179,7 +326,7 @@ namespace GUI } } - public void open_csexport() + private void open_csexport() { CS? cs = get_selected_cs(); if (cs != null) { @@ -189,125 +336,20 @@ namespace GUI } } - internal class SpecLoadDialog : Window - { - private Label loading; - private ProgressBar progress; - private bool done; - - public SpecLoadDialog(Window? parent = null) - { - if (parent != null) { - set_transient_for(parent); - modal = true; - destroy_with_parent = true; - } - deletable = false; - - specs = new SpecEntry[2]; - loading = new Label("Loading..."); - - progress = new ProgressBar(); - progress.pulse_fraction = 0.1; - - var box = new VBox(false, 5); - box.pack_start(loading, false, true, 0); - box.pack_start(progress, false, true, 0); - - border_width = 10; - set_default_size(300, 10); - - add(box); - } - - public void *run() - { - Gdk.threads_enter(); - show_all(); - Gdk.threads_leave(); - - done = false; - weak Thread load; - weak Thread pulse; - - try { - pulse = Thread.create(pulse_thread, true); - load = Thread.create(specload_thread, true); - } catch (ThreadError e) { - stderr.printf("Unable to start loading thread.\n"); - assert(false); - return null; /* appease vala */ - } - - void *result = load.join(); - done = true; - pulse.join(); - - Gdk.threads_enter(); - hide_all(); - Gdk.threads_leave(); - - return result; - } - - private void *pulse_thread() - { - while (!done) { - Gdk.threads_enter(); - progress.pulse(); - Gdk.threads_leave(); - - Thread.usleep(50000); - } - return null; - } - - private void *specload_thread() - { - /* XXX This shouldn't be hardcoded */ - Gdk.threads_enter(); - loading.label = "Loading r300 registers..."; - Gdk.threads_leave(); - var r300_registers = new Spec("/usr/share/rsim/r300reg.xml", "r300"); - - Gdk.threads_enter(); - loading.label = "Loading r500 registers..."; - Gdk.threads_leave(); - var r500_registers = new Spec("/usr/share/rsim/r300reg.xml", "r500"); - - Gdk.threads_enter(); - loading.label = "Done"; - Gdk.threads_leave(); - - specs[0].spec = r300_registers; - specs[0].name = "r300"; - specs[1].spec = r500_registers; - specs[1].name = "r500"; - - return (void *)123; - } - } - - public static CActions actions; - public static CMain main; + public static MainWindow main; static void init(ref weak string[] args) { Gtk.init(ref args); - actions = new CActions(); - main = new CMain(); - { - Gdk.threads_init(); + specs = new SpecEntry[2]; + specs[0].spec = new Spec("/usr/share/rsim/r300reg.xml", "r300"); + specs[0].name = "r300"; + specs[1].spec = new Spec("/usr/share/rsim/r300reg.xml", "r500"); + specs[1].name = "r500"; - var specload = new SpecLoadDialog(main); - try { - Thread.create(specload.run, false); - } catch (ThreadError e) { - stderr.printf("Unable to start loading thread.\n"); - assert(false); - } - } + main = new MainWindow(); + main.show_all(); Gtk.main(); } @@ -338,7 +380,6 @@ public static int main(string[] args) for (uint i = 0; i < specs.length; i++) { specs[i].spec.unref(); } - GUI.actions.unref(); GUI.main.unref(); return 0; |