gnome-mud r787 - in trunk: . src
- From: lharris svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-mud r787 - in trunk: . src
- Date: Mon, 9 Mar 2009 23:35:33 +0000 (UTC)
Author: lharris
Date: Mon Mar 9 23:35:33 2009
New Revision: 787
URL: http://svn.gnome.org/viewvc/gnome-mud?rev=787&view=rev
Log:
Updated MudLog and MudProfileWindow GObject code.
Modified:
trunk/ChangeLog
trunk/src/debug-logger.c
trunk/src/mud-connection-view.c
trunk/src/mud-connections.c
trunk/src/mud-log.c
trunk/src/mud-log.h
trunk/src/mud-telnet.c
trunk/src/mud-tray.c
trunk/src/mud-window-profile.c
trunk/src/mud-window-profile.h
trunk/src/mud-window.c
trunk/src/mud-window.h
Modified: trunk/src/debug-logger.c
==============================================================================
--- trunk/src/debug-logger.c (original)
+++ trunk/src/debug-logger.c Mon Mar 9 23:35:33 2009
@@ -822,6 +822,13 @@
switch(log_level)
{
+ case G_LOG_LEVEL_ERROR:
+ type = g_string_append(type, _("Error"));
+ color = g_string_append(color, logger->critical_color);
+
+ g_printf(_("ERROR: %s\n"), message);
+ break;
+
case G_LOG_LEVEL_CRITICAL:
type = g_string_append(type, _("Critical"));
color = g_string_append(color, logger->critical_color);
@@ -901,6 +908,10 @@
{
switch(log_level)
{
+ case G_LOG_LEVEL_ERROR:
+ g_printf(_("ERROR: %s\n"), message);
+ break;
+
case G_LOG_LEVEL_CRITICAL:
g_printf(_("CRITICAL ERROR: %s\n"), message);
break;
Modified: trunk/src/mud-connection-view.c
==============================================================================
--- trunk/src/mud-connection-view.c (original)
+++ trunk/src/mud-connection-view.c Mon Mar 9 23:35:33 2009
@@ -38,12 +38,6 @@
#include "mud-log.h"
#include "mud-parse-base.h"
#include "mud-telnet.h"
-#include "mud-telnet-zmp.h"
-#include "mud-telnet-msp.h"
-
-#ifdef ENABLE_MCCP
-#include "mud-telnet-mccp.h"
-#endif
#ifdef ENABLE_GST
#include "mud-telnet-msp.h"
@@ -1012,7 +1006,9 @@
view->priv->tray = MUD_TRAY(tray);
- view->priv->log = mud_log_new(name);
+ view->priv->log = g_object_new(MUD_TYPE_LOG,
+ "mud-name", name,
+ NULL);
buf = g_strdup_printf(_("*** Making connection to %s, port %d.\n"),
view->priv->hostname, view->priv->port);
Modified: trunk/src/mud-connections.c
==============================================================================
--- trunk/src/mud-connections.c (original)
+++ trunk/src/mud-connections.c Mon Mar 9 23:35:33 2009
@@ -560,7 +560,10 @@
g_strfreev(mud_tuple);
g_object_unref(client);
- return;
+ g_list_foreach(selected, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free(selected);
+
+ return;
}
g_strfreev(mud_tuple);
Modified: trunk/src/mud-log.c
==============================================================================
--- trunk/src/mud-log.c (original)
+++ trunk/src/mud-log.c Mon Mar 9 23:35:33 2009
@@ -37,67 +37,110 @@
{
gboolean active;
- gchar *name;
gchar *filename;
gchar *dir;
FILE *logfile;
};
-GType mud_log_get_type (void);
+/* Property Identifiers */
+enum
+{
+ PROP_MUD_LOG_0,
+ PROP_MUD_NAME
+};
+
+/* Define the Type */
+G_DEFINE_TYPE(MudLog, mud_log, G_TYPE_OBJECT);
+/* Class Functions */
static void mud_log_init (MudLog *log);
static void mud_log_class_init (MudLogClass *klass);
static void mud_log_finalize (GObject *object);
-
-void mud_log_write(MudLog *log, gchar *data, gsize size);
-void mud_log_remove(MudLog *log);
+static GObject *mud_log_constructor (GType gtype,
+ guint n_properties,
+ GObjectConstructParam *properties);
+static void mud_log_set_property(GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void mud_log_get_property(GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+
+/* Private Methods */
+static void mud_log_write(MudLog *log, gchar *data, gsize size);
+static void mud_log_remove(MudLog *log);
// MudLog class functions
-GType
-mud_log_get_type (void)
+static void
+mud_log_class_init (MudLogClass *klass)
{
- static GType object_type = 0;
-
- g_type_init();
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
- if (!object_type)
- {
- static const GTypeInfo object_info =
- {
- sizeof (MudLogClass),
- NULL,
- NULL,
- (GClassInitFunc) mud_log_class_init,
- NULL,
- NULL,
- sizeof (MudLog),
- 0,
- (GInstanceInitFunc) mud_log_init,
- };
+ /* Override base object constructor */
+ object_class->constructor = mud_log_constructor;
- object_type = g_type_register_static(G_TYPE_OBJECT, "MudLog", &object_info, 0);
- }
+ /* Override base object's finalize */
+ object_class->finalize = mud_log_finalize;
- return object_type;
+ /* Override base object property methods */
+ object_class->set_property = mud_log_set_property;
+ object_class->get_property = mud_log_get_property;
+
+ /* Add private data to class */
+ g_type_class_add_private(klass, sizeof(MudLogPrivate));
+
+ /* Install Properties */
+ g_object_class_install_property(object_class,
+ PROP_MUD_NAME,
+ g_param_spec_string("mud-name",
+ "mud name",
+ "name of mud we are logging",
+ "Unnamed",
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
}
static void
mud_log_init (MudLog *log)
{
- log->priv = g_new0(MudLogPrivate, 1);
+ log->priv = MUD_LOG_GET_PRIVATE(log);
+
+ /* Set defaults for Public Members */
+ log->mud_name = NULL;
+ /* Set defaults for Private Members */
log->priv->active = FALSE;
log->priv->logfile = NULL;
- log->priv->name = NULL;
}
-static void
-mud_log_class_init (MudLogClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
+static GObject *
+mud_log_constructor (GType gtype,
+ guint n_properties,
+ GObjectConstructParam *properties)
+{
+ guint i;
+ MudLog *self;
+ GObject *obj;
- object_class->finalize = mud_log_finalize;
+ MudLogClass *klass;
+ GObjectClass *parent_class;
+
+ /* Chain up to parent constructor */
+ klass = MUD_LOG_CLASS( g_type_class_peek(MUD_TYPE_LOG) );
+ parent_class = G_OBJECT_CLASS( g_type_class_peek_parent(klass) );
+ obj = parent_class->constructor(gtype, n_properties, properties);
+
+ self = MUD_LOG(obj);
+
+ if(!self->mud_name)
+ {
+ g_printf("ERROR: Tried to instantiate MudLog without passing mud name.\n");
+ g_error("Tried to instantiate MudLog without passing mud name.\n");
+ }
+
+ return obj;
}
static void
@@ -111,17 +154,72 @@
if(MLog->priv->active)
mud_log_close(MLog);
- if(MLog->priv->name)
- g_free(MLog->priv->name);
-
- g_free(MLog->priv);
+ if(MLog->mud_name)
+ g_free(MLog->mud_name);
parent_class = g_type_class_peek_parent(G_OBJECT_GET_CLASS(object));
parent_class->finalize(object);
}
-// MudLog Methods
+static void
+mud_log_set_property(GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ MudLog *self;
+
+ gchar *new_mud_name;
+
+ self = MUD_LOG(object);
+
+ switch(prop_id)
+ {
+ /* Parent is Construct Only */
+ case PROP_MUD_NAME:
+ new_mud_name = g_value_dup_string(value);
+
+ if(!self->mud_name)
+ self->mud_name = g_strdup(new_mud_name);
+ else if( strcmp(self->mud_name, new_mud_name) != 0)
+ {
+ g_free(self->mud_name);
+ self->mud_name = g_strdup(new_mud_name);
+ }
+
+ g_free(new_mud_name);
+
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+mud_log_get_property(GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ MudLog *self;
+
+ self = MUD_LOG(object);
+
+ switch(prop_id)
+ {
+ case PROP_MUD_NAME:
+ g_value_set_string(value, self->mud_name);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+/* Public Methods */
void
mud_log_open(MudLog *log)
{
@@ -129,7 +227,9 @@
gchar nameBuf[1024];
time_t t;
- g_snprintf(buf, 1024, "%s/.gnome-mud/logs/%s", g_get_home_dir(), log->priv->name);
+ g_return_if_fail(MUD_IS_LOG(log));
+
+ g_snprintf(buf, 1024, "%s/.gnome-mud/logs/%s", g_get_home_dir(), log->mud_name);
log->priv->dir = g_strdup(buf);
@@ -137,7 +237,7 @@
if(mkdir(buf, 0777 ) == -1)
return;
- g_snprintf(nameBuf, 1024, "%s.log", log->priv->name);
+ g_snprintf(nameBuf, 1024, "%s.log", log->mud_name);
log->priv->filename = g_build_path( G_DIR_SEPARATOR_S, log->priv->dir, nameBuf, NULL);
log->priv->logfile = fopen(log->priv->filename, "a");
@@ -155,34 +255,13 @@
}
void
-mud_log_write(MudLog *log, gchar *data, gsize size)
-{
- gchar *stripData;
- gint stripSize = 0;
- gsize write_size;
-
- if(log->priv->logfile == NULL || data == NULL)
- return;
-
- stripData = utils_strip_ansi((const gchar *)data);
- stripSize = strlen(stripData);
-
- write_size = fwrite(stripData, 1, stripSize, log->priv->logfile);
-
- if(write_size != stripSize)
- g_critical(_("Could not write data to log file!"));
-
- g_free(stripData);
-}
-
-void
mud_log_close(MudLog *log)
{
gchar buf[255];
time_t t;
- if(log->priv->logfile == NULL)
- return;
+ g_return_if_fail(MUD_IS_LOG(log));
+ g_return_if_fail(log->priv->logfile != NULL);
time(&t);
strftime(buf, 255,
@@ -195,42 +274,55 @@
log->priv->active = FALSE;
}
-void
-mud_log_remove(MudLog *log)
-{
- if(log->priv->active)
- mud_log_close(log);
-
- unlink(log->priv->filename);
-}
-
gboolean
mud_log_islogging(MudLog *log)
{
+ if(!log)
+ return FALSE;
+
return log->priv->active;
}
-// MudLog Utility Functions
-
void
mud_log_write_hook(MudLog *log, gchar *data, gint length)
{
+ g_return_if_fail(MUD_IS_LOG(log));
+
if(log->priv->active)
mud_log_write(log, data, length);
}
-// Instantiate MudLog
-MudLog*
-mud_log_new(gchar *mudName)
+/* Private Methods */
+static void
+mud_log_remove(MudLog *log)
{
- MudLog *MLog;
+ g_return_if_fail(MUD_IS_LOG(log));
- if( mudName == NULL)
- return NULL;
+ if(log->priv->active)
+ mud_log_close(log);
- MLog = g_object_new(MUD_TYPE_LOG, NULL);
+ unlink(log->priv->filename);
+}
- MLog->priv->name = g_strdup(mudName);
+static void
+mud_log_write(MudLog *log, gchar *data, gsize size)
+{
+ gchar *stripData;
+ gint stripSize = 0;
+ gsize write_size;
- return MLog;
+ g_return_if_fail(MUD_IS_LOG(log));
+ g_return_if_fail(log->priv->logfile != NULL);
+ g_return_if_fail(data != NULL);
+
+ stripData = utils_strip_ansi((const gchar *)data);
+ stripSize = strlen(stripData);
+
+ write_size = fwrite(stripData, 1, stripSize, log->priv->logfile);
+
+ if(write_size != stripSize)
+ g_critical(_("Could not write data to log file!"));
+
+ g_free(stripData);
}
+
Modified: trunk/src/mud-log.h
==============================================================================
--- trunk/src/mud-log.h (original)
+++ trunk/src/mud-log.h Mon Mar 9 23:35:33 2009
@@ -30,29 +30,32 @@
#define MUD_IS_LOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), MUD_TYPE_LOG))
#define MUD_IS_LOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MUD_TYPE_LOG))
#define MUD_LOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MUD_TYPE_LOG, MudLogClass))
+#define MUD_LOG_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MUD_TYPE_LOG, MudLogPrivate))
typedef struct _MudLog MudLog;
typedef struct _MudLogClass MudLogClass;
typedef struct _MudLogPrivate MudLogPrivate;
-struct _MudLog
+struct _MudLogClass
{
- GObject parent_instance;
-
- MudLogPrivate *priv;
+ GObjectClass parent_class;
};
-struct _MudLogClass
+struct _MudLog
{
- GObjectClass parent_class;
-};
+ GObject parent_instance;
+
+ /*< Private >*/
+ MudLogPrivate *priv;
-GType mud_log_get_type (void) G_GNUC_CONST;
+ /*< Public >*/
+ gchar *mud_name;
+};
-MudLog *mud_log_new(gchar *mudName);
+GType mud_log_get_type (void);
+/*< Public Methods >*/
void mud_log_write_hook(MudLog *log, gchar *data, gint length);
-
void mud_log_open(MudLog *log);
void mud_log_close(MudLog *log);
gboolean mud_log_islogging(MudLog *log);
Modified: trunk/src/mud-telnet.c
==============================================================================
--- trunk/src/mud-telnet.c (original)
+++ trunk/src/mud-telnet.c Mon Mar 9 23:35:33 2009
@@ -581,6 +581,7 @@
opt = mud_telnet_get_telopt_string((guchar)telnet->buffer->str[i]);
g_log("Telnet", G_LOG_LEVEL_MESSAGE, "Recieved: WONT %s", opt);
g_free(opt);
+
mud_telnet_handle_negative_nego(
telnet,
(guchar)telnet->buffer->str[i],
@@ -677,24 +678,24 @@
switch (ch)
{
- case TEL_WILL:
- string = g_string_append(string, "WILL");
- break;
- case TEL_WONT:
- string = g_string_append(string, "WONT");
- break;
- case TEL_DO:
- string = g_string_append(string, "DO");
- break;
- case TEL_DONT:
- string = g_string_append(string, "DONT");
- break;
- case TEL_IAC:
- string = g_string_append(string, "IAC");
- break;
- default:
- string = g_string_append_c(string,ch);
- break;
+ case TEL_WILL:
+ string = g_string_append(string, "WILL");
+ break;
+ case TEL_WONT:
+ string = g_string_append(string, "WONT");
+ break;
+ case TEL_DO:
+ string = g_string_append(string, "DO");
+ break;
+ case TEL_DONT:
+ string = g_string_append(string, "DONT");
+ break;
+ case TEL_IAC:
+ string = g_string_append(string, "IAC");
+ break;
+ default:
+ string = g_string_append_c(string,ch);
+ break;
}
ret = g_strdup(string->str);
@@ -710,56 +711,57 @@
switch (ch)
{
- case TELOPT_ECHO:
- string = g_string_append(string, "ECHO");
- break;
-
- case TELOPT_TTYPE:
- string = g_string_append(string, "TTYPE");
- break;
-
- case TELOPT_EOR:
- string = g_string_append(string, "END-OF-RECORD");
- break;
-
- case TELOPT_NAWS:
- string = g_string_append(string, "NAWS");
- break;
-
- case TELOPT_CHARSET:
- string = g_string_append(string, "CHARSET");
- break;
-
- case TELOPT_MCCP:
- string = g_string_append(string, "COMPRESS");
- break;
-
- case TELOPT_MCCP2:
- string = g_string_append(string, "COMPRESS2");
- break;
-
- case TELOPT_CLIENT:
- string = g_string_append(string, "CLIENT");
- break;
-
- case TELOPT_CLIENTVER:
- string = g_string_append(string, "CLIENTVER");
- break;
-
- case TELOPT_MSP:
- string = g_string_append(string, "MSP");
- break;
-
- case TELOPT_MXP:
- string = g_string_append(string, "MXP");
- break;
-
- case TELOPT_ZMP:
- string = g_string_append(string, "ZMP");
- break;
-
- default:
- g_string_printf(string, "Dec: %d Hex: %x Ascii: %c", ch, ch, ch);
+ case TELOPT_ECHO:
+ string = g_string_append(string, "ECHO");
+ break;
+
+ case TELOPT_TTYPE:
+ string = g_string_append(string, "TTYPE");
+ break;
+
+ case TELOPT_EOR:
+ string = g_string_append(string, "END-OF-RECORD");
+ break;
+
+ case TELOPT_NAWS:
+ string = g_string_append(string, "NAWS");
+ break;
+
+ case TELOPT_CHARSET:
+ string = g_string_append(string, "CHARSET");
+ break;
+
+ case TELOPT_MCCP:
+ string = g_string_append(string, "COMPRESS");
+ break;
+
+ case TELOPT_MCCP2:
+ string = g_string_append(string, "COMPRESS2");
+ break;
+
+ case TELOPT_CLIENT:
+ string = g_string_append(string, "CLIENT");
+ break;
+
+ case TELOPT_CLIENTVER:
+ string = g_string_append(string, "CLIENTVER");
+ break;
+
+ case TELOPT_MSP:
+ string = g_string_append(string, "MSP");
+ break;
+
+ case TELOPT_MXP:
+ string = g_string_append(string, "MXP");
+ break;
+
+ case TELOPT_ZMP:
+ string = g_string_append(string, "ZMP");
+ break;
+
+ default:
+ g_string_printf(string, "Dec: %d Hex: %x Ascii: %c", ch, ch, ch);
+ break;
}
return g_string_free(string, FALSE);
@@ -1114,3 +1116,4 @@
return -1;
}
+
Modified: trunk/src/mud-tray.c
==============================================================================
--- trunk/src/mud-tray.c (original)
+++ trunk/src/mud-tray.c Mon Mar 9 23:35:33 2009
@@ -135,7 +135,10 @@
self = MUD_TRAY(obj);
if(!self->parent_window)
+ {
+ g_printf("ERROR: Tried to instantiate MudTray without passing parent GtkWindow\n");
g_error("Tried to instantiate MudTray without passing parent GtkWindow\n");
+ }
mud_tray_create(self);
Modified: trunk/src/mud-window-profile.c
==============================================================================
--- trunk/src/mud-window-profile.c (original)
+++ trunk/src/mud-window-profile.c Mon Mar 9 23:35:33 2009
@@ -34,198 +34,308 @@
struct _MudProfileWindowPrivate
{
- MudWindow *parent;
+ GtkWidget *window;
+ GtkWidget *treeview;
- GtkWidget *window;
- GtkWidget *treeview;
+ GtkWidget *btnAdd;
+ GtkWidget *btnDelete;
- GtkWidget *btnAdd;
- GtkWidget *btnDelete;
+ gint CurrSelRow;
+ gchar *CurrSelRowText;
- gint CurrSelRow;
- gchar *CurrSelRowText;
+ GtkTreeStore *treestore;
+ GtkTreeViewColumn *col;
+ GtkCellRenderer *renderer;
+};
- GtkTreeStore *treestore;
- GtkTreeViewColumn *col;
- GtkCellRenderer *renderer;
+/* Model Columns */
+enum
+{
+ NAME_COLUMN,
+ N_COLUMNS
};
+/* Property Identifiers */
enum
{
- NAME_COLUMN,
- N_COLUMNS
+ PROP_MUD_PROFILE_WINDOW_0,
+ PROP_PARENT_WINDOW
};
-GType mud_profile_window_get_type (void);
+/* Create the Type */
+G_DEFINE_TYPE(MudProfileWindow, mud_profile_window, G_TYPE_OBJECT);
+
+/* Class Functions */
static void mud_profile_window_init (MudProfileWindow *preferences);
static void mud_profile_window_class_init (MudProfileWindowClass *klass);
static void mud_profile_window_finalize (GObject *object);
+static GObject *mud_profile_window_constructor (GType gtype,
+ guint n_properties,
+ GObjectConstructParam *properties);
+static void mud_profile_window_set_property(GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void mud_profile_window_get_property(GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+/* Callbacks */
static gint mud_profile_window_close_cb(GtkWidget *widget, MudProfileWindow *profwin);
static void mud_profile_window_add_cb(GtkWidget *widget, MudProfileWindow *profwin);
static void mud_profile_window_del_cb(GtkWidget *widget, MudProfileWindow *profwin);
-
-static void mud_profile_window_populate_treeview(MudProfileWindow *profwin);
-
static gboolean mud_profile_window_tree_select_cb(GtkTreeSelection *selection,
GtkTreeModel *model,
GtkTreePath *path,
gboolean path_currently_selected,
gpointer userdata);
+/* Private Methods */
+static void mud_profile_window_populate_treeview(MudProfileWindow *profwin);
-// MudProfile class functions
-GType
-mud_profile_window_get_type (void)
-{
- static GType object_type = 0;
-
- g_type_init();
-
- if (!object_type)
- {
- static const GTypeInfo object_info =
- {
- sizeof (MudProfileWindowClass),
- NULL,
- NULL,
- (GClassInitFunc) mud_profile_window_class_init,
- NULL,
- NULL,
- sizeof (MudProfileWindow),
- 0,
- (GInstanceInitFunc) mud_profile_window_init,
- };
-
- object_type = g_type_register_static(G_TYPE_OBJECT, "MudProfileWindow", &object_info, 0);
- }
-
- return object_type;
-}
-
+/* Class Functions */
static void
-mud_profile_window_init (MudProfileWindow *profwin)
+mud_profile_window_class_init (MudProfileWindowClass *klass)
{
- GladeXML *glade;
-
- profwin->priv = g_new0(MudProfileWindowPrivate, 1);
-
- glade = glade_xml_new(GLADEDIR "/prefs.glade", "profiles_window", NULL);
-
- profwin->priv->window = glade_xml_get_widget(glade, "profiles_window");
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
- profwin->priv->btnAdd = glade_xml_get_widget(glade, "btnAdd");
- profwin->priv->btnDelete = glade_xml_get_widget(glade, "btnDelete");
+ /* Override base object constructor */
+ object_class->constructor = mud_profile_window_constructor;
- profwin->priv->treeview = glade_xml_get_widget(glade, "profilesView");
- profwin->priv->treestore = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING);
+ /* Override base object's finalize */
+ object_class->finalize = mud_profile_window_finalize;
- gtk_tree_view_set_model(GTK_TREE_VIEW(profwin->priv->treeview), GTK_TREE_MODEL(profwin->priv->treestore));
+ /* Override base object property methods */
+ object_class->set_property = mud_profile_window_set_property;
+ object_class->get_property = mud_profile_window_get_property;
+
+ /* Add private data to class */
+ g_type_class_add_private(klass, sizeof(MudProfileWindowPrivate));
+
+ /* Install Properties */
+ g_object_class_install_property(object_class,
+ PROP_PARENT_WINDOW,
+ g_param_spec_object("parent-window",
+ "parent gtk window",
+ "the gtk window parent of this window",
+ TYPE_MUD_WINDOW,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+}
- gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(profwin->priv->treeview), TRUE);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(profwin->priv->treeview), FALSE);
- profwin->priv->col = gtk_tree_view_column_new();
+static void
+mud_profile_window_init (MudProfileWindow *self)
+{
+ /* Get our private data */
+ self->priv = MUD_PROFILE_WINDOW_GET_PRIVATE(self);
- gtk_tree_view_append_column(GTK_TREE_VIEW(profwin->priv->treeview), profwin->priv->col);
- profwin->priv->renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start(profwin->priv->col, profwin->priv->renderer, TRUE);
- gtk_tree_view_column_add_attribute(profwin->priv->col, profwin->priv->renderer, "text", NAME_COLUMN);
+ /* set public members to defaults */
+ self->parent_window = NULL;
+}
- gtk_tree_selection_set_select_function(gtk_tree_view_get_selection(GTK_TREE_VIEW(profwin->priv->treeview)), mud_profile_window_tree_select_cb, profwin, NULL);
+static GObject *
+mud_profile_window_constructor (GType gtype,
+ guint n_properties,
+ GObjectConstructParam *properties)
+{
+ guint i;
+ MudProfileWindow *profwin;
+ GObject *obj;
+
+ MudProfileWindowClass *klass;
+ GObjectClass *parent_class;
+
+ GladeXML *glade;
+ GtkWindow *main_window;
+
+ /* Chain up to parent constructor */
+ klass = MUD_PROFILE_WINDOW_CLASS( g_type_class_peek(MUD_TYPE_PROFILE_WINDOW) );
+ parent_class = G_OBJECT_CLASS( g_type_class_peek_parent(klass) );
+ obj = parent_class->constructor(gtype, n_properties, properties);
+
+ profwin = MUD_PROFILE_WINDOW(obj);
+
+ if(!profwin->parent_window)
+ {
+ g_printf("ERROR: Tried to instantiate MudProfileWindow without passing parent GtkWindow\n");
+ g_error("Tried to instantiate MudProfileWindow without passing parent GtkWindow\n");
+ }
+
+ glade = glade_xml_new(GLADEDIR "/prefs.glade", "profiles_window", NULL);
+
+ profwin->priv->window = glade_xml_get_widget(glade, "profiles_window");
+
+ profwin->priv->btnAdd = glade_xml_get_widget(glade, "btnAdd");
+ profwin->priv->btnDelete = glade_xml_get_widget(glade, "btnDelete");
+
+ profwin->priv->treeview = glade_xml_get_widget(glade, "profilesView");
+ profwin->priv->treestore = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING);
+
+ g_object_set(profwin->priv->treeview,
+ "model", GTK_TREE_MODEL(profwin->priv->treestore),
+ "rules-hint", TRUE,
+ "headers-visible", FALSE,
+ NULL);
+
+ profwin->priv->col = gtk_tree_view_column_new();
+
+ gtk_tree_view_append_column(GTK_TREE_VIEW(profwin->priv->treeview),
+ profwin->priv->col);
+
+ profwin->priv->renderer = gtk_cell_renderer_text_new();
+
+ gtk_tree_view_column_pack_start(profwin->priv->col,
+ profwin->priv->renderer,
+ TRUE);
+
+ gtk_tree_view_column_add_attribute(profwin->priv->col,
+ profwin->priv->renderer,
+ "text",
+ NAME_COLUMN);
+
+ gtk_tree_selection_set_select_function(
+ gtk_tree_view_get_selection(GTK_TREE_VIEW(profwin->priv->treeview)),
+ mud_profile_window_tree_select_cb,
+ profwin, NULL);
+
+ mud_profile_window_populate_treeview(profwin);
+
+ g_signal_connect(profwin->priv->window, "destroy",
+ G_CALLBACK(mud_profile_window_close_cb),
+ profwin);
+ g_signal_connect(profwin->priv->btnAdd, "clicked",
+ G_CALLBACK(mud_profile_window_add_cb),
+ profwin);
+ g_signal_connect(profwin->priv->btnDelete, "clicked",
+ G_CALLBACK(mud_profile_window_del_cb),
+ profwin);
+
+ g_object_get(profwin->parent_window, "window", &main_window, NULL);
+
+ gtk_window_set_transient_for(
+ GTK_WINDOW(profwin->priv->window),
+ main_window);
- mud_profile_window_populate_treeview(profwin);
+ gtk_widget_show_all(profwin->priv->window);
- g_signal_connect(profwin->priv->window, "destroy",
- G_CALLBACK(mud_profile_window_close_cb),
- profwin);
- g_signal_connect(profwin->priv->btnAdd, "clicked",
- G_CALLBACK(mud_profile_window_add_cb),
- profwin);
- g_signal_connect(profwin->priv->btnDelete, "clicked",
- G_CALLBACK(mud_profile_window_del_cb),
- profwin);
+ g_object_unref(glade);
- g_object_unref(glade);
+ return obj;
}
static void
-mud_profile_window_class_init (MudProfileWindowClass *klass)
+mud_profile_window_finalize (GObject *object)
{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ MudProfileWindow *profwin;
+ GObjectClass *parent_class;
- object_class->finalize = mud_profile_window_finalize;
+ profwin = MUD_PROFILE_WINDOW(object);
+
+ parent_class = g_type_class_peek_parent(G_OBJECT_GET_CLASS(object));
+ parent_class->finalize(object);
}
static void
-mud_profile_window_finalize (GObject *object)
-{
- MudProfileWindow *profwin;
- GObjectClass *parent_class;
-
- profwin = MUD_PROFILE_WINDOW(object);
-
- g_free(profwin->priv);
+mud_profile_window_set_property(GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ MudProfileWindow *self;
+
+ self = MUD_PROFILE_WINDOW(object);
+
+ switch(prop_id)
+ {
+ /* Parent is Construct Only */
+ case PROP_PARENT_WINDOW:
+ self->parent_window = MUD_WINDOW(g_value_get_object(value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
- parent_class = g_type_class_peek_parent(G_OBJECT_GET_CLASS(object));
- parent_class->finalize(object);
+static void
+mud_profile_window_get_property(GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ MudProfileWindow *self;
+
+ self = MUD_PROFILE_WINDOW(object);
+
+ switch(prop_id)
+ {
+ case PROP_PARENT_WINDOW:
+ g_value_take_object(value, self->parent_window);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
}
-// MudProfileWindow Callbacks
+/* Callbacks */
static void
mud_profile_window_add_cb(GtkWidget *widget, MudProfileWindow *profwin)
{
- GladeXML *glade;
- GtkWidget *window;
- GtkWidget *entry_profile;
- gchar *profile;
- gint result;
- MudProfile *def, *prof;
-
- glade = glade_xml_new(GLADEDIR "/prefs.glade", "newprofile_dialog", NULL);
- window = glade_xml_get_widget(glade, "newprofile_dialog");
-
- gtk_window_set_transient_for(
- GTK_WINDOW(window),
- GTK_WINDOW(profwin->priv->window));
-
- entry_profile = glade_xml_get_widget(glade, "entry_profile");
-
- result = gtk_dialog_run(GTK_DIALOG(window));
- if (result == GTK_RESPONSE_OK)
- {
- profile = utils_remove_whitespace((gchar *)gtk_entry_get_text(GTK_ENTRY(entry_profile)));
-
- def = get_profile("Default");
- prof = mud_profile_new((const gchar *)profile);
-
- mud_profile_copy_preferences(def, prof);
-
- mud_profile_window_populate_treeview(profwin);
- mud_window_populate_profiles_menu(profwin->priv->parent);
- }
+ GladeXML *glade;
+ GtkWidget *window;
+ GtkWidget *entry_profile;
+ gchar *profile;
+ gint result;
+ MudProfile *def, *prof;
+
+ glade = glade_xml_new(GLADEDIR "/prefs.glade", "newprofile_dialog", NULL);
+ window = glade_xml_get_widget(glade, "newprofile_dialog");
+
+ gtk_window_set_transient_for(
+ GTK_WINDOW(window),
+ GTK_WINDOW(profwin->priv->window));
+
+ entry_profile = glade_xml_get_widget(glade, "entry_profile");
+
+ result = gtk_dialog_run(GTK_DIALOG(window));
+ if (result == GTK_RESPONSE_OK)
+ {
+ profile = utils_remove_whitespace((gchar *)gtk_entry_get_text(GTK_ENTRY(entry_profile)));
+
+ def = get_profile("Default");
+ prof = mud_profile_new((const gchar *)profile);
+
+ mud_profile_copy_preferences(def, prof);
+
+ mud_profile_window_populate_treeview(profwin);
+ mud_window_populate_profiles_menu(profwin->parent_window);
+ }
- gtk_widget_destroy(window);
- g_object_unref(glade);
+ gtk_widget_destroy(window);
+ g_object_unref(glade);
}
static void
mud_profile_window_del_cb(GtkWidget *widget, MudProfileWindow *profwin)
{
- if(strcmp("Default", profwin->priv->CurrSelRowText) != 0)
- {
- mud_profile_delete(profwin->priv->CurrSelRowText);
-
- mud_profile_window_populate_treeview(profwin);
- mud_window_populate_profiles_menu(profwin->priv->parent);
- }
+ if(strcmp("Default", profwin->priv->CurrSelRowText) != 0)
+ {
+ mud_profile_delete(profwin->priv->CurrSelRowText);
+
+ mud_profile_window_populate_treeview(profwin);
+ mud_window_populate_profiles_menu(profwin->parent_window);
+ }
}
static gint
mud_profile_window_close_cb(GtkWidget *widget, MudProfileWindow *profwin)
{
- g_object_unref(profwin);
+ g_object_unref(profwin);
- return TRUE;
+ return TRUE;
}
static gboolean
@@ -235,57 +345,51 @@
gboolean path_currently_selected,
gpointer userdata)
{
- GtkTreeIter iter;
- MudProfileWindow *profwin = (MudProfileWindow *)userdata;
+ GtkTreeIter iter;
+ MudProfileWindow *profwin = (MudProfileWindow *)userdata;
- if (gtk_tree_model_get_iter(model, &iter, path))
- {
- gtk_tree_model_get(model, &iter, 0, &profwin->priv->CurrSelRowText, -1);
+ if (gtk_tree_model_get_iter(model, &iter, path))
+ {
+ gtk_tree_model_get(model, &iter, 0, &profwin->priv->CurrSelRowText, -1);
- profwin->priv->CurrSelRow = (gtk_tree_path_get_indices(path))[0];
+ profwin->priv->CurrSelRow = (gtk_tree_path_get_indices(path))[0];
- gtk_widget_set_sensitive(profwin->priv->btnDelete, TRUE);
+ gtk_widget_set_sensitive(profwin->priv->btnDelete, TRUE);
- }
+ }
- return TRUE;
+ return TRUE;
}
-// MudProfileWindow Util Functions
+/* Private Methods */
static void
mud_profile_window_populate_treeview(MudProfileWindow *profwin)
{
- const GList *profiles;
- GList *entry;
- GtkTreeStore* store = GTK_TREE_STORE(profwin->priv->treestore);
- GtkTreeIter iter;
+ const GList *profiles, *entry;
+ GtkTreeStore* store;
+ GtkTreeIter iter;
- gtk_tree_store_clear(store);
+ g_return_if_fail(MUD_IS_PROFILE_WINDOW(profwin));
- gtk_widget_set_sensitive(profwin->priv->btnDelete, FALSE);
+ store = GTK_TREE_STORE(profwin->priv->treestore);
- profiles = mud_profile_get_profiles();
+ gtk_tree_store_clear(store);
- for (entry = (GList *)profiles; entry != NULL; entry = g_list_next(entry))
- {
- gtk_tree_store_append(store, &iter, NULL);
- gtk_tree_store_set(store, &iter, NAME_COLUMN,(gchar *)MUD_PROFILE(entry->data)->name, -1);
- }
-}
+ gtk_widget_set_sensitive(profwin->priv->btnDelete, FALSE);
-// Instantiate MudProfileWindow
-MudProfileWindow*
-mud_window_profile_new(MudWindow *window)
-{
- MudProfileWindow *profwin;
+ profiles = mud_profile_get_profiles();
- profwin = g_object_new(MUD_TYPE_PROFILE_WINDOW, NULL);
- profwin->priv->parent = window;
+ entry = profiles;
+ while(entry)
+ {
+ MudProfile *profile = MUD_PROFILE(entry->data);
- gtk_window_set_transient_for(
- GTK_WINDOW(profwin->priv->window),
- GTK_WINDOW(mud_window_get_window(profwin->priv->parent)));
- gtk_widget_show_all(profwin->priv->window);
+ gtk_tree_store_append(store, &iter, NULL);
+ gtk_tree_store_set(store, &iter,
+ NAME_COLUMN, profile->name,
+ -1);
- return profwin;
+ entry = g_list_next(entry);
+ }
}
+
Modified: trunk/src/mud-window-profile.h
==============================================================================
--- trunk/src/mud-window-profile.h (original)
+++ trunk/src/mud-window-profile.h Mon Mar 9 23:35:33 2009
@@ -23,6 +23,7 @@
G_BEGIN_DECLS
#include <gconf/gconf-client.h>
+#include "mud-window.h"
#define MUD_TYPE_PROFILE_WINDOW (mud_profile_window_get_type ())
#define MUD_PROFILE_WINDOW(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), MUD_TYPE_PROFILE_WINDOW, MudProfileWindow))
@@ -30,24 +31,29 @@
#define MUD_IS_PROFILE_WINDOW(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), MUD_TYPE_PROFILE_WINDOW))
#define MUD_IS_PROFILE_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MUD_TYPE_PROFILE_WINDOW))
#define MUD_PROFILE_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MUD_TYPE_PROFILE_WINDOW, MudProfileWindowClass))
+#define MUD_PROFILE_WINDOW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), MUD_TYPE_PROFILE_WINDOW, MudProfileWindowPrivate))
typedef struct _MudProfileWindow MudProfileWindow;
typedef struct _MudProfileWindowClass MudProfileWindowClass;
typedef struct _MudProfileWindowPrivate MudProfileWindowPrivate;
+struct _MudProfileWindowClass
+{
+ GObjectClass parent_class;
+};
+
struct _MudProfileWindow
{
GObject parent_instance;
+ /*< Private >*/
MudProfileWindowPrivate *priv;
-};
-struct _MudProfileWindowClass
-{
- GObjectClass parent_class;
+ /*< Public >*/
+ MudWindow *parent_window;
};
-GType mud_profile_window_get_type (void) G_GNUC_CONST;
+GType mud_profile_window_get_type (void);
MudProfileWindow *mud_window_profile_new(MudWindow *window);
Modified: trunk/src/mud-window.c
==============================================================================
--- trunk/src/mud-window.c (original)
+++ trunk/src/mud-window.c Mon Mar 9 23:35:33 2009
@@ -626,7 +626,10 @@
static void
mud_window_profiles_cb(GtkWidget *widget, MudWindow *self)
{
- mud_window_profile_new(self);
+ MudProfileWindow *profile_window =
+ g_object_new(MUD_TYPE_PROFILE_WINDOW,
+ "parent-window", self,
+ NULL);
}
static void
@@ -752,14 +755,8 @@
file = fopen(filename, "w");
if(!file)
- {
- GtkWidget *errDialog;
-
- errDialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Could not save the file in specified location!"));
-
- gtk_dialog_run(GTK_DIALOG(errDialog));
- gtk_widget_destroy(errDialog);
- }
+ utils_error_message(self->window, _("Error Saving Buffer"),
+ "%s", _("Could not save the file in specified location!"));
else
{
gchar *bufferText;
@@ -1005,15 +1002,6 @@
self);
}
-GtkWidget*
-mud_window_get_window(MudWindow *self)
-{
- if(!IS_MUD_WINDOW(self))
- return NULL;
-
- return GTK_WIDGET(self->window);
-}
-
void
mud_window_add_connection_view(MudWindow *self, GObject *cview, gchar *tabLbl)
{
Modified: trunk/src/mud-window.h
==============================================================================
--- trunk/src/mud-window.h (original)
+++ trunk/src/mud-window.h Mon Mar 9 23:35:33 2009
@@ -62,7 +62,6 @@
void mud_window_profile_menu_set_active(MudWindow *window, gchar *name);
void mud_window_close_current_window(MudWindow *window);
void mud_window_disconnected(MudWindow *window);
-GtkWidget* mud_window_get_window(MudWindow *window);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]