[SCM] calf/master: Add a somewhat provisional configuration dialog.

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:40:21 UTC 2013


The following commit has been merged in the master branch:
commit feb4becf99cfb22a6f9ca9938187fdd51ecfb06c
Author: Krzysztof Foltman <wdev at foltman.com>
Date:   Sat Sep 11 13:40:25 2010 +0100

    Add a somewhat provisional configuration dialog.

diff --git a/calf-gui.xml b/calf-gui.xml
index 1aacabb..e829426 100644
--- a/calf-gui.xml
+++ b/calf-gui.xml
@@ -1,10 +1,11 @@
-<?xml version="1.0"?>
-<!--*- mode: xml -*-->
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkDialog" id="store_preset">
     <property name="visible">True</property>
     <property name="title" translatable="yes">Store preset</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="type_hint">dialog</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
@@ -23,16 +24,13 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkComboBoxEntry" id="preset_name">
                 <property name="visible">True</property>
                 <property name="has_frame">False</property>
-                <child internal-child="entry">
-                  <object class="GtkEntry" id="comboboxentry-entry1">
-                  </object>
-                </child>
               </object>
               <packing>
                 <property name="padding">15</property>
@@ -48,26 +46,29 @@
         <child internal-child="action_area">
           <object class="GtkHButtonBox" id="dialog-action_area1">
             <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <property name="layout_style">end</property>
             <child>
               <object class="GtkButton" id="cancelbutton1">
+                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-cancel</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkButton" id="okbutton1">
+                <property name="label">gtk-ok</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-ok</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
               </object>
               <packing>
@@ -80,7 +81,8 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
       </object>
@@ -90,4 +92,128 @@
       <action-widget response="-5">okbutton1</action-widget>
     </action-widgets>
   </object>
+  <object class="GtkDialog" id="preferences">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Calf Preferences</property>
+    <property name="window_position">center</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox2">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">2</property>
+            <child>
+              <object class="GtkCheckButton" id="show-rack-ears">
+                <property name="label" translatable="yes">Show rack ears</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="right_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="prefs_label_cols">
+                <property name="visible">False</property>
+                <property name="label" translatable="yes">Force columns</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="prefs_label_rows">
+                <property name="visible">False</property>
+                <property name="label" translatable="yes">Force rows</property>
+              </object>
+              <packing>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinButton" id="force-columns">
+                <property name="visible">False</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinButton" id="force-rows">
+                <property name="visible">False</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">●</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area2">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="prefs_cancel">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="prefs_ok">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">prefs_cancel</action-widget>
+      <action-widget response="-5">prefs_ok</action-widget>
+    </action-widgets>
+  </object>
 </interface>
diff --git a/src/calf/main_win.h b/src/calf/main_win.h
index 31a185e..b2da016 100644
--- a/src/calf/main_win.h
+++ b/src/calf/main_win.h
@@ -94,6 +94,7 @@ namespace calf_plugins {
         static void on_open_action(GtkWidget *widget, main_window *main);
         static void on_save_action(GtkWidget *widget, main_window *main);
         static void on_save_as_action(GtkWidget *widget, main_window *main);
+        static void on_preferences_action(GtkWidget *widget, main_window *main);
         static void on_exit_action(GtkWidget *widget, main_window *main);
     };
 };
diff --git a/src/main_win.cpp b/src/main_win.cpp
index 3e3a354..971dc79 100644
--- a/src/main_win.cpp
+++ b/src/main_win.cpp
@@ -44,6 +44,8 @@ static const char *ui_xml =
 "      <menuitem action=\"FileSave\"/>\n"
 "      <menuitem action=\"FileSaveAs\"/>\n"
 "      <separator/>\n"
+"      <menuitem action=\"Preferences\"/>\n"
+"      <separator/>\n"
 "      <menuitem action=\"FileQuit\"/>\n"
 "    </menu>\n"
 "    <menu action=\"AddPluginMenuAction\" />\n"
