[smuxi: 61/179] Frontend-GNOME: implemented GtkBuilder based ServerListWidget
- From: Mirco M. M. Bauer <mmmbauer src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [smuxi: 61/179] Frontend-GNOME: implemented GtkBuilder based ServerListWidget
- Date: Sat, 4 Nov 2017 05:44:51 +0000 (UTC)
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]