network-manager-applet r561 - in trunk: . src/connection-editor
- From: dcbw svn gnome org
- To: svn-commits-list gnome org
- Subject: network-manager-applet r561 - in trunk: . src/connection-editor
- Date: Wed, 27 Feb 2008 16:06:12 +0000 (GMT)
Author: dcbw
Date: Wed Feb 27 16:06:12 2008
New Revision: 561
URL: http://svn.gnome.org/viewvc/network-manager-applet?rev=561&view=rev
Log:
2008-02-27 Dan Williams <dcbw redhat com>
Refactor connection editor page handling in preparation
for making Add/Edit work.
* src/connection-editor/Makefile.am
connection-editor/ce-page.c
connection-editor/ce-page.h
- Add the base CEPage class from which all other connection editor pages
derive
* connection-editor/page-ip4-address.c
connection-editor/page-ip4-address.h
connection-editor/page-ip4.c
connection-editor/page-ip4.h
connection-editor/page-wired.c
connection-editor/page-wired.h
connection-editor/page-wireless-security.c
connection-editor/page-wireless-security.h
connection-editor/page-wireless.c
connection-editor/page-wireless.h
- Make each page a subclass of CEPage
* connection-editor/nm-connection-editor.c
connection-editor/nm-connection-editor.h
- Update for these changes; handle CEPage objects instead of just
GtkWidgets
Added:
trunk/src/connection-editor/ce-page.c
trunk/src/connection-editor/ce-page.h
Modified:
trunk/ChangeLog
trunk/src/connection-editor/Makefile.am
trunk/src/connection-editor/nm-connection-editor.c
trunk/src/connection-editor/nm-connection-editor.h
trunk/src/connection-editor/page-ip4-address.c
trunk/src/connection-editor/page-ip4-address.h
trunk/src/connection-editor/page-ip4.c
trunk/src/connection-editor/page-ip4.h
trunk/src/connection-editor/page-wired.c
trunk/src/connection-editor/page-wired.h
trunk/src/connection-editor/page-wireless-security.c
trunk/src/connection-editor/page-wireless-security.h
trunk/src/connection-editor/page-wireless.c
trunk/src/connection-editor/page-wireless.h
Modified: trunk/src/connection-editor/Makefile.am
==============================================================================
--- trunk/src/connection-editor/Makefile.am (original)
+++ trunk/src/connection-editor/Makefile.am Wed Feb 27 16:06:12 2008
@@ -24,6 +24,8 @@
nm-connection-list.c \
nm-connection-list.h \
main.c \
+ ce-page.h \
+ ce-page.c \
page-wired.h \
page-wired.c \
page-wireless.h \
Added: trunk/src/connection-editor/ce-page.c
==============================================================================
--- (empty file)
+++ trunk/src/connection-editor/ce-page.c Wed Feb 27 16:06:12 2008
@@ -0,0 +1,103 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager Connection editor -- Connection editor for NetworkManager
+ *
+ * Dan Williams <dcbw redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2008 Red Hat, Inc.
+ */
+
+#include "ce-page.h"
+
+G_DEFINE_ABSTRACT_TYPE (CEPage, ce_page, G_TYPE_OBJECT)
+
+gboolean
+ce_page_validate (CEPage *self)
+{
+ if (CE_PAGE_GET_CLASS (self)->validate)
+ return CE_PAGE_GET_CLASS (self)->validate (self);
+
+ return TRUE;
+}
+
+void
+ce_page_update_connection (CEPage *self, NMConnection *connection)
+{
+ CE_PAGE_GET_CLASS (self)->update_connection (self, connection);
+}
+
+static void
+ce_page_init (CEPage *self)
+{
+ self->disposed = FALSE;
+}
+
+static void
+dispose (GObject *object)
+{
+ CEPage *self = CE_PAGE (object);
+
+ if (self->disposed)
+ return;
+
+ self->disposed = TRUE;
+
+ if (self->page)
+ g_object_unref (self->page);
+
+ if (self->xml)
+ g_object_unref (self->xml);
+
+ G_OBJECT_CLASS (ce_page_parent_class)->dispose (object);
+}
+
+static void
+finalize (GObject *object)
+{
+ CEPage *self = CE_PAGE (object);
+
+ if (self->title)
+ g_free (self->title);
+
+ G_OBJECT_CLASS (ce_page_parent_class)->finalize (object);
+}
+
+GtkWidget *
+ce_page_get_page (CEPage *self)
+{
+ g_return_val_if_fail (CE_IS_PAGE (self), NULL);
+
+ return self->page;
+}
+
+const char *
+ce_page_get_title (CEPage *self)
+{
+ g_return_val_if_fail (CE_IS_PAGE (self), NULL);
+
+ return self->title;
+}
+
+static void
+ce_page_class_init (CEPageClass *page_class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (page_class);
+
+ /* virtual methods */
+ object_class->dispose = dispose;
+ object_class->finalize = finalize;
+}
+
Added: trunk/src/connection-editor/ce-page.h
==============================================================================
--- (empty file)
+++ trunk/src/connection-editor/ce-page.h Wed Feb 27 16:06:12 2008
@@ -0,0 +1,71 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* NetworkManager Connection editor -- Connection editor for NetworkManager
+ *
+ * Dan Williams <dcbw redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * (C) Copyright 2008 Red Hat, Inc.
+ */
+
+#ifndef __CE_PAGE_H__
+#define __CE_PAGE_H__
+
+#include <glib/gtypes.h>
+#include <glib-object.h>
+
+#include <gtk/gtkwidget.h>
+#include <glade/glade.h>
+
+#include <nm-connection.h>
+
+#define CE_TYPE_PAGE (ce_page_get_type ())
+#define CE_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CE_TYPE_PAGE, CEPage))
+#define CE_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CE_TYPE_PAGE, CEPageClass))
+#define CE_IS_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CE_TYPE_PAGE))
+#define CE_IS_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), CE_TYPE_PAGE))
+#define CE_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CE_TYPE_PAGE, CEPageClass))
+
+typedef struct {
+ GObject parent;
+
+ GladeXML *xml;
+ GtkWidget *page;
+ char *title;
+
+ gboolean disposed;
+} CEPage;
+
+typedef struct {
+ GObjectClass parent;
+
+ /* Virtual functions */
+ gboolean (*validate) (CEPage *self);
+
+ void (*update_connection) (CEPage *self, NMConnection *connection);
+} CEPageClass;
+
+GType ce_page_get_type (void);
+
+GtkWidget * ce_page_get_page (CEPage *self);
+
+const char * ce_page_get_title (CEPage *self);
+
+gboolean ce_page_validate (CEPage *self);
+
+void ce_page_update_connection (CEPage *self, NMConnection *connection);
+
+#endif /* __CE_PAGE_H__ */
+
Modified: trunk/src/connection-editor/nm-connection-editor.c
==============================================================================
--- trunk/src/connection-editor/nm-connection-editor.c (original)
+++ trunk/src/connection-editor/nm-connection-editor.c Wed Feb 27 16:06:12 2008
@@ -44,6 +44,7 @@
#include "nm-connection-editor.h"
#include "utils.h"
+#include "ce-page.h"
#include "page-wired.h"
#include "page-wireless.h"
#include "page-wireless-security.h"
@@ -91,19 +92,6 @@
}
static void
-add_page (NMConnectionEditor *editor,
- GtkWidget *page,
- const char *title)
-{
- GtkWidget *notebook;
- GtkWidget *label;
-
- notebook = glade_xml_get_widget (editor->xml, "notebook");
- label = gtk_label_new (title);
- gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
-}
-
-static void
nm_connection_editor_update_title (NMConnectionEditor *editor)
{
NMSettingConnection *s_con;
@@ -170,20 +158,26 @@
widget = glade_xml_get_widget (editor->xml, "connection_name");
g_signal_connect (G_OBJECT (widget), "changed",
G_CALLBACK (connection_name_changed), editor);
+
+ editor->pages = NULL;
}
static void
-nm_connection_editor_finalize (GObject *object)
+dispose (GObject *object)
{
NMConnectionEditor *editor = NM_CONNECTION_EDITOR (object);
+ g_slist_foreach (editor->pages, (GFunc) g_object_unref, NULL);
+ g_slist_free (editor->pages);
+ editor->pages = NULL;
+
if (editor->connection)
g_object_unref (editor->connection);
gtk_widget_destroy (editor->dialog);
g_object_unref (editor->xml);
- G_OBJECT_CLASS (nm_connection_editor_parent_class)->finalize (object);
+ G_OBJECT_CLASS (nm_connection_editor_parent_class)->dispose (object);
}
static void
@@ -192,7 +186,7 @@
GObjectClass *object_class = G_OBJECT_CLASS (klass);
/* virtual methods */
- object_class->finalize = nm_connection_editor_finalize;
+ object_class->dispose = dispose;
}
NMConnectionEditor *
@@ -256,13 +250,25 @@
}
}
+static void
+add_page (NMConnectionEditor *editor, CEPage *page)
+{
+ GtkWidget *widget;
+ GtkWidget *notebook;
+ GtkWidget *label;
+
+ notebook = glade_xml_get_widget (editor->xml, "notebook");
+ label = gtk_label_new (ce_page_get_title (page));
+ widget = ce_page_get_page (page);
+ gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, label);
+
+ editor->pages = g_slist_append (editor->pages, page);
+}
+
void
nm_connection_editor_set_connection (NMConnectionEditor *editor, NMConnection *connection)
{
NMSettingConnection *s_con;
- GtkWidget *widget;
- char *title = NULL;
- GtkWidget *ok_button;
g_return_if_fail (NM_IS_CONNECTION_EDITOR (editor));
g_return_if_fail (connection != NULL);
@@ -276,49 +282,30 @@
editor->connection = (NMConnection *) g_object_ref (connection);
nm_connection_editor_update_title (editor);
- ok_button = glade_xml_get_widget (editor->xml, "ok_button");
-
s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
g_assert (s_con);
if (!strcmp (s_con->type, NM_SETTING_WIRED_SETTING_NAME)) {
- widget = page_wired_new (editor->connection, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
-
- widget = page_ip4_address_new (editor->connection, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
-
- widget = page_ip4_new (editor->connection, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
+ add_page (editor, CE_PAGE (ce_page_wired_new (editor->connection)));
+ add_page (editor, CE_PAGE (ce_page_ip4_address_new (editor->connection)));
+ add_page (editor, CE_PAGE (ce_page_ip4_new (editor->connection)));
} else if (!strcmp (s_con->type, NM_SETTING_WIRELESS_SETTING_NAME)) {
- GtkWidget *wireless_page;
+ CEPageWireless *wireless_page;
+ CEPageWirelessSecurity *wireless_security_page;
+ GtkWidget *ok_button;
+
+ wireless_page = ce_page_wireless_new (editor->connection);
+ add_page (editor, CE_PAGE (wireless_page));
+
+ ok_button = glade_xml_get_widget (editor->xml, "ok_button");
+ wireless_security_page = ce_page_wireless_security_new (editor->connection, ok_button, wireless_page);
+ add_page (editor, CE_PAGE (wireless_security_page));
- wireless_page = page_wireless_new (editor->connection, (const char **) &title);
- if (wireless_page)
- add_page (editor, wireless_page, title);
-
- widget = page_wireless_security_new (editor->connection, ok_button, wireless_page, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
-
- widget = page_ip4_address_new (editor->connection, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
-
- widget = page_ip4_new (editor->connection, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
+ add_page (editor, CE_PAGE (ce_page_ip4_address_new (editor->connection)));
+ add_page (editor, CE_PAGE (ce_page_ip4_new (editor->connection)));
} else if (!strcmp (s_con->type, NM_SETTING_VPN_SETTING_NAME)) {
- widget = page_ip4_address_new (editor->connection, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
-
- widget = page_ip4_new (editor->connection, (const char **) &title);
- if (widget)
- add_page (editor, widget, title);
+ add_page (editor, CE_PAGE (ce_page_ip4_address_new (editor->connection)));
+ add_page (editor, CE_PAGE (ce_page_ip4_new (editor->connection)));
} else {
g_warning ("Unhandled setting type '%s'", s_con->type);
}
Modified: trunk/src/connection-editor/nm-connection-editor.h
==============================================================================
--- trunk/src/connection-editor/nm-connection-editor.h (original)
+++ trunk/src/connection-editor/nm-connection-editor.h Wed Feb 27 16:06:12 2008
@@ -38,7 +38,7 @@
/* private data */
NMConnection *connection;
- GHashTable *pages;
+ GSList *pages;
GtkWidget *dialog;
GladeXML *xml;
} NMConnectionEditor;
Modified: trunk/src/connection-editor/page-ip4-address.c
==============================================================================
--- trunk/src/connection-editor/page-ip4-address.c (original)
+++ trunk/src/connection-editor/page-ip4-address.c Wed Feb 27 16:06:12 2008
@@ -30,29 +30,53 @@
#include "page-ip4-address.h"
-GtkWidget *
-page_ip4_address_new (NMConnection *connection, const char **title)
+G_DEFINE_TYPE (CEPageIP4Address, ce_page_ip4_address, CE_TYPE_PAGE)
+
+CEPageIP4Address *
+ce_page_ip4_address_new (NMConnection *connection)
{
- GladeXML *xml;
- GtkWidget *page;
+ CEPageIP4Address *self;
+ CEPage *parent;
NMSettingIP4Config *s_ip4;
- xml = glade_xml_new (GLADEDIR "/ce-page-ip4-address.glade", "IP4AddressPage", NULL);
- g_return_val_if_fail (xml != NULL, NULL);
- *title = _("IPv4 Addresses");
-
- page = glade_xml_get_widget (xml, "IP4AddressPage");
- g_return_val_if_fail (page != NULL, NULL);
- g_object_set_data_full (G_OBJECT (page),
- "glade-xml", xml,
- (GDestroyNotify) g_object_unref);
+ self = CE_PAGE_IP4_ADDRESS (g_object_new (CE_TYPE_PAGE_IP4_ADDRESS, NULL));
+ parent = CE_PAGE (self);
+
+ parent->xml = glade_xml_new (GLADEDIR "/ce-page-ip4-address.glade", "IP4AddressPage", NULL);
+ if (!parent->xml) {
+ g_warning ("%s: Couldn't load wired page glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+
+ parent->page = glade_xml_get_widget (parent->xml, "IP4AddressPage");
+ if (!parent->page) {
+ g_warning ("%s: Couldn't load wired page from glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+ g_object_ref_sink (parent->page);
+
+ parent->title = g_strdup (_("IPv4 Addresses"));
s_ip4 = NM_SETTING_IP4_CONFIG (nm_connection_get_setting (connection, NM_TYPE_SETTING_IP4_CONFIG));
if (s_ip4 == NULL)
goto out;
+ // FIXME: fill in the UI
+
out:
- return page;
+ return self;
+}
+
+
+static void
+ce_page_ip4_address_init (CEPageIP4Address *self)
+{
}
+static void
+ce_page_ip4_address_class_init (CEPageIP4AddressClass *ip4_address_class)
+{
+}
Modified: trunk/src/connection-editor/page-ip4-address.h
==============================================================================
--- trunk/src/connection-editor/page-ip4-address.h (original)
+++ trunk/src/connection-editor/page-ip4-address.h Wed Feb 27 16:06:12 2008
@@ -23,10 +23,31 @@
#ifndef __PAGE_IP4_ADDRESS_H__
#define __PAGE_IP4_ADDRESS_H__
-#include "nm-connection-editor.h"
+#include <nm-connection.h>
-GtkWidget *page_ip4_address_new (NMConnection *connection, const char **title);
+#include <glib/gtypes.h>
+#include <glib-object.h>
+#include "ce-page.h"
+
+#define CE_TYPE_PAGE_IP4_ADDRESS (ce_page_ip4_address_get_type ())
+#define CE_PAGE_IP4_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CE_TYPE_PAGE_IP4_ADDRESS, CEPageIP4Address))
+#define CE_PAGE_IP4_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CE_TYPE_PAGE_IP4_ADDRESS, CEPageIP4AddressClass))
+#define CE_IS_PAGE_IP4_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CE_TYPE_PAGE_IP4_ADDRESS))
+#define CE_IS_PAGE_IP4_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), CE_TYPE_PAGE_IP4_ADDRESS))
+#define CE_PAGE_IP4_ADDRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CE_TYPE_PAGE_IP4_ADDRESS, CEPageIP4AddressClass))
+
+typedef struct {
+ CEPage parent;
+} CEPageIP4Address;
+
+typedef struct {
+ CEPageClass parent;
+} CEPageIP4AddressClass;
+
+GType ce_page_ip4_address_get_type (void);
+
+CEPageIP4Address *ce_page_ip4_address_new (NMConnection *connection);
#endif /* __PAGE_IP4_ADDRESS_H__ */
Modified: trunk/src/connection-editor/page-ip4.c
==============================================================================
--- trunk/src/connection-editor/page-ip4.c (original)
+++ trunk/src/connection-editor/page-ip4.c Wed Feb 27 16:06:12 2008
@@ -30,29 +30,53 @@
#include "page-ip4.h"
-GtkWidget *
-page_ip4_new (NMConnection *connection, const char **title)
+G_DEFINE_TYPE (CEPageIP4, ce_page_ip4, CE_TYPE_PAGE)
+
+CEPageIP4 *
+ce_page_ip4_new (NMConnection *connection)
{
- GladeXML *xml;
- GtkWidget *page;
+ CEPageIP4 *self;
+ CEPage *parent;
NMSettingIP4Config *s_ip4;
- xml = glade_xml_new (GLADEDIR "/ce-page-ip4.glade", "IP4Page", NULL);
- g_return_val_if_fail (xml != NULL, NULL);
- *title = _("IPv4 Settings");
-
- page = glade_xml_get_widget (xml, "IP4Page");
- g_return_val_if_fail (page != NULL, NULL);
- g_object_set_data_full (G_OBJECT (page),
- "glade-xml", xml,
- (GDestroyNotify) g_object_unref);
+ self = CE_PAGE_IP4 (g_object_new (CE_TYPE_PAGE_IP4, NULL));
+ parent = CE_PAGE (self);
+
+ parent->xml = glade_xml_new (GLADEDIR "/ce-page-ip4.glade", "IP4Page", NULL);
+ if (!parent->xml) {
+ g_warning ("%s: Couldn't load wired page glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+
+ parent->page = glade_xml_get_widget (parent->xml, "IP4Page");
+ if (!parent->page) {
+ g_warning ("%s: Couldn't load wired page from glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+ g_object_ref_sink (parent->page);
+
+ parent->title = g_strdup (_("IPv4 Settings"));
s_ip4 = NM_SETTING_IP4_CONFIG (nm_connection_get_setting (connection, NM_TYPE_SETTING_IP4_CONFIG));
if (s_ip4 == NULL)
goto out;
+ // FIXME: fill in UI from setting
+
out:
- return page;
+ return self;
+}
+
+
+static void
+ce_page_ip4_init (CEPageIP4 *self)
+{
}
+static void
+ce_page_ip4_class_init (CEPageIP4Class *ip4_class)
+{
+}
Modified: trunk/src/connection-editor/page-ip4.h
==============================================================================
--- trunk/src/connection-editor/page-ip4.h (original)
+++ trunk/src/connection-editor/page-ip4.h Wed Feb 27 16:06:12 2008
@@ -23,10 +23,31 @@
#ifndef __PAGE_IP4_H__
#define __PAGE_IP4_H__
-#include "nm-connection-editor.h"
+#include <nm-connection.h>
-GtkWidget *page_ip4_new (NMConnection *connection, const char **title);
+#include <glib/gtypes.h>
+#include <glib-object.h>
+#include "ce-page.h"
+
+#define CE_TYPE_PAGE_IP4 (ce_page_ip4_get_type ())
+#define CE_PAGE_IP4(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CE_TYPE_PAGE_IP4, CEPageIP4))
+#define CE_PAGE_IP4_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CE_TYPE_PAGE_IP4, CEPageIP4Class))
+#define CE_IS_PAGE_IP4(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CE_TYPE_PAGE_IP4))
+#define CE_IS_PAGE_IP4_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), CE_TYPE_PAGE_IP4))
+#define CE_PAGE_IP4_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CE_TYPE_PAGE_IP4, CEPageIP4Class))
+
+typedef struct {
+ CEPage parent;
+} CEPageIP4;
+
+typedef struct {
+ CEPageClass parent;
+} CEPageIP4Class;
+
+GType ce_page_ip4_get_type (void);
+
+CEPageIP4 *ce_page_ip4_new (NMConnection *connection);
#endif /* __PAGE_IP4_H__ */
Modified: trunk/src/connection-editor/page-wired.c
==============================================================================
--- trunk/src/connection-editor/page-wired.c (original)
+++ trunk/src/connection-editor/page-wired.c Wed Feb 27 16:06:12 2008
@@ -29,12 +29,15 @@
#include <nm-setting-wired.h>
#include "page-wired.h"
+#include "nm-connection-editor.h"
-GtkWidget *
-page_wired_new (NMConnection *connection, const char **title)
+G_DEFINE_TYPE (CEPageWired, ce_page_wired, CE_TYPE_PAGE)
+
+CEPageWired *
+ce_page_wired_new (NMConnection *connection)
{
- GladeXML *xml;
- GtkWidget *page;
+ CEPageWired *self;
+ CEPage *parent;
NMSettingWired *s_wired;
GtkWidget *port;
int port_idx = 0;
@@ -45,25 +48,39 @@
GtkWidget *mtu;
int mtu_def;
+ self = CE_PAGE_WIRED (g_object_new (CE_TYPE_PAGE_WIRED, NULL));
+ parent = CE_PAGE (self);
+
s_wired = NM_SETTING_WIRED (nm_connection_get_setting (connection, NM_TYPE_SETTING_WIRED));
- g_return_val_if_fail (s_wired != NULL, NULL);
+ if (!s_wired) {
+ g_warning ("%s: Connection didn't have a wired setting!", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+
+ parent->xml = glade_xml_new (GLADEDIR "/ce-page-wired.glade", "WiredPage", NULL);
+ if (!parent->xml) {
+ g_warning ("%s: Couldn't load wired page glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+
+ parent->page = glade_xml_get_widget (parent->xml, "WiredPage");
+ if (!parent->page) {
+ g_warning ("%s: Couldn't load wired page from glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+ g_object_ref_sink (parent->page);
- xml = glade_xml_new (GLADEDIR "/ce-page-wired.glade", "WiredPage", NULL);
- g_return_val_if_fail (xml != NULL, NULL);
- *title = _("Wired");
-
- page = glade_xml_get_widget (xml, "WiredPage");
- g_return_val_if_fail (page != NULL, NULL);
- g_object_set_data_full (G_OBJECT (page),
- "glade-xml", xml,
- (GDestroyNotify) g_object_unref);
-
- port = glade_xml_get_widget (xml, "wired_port");
- speed = glade_xml_get_widget (xml, "wired_speed");
- duplex = glade_xml_get_widget (xml, "wired_duplex");
- autoneg = glade_xml_get_widget (xml, "wired_autonegotiate");
+ parent->title = g_strdup (_("Wired"));
- mtu = glade_xml_get_widget (xml, "wired_mtu");
+ port = glade_xml_get_widget (parent->xml, "wired_port");
+ speed = glade_xml_get_widget (parent->xml, "wired_speed");
+ duplex = glade_xml_get_widget (parent->xml, "wired_duplex");
+ autoneg = glade_xml_get_widget (parent->xml, "wired_autonegotiate");
+
+ mtu = glade_xml_get_widget (parent->xml, "wired_mtu");
mtu_def = ce_get_property_default (NM_SETTING (s_wired), NM_SETTING_WIRED_MTU);
g_signal_connect (G_OBJECT (mtu), "output",
(GCallback) ce_spin_output_with_default,
@@ -109,7 +126,17 @@
gtk_spin_button_set_value (GTK_SPIN_BUTTON (mtu), (gdouble) s_wired->mtu);
/* FIXME: MAC address */
- return page;
+
+ return self;
}
+static void
+ce_page_wired_init (CEPageWired *self)
+{
+}
+
+static void
+ce_page_wired_class_init (CEPageWiredClass *wired_class)
+{
+}
Modified: trunk/src/connection-editor/page-wired.h
==============================================================================
--- trunk/src/connection-editor/page-wired.h (original)
+++ trunk/src/connection-editor/page-wired.h Wed Feb 27 16:06:12 2008
@@ -23,10 +23,31 @@
#ifndef __PAGE_WIRED_H__
#define __PAGE_WIRED_H__
-#include "nm-connection-editor.h"
+#include <nm-connection.h>
-GtkWidget *page_wired_new (NMConnection *connection, const char **title);
+#include <glib/gtypes.h>
+#include <glib-object.h>
+#include "ce-page.h"
+
+#define CE_TYPE_PAGE_WIRED (ce_page_wired_get_type ())
+#define CE_PAGE_WIRED(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CE_TYPE_PAGE_WIRED, CEPageWired))
+#define CE_PAGE_WIRED_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CE_TYPE_PAGE_WIRED, CEPageWiredClass))
+#define CE_IS_PAGE_WIRED(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CE_TYPE_PAGE_WIRED))
+#define CE_IS_PAGE_WIRED_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), CE_TYPE_PAGE_WIRED))
+#define CE_PAGE_WIRED_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CE_TYPE_PAGE_WIRED, CEPageWiredClass))
+
+typedef struct {
+ CEPage parent;
+} CEPageWired;
+
+typedef struct {
+ CEPageClass parent;
+} CEPageWiredClass;
+
+GType ce_page_wired_get_type (void);
+
+CEPageWired *ce_page_wired_new (NMConnection *connection);
#endif /* __PAGE_WIRED_H__ */
Modified: trunk/src/connection-editor/page-wireless-security.c
==============================================================================
--- trunk/src/connection-editor/page-wireless-security.c (original)
+++ trunk/src/connection-editor/page-wireless-security.c Wed Feb 27 16:06:12 2008
@@ -32,7 +32,13 @@
#include <nm-utils.h>
#include "wireless-security.h"
+#include "page-wireless.h"
#include "page-wireless-security.h"
+#include "nm-connection-editor.h"
+
+
+G_DEFINE_TYPE (CEPageWirelessSecurity, ce_page_wireless_security, CE_TYPE_PAGE)
+
#define S_NAME_COLUMN 0
#define S_SEC_COLUMN 1
@@ -89,29 +95,17 @@
static void
stuff_changed_cb (WirelessSecurity *sec, gpointer user_data)
{
- GtkWidget *page = GTK_WIDGET (user_data);
- GtkWidget *wireless_page;
- GtkWidget *widget;
- GladeXML *xml;
- const char *txt_ssid;
+ CEPageWirelessSecurity *self = CE_PAGE_WIRELESS_SECURITY (user_data);
GByteArray *ssid = NULL;
gboolean valid = FALSE;
- // FIXME: hack until a real per-page validation system gets implemented
- wireless_page = g_object_get_data (G_OBJECT (page), "wireless-page");
- xml = g_object_get_data (G_OBJECT (wireless_page), "glade-xml");
- widget = glade_xml_get_widget (xml, "wireless_ssid");
-
- txt_ssid = gtk_entry_get_text (GTK_ENTRY (widget));
- if (txt_ssid && strlen (txt_ssid)) {
- ssid = g_byte_array_sized_new (strlen (txt_ssid));
- g_byte_array_append (ssid, (const guint8 *) txt_ssid, strlen (txt_ssid));
+ ssid = ce_page_wireless_get_ssid (self->wireless_page);
+ if (ssid) {
valid = wireless_security_validate (sec, ssid);
g_byte_array_free (ssid, TRUE);
}
- widget = g_object_get_data (G_OBJECT (page), "ok-button");
- gtk_widget_set_sensitive (widget, valid);
+ gtk_widget_set_sensitive (self->ok_button, valid);
}
static void
@@ -131,22 +125,17 @@
wireless_security_combo_changed (GtkWidget *combo,
gpointer user_data)
{
- GtkWidget *page = GTK_WIDGET (user_data);
+ CEPageWirelessSecurity *self = CE_PAGE_WIRELESS_SECURITY (user_data);
GtkWidget *vbox;
GList *elt, *children;
GtkTreeIter iter;
GtkTreeModel *model;
WirelessSecurity *sec = NULL;
- GladeXML *xml;
- GtkSizeGroup *wsec_group;
-
- xml = g_object_get_data (G_OBJECT (page), "glade-xml");
- wsec_group = g_object_get_data (G_OBJECT (page), "size-group");
- vbox = glade_xml_get_widget (xml, "wireless_security_vbox");
+ vbox = glade_xml_get_widget (CE_PAGE (self)->xml, "wireless_security_vbox");
g_assert (vbox);
- wsec_size_group_clear (wsec_group);
+ wsec_size_group_clear (self->group);
/* Remove any previous wireless security widgets */
children = gtk_container_get_children (GTK_CONTAINER (vbox));
@@ -163,9 +152,9 @@
sec_widget = wireless_security_get_widget (sec);
g_assert (sec_widget);
- widget = glade_xml_get_widget (xml, "wireless_security_combo_label");
- gtk_size_group_add_widget (wsec_group, widget);
- wireless_security_add_to_size_group (sec, wsec_group);
+ widget = glade_xml_get_widget (CE_PAGE (self)->xml, "wireless_security_combo_label");
+ gtk_size_group_add_widget (self->group, widget);
+ wireless_security_add_to_size_group (sec, self->group);
gtk_container_add (GTK_CONTAINER (vbox), sec_widget);
wireless_security_unref (sec);
@@ -173,26 +162,25 @@
}
static void
-add_security_item (GtkWidget *page,
+add_security_item (CEPageWirelessSecurity *self,
WirelessSecurity *sec,
GtkListStore *model,
GtkTreeIter *iter,
const char *text)
{
- wireless_security_set_changed_notify (sec, stuff_changed_cb, page);
+ wireless_security_set_changed_notify (sec, stuff_changed_cb, self);
gtk_list_store_append (model, iter);
gtk_list_store_set (model, iter, S_NAME_COLUMN, text, S_SEC_COLUMN, sec, -1);
wireless_security_unref (sec);
}
-GtkWidget *
-page_wireless_security_new (NMConnection *connection,
- GtkWidget *ok_button,
- GtkWidget *wireless_page,
- const char **title)
+CEPageWirelessSecurity *
+ce_page_wireless_security_new (NMConnection *connection,
+ GtkWidget *ok_button,
+ CEPageWireless *wireless_page)
{
- GladeXML *xml;
- GtkWidget *page;
+ CEPageWirelessSecurity *self;
+ CEPage *parent;
NMSettingWireless *s_wireless;
NMSettingWirelessSecurity *s_wireless_sec;
gboolean is_adhoc = FALSE;
@@ -204,30 +192,40 @@
int item = 0;
const char *glade_file = GLADEDIR "/applet.glade";
GtkWidget *combo;
- GtkSizeGroup *wsec_group;
+
+ self = CE_PAGE_WIRELESS_SECURITY (g_object_new (CE_TYPE_PAGE_WIRELESS_SECURITY, NULL));
+ parent = CE_PAGE (self);
s_wireless = NM_SETTING_WIRELESS (nm_connection_get_setting (connection, NM_TYPE_SETTING_WIRELESS));
- g_assert (s_wireless);
+ if (!s_wireless) {
+ g_warning ("%s: Connection didn't have a wireless setting!", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
- xml = glade_xml_new (GLADEDIR "/ce-page-wireless-security.glade", "WirelessSecurityPage", NULL);
- g_return_val_if_fail (xml != NULL, NULL);
- *title = _("Wireless Security");
-
- page = glade_xml_get_widget (xml, "WirelessSecurityPage");
- g_return_val_if_fail (page != NULL, NULL);
- g_object_set_data_full (G_OBJECT (page),
- "glade-xml", xml,
- (GDestroyNotify) g_object_unref);
-
- wsec_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- g_object_set_data_full (G_OBJECT (page),
- "size-group", wsec_group,
- (GDestroyNotify) g_object_unref);
+ parent->xml = glade_xml_new (GLADEDIR "/ce-page-wireless-security.glade", "WirelessSecurityPage", NULL);
+ if (!parent->xml) {
+ g_warning ("%s: Couldn't load wireless security page glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
- g_object_set_data (G_OBJECT (page), "ok-button", ok_button);
- g_object_set_data (G_OBJECT (page), "wireless-page", wireless_page);
+ parent->page = glade_xml_get_widget (parent->xml, "WirelessSecurityPage");
+ if (!parent->page) {
+ g_warning ("%s: Couldn't load wireless security page from glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+ g_object_ref_sink (parent->page);
- combo = glade_xml_get_widget (xml, "wireless_security_combo");
+ parent->title = g_strdup (_("Wireless Security"));
+
+ self->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+ self->wireless_page = g_object_ref (wireless_page);
+ self->ok_button = g_object_ref (ok_button);
+
+ combo = glade_xml_get_widget (parent->xml, "wireless_security_combo");
dev_caps = NM_802_11_DEVICE_CAP_CIPHER_WEP40
| NM_802_11_DEVICE_CAP_CIPHER_WEP104
@@ -261,7 +259,7 @@
ws_wep_passphrase = ws_wep_passphrase_new (glade_file, connection);
if (ws_wep_passphrase) {
- add_security_item (page, WIRELESS_SECURITY (ws_wep_passphrase), sec_model,
+ add_security_item (self, WIRELESS_SECURITY (ws_wep_passphrase), sec_model,
&iter, _("WEP 128-bit Passphrase"));
if ((active < 0) && (default_type == NMU_SEC_STATIC_WEP))
active = item++;
@@ -269,7 +267,7 @@
ws_wep_hex = ws_wep_key_new (glade_file, connection, WEP_KEY_TYPE_HEX);
if (ws_wep_hex) {
- add_security_item (page, WIRELESS_SECURITY (ws_wep_hex), sec_model,
+ add_security_item (self, WIRELESS_SECURITY (ws_wep_hex), sec_model,
&iter, _("WEP 40/128-bit Hexadecimal"));
if ((active < 0) && (default_type == NMU_SEC_STATIC_WEP))
active = item++;
@@ -277,7 +275,7 @@
ws_wep_ascii = ws_wep_key_new (glade_file, connection, WEP_KEY_TYPE_ASCII);
if (ws_wep_ascii) {
- add_security_item (page, WIRELESS_SECURITY (ws_wep_ascii), sec_model,
+ add_security_item (self, WIRELESS_SECURITY (ws_wep_ascii), sec_model,
&iter, _("WEP 40/128-bit ASCII"));
if ((active < 0) && (default_type == NMU_SEC_STATIC_WEP))
active = item++;
@@ -289,7 +287,7 @@
ws_leap = ws_leap_new (glade_file, connection);
if (ws_leap) {
- add_security_item (page, WIRELESS_SECURITY (ws_leap), sec_model,
+ add_security_item (self, WIRELESS_SECURITY (ws_leap), sec_model,
&iter, _("LEAP"));
if ((active < 0) && (default_type == NMU_SEC_LEAP))
active = item++;
@@ -301,7 +299,7 @@
ws_dynamic_wep = ws_dynamic_wep_new (glade_file, connection);
if (ws_dynamic_wep) {
- add_security_item (page, WIRELESS_SECURITY (ws_dynamic_wep), sec_model,
+ add_security_item (self, WIRELESS_SECURITY (ws_dynamic_wep), sec_model,
&iter, _("Dynamic WEP (802.1x)"));
if ((active < 0) && (default_type == NMU_SEC_DYNAMIC_WEP))
active = item++;
@@ -314,7 +312,7 @@
ws_wpa_psk = ws_wpa_psk_new (glade_file, connection);
if (ws_wpa_psk) {
- add_security_item (page, WIRELESS_SECURITY (ws_wpa_psk), sec_model,
+ add_security_item (self, WIRELESS_SECURITY (ws_wpa_psk), sec_model,
&iter, _("WPA & WPA2 Personal"));
if ((active < 0) && ((default_type == NMU_SEC_WPA_PSK) || (default_type == NMU_SEC_WPA2_PSK)))
active = item++;
@@ -327,7 +325,7 @@
ws_wpa_eap = ws_wpa_eap_new (glade_file, connection);
if (ws_wpa_eap) {
- add_security_item (page, WIRELESS_SECURITY (ws_wpa_eap), sec_model,
+ add_security_item (self, WIRELESS_SECURITY (ws_wpa_eap), sec_model,
&iter, _("WPA & WPA2 Enterprise"));
if ((active < 0) && ((default_type == NMU_SEC_WPA_ENTERPRISE) || (default_type == NMU_SEC_WPA2_ENTERPRISE)))
active = item++;
@@ -338,13 +336,49 @@
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), active < 0 ? 0 : (guint32) active);
g_object_unref (G_OBJECT (sec_model));
- wireless_security_combo_changed (combo, page);
+ wireless_security_combo_changed (combo, self);
g_signal_connect (G_OBJECT (combo),
"changed",
GTK_SIGNAL_FUNC (wireless_security_combo_changed),
- page);
+ self);
- return page;
+ return self;
+}
+
+static void
+ce_page_wireless_security_init (CEPageWirelessSecurity *self)
+{
+ self->disposed = FALSE;
}
+static void
+dispose (GObject *object)
+{
+ CEPageWirelessSecurity *self = CE_PAGE_WIRELESS_SECURITY (object);
+
+ if (self->disposed)
+ return;
+
+ self->disposed = TRUE;
+
+ if (self->group)
+ g_object_unref (self->group);
+
+ if (self->ok_button)
+ g_object_unref (self->ok_button);
+
+ if (self->wireless_page)
+ g_object_unref (self->wireless_page);
+
+ G_OBJECT_CLASS (ce_page_wireless_security_parent_class)->dispose (object);
+}
+
+static void
+ce_page_wireless_security_class_init (CEPageWirelessSecurityClass *wireless_security_class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (wireless_security_class);
+
+ /* virtual methods */
+ object_class->dispose = dispose;
+}
Modified: trunk/src/connection-editor/page-wireless-security.h
==============================================================================
--- trunk/src/connection-editor/page-wireless-security.h (original)
+++ trunk/src/connection-editor/page-wireless-security.h Wed Feb 27 16:06:12 2008
@@ -25,10 +25,38 @@
#include "nm-connection-editor.h"
-GtkWidget * page_wireless_security_new (NMConnection *connection,
- GtkWidget *ok_button,
- GtkWidget *wireless_page,
- const char **title);
+#include <nm-connection.h>
+
+#include <glib/gtypes.h>
+#include <glib-object.h>
+
+#include "ce-page.h"
+
+#define CE_TYPE_PAGE_WIRELESS_SECURITY (ce_page_wireless_security_get_type ())
+#define CE_PAGE_WIRELESS_SECURITY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CE_TYPE_PAGE_WIRELESS_SECURITY, CEPageWirelessSecurity))
+#define CE_PAGE_WIRELESS_SECURITY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CE_TYPE_PAGE_WIRELESS_SECURITY, CEPageWirelessSecurityClass))
+#define CE_IS_PAGE_WIRELESS_SECURITY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CE_TYPE_PAGE_WIRELESS_SECURITY))
+#define CE_IS_PAGE_WIRELESS_SECURITY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), CE_TYPE_PAGE_WIRELESS_SECURITY))
+#define CE_PAGE_WIRELESS_SECURITY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CE_TYPE_PAGE_WIRELESS_SECURITY, CEPageWirelessSecurityClass))
+
+typedef struct {
+ CEPage parent;
+
+ gboolean disposed;
+ GtkSizeGroup *group;
+ GtkWidget *ok_button;
+ CEPageWireless *wireless_page;
+} CEPageWirelessSecurity;
+
+typedef struct {
+ CEPageClass parent;
+} CEPageWirelessSecurityClass;
+
+GType ce_page_wireless_security_get_type (void);
+
+CEPageWirelessSecurity *ce_page_wireless_security_new (NMConnection *connection,
+ GtkWidget *ok_button,
+ CEPageWireless *wireless_page);
#endif /* __PAGE_WIRELESS_SECURITY_H__ */
Modified: trunk/src/connection-editor/page-wireless.c
==============================================================================
--- trunk/src/connection-editor/page-wireless.c (original)
+++ trunk/src/connection-editor/page-wireless.c Wed Feb 27 16:06:12 2008
@@ -32,15 +32,16 @@
#include "page-wireless.h"
#include "utils.h"
+#include "nm-connection-editor.h"
+
+G_DEFINE_TYPE (CEPageWireless, ce_page_wireless, CE_TYPE_PAGE)
static gboolean
-band_helper (GtkWidget *page, gboolean *aband, gboolean *gband)
+band_helper (CEPageWireless *self, gboolean *aband, gboolean *gband)
{
- GladeXML *xml;
GtkWidget *band_combo;
- xml = g_object_get_data (G_OBJECT (page), "glade-xml");
- band_combo = glade_xml_get_widget (xml, "wireless_band");
+ band_combo = glade_xml_get_widget (CE_PAGE (self)->xml, "wireless_band");
switch (gtk_combo_box_get_active (GTK_COMBO_BOX (band_combo))) {
case 1: /* A */
@@ -57,13 +58,13 @@
static gint
channel_spin_input_cb (GtkSpinButton *spin, gdouble *new_val, gpointer user_data)
{
- GtkWidget *page = GTK_WIDGET (user_data);
+ CEPageWireless *self = CE_PAGE_WIRELESS (user_data);
gdouble channel;
guint32 int_channel = 0;
gboolean aband = TRUE;
gboolean gband = TRUE;
- if (!band_helper (page, &aband, &gband))
+ if (!band_helper (self, &aband, &gband))
return GTK_INPUT_ERROR;
channel = g_strtod (gtk_entry_get_text (GTK_ENTRY (spin)), NULL);
@@ -82,17 +83,14 @@
static gint
channel_spin_output_cb (GtkSpinButton *spin, gpointer user_data)
{
- GtkWidget *page = GTK_WIDGET (user_data);
+ CEPageWireless *self = CE_PAGE_WIRELESS (user_data);
int channel;
gchar *buf = NULL;
guint32 freq;
gboolean aband = TRUE;
gboolean gband = TRUE;
- guint32 last_channel;
-
- last_channel = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (page), "last-channel"));
- if (!band_helper (page, &aband, &gband))
+ if (!band_helper (self, &aband, &gband))
buf = g_strdup (_("default"));
else {
channel = gtk_spin_button_get_value_as_int (spin);
@@ -103,9 +101,9 @@
if (freq == -1) {
int direction = 0;
- if (last_channel < channel)
+ if (self->last_channel < channel)
direction = 1;
- else if (last_channel > channel)
+ else if (self->last_channel > channel)
direction = -1;
channel = utils_find_next_channel (channel, direction, aband ? "a" : "bg");
freq = utils_channel_to_freq (channel, aband ? "a" : "bg");
@@ -117,7 +115,7 @@
}
buf = g_strdup_printf (_("%u (%u MHz)"), channel, freq);
}
- g_object_set_data (G_OBJECT (page), "last-channel", GUINT_TO_POINTER (channel));
+ self->last_channel = channel;
}
if (strcmp (buf, gtk_entry_get_text (GTK_ENTRY (spin))))
@@ -131,14 +129,12 @@
static void
band_value_changed_cb (GtkComboBox *box, gpointer user_data)
{
- GtkWidget *page = GTK_WIDGET (user_data);
+ CEPageWireless *self = CE_PAGE_WIRELESS (user_data);
GtkWidget *widget;
- GladeXML *xml;
- g_object_set_data (G_OBJECT (page), "last-channel", GUINT_TO_POINTER (0));
+ self->last_channel = 0;
- xml = g_object_get_data (G_OBJECT (page), "glade-xml");
- widget = glade_xml_get_widget (xml, "wireless_channel");
+ widget = glade_xml_get_widget (CE_PAGE (self)->xml, "wireless_channel");
gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), 0);
switch (gtk_combo_box_get_active (GTK_COMBO_BOX (box))) {
@@ -152,12 +148,12 @@
}
}
-GtkWidget *
-page_wireless_new (NMConnection *connection, const char **title)
+CEPageWireless *
+ce_page_wireless_new (NMConnection *connection)
{
- GladeXML *xml;
+ CEPageWireless *self;
+ CEPage *parent;
NMSettingWireless *s_wireless;
- GtkWidget *page;
GtkWidget *mode;
GtkWidget *band;
GtkWidget *channel;
@@ -171,43 +167,57 @@
int mtu_def;
char *utf8_ssid;
+ self = CE_PAGE_WIRELESS (g_object_new (CE_TYPE_PAGE_WIRELESS, NULL));
+ parent = CE_PAGE (self);
+
s_wireless = NM_SETTING_WIRELESS (nm_connection_get_setting (connection, NM_TYPE_SETTING_WIRELESS));
- g_return_val_if_fail (s_wireless != NULL, NULL);
+ if (!s_wireless) {
+ g_warning ("%s: Connection didn't have a wireless setting!", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+
+ parent->xml = glade_xml_new (GLADEDIR "/ce-page-wireless.glade", "WirelessPage", NULL);
+ if (!parent->xml) {
+ g_warning ("%s: Couldn't load wireless page glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
- xml = glade_xml_new (GLADEDIR "/ce-page-wireless.glade", "WirelessPage", NULL);
- g_return_val_if_fail (xml != NULL, NULL);
- *title = _("Wireless");
-
- page = glade_xml_get_widget (xml, "WirelessPage");
- g_return_val_if_fail (page != NULL, NULL);
- g_object_set_data_full (G_OBJECT (page),
- "glade-xml", xml,
- (GDestroyNotify) g_object_unref);
+ parent->page = glade_xml_get_widget (parent->xml, "WirelessPage");
+ if (!parent->page) {
+ g_warning ("%s: Couldn't load wireless page from glade file.", __func__);
+ g_object_unref (self);
+ return NULL;
+ }
+ g_object_ref_sink (parent->page);
+
+ parent->title = g_strdup (_("Wireless"));
- rate = glade_xml_get_widget (xml, "wireless_rate");
+ rate = glade_xml_get_widget (parent->xml, "wireless_rate");
rate_def = ce_get_property_default (NM_SETTING (s_wireless), NM_SETTING_WIRELESS_RATE);
g_signal_connect (G_OBJECT (rate), "output",
(GCallback) ce_spin_output_with_default,
GINT_TO_POINTER (rate_def));
- tx_power = glade_xml_get_widget (xml, "wireless_tx_power");
+ tx_power = glade_xml_get_widget (parent->xml, "wireless_tx_power");
tx_power_def = ce_get_property_default (NM_SETTING (s_wireless), NM_SETTING_WIRELESS_TX_POWER);
g_signal_connect (G_OBJECT (tx_power), "output",
(GCallback) ce_spin_output_with_default,
GINT_TO_POINTER (tx_power_def));
- mtu = glade_xml_get_widget (xml, "wireless_mtu");
+ mtu = glade_xml_get_widget (parent->xml, "wireless_mtu");
mtu_def = ce_get_property_default (NM_SETTING (s_wireless), NM_SETTING_WIRELESS_MTU);
g_signal_connect (G_OBJECT (mtu), "output",
(GCallback) ce_spin_output_with_default,
GINT_TO_POINTER (mtu_def));
- ssid = glade_xml_get_widget (xml, "wireless_ssid");
+ ssid = glade_xml_get_widget (parent->xml, "wireless_ssid");
utf8_ssid = nm_utils_ssid_to_utf8 ((const char *) s_wireless->ssid->data, s_wireless->ssid->len);
gtk_entry_set_text (GTK_ENTRY (ssid), utf8_ssid);
g_free (utf8_ssid);
- mode = glade_xml_get_widget (xml, "wireless_mode");
+ mode = glade_xml_get_widget (parent->xml, "wireless_mode");
if (!strcmp (s_wireless->mode ? s_wireless->mode : "", "infrastructure"))
gtk_combo_box_set_active (GTK_COMBO_BOX (mode), 0);
else if (!strcmp (s_wireless->mode ? s_wireless->mode : "", "adhoc"))
@@ -215,13 +225,13 @@
else
gtk_combo_box_set_active (GTK_COMBO_BOX (mode), -1);
- channel = glade_xml_get_widget (xml, "wireless_channel");
+ channel = glade_xml_get_widget (parent->xml, "wireless_channel");
g_signal_connect (G_OBJECT (channel), "output",
(GCallback) channel_spin_output_cb,
- page);
+ self);
g_signal_connect (G_OBJECT (channel), "input",
(GCallback) channel_spin_input_cb,
- page);
+ self);
gtk_widget_set_sensitive (channel, FALSE);
if (s_wireless->band) {
@@ -233,15 +243,15 @@
gtk_widget_set_sensitive (channel, TRUE);
}
}
- band = glade_xml_get_widget (xml, "wireless_band");
+ band = glade_xml_get_widget (parent->xml, "wireless_band");
gtk_combo_box_set_active (GTK_COMBO_BOX (band), band_idx);
g_signal_connect (G_OBJECT (band), "changed",
(GCallback) band_value_changed_cb,
- page);
+ self);
/* Update the channel _after_ the band has been set so that it gets
* the right values */
- g_object_set_data (G_OBJECT (page), "last-channel", GUINT_TO_POINTER (s_wireless->channel));
+ self->last_channel = s_wireless->channel;
gtk_spin_button_set_value (GTK_SPIN_BUTTON (channel), (gdouble) s_wireless->channel);
/* FIXME: BSSID */
@@ -251,7 +261,37 @@
gtk_spin_button_set_value (GTK_SPIN_BUTTON (tx_power), (gdouble) s_wireless->tx_power);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (mtu), (gdouble) s_wireless->mtu);
- return page;
+ return self;
}
+GByteArray *
+ce_page_wireless_get_ssid (CEPageWireless *self)
+{
+ GtkWidget *widget;
+ const char *txt_ssid;
+ GByteArray *ssid;
+
+ g_return_val_if_fail (CE_IS_PAGE_WIRELESS (self), NULL);
+
+ widget = glade_xml_get_widget (CE_PAGE (self)->xml, "wireless_ssid");
+ g_return_val_if_fail (widget != NULL, NULL);
+
+ txt_ssid = gtk_entry_get_text (GTK_ENTRY (widget));
+ if (!txt_ssid || !strlen (txt_ssid))
+ return NULL;
+
+ ssid = g_byte_array_sized_new (strlen (txt_ssid));
+ g_byte_array_append (ssid, (const guint8 *) txt_ssid, strlen (txt_ssid));
+ return ssid;
+}
+
+static void
+ce_page_wireless_init (CEPageWireless *self)
+{
+}
+
+static void
+ce_page_wireless_class_init (CEPageWirelessClass *wired_class)
+{
+}
Modified: trunk/src/connection-editor/page-wireless.h
==============================================================================
--- trunk/src/connection-editor/page-wireless.h (original)
+++ trunk/src/connection-editor/page-wireless.h Wed Feb 27 16:06:12 2008
@@ -23,10 +23,36 @@
#ifndef __PAGE_WIRELESS_H__
#define __PAGE_WIRELESS_H__
-#include "nm-connection-editor.h"
+#include <nm-connection.h>
-GtkWidget *page_wireless_new (NMConnection *connection, const char **title);
+#include <glib/gtypes.h>
+#include <glib-object.h>
+#include "ce-page.h"
+
+#define CE_TYPE_PAGE_WIRELESS (ce_page_wireless_get_type ())
+#define CE_PAGE_WIRELESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CE_TYPE_PAGE_WIRELESS, CEPageWireless))
+#define CE_PAGE_WIRELESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CE_TYPE_PAGE_WIRELESS, CEPageWirelessClass))
+#define CE_IS_PAGE_WIRELESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CE_TYPE_PAGE_WIRELESS))
+#define CE_IS_PAGE_WIRELESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), CE_TYPE_PAGE_WIRELESS))
+#define CE_PAGE_WIRELESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CE_TYPE_PAGE_WIRELESS, CEPageWirelessClass))
+
+typedef struct {
+ CEPage parent;
+
+ int last_channel;
+} CEPageWireless;
+
+typedef struct {
+ CEPageClass parent;
+} CEPageWirelessClass;
+
+GType ce_page_wireless_get_type (void);
+
+CEPageWireless *ce_page_wireless_new (NMConnection *connection);
+
+/* Caller must free returned array */
+GByteArray *ce_page_wireless_get_ssid (CEPageWireless *self);
#endif /* __PAGE_WIRELESS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]