[smuxi: 61/179] Frontend-GNOME: implemented GtkBuilder based ServerListWidget



commit 9e6808113a15a3762759826dedf302e3dd86ba29
Author: Mirco Bauer <meebey meebey net>
Date:   Thu Oct 17 19:22:10 2013 +0200

    Frontend-GNOME: implemented GtkBuilder based ServerListWidget

 src/Frontend-GNOME/Frontend-GNOME.csproj          |    3 +
 src/Frontend-GNOME/Interfaces/ServerListWidget.ui |  104 +++++++++++++++++++++
 src/Frontend-GNOME/Makefile.am                    |    3 +-
 src/Frontend-GNOME/Preferences/ServerListView.cs  |   63 +++++++++----
 4 files changed, 155 insertions(+), 18 deletions(-)
---
diff --git a/src/Frontend-GNOME/Frontend-GNOME.csproj b/src/Frontend-GNOME/Frontend-GNOME.csproj
index 91ab6e8..ad934d6 100644
--- a/src/Frontend-GNOME/Frontend-GNOME.csproj
+++ b/src/Frontend-GNOME/Frontend-GNOME.csproj
@@ -95,6 +95,9 @@
     <EmbeddedResource Include="Interfaces\PreferencesDialog2.ui">
       <LogicalName>PreferencesDialog2.ui</LogicalName>
     </EmbeddedResource>
+    <EmbeddedResource Include="Interfaces\ServerListWidget.ui">
+      <LogicalName>ServerListWidget.ui</LogicalName>
+    </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="AboutDialog.cs" />
diff --git a/src/Frontend-GNOME/Interfaces/ServerListWidget.ui 
b/src/Frontend-GNOME/Interfaces/ServerListWidget.ui
new file mode 100644
index 0000000..817d52e
--- /dev/null
+++ b/src/Frontend-GNOME/Interfaces/ServerListWidget.ui
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkBox" id="ServerListBox">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkBox" id="box1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow1">
+            <property name="can_focus">True</property>
+            <property name="shadow_type">etched-in</property>
+            <child>
+              <object class="GtkTreeView" id="ServersTreeView">
+                <property name="can_focus">True</property>
+                <child internal-child="selection">
+                  <object class="GtkTreeSelection" id="treeview-selection3"/>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolbar" id="toolbar1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="toolbar_style">icons</property>
+            <property name="show_arrow">False</property>
+            <style>
+              <class name="inline-toolbar"/>
+            </style>
+            <child>
+              <object class="GtkToolButton" id="AddServerToolButton">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_tooltip">True</property>
+                <property name="tooltip_markup" translatable="yes">Add Filter</property>
+                <property name="tooltip_text" translatable="yes">Add Server</property>
+                <property name="label" translatable="yes">Add Server</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-add</property>
+                <signal name="clicked" handler="OnAddButtonClicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkToolButton" id="RemoveServerToolButton">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="has_tooltip">True</property>
+                <property name="tooltip_markup" translatable="yes">Remove Filter</property>
+                <property name="tooltip_text" translatable="yes">Remove Server</property>
+                <property name="label" translatable="yes">Remove Server</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-remove</property>
+                <signal name="clicked" handler="OnRemoveButtonClicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkToolButton" id="EditServerToolButton">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Edit Server</property>
+                <property name="use_underline">True</property>
+                <property name="stock_id">gtk-edit</property>
+                <signal name="clicked" handler="OnEditButtonClicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/src/Frontend-GNOME/Makefile.am b/src/Frontend-GNOME/Makefile.am
index 72102d3..bea9399 100644
--- a/src/Frontend-GNOME/Makefile.am
+++ b/src/Frontend-GNOME/Makefile.am
@@ -213,7 +213,8 @@ RESOURCES = \
        $(top_builddir)/images/person-chat_256x256.png \
        $(top_builddir)/images/protocol-chat_256x256.png \
        $(top_builddir)/images/session-chat_256x256.png \
-       Interfaces/PreferencesDialog3.ui
+       Interfaces/PreferencesDialog3.ui \
+       Interfaces/ServerListWidget.ui
 
 EXTRAS = \
        smuxi-frontend-gnome.in \
diff --git a/src/Frontend-GNOME/Preferences/ServerListView.cs 
b/src/Frontend-GNOME/Preferences/ServerListView.cs
index f49ad95..c4d060c 100644
--- a/src/Frontend-GNOME/Preferences/ServerListView.cs
+++ b/src/Frontend-GNOME/Preferences/ServerListView.cs
@@ -7,7 +7,7 @@
  *
  * Smuxi - Smart MUltipleXed Irc
  *