@@ -58,6 +60,7 @@ const GtkActionEntry main_window::actions[] = {
     { "FileSaveAs", GTK_STOCK_SAVE_AS, "Save _as...", NULL, "Save a rack file as", (GCallback)on_save_as_action },
     { "HostMenuAction", NULL, "_Host", NULL, "Host-related operations", NULL },
     { "AddPluginMenuAction", NULL, "_Add plugin", NULL, "Add a plugin to the rack", NULL },
+    { "Preferences", GTK_STOCK_PREFERENCES, "_Preferences...", NULL, "Adjust preferences", (GCallback)on_preferences_action },
     { "FileQuit", GTK_STOCK_QUIT, "_Quit", "<Ctrl>Q", "Exit application", (GCallback)on_exit_action },
 };
 
@@ -76,6 +79,36 @@ void main_window::on_save_as_action(GtkWidget *widget, main_window *main)
     main->save_file_as();
 }
 
+void main_window::on_preferences_action(GtkWidget *widget, main_window *main)
+{
+    GtkBuilder *prefs_builder = gtk_builder_new();
+    GError *error = NULL;
+    const gchar *objects[] = { "preferences", NULL };
+    if (!gtk_builder_add_objects_from_file(prefs_builder, PKGLIBDIR "/calf-gui.xml", (gchar **)objects, &error))
+    {
+        g_warning("Cannot load preferences dialog: %s", error->message);
+        g_error_free(error);
+        g_object_unref(G_OBJECT(prefs_builder));
+        return;
+    }
+    GtkWidget *preferences_dlg = GTK_WIDGET(gtk_builder_get_object(prefs_builder, "preferences"));
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(prefs_builder, "show-rack-ears")), main->get_config()->rack_ears);
+    gtk_spin_button_set_range(GTK_SPIN_BUTTON(gtk_builder_get_object(prefs_builder, "force-columns")), 0, 3);
+    gtk_spin_button_set_range(GTK_SPIN_BUTTON(gtk_builder_get_object(prefs_builder, "force-rows")), 0, 3);
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON(gtk_builder_get_object(prefs_builder, "force-columns")), main->get_config()->cols);
+    gtk_spin_button_set_value(GTK_SPIN_BUTTON(gtk_builder_get_object(prefs_builder, "force-rows")), main->get_config()->rows);
+    int response = gtk_dialog_run(GTK_DIALOG(preferences_dlg));
+    if (response == GTK_RESPONSE_OK)
+    {
+        main->get_config()->rack_ears = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(prefs_builder, "show-rack-ears")));
+        main->get_config()->cols = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk_builder_get_object(prefs_builder, "force-columns")));
+        main->get_config()->rows = gtk_spin_button_get_value(GTK_SPIN_BUTTON(gtk_builder_get_object(prefs_builder, "force-rows")));
+        main->get_config()->save(main->get_config_db());
+    }
+    gtk_widget_destroy(preferences_dlg);
+    g_object_unref(G_OBJECT(prefs_builder));
+}
+
 void main_window::on_exit_action(GtkWidget *widget, main_window *main)
 {
     gtk_widget_destroy(GTK_WIDGET(main->toplevel));
diff --git a/src/preset_gui.cpp b/src/preset_gui.cpp
index 9f0d577..2c2cc13 100644
--- a/src/preset_gui.cpp
+++ b/src/preset_gui.cpp
@@ -52,8 +52,12 @@ void gui_preset_access::store_preset()
         return;
     }
     GtkBuilder *store_preset_builder = gtk_builder_new();
-    if (!gtk_builder_add_from_file(store_preset_builder, PKGLIBDIR "/calf-gui.xml", NULL))
+    const gchar *objects[] = { "store_preset", NULL };
+    GError *error = NULL;
+    if (!gtk_builder_add_objects_from_file(store_preset_builder, PKGLIBDIR "/calf-gui.xml", (gchar **)objects, &error))
     {
+        g_warning("Cannot load preset GUI dialog: %s", error->message);
+        g_error_free(error);
         g_object_unref(G_OBJECT(store_preset_builder));
         return;
     }

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list