summaryrefslogtreecommitdiffhomepage
path: root/mixgtk/mixgtk_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'mixgtk/mixgtk_device.c')
-rw-r--r--mixgtk/mixgtk_device.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/mixgtk/mixgtk_device.c b/mixgtk/mixgtk_device.c
index 2b0bf2e..274d5eb 100644
--- a/mixgtk/mixgtk_device.c
+++ b/mixgtk/mixgtk_device.c
@@ -24,10 +24,13 @@
#include <stdio.h>
#include <stdlib.h>
+#include <mixlib/mix_vm_command.h>
#include <mixlib/xmix_device.h>
#include "mixgtk.h"
+#include "mixgtk_gen_handlers.h"
#include "mixgtk_widgets.h"
#include "mixgtk_config.h"
+#include "mixgtk_cmd_dispatcher.h"
#include "mixgtk_device.h"
#define BIN_DEV_COL_ 5
@@ -36,6 +39,10 @@ static const gchar *DEV_FORMAT_KEY_ = "Device.format";
/* device container */
static GtkNotebook *container_ = NULL;
+/* devdir dialog */
+static GtkWidget *devdir_dlg_ = NULL;
+static GtkEntry *devdir_entry_ = NULL;
+
/** configuration stuff */
#define LAST_BIN_DEV_ mix_dev_DISK_7
static GtkWidget *devdlg_ = NULL;
@@ -364,6 +371,8 @@ mixgtk_device_init (GtkNotebook *container, mix_vm_t *vm)
vm_ = vm;
last_pos_ = 0;
devdlg_ = NULL;
+ devdir_dlg_ = NULL;
+ devdir_entry_ = NULL;
dtoggle_ = NULL;
wtoggle_ = NULL;
combo_ = NULL;
@@ -513,3 +522,48 @@ on_devset_button_clicked ()
ON : OFF;
}
+void
+on_devdir_activate ()
+{
+ static const gchar *DEVDIR_ENTRY_NAME = "devdir_entry";
+ if (devdir_dlg_ == NULL)
+ {
+ devdir_dlg_ = mixgtk_widget_factory_get_dialog (MIXGTK_DEVDIR_DIALOG);
+ g_assert (devdir_dlg_);
+ devdir_entry_ = GTK_ENTRY
+ (mixgtk_widget_factory_get_child_by_name (MIXGTK_DEVDIR_DIALOG,
+ DEVDIR_ENTRY_NAME));
+ g_assert (devdir_entry_);
+ }
+ gtk_entry_set_text (devdir_entry_, mix_device_get_dir ());
+ gtk_widget_show (devdir_dlg_);
+}
+
+static void
+devdir_callback (const gchar *file)
+{
+ gtk_entry_set_text (devdir_entry_, file);
+}
+
+void
+on_devdir_browse_clicked ()
+{
+ mixgtk_get_file (devdir_callback, "Devices dir", mix_device_get_dir ());
+}
+
+void
+on_devdir_cancel_clicked ()
+{
+ gtk_widget_hide (devdir_dlg_);
+}
+
+void
+on_devdir_ok_clicked ()
+{
+ const gchar *dirname = gtk_entry_get_text (devdir_entry_);
+ gchar *cmd = g_strconcat (mix_vm_command_to_string (MIX_CMD_DEVDIR),
+ " ", dirname, NULL);
+ gtk_widget_hide (devdir_dlg_);
+ mixgtk_cmd_dispatcher_dispatch (cmd);
+ g_free (cmd);
+}