gnome-mud r838 - in trunk: . po src ui
- From: lharris svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-mud r838 - in trunk: . po src ui
- Date: Fri, 27 Mar 2009 19:57:39 +0000 (UTC)
Author: lharris
Date: Fri Mar 27 19:57:39 2009
New Revision: 838
URL: http://svn.gnome.org/viewvc/gnome-mud?rev=838&view=rev
Log:
Splitview functionality added
Added:
trunk/src/gnome-mud-builtins.c.template
trunk/src/gnome-mud-builtins.h.template
Modified:
trunk/ChangeLog
trunk/configure.ac
trunk/gnome-mud.schemas.in
trunk/po/ChangeLog
trunk/po/POTFILES.in
trunk/src/Makefile.am
trunk/src/gnome-mud-marshallers.list
trunk/src/gnome-mud.c
trunk/src/mud-connection-view.c
trunk/src/mud-line-buffer.c
trunk/src/mud-line-buffer.h
trunk/src/mud-log.c
trunk/src/mud-profile.c
trunk/src/mud-profile.h
trunk/src/mud-subwindow.c
trunk/src/mud-trigger.c
trunk/src/mud-trigger.h
trunk/src/mud-window-prefs.c
trunk/ui/muds.glade
trunk/ui/prefs.glade
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Fri Mar 27 19:57:39 2009
@@ -83,6 +83,8 @@
GLIB_GENMARSHAL="$($PKG_CONFIG --variable=glib_genmarshal glib-2.0)"
AC_SUBST([GLIB_GENMARSHAL])
+GLIB_MKENUMS="$($PKG_CONFIG --variable=glib_mkenums glib-2.0)"
+AC_SUBST([GLIB_MKENUMS])
AC_DEFINE(HAVE_LIBSM, 1, [Define this to have session management.])
Modified: trunk/gnome-mud.schemas.in
==============================================================================
--- trunk/gnome-mud.schemas.in (original)
+++ trunk/gnome-mud.schemas.in Fri Mar 27 19:57:39 2009
@@ -249,21 +249,6 @@
</schema>
<schema>
- <key>/schemas/apps/gnome-mud/functionality/scroll_on_output</key>
- <applyto>/apps/gnome-mud/functionality/scroll_on_output</applyto>
- <owner>gnome-mud</owner>
- <type>bool</type>
- <default>false</default>
- <locale name="C">
- <short>Whether to scroll to the bottom when there's new output</short>
- <long>
- If enabled, whenever there's new output the
- terminal will be scrolled to the bottom.
- </long>
- </locale>
- </schema>
-
- <schema>
<key>/schemas/apps/gnome-mud/functionality/last_log_dir</key>
<applyto>/apps/gnome-mud/functionality/last_log_dir</applyto>
<owner>gnome-mud</owner>
Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in (original)
+++ trunk/po/POTFILES.in Fri Mar 27 19:57:39 2009
@@ -3,17 +3,16 @@
# Please keep this file sorted alphabetically.
gnome-mud.desktop.in
gnome-mud.schemas.in
-
+src/debug-logger.c
src/gnome-mud.c
src/mud-connections.c
src/mud-connection-view.c
src/mud-log.c
src/mud-tray.c
-src/mud-window-prefs.c
+src/mud-trigger.c
src/mud-window.c
-src/debug-logger.c
+src/mud-window-prefs.c
src/handlers/mud-telnet-mccp.c
-
ui/main.glade
ui/muds.glade
ui/prefs.glade
Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am (original)
+++ trunk/src/Makefile.am Fri Mar 27 19:57:39 2009
@@ -33,6 +33,8 @@
ecma48.h \
gnome-mud.c \
gnome-mud.h \
+ gnome-mud-builtins.c \
+ gnome-mud-builtins.h \
gnome-mud-marshallers.c \
gnome-mud-marshallers.h \
gnome-mud-icons.h \
@@ -75,10 +77,17 @@
BUILT_SOURCES = \
gnome-mud-marshallers.c \
- gnome-mud-marshallers.h
+ gnome-mud-marshallers.h \
+ gnome-mud-builtins.c \
+ gnome-mud-builtins.h
+
+enumheaders = \
+ mud-trigger.h
EXTRA_DIST = \
- gnome-mud-marshallers.list
+ gnome-mud-marshallers.list \
+ gnome-mud-builtins.h.template \
+ gnome-mud-builtins.c.template
CLEANFILES = \
$(BUILT_SOURCES)
@@ -95,3 +104,15 @@
&& mv gnome-mud-marshallers.c.tmp gnome-mud-marshallers.c ) \
|| ( rm -f gnome-mud-marshallers.c.tmp && exit 1 )
+gnome-mud-builtins.h: $(enumheaders) gnome-mud-builtins.h.template
+ ( $(GLIB_MKENUMS) --template gnome-mud-builtins.h.template \
+ $(enumheaders) > gnome-mud-builtins.h.tmp \
+ && mv gnome-mud-builtins.h.tmp gnome-mud-builtins.h ) \
+ || ( rm -f gnome-mud-builtins.h.tmp && exit 1 )
+
+gnome-mud-builtins.c: $(enumheaders) gnome-mud-builtins.c.template
+ ( $(GLIB_MKENUMS) --template gnome-mud-builtins.c.template \
+ $(enumheaders) > gnome-mud-builtins.c.tmp \
+ && mv gnome-mud-builtins.c.tmp gnome-mud-builtins.c ) \
+ || ( rm -f gnome-mud-builtins.c.tmp && exit 1 )
+
Added: trunk/src/gnome-mud-builtins.c.template
==============================================================================
--- (empty file)
+++ trunk/src/gnome-mud-builtins.c.template Fri Mar 27 19:57:39 2009
@@ -0,0 +1,36 @@
+/*** BEGIN file-header ***/
+#include <gtk/gtk.h>
+#include "gnome-mud-builtins.h"
+#include "mud-trigger.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+ enum_name@_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const G Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+ { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+ { 0, NULL, NULL }
+ };
+ etype = g_ type@_register_static (g_intern_static_string ("@EnumName@"), values);
+ }
+ return etype;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
Added: trunk/src/gnome-mud-builtins.h.template
==============================================================================
--- (empty file)
+++ trunk/src/gnome-mud-builtins.h.template Fri Mar 27 19:57:39 2009
@@ -0,0 +1,25 @@
+/*** BEGIN file-header ***/
+
+#ifndef __GNOME_MUD_TYPE_BUILTINS_H__
+#define __GNOME_MUD_TYPE_BUILTINS_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name _get_type (void) G_GNUC_CONST;
+#define @ENUMPREFIX _TYPE_@ENUMSHORT@ (@enum_name _get_type ())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* __GNOME_MUD_TYPE_BUILTINS_H__ */
+/*** END file-tail ***/
Modified: trunk/src/gnome-mud-marshallers.list
==============================================================================
--- trunk/src/gnome-mud-marshallers.list (original)
+++ trunk/src/gnome-mud-marshallers.list Fri Mar 27 19:57:39 2009
@@ -1,2 +1,3 @@
VOID:INT,INT
VOID:UINT,UINT
+VOID:STRING,UINT
Modified: trunk/src/gnome-mud.c
==============================================================================
--- trunk/src/gnome-mud.c (original)
+++ trunk/src/gnome-mud.c Fri Mar 27 19:57:39 2009
@@ -39,6 +39,7 @@
#include "mud-window.h"
#include "utils.h"
#include "debug-logger.h"
+#include "mud-trigger.h"
gint
main (gint argc, char *argv[])
@@ -119,6 +120,23 @@
/* Let 'er rip */
window = g_object_new(MUD_TYPE_WINDOW, NULL);
+ {
+ MudTrigger *trigger = g_object_new(MUD_TYPE_TRIGGER,
+ "trigger-key", "test",
+ "profile-key", "test",
+ "lines", 3,
+ "action-type", MUD_TRIGGER_ACTION_TEXT,
+ "action", "\n=== %0 ===\n=== %1 ===\n",
+ NULL);
+
+ gchar *test_line = g_strdup("Foo says, \"Bar\"\n");
+
+ mud_trigger_add_data(trigger, test_line, strlen(test_line));
+
+ g_free(test_line);
+ g_object_unref(trigger);
+ }
+
gtk_main();
gconf_client_suggest_sync(client, &err);
Modified: trunk/src/mud-connection-view.c
==============================================================================
--- trunk/src/mud-connection-view.c (original)
+++ trunk/src/mud-connection-view.c Fri Mar 27 19:57:39 2009
@@ -52,7 +52,12 @@
GtkWidget *dl_label;
GtkWidget *dl_button;
+ GtkWidget *pane;
+ GtkWidget *terminal2;
+
GString *processed;
+ gboolean hiding;
+ gdouble old_adjustment;
gulong signal;
gulong signal_profile_changed;
@@ -134,12 +139,17 @@
static void mud_connection_view_profile_changed_cb(MudProfile *profile,
MudProfileMask *mask,
MudConnectionView *view);
+static void mud_connection_view_value_changed_cb(GtkAdjustment *adjustment,
+ MudConnectionView *view);
+static void mud_connection_view_value_changed_term2_cb(GtkAdjustment *adjustment,
+ MudConnectionView *view);
+static void mud_connection_view_changed_cb(GtkAdjustment *adjustment,
+ MudConnectionView *view);
/* Private Methods */
static void mud_connection_view_set_terminal_colors(MudConnectionView *view);
static void mud_connection_view_set_terminal_scrollback(MudConnectionView *view);
-static void mud_connection_view_set_terminal_scrolloutput(MudConnectionView *view);
static void mud_connection_view_set_terminal_font(MudConnectionView *view);
static GtkWidget* append_stock_menuitem(GtkWidget *menu,
const gchar *text,
@@ -367,7 +377,10 @@
self->local_echo = TRUE;
self->remote_encode = FALSE;
self->connect_hook = FALSE;
- self->connected = FALSE;;
+ self->connected = FALSE;
+
+ self->priv->hiding = FALSE;
+ self->priv->old_adjustment = 0.0;
self->connect_string = NULL;
self->remote_encoding = NULL;
@@ -450,7 +463,9 @@
box = gtk_vbox_new(FALSE, 0);
self->ui_vbox = GTK_VBOX(box);
self->terminal = VTE_TERMINAL(vte_terminal_new());
+ self->priv->terminal2 = vte_terminal_new();
self->priv->scrollbar = gtk_vscrollbar_new(NULL);
+ self->priv->pane = gtk_vpaned_new();
term_box = gtk_hbox_new(FALSE, 0);
#ifdef ENABLE_GST
@@ -485,8 +500,15 @@
#endif
/* Pack the Terminal UI */
+
+ gtk_paned_add1(GTK_PANED(self->priv->pane),
+ self->priv->terminal2);
+
+ gtk_paned_add2(GTK_PANED(self->priv->pane),
+ GTK_WIDGET(self->terminal));
+
gtk_box_pack_start(GTK_BOX(term_box),
- GTK_WIDGET(self->terminal),
+ self->priv->pane,
TRUE,
TRUE,
0);
@@ -497,6 +519,11 @@
FALSE,
0);
+ g_object_set(self->priv->pane,
+ "position", 300,
+ NULL);
+
+
/* Pack into Main UI */
gtk_box_pack_end(GTK_BOX(box), term_box, TRUE, TRUE, 0);
@@ -506,6 +533,21 @@
G_CALLBACK(mud_connection_view_button_press_event),
self);
+ g_signal_connect(self->terminal->adjustment,
+ "value-changed",
+ G_CALLBACK(mud_connection_view_value_changed_cb),
+ self);
+
+ g_signal_connect(VTE_TERMINAL(self->priv->terminal2)->adjustment,
+ "value-changed",
+ G_CALLBACK(mud_connection_view_value_changed_term2_cb),
+ self);
+
+ g_signal_connect(self->terminal->adjustment,
+ "changed",
+ G_CALLBACK(mud_connection_view_changed_cb),
+ self);
+
g_object_set_data(G_OBJECT(self->terminal),
"connection-view",
self);
@@ -516,11 +558,15 @@
/* Setup scrollbar */
gtk_range_set_adjustment(
GTK_RANGE(self->priv->scrollbar),
- self->terminal->adjustment);
+ VTE_TERMINAL(self->priv->terminal2)->adjustment);
/* Setup VTE */
vte_terminal_set_encoding(self->terminal, "ISO-8859-1");
vte_terminal_set_emulation(self->terminal, "xterm");
+ vte_terminal_set_encoding(VTE_TERMINAL(self->priv->terminal2), "ISO-8859-1");
+ vte_terminal_set_emulation(VTE_TERMINAL(self->priv->terminal2), "xterm");
+ vte_terminal_set_scroll_on_output(self->terminal, TRUE);
+ vte_terminal_set_scroll_on_output(VTE_TERMINAL(self->priv->terminal2), FALSE);
g_object_get(self->window,
"window", &main_window,
@@ -935,6 +981,60 @@
/* Callbacks */
static void
+mud_connection_view_changed_cb(GtkAdjustment *adjustment,
+ MudConnectionView *view)
+{
+ if(view->priv->hiding)
+ {
+ view->priv->hiding = FALSE;
+ gtk_adjustment_set_value(adjustment,
+ adjustment->upper - adjustment->page_size);
+ }
+}
+
+
+static void
+mud_connection_view_value_changed_cb(GtkAdjustment *adjustment,
+ MudConnectionView *view)
+{
+ if(GTK_WIDGET_MAPPED(view->priv->terminal2))
+ gtk_adjustment_set_value(adjustment,
+ adjustment->upper - adjustment->page_size);
+
+ if(!GTK_WIDGET_MAPPED(view->priv->terminal2))
+ {
+ if(adjustment->value < view->priv->old_adjustment)
+ gtk_adjustment_set_value(VTE_TERMINAL(view->priv->terminal2)->adjustment,
+ VTE_TERMINAL(view->priv->terminal2)->adjustment->value - 1);
+ else
+ gtk_adjustment_set_value(VTE_TERMINAL(view->priv->terminal2)->adjustment,
+ VTE_TERMINAL(view->priv->terminal2)->adjustment->upper);
+
+ view->priv->old_adjustment = adjustment->value;
+ }
+}
+
+static void
+mud_connection_view_value_changed_term2_cb(GtkAdjustment *adjustment,
+ MudConnectionView *view)
+{
+ gtk_adjustment_set_value(view->terminal->adjustment,
+ view->terminal->adjustment->upper);
+
+ if(adjustment->value + adjustment->page_size != adjustment->upper)
+ gtk_widget_show(view->priv->terminal2);
+ else
+ {
+ if(GTK_WIDGET_MAPPED(view->priv->terminal2))
+ {
+ view->priv->hiding = TRUE;
+ gtk_widget_hide(view->priv->terminal2);
+ gtk_adjustment_set_value(adjustment, adjustment->upper);
+ }
+ }
+}
+
+static void
choose_profile_callback(GtkWidget *menu_item, MudConnectionView *view)
{
MudProfile *profile;
@@ -962,8 +1062,6 @@
{
GList *entry;
- if (mask->ScrollOnOutput)
- mud_connection_view_set_terminal_scrolloutput(view);
if (mask->Scrollback)
mud_connection_view_set_terminal_scrollback(view);
if (mask->FontName)
@@ -1203,6 +1301,10 @@
buf,
length);
+ vte_terminal_feed(VTE_TERMINAL(view->priv->terminal2),
+ buf,
+ length);
+
mud_window_toggle_tab_icon(view->window, view);
}
else
@@ -1219,6 +1321,10 @@
buf,
length);
+ vte_terminal_feed(VTE_TERMINAL(view->priv->terminal2),
+ buf,
+ length);
+
mud_window_toggle_tab_icon(view->window, view);
}
@@ -1377,6 +1483,7 @@
utils_str_replace(buf, "\n", "\n\r");
vte_terminal_feed(view->terminal, buf, strlen(buf));
+ vte_terminal_feed(VTE_TERMINAL(view->priv->terminal2), buf, strlen(buf));
}
static void
@@ -1386,7 +1493,6 @@
mud_connection_view_set_terminal_colors(view);
mud_connection_view_set_terminal_scrollback(view);
- mud_connection_view_set_terminal_scrolloutput(view);
mud_connection_view_set_terminal_font(view);
}
@@ -1399,6 +1505,11 @@
&view->profile->preferences->Foreground,
&view->profile->preferences->Background,
view->profile->preferences->Colors, C_MAX);
+
+ vte_terminal_set_colors(VTE_TERMINAL(view->priv->terminal2),
+ &view->profile->preferences->Foreground,
+ &view->profile->preferences->Background,
+ view->profile->preferences->Colors, C_MAX);
}
static void
@@ -1408,16 +1519,9 @@
vte_terminal_set_scrollback_lines(view->terminal,
view->profile->preferences->Scrollback);
-}
-static void
-mud_connection_view_set_terminal_scrolloutput(MudConnectionView *view)
-{
- g_return_if_fail(IS_MUD_CONNECTION_VIEW(view));
-
- if(view->terminal)
- vte_terminal_set_scroll_on_output(view->terminal,
- view->profile->preferences->ScrollOnOutput);
+ vte_terminal_set_scrollback_lines(VTE_TERMINAL(view->priv->terminal2),
+ view->profile->preferences->Scrollback);
}
static void
@@ -1437,6 +1541,7 @@
desc = pango_font_description_from_string("Monospace 10");
vte_terminal_set_font(view->terminal, desc);
+ vte_terminal_set_font(VTE_TERMINAL(view->priv->terminal2), desc);
}
/* Public Methods */
@@ -1711,6 +1816,7 @@
text = NULL;
}
+ vte_terminal_set_encoding(VTE_TERMINAL(view->priv->terminal2), encoding);
vte_terminal_set_encoding(view->terminal, encoding);
g_free(encoding);
Modified: trunk/src/mud-line-buffer.c
==============================================================================
--- trunk/src/mud-line-buffer.c (original)
+++ trunk/src/mud-line-buffer.c Fri Mar 27 19:57:39 2009
@@ -26,6 +26,7 @@
#include <glib-object.h>
#include "mud-line-buffer.h"
+#include "gnome-mud-marshallers.h"
struct _MudLineBufferPrivate
{
@@ -120,16 +121,17 @@
/* Register Signals */
mud_line_buffer_signal[LINE_ADDED] =
- g_signal_newv("line-added",
- G_TYPE_FROM_CLASS(object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
- NULL,
- NULL,
- NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE,
- 0,
- NULL);
+ g_signal_new("line-added",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_HOOKS,
+ 0,
+ NULL,
+ NULL,
+ gnome_mud_cclosure_VOID__STRING_UINT,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_STRING,
+ G_TYPE_UINT);
mud_line_buffer_signal[LINE_REMOVED] =
g_signal_newv("line-removed",
@@ -150,10 +152,11 @@
0,
NULL,
NULL,
- g_cclosure_marshal_VOID__STRING,
+ gnome_mud_cclosure_VOID__STRING_UINT,
G_TYPE_NONE,
- 1,
- G_TYPE_STRING);
+ 2,
+ G_TYPE_STRING,
+ G_TYPE_UINT);
}
static void
@@ -288,7 +291,7 @@
self->priv->line_buffer =
g_list_append(self->priv->line_buffer,
- g_string_free(line, FALSE));
+ g_strdup(line->str));
if(self->priv->length == self->priv->maximum_line_count + 1)
{
@@ -309,7 +312,11 @@
g_signal_emit(self,
mud_line_buffer_signal[LINE_ADDED],
- 0);
+ 0,
+ line->str,
+ line->len);
+
+ g_string_free(line, TRUE);
line = g_string_new(NULL);
}
@@ -324,7 +331,8 @@
g_signal_emit(self,
mud_line_buffer_signal[PARTIAL_LINE_RECEIVED],
0,
- line->str);
+ line->str,
+ line->len);
}
g_string_free(line, TRUE);
@@ -426,6 +434,25 @@
return g_string_free(range, (range->len == 0) );
}
+void
+mud_line_buffer_remove_line(MudLineBuffer *self,
+ guint line)
+{
+ const gchar *remove_data;
+
+ g_return_if_fail(MUD_IS_LINE_BUFFER(self));
+
+ remove_data = mud_line_buffer_get_line(self, line);
+
+ if(!remove_data)
+ return;
+
+ self->priv->line_buffer = g_list_remove(self->priv->line_buffer,
+ remove_data);
+
+ g_free((gchar *)remove_data); // Somewhat naughty. But the line is removed.
+}
+
/* Private Methods */
static void
mud_line_buffer_free_line(gpointer value,
Modified: trunk/src/mud-line-buffer.h
==============================================================================
--- trunk/src/mud-line-buffer.h (original)
+++ trunk/src/mud-line-buffer.h Fri Mar 27 19:57:39 2009
@@ -66,6 +66,9 @@
guint start,
guint end);
+void mud_line_buffer_remove_line(MudLineBuffer *self,
+ guint line);
+
G_END_DECLS
#endif // MUD_LINE_BUFFER_H
Modified: trunk/src/mud-log.c
==============================================================================
--- trunk/src/mud-log.c (original)
+++ trunk/src/mud-log.c Fri Mar 27 19:57:39 2009
@@ -127,7 +127,10 @@
static gboolean mud_log_keypress_cb(GtkWidget *widget,
GdkEventKey *event,
MudLog *self);
-static void mud_log_line_added_cb(MudLineBuffer *buffer, MudLog *self);
+static void mud_log_line_added_cb(MudLineBuffer *buffer,
+ const gchar *line,
+ guint length,
+ MudLog *self);
/* Private Methods */
static void mud_log_write(MudLog *log, const gchar *data, gsize size);
@@ -580,19 +583,14 @@
static void
mud_log_line_added_cb(MudLineBuffer *buffer,
+ const gchar *line,
+ guint length,
MudLog *self)
{
- gulong length;
- const gchar *line;
-
if(!self->priv->done)
{
- g_object_get(buffer, "length", &length, NULL);
-
- line = mud_line_buffer_get_line(buffer, length - 1);
-
- if(line && strlen(line) != 0)
- mud_log_write(self, line, strlen(line));
+ if(line && length != 0)
+ mud_log_write(self, line, length);
if(self->priv->include_next)
{
@@ -827,6 +825,15 @@
g_return_if_fail(MUD_IS_LOG(log));
+ if(log->priv->color)
+ {
+ while(!g_queue_is_empty(log->priv->span_queue))
+ {
+ mud_log_write(log, "</span>", strlen("</span>"));
+ g_queue_pop_head(log->priv->span_queue);
+ }
+ }
+
time(&t);
strftime(buf, 255,
_("\n *** Log stops *** %d/%m/%Y %H:%M:%S\n"),
Modified: trunk/src/mud-profile.c
==============================================================================
--- trunk/src/mud-profile.c (original)
+++ trunk/src/mud-profile.c Fri Mar 27 19:57:39 2009
@@ -329,7 +329,6 @@
mud_profile_set_echotext(to, from->preferences->EchoText);
mud_profile_set_keeptext(to, from->preferences->KeepText);
mud_profile_set_disablekeys(to, from->preferences->DisableKeys);
- mud_profile_set_scrolloutput(to, from->preferences->ScrollOnOutput);
mud_profile_set_commdev(to, from->preferences->CommDev);
mud_profile_set_scrollback(to, from->preferences->Scrollback);
mud_profile_set_font(to, from->preferences->FontName);
@@ -430,7 +429,6 @@
GCONF_GET_BOOLEAN(echo, functionality, EchoText);
GCONF_GET_BOOLEAN(keeptext, functionality, KeepText);
GCONF_GET_BOOLEAN(system_keys, functionality, DisableKeys);
- GCONF_GET_BOOLEAN(scroll_on_output, functionality, ScrollOnOutput);
GCONF_GET_INT(flush_interval, functionality, FlushInterval);
GCONF_GET_STRING(encoding, functionality, Encoding);
GCONF_GET_STRING(proxy_version, functionality, ProxyVersion);
@@ -572,19 +570,6 @@
profile->priv->preferences.DisableKeys = bool_setting;
}
}
- else if(strcmp(key, "scroll_on_output") == 0)
- {
- bool_setting = FALSE;
-
- if(val && val->type == GCONF_VALUE_BOOL)
- bool_setting = gconf_value_get_bool(val);
-
- if(bool_setting != profile->priv->preferences.ScrollOnOutput)
- {
- mask.ScrollOnOutput = TRUE;
- profile->priv->preferences.ScrollOnOutput = bool_setting;
- }
- }
else if(strcmp(key, "use_proxy") == 0)
{
bool_setting = FALSE;
@@ -810,15 +795,6 @@
}
void
-mud_profile_set_scrolloutput (MudProfile *profile, gboolean value)
-{
- const gchar *key = mud_profile_gconf_get_key(profile, "functionality/scroll_on_output");
- RETURN_IF_NOTIFYING(profile);
-
- gconf_client_set_bool(profile->priv->gconf_client, key, value, NULL);
-}
-
-void
mud_profile_set_disablekeys (MudProfile *profile, gboolean value)
{
const gchar *key = mud_profile_gconf_get_key(profile, "functionality/system_keys");
Modified: trunk/src/mud-profile.h
==============================================================================
--- trunk/src/mud-profile.h (original)
+++ trunk/src/mud-profile.h Fri Mar 27 19:57:39 2009
@@ -47,7 +47,6 @@
gboolean KeepText;
gboolean AutoSave;
gboolean DisableKeys;
- gboolean ScrollOnOutput;
gchar *FontName;
gchar *CommDev;
@@ -88,9 +87,7 @@
unsigned int EchoText : 1;
unsigned int KeepText : 1;
unsigned int DisableKeys : 1;
- unsigned int ScrollOnOutput : 1;
unsigned int CommDev : 1;
- unsigned int TerminalType : 1;
unsigned int History : 1;
unsigned int Scrollback : 1;
unsigned int FontName : 1;
Modified: trunk/src/mud-subwindow.c
==============================================================================
--- trunk/src/mud-subwindow.c (original)
+++ trunk/src/mud-subwindow.c Fri Mar 27 19:57:39 2009
@@ -155,7 +155,6 @@
static void mud_subwindow_update_geometry (MudSubwindow *window);
static void mud_subwindow_set_terminal_colors(MudSubwindow *self);
static void mud_subwindow_set_terminal_scrollback(MudSubwindow *self);
-static void mud_subwindow_set_terminal_scrolloutput(MudSubwindow *self);
static void mud_subwindow_set_terminal_font(MudSubwindow *self);
/* MudSubwindow class functions */
@@ -418,6 +417,8 @@
vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(self->priv->terminal),
VTE_CURSOR_BLINK_OFF);
+ vte_terminal_set_scroll_on_output(VTE_TERMINAL(self->priv->terminal), TRUE);
+
vte_terminal_set_size(VTE_TERMINAL(self->priv->terminal),
self->priv->initial_width,
self->priv->initial_height);
@@ -731,16 +732,6 @@
}
static void
-mud_subwindow_set_terminal_scrolloutput(MudSubwindow *self)
-{
- g_return_if_fail(MUD_IS_SUBWINDOW(self));
-
- if(self->priv->terminal)
- vte_terminal_set_scroll_on_output(VTE_TERMINAL(self->priv->terminal),
- self->priv->parent_view->profile->preferences->ScrollOnOutput);
-}
-
-static void
mud_subwindow_set_terminal_font(MudSubwindow *self)
{
PangoFontDescription *desc = NULL;
@@ -1078,7 +1069,6 @@
mud_subwindow_set_terminal_colors(self);
mud_subwindow_set_terminal_scrollback(self);
- mud_subwindow_set_terminal_scrolloutput(self);
mud_subwindow_set_terminal_font(self);
}
Modified: trunk/src/mud-trigger.c
==============================================================================
--- trunk/src/mud-trigger.c (original)
+++ trunk/src/mud-trigger.c Fri Mar 27 19:57:39 2009
@@ -22,9 +22,15 @@
#endif
#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gprintf.h>
+#include <string.h>
+#include <stdlib.h>
#include "mud-line-buffer.h"
#include "mud-trigger.h"
+#include "gnome-mud-builtins.h"
+#include "utils.h"
struct _MudTriggerPrivate
{
@@ -34,11 +40,9 @@
gulong lines;
gboolean enabled;
-
gboolean gag_output;
gboolean multiline;
- gboolean filter;
/* Glob Triggers */
GPatternSpec *glob;
@@ -46,16 +50,42 @@
/* Regex Triggers */
GRegex *regex;
+ GMatchInfo *info;
gchar *regex_string;
/* Condition Triggers */
GList *condition_items;
+
+ /* Filter Child */
+ MudTrigger *child;
+
+ /* Key names */
+ gchar *profile_key;
+ gchar *trigger_key;
+
+ /* Action */
+ gchar *action;
+ MudTriggerAction action_type;
+
+ /* Variables */
+ GList *variables;
+};
+
+enum
+{
+ PARSE_STATE_TEXT,
+ PARSE_STATE_REGISTER
};
/* Property Identifiers */
enum
{
PROP_MUD_TRIGGER_0,
+ PROP_TRIGGER_KEY,
+ PROP_PROFILE_KEY,
+ PROP_LINES,
+ PROP_ACTION,
+ PROP_ACTION_TYPE
};
/* Create the Type */
@@ -77,6 +107,16 @@
GValue *value,
GParamSpec *pspec);
+// Callbacks
+static void mud_trigger_line_added_cb(MudLineBuffer *buffer,
+ const gchar *line,
+ guint length,
+ MudTrigger *self);
+
+// Private Methods
+static void mud_trigger_do_action(MudTrigger *self);
+static gchar *mud_trigger_parse(MudTrigger *self, const gchar *data);
+
/* MudTrigger class functions */
static void
mud_trigger_class_init (MudTriggerClass *klass)
@@ -97,7 +137,48 @@
g_type_class_add_private(klass, sizeof(MudTriggerPrivate));
/* Install Properties */
-
+ g_object_class_install_property(object_class,
+ PROP_TRIGGER_KEY,
+ g_param_spec_string("trigger-key",
+ "Trigger Key",
+ "The Trigger's GConf Key",
+ NULL,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property(object_class,
+ PROP_PROFILE_KEY,
+ g_param_spec_string("profile-key",
+ "Profile Key",
+ "The Profile's GConf Key",
+ NULL,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property(object_class,
+ PROP_LINES,
+ g_param_spec_ulong("lines",
+ "Lines",
+ "The number of lines the trigger should check.",
+ 0,
+ G_MAXULONG,
+ 1,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property(object_class,
+ PROP_ACTION,
+ g_param_spec_string("action",
+ "Action",
+ "The Trigger's action",
+ NULL,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property(object_class,
+ PROP_ACTION_TYPE,
+ g_param_spec_enum("action-type",
+ "Action Type",
+ "The Trigger's action type",
+ MUD_TYPE_TRIGGER_ACTION,
+ MUD_TRIGGER_ACTION_TEXT,
+ G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
}
static void
@@ -109,6 +190,23 @@
/* Set Defaults */
self->priv->type = MUD_TRIGGER_TYPE_SINGLE;
+ self->priv->line_buffer = NULL;
+
+ self->priv->gag_output = FALSE;
+ self->priv->multiline = FALSE;
+
+ self->priv->glob = NULL;
+ self->priv->glob_string = NULL;
+
+ self->priv->regex = NULL;
+ self->priv->regex_string = NULL;
+
+ self->priv->condition_items = NULL;
+
+ self->priv->child = NULL;
+
+ self->priv->trigger_key = NULL;
+ self->priv->profile_key = NULL;
}
static GObject *
@@ -128,6 +226,30 @@
self = MUD_TRIGGER(obj);
+ if(!self->priv->trigger_key)
+ g_error("MudTrigger instatiated without trigger's key name.");
+
+ if(!self->priv->profile_key)
+ g_error("MudTrigger instantiated without profile's key name.");
+
+ self->priv->line_buffer = g_object_new(MUD_TYPE_LINE_BUFFER,
+ "maximum-line-count", self->priv->lines,
+ NULL);
+
+ g_signal_connect(self->priv->line_buffer,
+ "line-added",
+ G_CALLBACK(mud_trigger_line_added_cb),
+ self);
+
+ g_printf("Action: %s\n", self->priv->action);
+ g_printf("Action Type: %d\n", self->priv->action_type);
+
+ self->priv->regex = g_regex_new("^(.*) says, \"(.*)\"",
+ G_REGEX_OPTIMIZE,
+ G_REGEX_MATCH_NOTEMPTY,
+ NULL);
+
+
return obj;
}
@@ -139,6 +261,14 @@
self = MUD_TRIGGER(object);
+ g_object_unref(self->priv->line_buffer);
+
+ if(self->priv->regex)
+ g_regex_unref(self->priv->regex);
+
+ g_free(self->priv->trigger_key);
+ g_free(self->priv->profile_key);
+
parent_class = g_type_class_peek_parent(G_OBJECT_GET_CLASS(object));
parent_class->finalize(object);
}
@@ -150,11 +280,70 @@
GParamSpec *pspec)
{
MudTrigger *self;
+ gchar *new_string;
+ gulong new_ulong;
+ MudTriggerAction new_action;
self = MUD_TRIGGER(object);
switch(prop_id)
{
+ case PROP_TRIGGER_KEY:
+ new_string = g_value_dup_string(value);
+
+ if(!self->priv->trigger_key)
+ self->priv->trigger_key = g_strdup(new_string);
+ else if( !g_str_equal(self->priv->trigger_key, new_string) )
+ {
+ g_free(self->priv->trigger_key);
+ self->priv->trigger_key = g_strdup(new_string);
+ }
+
+ g_free(new_string);
+ break;
+
+ case PROP_PROFILE_KEY:
+ new_string = g_value_dup_string(value);
+
+ if(!self->priv->profile_key)
+ self->priv->profile_key = g_strdup(new_string);
+ else if( !g_str_equal(self->priv->profile_key, new_string) )
+ {
+ g_free(self->priv->profile_key);
+ self->priv->profile_key = g_strdup(new_string);
+ }
+
+ g_free(new_string);
+ break;
+
+ case PROP_ACTION:
+ new_string = g_value_dup_string(value);
+
+ if(!self->priv->action)
+ self->priv->action = g_strdup(new_string);
+ else if( !g_str_equal(self->priv->action, new_string) )
+ {
+ g_free(self->priv->action);
+ self->priv->action = g_strdup(new_string);
+ }
+
+ g_free(new_string);
+ break;
+
+ case PROP_ACTION_TYPE:
+ new_action = g_value_get_enum(value);
+
+ if(new_action != self->priv->action_type)
+ self->priv->action_type = new_action;
+ break;
+
+ case PROP_LINES:
+ new_ulong = g_value_get_ulong(value);
+
+ if(new_ulong != self->priv->lines)
+ self->priv->lines = new_ulong;
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -173,9 +362,236 @@
switch(prop_id)
{
+ case PROP_TRIGGER_KEY:
+ g_value_set_string(value, self->priv->trigger_key);
+ break;
+
+ case PROP_PROFILE_KEY:
+ g_value_set_string(value, self->priv->profile_key);
+ break;
+
+ case PROP_LINES:
+ g_value_set_ulong(value, self->priv->lines);
+ break;
+
+ case PROP_ACTION:
+ g_value_set_string(value, self->priv->action);
+ break;
+
+ case PROP_ACTION_TYPE:
+ g_value_set_enum(value, self->priv->action_type);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
}
}
+// Public Methods
+void
+mud_trigger_add_data(MudTrigger *self,
+ const gchar *data,
+ guint length)
+{
+ gchar *stripped;
+
+ g_return_if_fail(MUD_IS_TRIGGER(self));
+
+ stripped = utils_strip_ansi(data);
+
+ mud_line_buffer_add_data(self->priv->line_buffer,
+ stripped,
+ strlen(stripped));
+
+ g_free(stripped);
+}
+
+// Callbacks
+static void
+mud_trigger_line_added_cb(MudLineBuffer *buffer,
+ const gchar *line,
+ guint length,
+ MudTrigger *self)
+{
+ switch(self->priv->type)
+ {
+ case MUD_TRIGGER_TYPE_SINGLE:
+ if(self->priv->regex)
+ {
+ if(g_regex_match_full(self->priv->regex,
+ line,
+ length,
+ 0,
+ 0,
+ &self->priv->info,
+ NULL))
+ {
+ mud_trigger_do_action(self);
+
+ g_match_info_free(self->priv->info);
+ }
+
+ }
+ break;
+
+ case MUD_TRIGGER_TYPE_MULTI:
+ break;
+
+ case MUD_TRIGGER_TYPE_FILTER:
+ break;
+
+ case MUD_TRIGGER_TYPE_CONDITION:
+ break;
+ }
+}
+
+// Private Methods
+static void
+mud_trigger_do_action(MudTrigger *self)
+{
+ switch(self->priv->action_type)
+ {
+ case MUD_TRIGGER_ACTION_TEXT:
+ if(self->priv->action)
+ {
+ if(self->priv->regex)
+ {
+ gchar *data;
+
+ data = mud_trigger_parse(self,
+ self->priv->action);
+
+ g_printf("Parsed: %s\n", data);
+
+ g_free(data);
+ }
+ }
+ break;
+
+ case MUD_TRIGGER_ACTION_VAR:
+ break;
+
+ case MUD_TRIGGER_ACTION_LUA:
+ break;
+ }
+}
+
+static gchar *
+mud_trigger_parse(MudTrigger *self, const gchar *data)
+{
+ guint length, matches_length, i;
+ gint state;
+ GString *ret, *reg_num;
+ gchar **matches;
+
+ length = strlen(data);
+
+ if(length == 0)
+ return NULL;
+
+ ret = g_string_new(NULL);
+ reg_num = NULL;
+
+ matches = g_match_info_fetch_all(self->priv->info);
+ matches_length = g_strv_length(matches);
+
+ state = PARSE_STATE_TEXT;
+
+ for(i = 0; i < length; i++)
+ {
+ switch(state)
+ {
+ case PARSE_STATE_TEXT:
+ if(data[i] == '%')
+ {
+ reg_num = g_string_new(NULL);
+ state = PARSE_STATE_REGISTER;
+ }
+ else
+ ret = g_string_append_c(ret, data[i]);
+ break;
+
+ case PARSE_STATE_REGISTER:
+ if(!g_ascii_isdigit(data[i]) &&
+ i + 1 < length &&
+ !g_ascii_isdigit(data[i + 1]))
+ {
+ if(reg_num->len == 0)
+ {
+ ret = g_string_append_c(ret, data[i]);
+
+ if(i != 0 && data[ i - 1 ] == '%')
+ ret = g_string_append_c(ret, data[ i - 1 ]);
+
+ g_string_free(reg_num, TRUE);
+ reg_num = NULL;
+
+ state = PARSE_STATE_TEXT;
+ }
+ else
+ {
+ guint num = atol(reg_num->str);
+ gint check = i - reg_num->len - 2;
+
+ if(num >= matches_length - 1)
+ {
+ if(i != 0 && check > -1 && data[check] == '%')
+ ret = g_string_append_c(ret, '%');
+
+ ret = g_string_append(ret, _("#Submatch Out of Range#"));
+ ret = g_string_append_c(ret, data[i]);
+
+ state = PARSE_STATE_TEXT;
+ }
+ else
+ {
+ if(i != 0 && check > -1 && data[check] == '%')
+ ret = g_string_append_c(ret, '%');
+ ret = g_string_append(ret, matches[num + 1]);
+ ret = g_string_append_c(ret, data[i]);
+
+ state = PARSE_STATE_TEXT;
+ }
+
+ g_string_free(reg_num, TRUE);
+ reg_num = NULL;
+ }
+ }
+ else
+ {
+ if(g_ascii_isdigit(data[i]))
+ reg_num = g_string_append_c(reg_num, data[i]);
+
+ if(i + 1 == length)
+ {
+ if(reg_num->len != 0)
+ {
+ guint num = atol(reg_num->str);
+
+ if(num >= matches_length - 1)
+ {
+ ret = g_string_append(ret, _("#Submatch Out of Range#"));
+ state = PARSE_STATE_TEXT;
+ }
+ else
+ ret = g_string_append(ret, matches[num + 1]);
+ }
+
+ if(!g_ascii_isdigit(data[i]))
+ ret = g_string_append_c(ret, data[i]);
+
+ g_string_free(reg_num, TRUE);
+ reg_num = NULL;
+ }
+ }
+ break;
+ }
+ }
+
+ if(matches_length != 0)
+ g_strfreev(matches);
+
+ return g_string_free(ret, (ret->len == 0) );
+}
+
Modified: trunk/src/mud-trigger.h
==============================================================================
--- trunk/src/mud-trigger.h (original)
+++ trunk/src/mud-trigger.h Fri Mar 27 19:57:39 2009
@@ -57,8 +57,38 @@
MUD_TRIGGER_TYPE_CONDITION
} MudTriggerType;
+typedef enum
+{
+ MUD_TRIGGER_ACTION_TEXT,
+ MUD_TRIGGER_ACTION_VAR,
+ MUD_TRIGGER_ACTION_LUA
+} MudTriggerAction;
+
+typedef enum
+{
+ MUD_TRIGGER_CONDITION_TEXT,
+ MUD_TRIGGER_CONDITION_VAR,
+ MUD_TRIGGER_CONDITION_LUA
+} MudTriggerConditionType;
+
+typedef struct MudTriggerCondition
+{
+ MudTriggerConditionType type;
+
+ union
+ {
+ //MudVariable *var;
+ gchar *data;
+ };
+
+} MudTriggerCondition;
+
GType mud_trigger_get_type (void);
+void mud_trigger_add_data(MudTrigger *self,
+ const gchar *data,
+ guint length);
+
G_END_DECLS
#endif // MUD_TRIGGER_H
Modified: trunk/src/mud-window-prefs.c
==============================================================================
--- trunk/src/mud-window-prefs.c (original)
+++ trunk/src/mud-window-prefs.c Fri Mar 27 19:57:39 2009
@@ -52,7 +52,6 @@
GtkWidget *keep_check;
GtkWidget *div_entry;
GtkWidget *encoding_combo;
- GtkWidget *scroll_check;
GtkWidget *lines_spin;
GtkWidget *font_button;
GtkWidget *fore_button;
@@ -129,8 +128,6 @@
// Update Functions
static void mud_window_prefs_update_commdev(MudWindowPrefs *self,
MudPrefs *preferences);
-static void mud_window_prefs_update_scrolloutput(MudWindowPrefs *self,
- MudPrefs *preferences);
static void mud_window_prefs_update_encoding_combo(MudWindowPrefs *self,
MudPrefs *preferences);
static void mud_window_prefs_update_keeptext(MudWindowPrefs *self,
@@ -156,8 +153,6 @@
MudWindowPrefs *window);
static void mud_window_prefs_keeptext_cb(GtkWidget *widget,
MudWindowPrefs *window);
-static void mud_window_prefs_scrolloutput_cb(GtkWidget *widget,
- MudWindowPrefs *window);
static void mud_window_prefs_commdev_cb(GtkWidget *widget,
MudWindowPrefs *window);
static void mud_window_prefs_scrollback_cb(GtkWidget *widget,
@@ -425,7 +420,6 @@
self->priv->keep_check = glade_xml_get_widget(glade, "cb_keep");
self->priv->div_entry = glade_xml_get_widget(glade, "entry_commdev");
self->priv->encoding_combo = glade_xml_get_widget(glade, "encoding_combo");
- self->priv->scroll_check = glade_xml_get_widget(glade, "cb_scrollback");
self->priv->lines_spin = glade_xml_get_widget(glade, "sb_lines");
self->priv->font_button = glade_xml_get_widget(glade, "fp_font");
self->priv->fore_button = glade_xml_get_widget(glade, "cb_foreground");
@@ -483,8 +477,6 @@
mud_window_prefs_update_echotext(window, profile->preferences);
if (mask->KeepText)
mud_window_prefs_update_keeptext(window, profile->preferences);
- if (mask->ScrollOnOutput)
- mud_window_prefs_update_scrolloutput(window, profile->preferences);
if (mask->CommDev)
mud_window_prefs_update_commdev(window, profile->preferences);
if (mask->Scrollback)
@@ -518,7 +510,6 @@
// Terminal
mud_window_prefs_update_echotext(self, self->priv->profile->preferences);
mud_window_prefs_update_keeptext(self, self->priv->profile->preferences);
- mud_window_prefs_update_scrolloutput(self, self->priv->profile->preferences);
mud_window_prefs_update_commdev(self, self->priv->profile->preferences);
mud_window_prefs_update_scrollback(self, self->priv->profile->preferences);
mud_window_prefs_update_font(self, self->priv->profile->preferences);
@@ -551,11 +542,6 @@
G_CALLBACK(mud_window_prefs_keeptext_cb),
self);
- g_signal_connect(self->priv->scroll_check,
- "toggled",
- G_CALLBACK(mud_window_prefs_scrolloutput_cb),
- self);
-
g_signal_connect(self->priv->div_entry,
"changed",
G_CALLBACK(mud_window_prefs_commdev_cb),
@@ -603,14 +589,6 @@
}
static void
-mud_window_prefs_update_scrolloutput(MudWindowPrefs *self,
- MudPrefs *preferences)
-{
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->priv->scroll_check),
- preferences->ScrollOnOutput);
-}
-
-static void
mud_window_prefs_update_encoding_combo(MudWindowPrefs *self,
MudPrefs *preferences)
{
@@ -726,16 +704,6 @@
// Callbacks
static void
-mud_window_prefs_scrolloutput_cb(GtkWidget *widget,
- MudWindowPrefs *self)
-{
- gboolean value = GTK_TOGGLE_BUTTON(widget)->active ? TRUE : FALSE;
- RETURN_IF_CHANGING_PROFILES(self);
-
- mud_profile_set_scrolloutput(self->priv->profile, value);
-}
-
-static void
mud_window_prefs_keeptext_cb(GtkWidget *widget,
MudWindowPrefs *self)
{
Modified: trunk/ui/muds.glade
==============================================================================
--- trunk/ui/muds.glade (original)
+++ trunk/ui/muds.glade Fri Mar 27 19:57:39 2009
@@ -1,11 +1,11 @@
<?xml version="1.0"?>
<glade-interface>
- <!-- interface-requires gtk+ 2.10 -->
+ <!-- interface-requires gtk+ 2.14 -->
<!-- interface-naming-policy toplevel-contextual -->
<widget class="GtkWindow" id="mudviewwindow">
<property name="visible">True</property>
<property name="title" translatable="yes">Connections</property>
- <property name="window_position">center-on-parent</property>
+ <property name="window_position">center-always</property>
<property name="default_width">600</property>
<property name="default_height">400</property>
<property name="skip_taskbar_hint">True</property>
Modified: trunk/ui/prefs.glade
==============================================================================
--- trunk/ui/prefs.glade (original)
+++ trunk/ui/prefs.glade Fri Mar 27 19:57:39 2009
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<glade-interface>
- <!-- interface-requires gtk+ 2.10 -->
+ <!-- interface-requires gtk+ 2.14 -->
<!-- interface-naming-policy toplevel-contextual -->
<widget class="GtkDialog" id="newprofile_dialog">
<property name="visible">True</property>
@@ -594,20 +594,6 @@
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
- <widget class="GtkCheckButton" id="cb_scrollback">
- <property name="label" translatable="yes">Scroll on _Output</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
<widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
<child>
@@ -646,7 +632,7 @@
</widget>
<packing>
<property name="expand">False</property>
- <property name="position">1</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
@@ -656,7 +642,7 @@
<packing>
<property name="expand">False</property>
<property name="padding">5</property>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
@@ -1014,7 +1000,7 @@
</widget>
<packing>
<property name="expand">False</property>
- <property name="position">3</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
@@ -1023,7 +1009,7 @@
<property name="xalign">1</property>
</widget>
<packing>
- <property name="position">4</property>
+ <property name="position">3</property>
</packing>
</child>
</widget>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]