summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_widgets.c
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2006-03-20 22:46:46 +0000
committerJose Antonio Ortega Ruiz <jao@gnu.org>2006-03-20 22:46:46 +0000
commit300160e73da486946ae513f1d039dcd7b85ff17c (patch)
treef26691ff724b57dac450ab47e4eea91e63cdadc1 /mixgtk/mixgtk_widgets.c
parent50375f34b611281a3b05a37221e2baa143f5f5ca (diff)
downloadmdk-300160e73da486946ae513f1d039dcd7b85ff17c.tar.gz
mdk-300160e73da486946ae513f1d039dcd7b85ff17c.tar.bz2
Version 1.2.1 imported1.2.1
git-archimport-id: mdk@sv.gnu.org/mdk--devel--1--patch-1
Diffstat (limited to 'mixgtk/mixgtk_widgets.c')
-rw-r--r--mixgtk/mixgtk_widgets.c153
1 files changed, 153 insertions, 0 deletions
diff --git a/mixgtk/mixgtk_widgets.c b/mixgtk/mixgtk_widgets.c
new file mode 100644
index 0000000..724b578
--- /dev/null
+++ b/mixgtk/mixgtk_widgets.c
@@ -0,0 +1,153 @@
+/* -*-c-*- -------------- mixgtk_widgets.c :
+ * Implementation of the functions declared in mixgtk_widgets.h
+ * ------------------------------------------------------------------
+ * Last change: Time-stamp: "2001-04-29 14:32:17 jao"
+ * ------------------------------------------------------------------
+ * Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+
+#include <unistd.h>
+#include <glade/glade.h>
+#include <mixlib/mix.h>
+#include "mixgtk_config.h"
+#include "mixgtk_widgets.h"
+
+/* dialog names */
+static const gchar * dnames_[] = {
+ "main_window",
+ "mixvm_window",
+ "mixal_window",
+ "devices_window",
+ "word_dialog",
+ "about_dialog",
+ "goto_dialog",
+ "fontsel_dialog",
+ "devform_dialog",
+ "external_dialog",
+ "symbols_dialog",
+ "input_dialog",
+ "devdir_dialog"
+};
+
+#define DLG_NO_ (sizeof (dnames_) / sizeof(dnames_[0]))
+
+/* widget names */
+static const gchar *names_[] = {
+ "main_statusbar",
+ "attach_button",
+ "main_notebook",
+ "mixvm_widget",
+ "mixvm_container",
+ "command_prompt",
+ "command_log",
+ "dev_container",
+ "mixal_container",
+ "mixal_statusbar",
+ "rA_entry",
+ "rX_entry",
+ "rJ_entry",
+ "rI1_entry",
+ "rI2_entry",
+ "rI3_entry",
+ "rI4_entry",
+ "rI5_entry",
+ "rI6_entry",
+ "lesser_radio",
+ "equal_radio",
+ "greater_radio",
+ "over_toggle",
+ "memory_cells",
+ "elapsed_label",
+ "program_label",
+ "uptime_label",
+ "devices_container",
+ "loc_entry",
+ "goto_entry",
+ NULL
+};
+
+#define WIDGET_NO_ (sizeof (names_) / sizeof (names_[0]))
+
+/* the glade specs */
+static GladeXML *xml_[DLG_NO_] = {NULL};
+
+/* the xml file name */
+static const gchar *file_ = NULL;
+
+static void init_xml_ (mixgtk_dialog_id_t dlg)
+{
+ xml_[dlg] = glade_xml_new (file_, dnames_[dlg], NULL);
+ glade_xml_signal_autoconnect (xml_[dlg]);
+ g_assert (xml_[dlg] != NULL);
+}
+
+/* create a new factory from an xml glade file */
+gboolean
+mixgtk_widget_factory_init (void)
+{
+ if (!file_)
+ {
+ const gchar *glade_file = GLADE_FILE;
+ glade_init ();
+ if (access (glade_file, R_OK)) {
+ if (access (LOCAL_GLADE_FILE, R_OK)) return FALSE;
+ glade_file = LOCAL_GLADE_FILE;
+ }
+ file_ = g_strdup (glade_file);
+ }
+ else
+ {
+ gint k;
+ for (k = 0; k < DLG_NO_; ++k) if (xml_[k]) xml_[k] = NULL;
+ }
+
+ init_xml_ (MIXGTK_MAIN);
+ return TRUE;
+}
+
+/* get a widget */
+GtkWidget *
+mixgtk_widget_factory_get (mixgtk_dialog_id_t dlg, mixgtk_widget_id_t widget)
+{
+ g_assert (widget < WIDGET_NO_);
+
+ return mixgtk_widget_factory_get_child_by_name (dlg, names_[widget]);
+}
+
+
+GtkWidget *
+mixgtk_widget_factory_get_dialog (mixgtk_dialog_id_t dlg)
+{
+ g_assert (dlg < DLG_NO_);
+
+ if (!xml_[dlg]) init_xml_ (dlg);
+ return glade_xml_get_widget (xml_[dlg], dnames_[dlg]);
+}
+
+GtkWidget *
+mixgtk_widget_factory_get_child_by_name (mixgtk_dialog_id_t dlg,
+ const gchar *name)
+{
+ g_assert (dlg < DLG_NO_);
+ g_assert (name != NULL);
+ if (!xml_[dlg]) init_xml_ (dlg);
+ return glade_xml_get_widget (xml_[dlg], name);
+}
+
+