[moserial] Use ComboBox with text field for device selection.



commit 78e3a1352dd86fc06646b20fbeb3578f76577d03
Author: Mictronics <github mictronics de>
Date:   Sun Apr 26 21:46:45 2020 +0200

    Use ComboBox with text field for device selection.

 data/ui/settings_dialog.ui | 31 +++++++++++++++++++++----------
 src/SettingsDialog.vala    | 20 +++++++-------------
 2 files changed, 28 insertions(+), 23 deletions(-)
---
diff --git a/data/ui/settings_dialog.ui b/data/ui/settings_dialog.ui
index 31ce0af..5d40ab7 100644
--- a/data/ui/settings_dialog.ui
+++ b/data/ui/settings_dialog.ui
@@ -180,16 +180,6 @@
                     <property name="top_attach">1</property>
                   </packing>
                 </child>
-                <child>
-                  <object class="GtkComboBox" id="settings_device">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                  </object>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
-                  </packing>
-                </child>
                 <child>
                   <object class="GtkCheckButton" id="settings_local_echo">
                     <property name="label" translatable="yes">Echo received data</property>
@@ -300,6 +290,27 @@
                     <property name="top_attach">7</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkComboBox" id="settings_device">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="has_entry">True</property>
+                    <property name="entry_text_column">0</property>
+                    <property name="id_column">0</property>
+                    <child internal-child="entry">
+                      <object class="GtkEntry" id="settings_device_input">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="primary_icon_activatable">False</property>
+                        <property name="secondary_icon_activatable">False</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">0</property>
+                  </packing>
+                </child>
               </object>
               <packing>
                 <property name="expand">True</property>
diff --git a/src/SettingsDialog.vala b/src/SettingsDialog.vala
index f6fea1b..3523b7d 100644
--- a/src/SettingsDialog.vala
+++ b/src/SettingsDialog.vala
@@ -39,15 +39,17 @@ public class moserial.SettingsDialog : GLib.Object {
     private ComboBox accessModeCombo;
     private CheckButton localEcho;
     private Gtk.ListStore deviceModel;
+    private Gtk.Entry deviceInput;
     public signal void updateSettings (Settings settings);
 
-    public SettingsDialog(Window parent) {
+    public SettingsDialog (Window parent) {
         var builder = new Gtk.Builder.from_resource (Config.UIROOT + "settings_dialog.ui");
 
         dialog = (Dialog) builder.get_object ("settings_dialog");
-        dialog.set_transient_for(parent);
+        dialog.set_transient_for (parent);
         cancelButton = (Button) builder.get_object ("settings_cancel_button");
         okButton = (Button) builder.get_object ("settings_ok_button");
+        deviceInput = (Gtk.Entry)builder.get_object ("settings_device_input");
 
         baudRateCombo = (ComboBox) builder.get_object ("settings_baud_rate");
         MoUtils.populateComboBox (baudRateCombo, Settings.BaudRateItems);
@@ -202,18 +204,10 @@ public class moserial.SettingsDialog : GLib.Object {
         Settings.AccessMode accessMode;
         bool pLocalEcho;
 
-        TreeModel t;
-        TreeIter iter;
-        bool success;
-
-        t = deviceCombo.get_model ();
-        success = deviceCombo.get_active_iter (out iter);
-        if (success) {
-            Value str_data;
-            t.get_value (iter, 0, out str_data);
-            device = str_data.get_string ();
-        } else {
+        if (deviceInput.get_text_length () == 0) {
             device = Settings.DEFAULT_DEVICEFILE;
+        } else {
+            device = deviceInput.get_text ();
         }
 
         baudRate = int.parse (Settings.BaudRateItems[baudRateCombo.get_active ()]);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]