summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Sindholt <opensource@zhasha.com>2010-04-09 01:03:35 +0200
committerJoakim Sindholt <opensource@zhasha.com>2010-04-09 01:03:35 +0200
commitf506bc267fdedc4880f5d1283084a9e5c9243788 (patch)
tree5ce4cfd614bc44de9428beb7ef44cf97879716e1
parent8beb76ae12d6952f9351c08933f0709e5cda64e3 (diff)
main: add about dialog
-rw-r--r--src/csimport.c36
-rw-r--r--src/main.c115
-rw-r--r--src/main.vala55
3 files changed, 156 insertions, 50 deletions
diff --git a/src/csimport.c b/src/csimport.c
index 0a259b1..ae2f422 100644
--- a/src/csimport.c
+++ b/src/csimport.c
@@ -114,19 +114,19 @@ enum {
GUI_CS_IMPORT_DUMMY_PROPERTY
};
GType gui_main_window_get_type (void);
-static void _lambda18_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self);
-static void __lambda18__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self);
+static void _lambda19_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self);
+static void __lambda19__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 _lambda19_ (GtkButton* source, GUICSImport* self);
-static void __lambda19__gtk_button_clicked (GtkButton* _sender, gpointer self);
+static void _lambda20_ (GtkButton* source, GUICSImport* self);
+static void __lambda20__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* dwords, guint len);
EmulationCS* emulation_cs_construct (GType object_type, guint32* dwords, guint len);
-static void _lambda20_ (GtkDialog* source, gint id, GUICSImport* self);
-static void __lambda20__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
+static void _lambda21_ (GtkDialog* source, gint id, GUICSImport* self);
+static void __lambda21__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_get_type (void);
@@ -150,7 +150,7 @@ static gpointer _g_object_ref0 (gpointer self) {
}
-static void _lambda18_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) {
+static void _lambda19_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) {
GtkTreePath* path;
gint* indices;
char* _tmp0_;
@@ -168,12 +168,12 @@ static void _lambda18_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeMode
}
-static void __lambda18__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) {
- _lambda18_ (cell_layout, cell, tree_model, iter, self);
+static void __lambda19__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) {
+ _lambda19_ (cell_layout, cell, tree_model, iter, self);
}
-static void _lambda19_ (GtkButton* source, GUICSImport* self) {
+static void _lambda20_ (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));
@@ -187,8 +187,8 @@ static void _lambda19_ (GtkButton* source, GUICSImport* self) {
}
-static void __lambda19__gtk_button_clicked (GtkButton* _sender, gpointer self) {
- _lambda19_ (_sender, self);
+static void __lambda20__gtk_button_clicked (GtkButton* _sender, gpointer self) {
+ _lambda20_ (_sender, self);
}
@@ -197,7 +197,7 @@ static void _gui_cs_import_update_ok_button_gtk_editable_changed (GtkEditable* _
}
-static void _lambda20_ (GtkDialog* source, gint id, GUICSImport* self) {
+static void _lambda21_ (GtkDialog* source, gint id, GUICSImport* self) {
g_return_if_fail (source != NULL);
if (id == GTK_RESPONSE_OK) {
EmulationCS* _tmp0_;
@@ -208,8 +208,8 @@ static void _lambda20_ (GtkDialog* source, gint id, GUICSImport* self) {
}
-static void __lambda20__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
- _lambda20_ (_sender, response_id, self);
+static void __lambda21__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
+ _lambda21_ (_sender, response_id, self);
}
@@ -268,13 +268,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, __lambda18__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref);
+ gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda19__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) __lambda19__gtk_button_clicked, self, 0);
+ g_signal_connect_object (load_button, "clicked", (GCallback) __lambda20__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_);
@@ -286,7 +286,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) __lambda20__gtk_dialog_response, self, 0);
+ g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) __lambda21__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/main.c b/src/main.c
index 1884836..e5fa868 100644
--- a/src/main.c
+++ b/src/main.c
@@ -125,6 +125,8 @@ struct _EmulationSpecEntry {
static char* gui_main_window_xml_ui;
static char* gui_main_window_xml_ui = NULL;
+static char* gui_main_window_about_xml_ui;
+static char* gui_main_window_about_xml_ui = NULL;
static gpointer gui_main_window_parent_class = NULL;
extern GUIMainWindow* gui_main;
GUIMainWindow* gui_main = NULL;
@@ -169,12 +171,14 @@ static void _lambda13_ (GtkAction* source, GUIMainWindow* self);
static void __lambda13__gtk_action_activate (GtkAction* _sender, gpointer self);
static void _lambda14_ (GtkAction* source, GUIMainWindow* self);
static void __lambda14__gtk_action_activate (GtkAction* _sender, gpointer self);
-static void _lambda15_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self);
-static void __lambda15__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self);
-static gboolean _lambda16_ (GdkEventButton* event, GUIMainWindow* self);
-static gboolean __lambda16__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
-static void _lambda17_ (GtkTreeView* source, GUIMainWindow* self);
-static void __lambda17__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self);
+static void _lambda15_ (GtkAction* source, GUIMainWindow* self);
+static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self);
+static void _lambda16_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self);
+static void __lambda16__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self);
+static gboolean _lambda17_ (GdkEventButton* event, GUIMainWindow* self);
+static gboolean __lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
+static void _lambda18_ (GtkTreeView* source, GUIMainWindow* self);
+static void __lambda18__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self);
static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self);
static GObject * gui_main_window_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void gui_main_window_finalize (GObject* obj);
@@ -366,19 +370,63 @@ static void __lambda14__gtk_action_activate (GtkAction* _sender, gpointer self)
}
-static void _lambda15_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self) {
+static void _lambda15_ (GtkAction* source, GUIMainWindow* self) {
+ GError * _inner_error_;
+ GtkBuilder* about;
+ g_return_if_fail (source != NULL);
+ _inner_error_ = NULL;
+ about = gtk_builder_new ();
+ {
+ GObject* _tmp0_;
+ GtkAboutDialog* dlg;
+ gtk_builder_add_from_string (about, gui_main_window_about_xml_ui, (gsize) string_get_length (gui_main_window_about_xml_ui), &_inner_error_);
+ if (_inner_error_ != NULL) {
+ goto __catch4_g_error;
+ }
+ dlg = _g_object_ref0 ((_tmp0_ = gtk_builder_get_object (about, "about_dialog"), GTK_IS_ABOUT_DIALOG (_tmp0_) ? ((GtkAboutDialog*) _tmp0_) : NULL));
+ gtk_dialog_run ((GtkDialog*) dlg);
+ gtk_object_destroy ((GtkObject*) dlg);
+ _g_object_unref0 (dlg);
+ }
+ goto __finally4;
+ __catch4_g_error:
+ {
+ GError * e;
+ e = _inner_error_;
+ _inner_error_ = NULL;
+ {
+ _g_error_free0 (e);
+ }
+ }
+ __finally4:
+ if (_inner_error_ != NULL) {
+ _g_object_unref0 (about);
+ 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 (about);
+}
+
+
+static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self) {
+ _lambda15_ (_sender, self);
+}
+
+
+static void _lambda16_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self) {
g_return_if_fail (path != NULL);
g_return_if_fail (column != NULL);
gui_main_window_open_csview (self);
}
-static void __lambda15__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) {
- _lambda15_ (path, column, self);
+static void __lambda16__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) {
+ _lambda16_ (path, column, self);
}
-static gboolean _lambda16_ (GdkEventButton* event, GUIMainWindow* self) {
+static gboolean _lambda17_ (GdkEventButton* event, GUIMainWindow* self) {
gboolean result;
EmulationCS* cs;
gboolean _tmp0_ = FALSE;
@@ -401,19 +449,19 @@ static gboolean _lambda16_ (GdkEventButton* event, GUIMainWindow* self) {
}
-static gboolean __lambda16__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
- return _lambda16_ (event, self);
+static gboolean __lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
+ return _lambda17_ (event, self);
}
-static void _lambda17_ (GtkTreeView* source, GUIMainWindow* self) {
+static void _lambda18_ (GtkTreeView* source, GUIMainWindow* self) {
g_return_if_fail (source != 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 __lambda17__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) {
- _lambda17_ (_sender, self);
+static void __lambda18__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) {
+ _lambda18_ (_sender, self);
}
@@ -445,13 +493,14 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop
GObject* _tmp6_;
GObject* _tmp8_;
GtkAction* action_importcs;
- GtkListStore* _tmp10_;
GObject* _tmp9_;
- GtkTreeView* _tmp12_;
- GObject* _tmp11_;
- GtkMenu* _tmp14_;
- GObject* _tmp13_;
- GObject* _tmp15_;
+ GtkListStore* _tmp11_;
+ GObject* _tmp10_;
+ GtkTreeView* _tmp13_;
+ GObject* _tmp12_;
+ GtkMenu* _tmp15_;
+ GObject* _tmp14_;
+ GObject* _tmp16_;
builder = gtk_builder_new ();
{
gtk_builder_add_from_string (builder, gui_main_window_xml_ui, (gsize) string_get_length (gui_main_window_xml_ui), &_inner_error_);
@@ -490,23 +539,24 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop
g_signal_connect_object (action_importcs, "activate", (GCallback) __lambda12__gtk_action_activate, self, 0);
g_signal_connect_object (self->priv->action_exportcs, "activate", (GCallback) __lambda13__gtk_action_activate, self, 0);
g_signal_connect_object (self->priv->action_removecs, "activate", (GCallback) __lambda14__gtk_action_activate, self, 0);
- self->priv->cs_store = (_tmp10_ = _g_object_ref0 ((_tmp9_ = gtk_builder_get_object (builder, "cs_store"), GTK_IS_LIST_STORE (_tmp9_) ? ((GtkListStore*) _tmp9_) : NULL)), _g_object_unref0 (self->priv->cs_store), _tmp10_);
- self->priv->cs_list = (_tmp12_ = _g_object_ref0 ((_tmp11_ = gtk_builder_get_object (builder, "cs_list"), GTK_IS_TREE_VIEW (_tmp11_) ? ((GtkTreeView*) _tmp11_) : NULL)), _g_object_unref0 (self->priv->cs_list), _tmp12_);
- self->priv->edit_menu = (_tmp14_ = _g_object_ref0 ((_tmp13_ = gtk_builder_get_object (builder, "popup1"), GTK_IS_MENU (_tmp13_) ? ((GtkMenu*) _tmp13_) : NULL)), _g_object_unref0 (self->priv->edit_menu), _tmp14_);
- g_signal_connect_object (self->priv->cs_list, "row-activated", (GCallback) __lambda15__gtk_tree_view_row_activated, self, 0);
- g_signal_connect_object ((GtkWidget*) self->priv->cs_list, "button-press-event", (GCallback) __lambda16__gtk_widget_button_press_event, self, 0);
- g_signal_connect_object (self->priv->cs_list, "cursor-changed", (GCallback) __lambda17__gtk_tree_view_cursor_changed, self, 0);
+ g_signal_connect_object ((_tmp9_ = gtk_builder_get_object (builder, "About"), GTK_IS_ACTION (_tmp9_) ? ((GtkAction*) _tmp9_) : NULL), "activate", (GCallback) __lambda15__gtk_action_activate, self, 0);
+ self->priv->cs_store = (_tmp11_ = _g_object_ref0 ((_tmp10_ = gtk_builder_get_object (builder, "cs_store"), GTK_IS_LIST_STORE (_tmp10_) ? ((GtkListStore*) _tmp10_) : NULL)), _g_object_unref0 (self->priv->cs_store), _tmp11_);
+ self->priv->cs_list = (_tmp13_ = _g_object_ref0 ((_tmp12_ = gtk_builder_get_object (builder, "cs_list"), GTK_IS_TREE_VIEW (_tmp12_) ? ((GtkTreeView*) _tmp12_) : NULL)), _g_object_unref0 (self->priv->cs_list), _tmp13_);
+ self->priv->edit_menu = (_tmp15_ = _g_object_ref0 ((_tmp14_ = gtk_builder_get_object (builder, "popup1"), GTK_IS_MENU (_tmp14_) ? ((GtkMenu*) _tmp14_) : NULL)), _g_object_unref0 (self->priv->edit_menu), _tmp15_);
+ g_signal_connect_object (self->priv->cs_list, "row-activated", (GCallback) __lambda16__gtk_tree_view_row_activated, self, 0);
+ g_signal_connect_object ((GtkWidget*) self->priv->cs_list, "button-press-event", (GCallback) __lambda17__gtk_widget_button_press_event, self, 0);
+ g_signal_connect_object (self->priv->cs_list, "cursor-changed", (GCallback) __lambda18__gtk_tree_view_cursor_changed, self, 0);
gui_main_window_edit_set_sensitive (self, FALSE);
- gtk_container_add ((GtkContainer*) self, (_tmp15_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_WIDGET (_tmp15_) ? ((GtkWidget*) _tmp15_) : NULL));
+ gtk_container_add ((GtkContainer*) self, (_tmp16_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_WIDGET (_tmp16_) ? ((GtkWidget*) _tmp16_) : 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 __catch4_g_error;
+ goto __catch5_g_error;
}
}
- goto __finally4;
- __catch4_g_error:
+ goto __finally5;
+ __catch5_g_error:
{
GError * e;
e = _inner_error_;
@@ -515,7 +565,7 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop
_g_error_free0 (e);
}
}
- __finally4:
+ __finally5:
if (_inner_error_ != NULL) {
_g_object_unref0 (builder);
_g_object_unref0 (col);
@@ -539,6 +589,7 @@ static void gui_main_window_class_init (GUIMainWindowClass * klass) {
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=\"ViewCS\">\n <property name=\"name\">ViewCS</property>\n <property name=\"label\">_View CS</property>\n <property name=\"tooltip\">View the selected command stream.</property>\n <property name=\"icon_name\">gtk-open</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=\"icon_name\">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=\"icon_name\">gtk-add</property>\n </object>\n <accelerator key=\"i\" modifiers=\"GDK_CONTROL_MASK\"/>\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=\"icon_name\">gtk-convert</property>\n </object>\n <accelerator key=\"e\" modifiers=\"GDK_CONTROL_MASK\"/>\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=\"ViewCS\" name=\"ViewCS\"/>\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=\"ViewCS\" name=\"ViewCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\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=\"reorderable\">True</property>\n <property name=\"model\">cs_store</property>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"pkts_column\">\n <property name=\"title\">Packets</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"pkts_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 ");
+ gui_main_window_about_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=\"GtkAboutDialog\" id=\"about_dialog\">\n <property name=\"border_width\">5</property>\n <property name=\"type_hint\">normal</property>\n <property name=\"skip_taskbar_hint\">True</property>\n <property name=\"has_separator\">False</property>\n <property name=\"program_name\">Radeon Simulator</property>\n <property name=\"copyright\" translatable=\"yes\">Copyright &#xA9; 2010 Joakim Sindholt</property>\n <property name=\"comments\" translatable=\"yes\">A simulator for Radeon GPUs</property>\n <property name=\"website\">http://cgit.freedesktop.org/~jsindholt/rsim</property>\n <property name=\"license\" translatable=\"yes\">This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</property>\n <property name=\"authors\">Joakim Sindholt &lt;opensource@zhasha.com&gt;</property>\n <property name=\"logo\">/usr/share/pixmaps/rsim.png</property>\n <property name=\"wrap_license\">True</property>\n <child internal-child=\"vbox\">\n <object class=\"GtkVBox\" id=\"dialog-vbox1\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <property name=\"spacing\">2</property>\n <child internal-child=\"action_area\">\n <object class=\"GtkHButtonBox\" id=\"dialog-action_area1\">\n <property name=\"visible\">True</property>\n <property name=\"layout_style\">end</property>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"pack_type\">end</property>\n <property name=\"position\">0</property>\n </packing>\n </child>\n </object>\n </child>\n </object>\n </interface>\n ");
}
diff --git a/src/main.vala b/src/main.vala
index 3389f45..35bf7af 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -253,6 +253,50 @@ namespace GUI
</interface>
""";
+ private static string about_xml_ui = """
+ <?xml version="1.0"?>
+ <interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkAboutDialog" id="about_dialog">
+ <property name="border_width">5</property>
+ <property name="type_hint">normal</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="has_separator">False</property>
+ <property name="program_name">Radeon Simulator</property>
+ <property name="copyright" translatable="yes">Copyright &#xA9; 2010 Joakim Sindholt</property>
+ <property name="comments" translatable="yes">A simulator for Radeon GPUs</property>
+ <property name="website">http://cgit.freedesktop.org/~jsindholt/rsim</property>
+ <property name="license" translatable="yes">This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</property>
+ <property name="authors">Joakim Sindholt &lt;opensource@zhasha.com&gt;</property>
+ <property name="logo">/usr/share/pixmaps/rsim.png</property>
+ <property name="wrap_license">True</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </interface>
+ """;
+
private ListStore cs_store;
private TreeView cs_list;
private Menu edit_menu;
@@ -293,6 +337,17 @@ namespace GUI
action_exportcs.activate.connect((source) => { open_csexport(); });
action_removecs.activate.connect((source) => { remove_cs(); });
+ /* about dialog is kind of a special case. */
+ (builder.get_object("About") as Action).activate.connect((source) => {
+ var about = new Builder();
+ try {
+ about.add_from_string(about_xml_ui, about_xml_ui.length);
+ var dlg = about.get_object("about_dialog") as AboutDialog;
+ dlg.run();
+ dlg.destroy();
+ } catch (Error e) { }
+ });
+
/* menus */
cs_store = builder.get_object("cs_store") as ListStore;
cs_list = builder.get_object("cs_list") as TreeView;