summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Sindholt <opensource@zhasha.com>2010-04-06 13:09:52 +0200
committerJoakim Sindholt <opensource@zhasha.com>2010-04-06 13:09:52 +0200
commiteacd0d55054313151b7477b7dc0c0176f30c4919 (patch)
treea28eeaf783256e10d017d0c888a10f3933efc5b4
parent62db69dae43a88db235877ba2b6adb9be8076fe2 (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.c20
-rw-r--r--src/csimport.c126
-rw-r--r--src/csimport.vala16
-rw-r--r--src/main.c1223
-rw-r--r--src/main.vala513
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();
});
diff --git a/src/main.c b/src/main.c
index 91cce48..391f839 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;