- * Copyright (c) 2005-2008 Mirco Bauer <meebey meebey net>
+ * Copyright (c) 2005-2008, 2010, 2012-2013 Mirco Bauer <meebey meebey net>
  *
  * Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
  *
@@ -30,43 +30,64 @@ using System;
 using System.Collections.Generic;
 using Smuxi.Common;
 using Smuxi.Engine;
+#if GTK_SHARP_3
+using TreeModel = Gtk.ITreeModel;
+#else
+using TreeModel = Gtk.TreeModel;
+#endif
+using UI = Gtk.Builder.ObjectAttribute;
 
 namespace Smuxi.Frontend.Gnome
 {
-    public class ServerListView
+    public class ServerListView : Gtk.Bin
     {
         private ServerListController     _Controller;
         private Gtk.Window               _Parent;
         
 #region Widgets
-        [Glade.Widget("ServersTreeView")]
+        [UI("ServersTreeView")]
         private Gtk.TreeView             _TreeView;
         private Gtk.TreeStore            _TreeStore;
-        [Glade.Widget("ServersAddButton")]
+        [UI("EditServerToolButton")]
+        Gtk.ToolButton _EditButton;
+        [UI("RemoveServerToolButton")]
+        Gtk.ToolButton _RemoveButton;
+        [UI("ServersAddButton")]
         private Gtk.Button               _AddButton;
-        [Glade.Widget("ServersEditButton")]
+        [UI("ServersEditButton")]
         private Gtk.Button               _EditButton;
-        [Glade.Widget("ServersRemoveButton")]
+        [UI("ServersRemoveButton")]
         private Gtk.Button               _RemoveButton;
 #endregion
         
-        public ServerListView(Gtk.Window parent, Glade.XML gladeXml)
+        public ServerListView(Gtk.Window parent)
         {
-            Trace.Call(parent, gladeXml);
-            
+            Trace.Call(parent);
+
             if (parent == null) {
                 throw new ArgumentNullException("parent");
             }
-            
+
             _Parent = parent;
+
+            var builder = new Gtk.Builder(null, "ServerListWidget.ui", null);
+            builder.Autoconnect(this);
+            Add((Gtk.Widget) builder.GetObject("ServerListBox"));
+
+            Init();
+            ShowAll();
+        }
+
+        void Init()
+        {
             _Controller = new ServerListController(Frontend.UserConfig);
-            
-            gladeXml.BindFields(this);
-            
+
+#if GLADE_SHARP
             _AddButton.Clicked += new EventHandler(OnAddButtonClicked);
             _EditButton.Clicked += new EventHandler(OnEditButtonClicked);
             _RemoveButton.Clicked += new EventHandler(OnRemoveButtonClicked);
-            
+#endif
+
             _TreeView.AppendColumn(_("Protocol"), new Gtk.CellRendererText(), "text", 1); 
             _TreeView.AppendColumn(_("Hostname"), new Gtk.CellRendererText(), "text", 2); 
             
@@ -133,7 +154,11 @@ namespace Smuxi.Frontend.Gnome
         {
             Trace.Call();
             
-            ServerDialog dialog = new ServerDialog(_Parent, null, Frontend.Session.GetSupportedProtocols(), 
_Controller.GetNetworks());
+            var builder = new Gtk.Builder(null, "ServerDialog.ui", null);
+            var widget = (Gtk.Widget) builder.GetObject("ServerDialog");
+            var dialog = new ServerDialog(_Parent, builder, widget.Handle, null,
+                                          Frontend.Session.GetSupportedProtocols(),
+                                          _Controller.GetNetworks());
             try {
                 int res = dialog.Run();
                 ServerModel server = dialog.GetServer();
@@ -159,7 +184,11 @@ namespace Smuxi.Frontend.Gnome
                 throw new ArgumentNullException("server");
             }
             
-            ServerDialog dialog = new ServerDialog(_Parent, server, 
Frontend.Session.GetSupportedProtocols(), _Controller.GetNetworks());
+            var builder = new Gtk.Builder(null, "ServerDialog.ui", null);
+            var widget = (Gtk.Widget) builder.GetObject("ServerDialog");
+            var dialog = new ServerDialog(_Parent, builder, widget.Handle, server,
+                                          Frontend.Session.GetSupportedProtocols(),
+                                          _Controller.GetNetworks());
             int res = dialog.Run();
             server = dialog.GetServer();
             dialog.Destroy();
@@ -282,7 +311,7 @@ namespace Smuxi.Frontend.Gnome
             }
         }
 
-        protected virtual int SortTreeStore(Gtk.TreeModel model,
+        protected virtual int SortTreeStore(TreeModel model,
                                             Gtk.TreeIter iter1,
                                             Gtk.TreeIter iter2)
         {


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