[anjuta/git-shell] libanjuta: Add AnjutaEntry



commit 1a6975c30f6a21b3a1c7faf81b1b8692552091b3
Author: James Liggett <jrliggett cox net>
Date:   Mon Oct 18 16:43:21 2010 -0700

    libanjuta: Add AnjutaEntry

 libanjuta/Makefile.am            |    7 +-
 libanjuta/anjuta-entry.c         |  375 ++++++++++++++++++++++++++++++++++++++
 libanjuta/anjuta-entry.h         |   60 ++++++
 libanjuta/anjuta-glade-catalog.c |    1 +
 libanjuta/anjuta-glade.xml       |    9 +
 plugins/git/anjuta-git.ui        |   55 ++----
 6 files changed, 465 insertions(+), 42 deletions(-)
---
diff --git a/libanjuta/Makefile.am b/libanjuta/Makefile.am
index 33089ba..2fe5054 100644
--- a/libanjuta/Makefile.am
+++ b/libanjuta/Makefile.am
@@ -108,7 +108,9 @@ libanjuta_la_SOURCES= \
 	anjuta-column-text-view.h \
 	anjuta-column-text-view.c \
 	anjuta-file-drop-entry.h \
-	anjuta-file-drop-entry.c
+	anjuta-file-drop-entry.c \
+	anjuta-entry.h \
+	anjuta-entry.c
 
 
 
@@ -176,7 +178,8 @@ libanjuta_include = \
 	anjuta-file-list.h \
 	anjuta-pkg-config-chooser.h \
 	anjuta-column-text-view.h \
-	anjuta-file-drop-entry.h
+	anjuta-file-drop-entry.h \
+	anjuta-entry.h
 
 libanjutainclude_HEADERS = \
 	$(libanjuta_include) \
diff --git a/libanjuta/anjuta-entry.c b/libanjuta/anjuta-entry.c
new file mode 100644
index 0000000..8b7ba43
--- /dev/null
+++ b/libanjuta/anjuta-entry.c
@@ -0,0 +1,375 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+/*
+ * anjuta
+ * Copyright (C) James Liggett 2010 <jrliggett cox net>
+ * 
+ * anjuta 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 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * anjuta 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "anjuta-entry.h"
+
+/**
+ * SECTION:anjuta-entry
+ * @short_description: #GtkEntry subclass that displays help text with a button
+ *                     to clear the entry's contents.
+ * @include: libanjuta/anjuta-entry.h
+ *
+ * AnjutaEntry is a  version of a #GtkEntry that displays some text, in
+ * a lighter color, that describes what is to be entered into it. There is also
+ * a button on the left to clear the entry's content quickly. AnjutaEntry is 
+ * similar to the serach boxes used in Evolution and Glade, but is more generic
+ * can can be used in almost any situation. 
+ */
+
+enum
+{
+	PROP_0,
+
+	PROP_HELP_TEXT
+};
+
+typedef enum
+{
+	ANJUTA_ENTRY_NORMAL,
+	ANJUTA_ENTRY_HELP
+} AnjutaEntryMode;
+
+struct _AnjutaEntryPriv
+{
+	gboolean showing_help_text;
+	gchar *help_text;
+};
+
+G_DEFINE_TYPE (AnjutaEntry, anjuta_entry, GTK_TYPE_ENTRY);
+
+/* The buffer inserted/deleted handlers must be blocked before calling
+ * this function. Make the calling function do the blocking so we don't have
+ * to block/unblock more than once. */
+static void
+anjuta_entry_set_mode (AnjutaEntry *self, AnjutaEntryMode mode)
+{
+	GtkStyle *style;
+
+	style = gtk_widget_get_style (GTK_WIDGET (self));
+
+	switch (mode)
+	{
+		case ANJUTA_ENTRY_NORMAL:
+			/* Remove the help text from the widget */
+			if (self->priv->showing_help_text)
+				gtk_entry_set_text (GTK_ENTRY (self), "");
+
+			gtk_widget_modify_text (GTK_WIDGET (self), GTK_STATE_NORMAL, NULL);
+
+			self->priv->showing_help_text = FALSE;
+
+			break;
+		case ANJUTA_ENTRY_HELP:
+			if (self->priv->help_text)
+				gtk_entry_set_text (GTK_ENTRY (self), self->priv->help_text);
+			else
+				gtk_entry_set_text (GTK_ENTRY (self), "");
+
+			gtk_widget_modify_text (GTK_WIDGET (self),
+			                        GTK_STATE_NORMAL,
+			                        &(style->text[GTK_STATE_INSENSITIVE]));
+
+			self->priv->showing_help_text = TRUE;
+
+			break;
+		default:
+			break;
+	}
+}
+
+static void
+on_buffer_inserted_text (GtkEntryBuffer *buffer, guint position, gchar *chars, 
+                         guint n_chars, AnjutaEntry *self)
+{
+	if (n_chars > 0)
+	{
+		if (self->priv->showing_help_text)
+			anjuta_entry_set_mode (self, ANJUTA_ENTRY_NORMAL);
+	}
+}
+
+static void
+on_buffer_deleted_text (GtkEntryBuffer *buffer, guint position, guint n_chars,
+                        AnjutaEntry *self)
+{
+	const gchar *text;
+	
+	text = gtk_entry_get_text (GTK_ENTRY (self));
+
+	if (text[0] == '\0')
+		anjuta_entry_set_mode (self, ANJUTA_ENTRY_HELP);
+}
+
+
+static void
+anjuta_entry_block_change_handlers (AnjutaEntry *self)
+{
+	GtkEntryBuffer *buffer;
+
+	buffer = gtk_entry_get_buffer (GTK_ENTRY (self));
+	
+	g_signal_handlers_block_by_func (buffer, on_buffer_inserted_text, self);
+	g_signal_handlers_block_by_func (buffer, on_buffer_deleted_text, self);	
+}
+
+static void
+anjuta_entry_unbloock_change_handlers (AnjutaEntry *self)
+{
+	GtkEntryBuffer *buffer;
+
+	buffer = gtk_entry_get_buffer (GTK_ENTRY (self));
+
+	g_signal_handlers_unblock_by_func (buffer, on_buffer_inserted_text, self);
+	g_signal_handlers_unblock_by_func (buffer, on_buffer_deleted_text, self);	
+}
+		
+/* It's probably terrible practice for a subclass to be listening to the 
+ * parent' class's signals, but for some reason the icon release signal 
+ * doesn't have a virtual method pointer in the GtkEntry class structure */
+static void
+anjuta_entry_icon_release (GtkEntry *entry, GtkEntryIconPosition icon_pos,
+                           GdkEvent *event, gpointer user_data)
+{
+	AnjutaEntry *self;
+
+	self = ANJUTA_ENTRY (entry);
+
+	if (icon_pos == GTK_ENTRY_ICON_SECONDARY)
+	{
+		anjuta_entry_block_change_handlers (self);
+		gtk_entry_set_text (entry, "");
+		anjuta_entry_unbloock_change_handlers (self);
+	}
+}
+
+static void
+anjuta_entry_init (AnjutaEntry *self)
+{
+	GtkEntryBuffer *buffer;
+
+	self->priv = g_new0 (AnjutaEntryPriv, 1);
+	buffer = gtk_entry_get_buffer (GTK_ENTRY (self));
+
+	gtk_entry_set_icon_from_stock (GTK_ENTRY (self), GTK_ENTRY_ICON_SECONDARY,
+	                               GTK_STOCK_CLEAR);
+	gtk_entry_set_icon_activatable (GTK_ENTRY (self), GTK_ENTRY_ICON_SECONDARY,
+	                                TRUE);
+
+	g_signal_connect (G_OBJECT (buffer), "inserted-text",
+	                  G_CALLBACK (on_buffer_inserted_text),
+	                  self);
+
+	g_signal_connect (G_OBJECT (buffer), "deleted-text",
+	                  G_CALLBACK (on_buffer_deleted_text),
+	                  self);
+
+	g_signal_connect (G_OBJECT (self), "icon-release",
+	                  G_CALLBACK (anjuta_entry_icon_release),
+	                  NULL);
+
+	anjuta_entry_set_mode (self, ANJUTA_ENTRY_HELP);
+}
+
+static void
+anjuta_entry_finalize (GObject *object)
+{
+	AnjutaEntry *self;
+
+	self = ANJUTA_ENTRY (object);
+
+	g_free (self->priv->help_text);
+	g_free (self->priv);
+
+	G_OBJECT_CLASS (anjuta_entry_parent_class)->finalize (object);
+}
+
+static void
+anjuta_entry_set_property (GObject *object, guint prop_id, const GValue *value, 
+                           GParamSpec *pspec)
+{
+	AnjutaEntry *self;
+
+	g_return_if_fail (ANJUTA_IS_ENTRY (object));
+
+	self = ANJUTA_ENTRY (object);
+
+	switch (prop_id)
+	{
+		case PROP_HELP_TEXT:
+			g_free (self->priv->help_text);
+
+			self->priv->help_text = g_value_dup_string (value);
+
+			/* Update the display */
+			if (self->priv->showing_help_text)
+			{
+				if (self->priv->help_text)
+				{
+					anjuta_entry_block_change_handlers (self);
+
+					gtk_entry_set_text (GTK_ENTRY (self), 
+					                    self->priv->help_text);
+
+					anjuta_entry_unbloock_change_handlers (self);
+				}
+			}
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+			break;
+	}
+}
+
+static void
+anjuta_entry_get_property (GObject *object, guint prop_id, GValue *value, 
+                           GParamSpec *pspec)
+{
+	AnjutaEntry *self;
+
+	g_return_if_fail (ANJUTA_IS_ENTRY (object));
+
+	self = ANJUTA_ENTRY (object);
+
+	switch (prop_id)
+	{
+		case PROP_HELP_TEXT:
+			g_value_set_string (value, self->priv->help_text);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+			break;
+	}
+}
+
+static gboolean
+anjuta_entry_focus_in_event (GtkWidget *widget, GdkEventFocus *event)
+{
+	AnjutaEntry *self;
+
+	self = ANJUTA_ENTRY (widget);
+
+	if (self->priv->showing_help_text)
+	{
+		anjuta_entry_block_change_handlers (self);
+		anjuta_entry_set_mode (self, ANJUTA_ENTRY_NORMAL);
+
+		/* Don't unblock the change handlers right away so the user can 
+		 * enter something. Unblock the change handlers again when the 
+		 * entry loses focus. */
+	}
+
+	return GTK_WIDGET_CLASS (anjuta_entry_parent_class)->focus_in_event (widget, event);
+}
+
+static gboolean
+anjuta_entry_focus_out_event (GtkWidget *widget, GdkEventFocus *event)
+{
+	AnjutaEntry *self;
+	const gchar *text;
+
+	self = ANJUTA_ENTRY (widget);
+	text = gtk_entry_get_text (GTK_ENTRY (widget));
+
+	if (text == NULL || text[0] == '\0')
+		anjuta_entry_set_mode (self, ANJUTA_ENTRY_HELP);
+
+	anjuta_entry_unbloock_change_handlers (self);
+
+	return GTK_WIDGET_CLASS (anjuta_entry_parent_class)->focus_out_event (widget, event);
+}
+
+static void
+anjuta_entry_class_init (AnjutaEntryClass *klass)
+{
+	GObjectClass* object_class = G_OBJECT_CLASS (klass);
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+	object_class->finalize = anjuta_entry_finalize;
+	object_class->set_property = anjuta_entry_set_property;
+	object_class->get_property = anjuta_entry_get_property;
+	widget_class->focus_in_event = anjuta_entry_focus_in_event;
+	widget_class->focus_out_event = anjuta_entry_focus_out_event;
+
+	/**
+	 * AnjutaEntry::help-text:
+	 *
+	 * Text that should be displayed when the entry is empty. This text should
+	 * briefly describe what the user should enter.
+	 */
+	g_object_class_install_property (object_class,
+	                                 PROP_HELP_TEXT,
+	                                 g_param_spec_string ("help-text",
+	                                                      _("Help text"),
+	                                                      _("Text to show the user what to enter into the entry"),
+	                                                      "",
+	                                                      G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+/**
+ * anjuta_entry_new:
+ * @self: An AnjutaEntry
+ *
+ * Creates a new AnjutaEntry.
+ */
+GtkWidget *
+anjuta_entry_new (void)
+{
+	return g_object_new (ANJUTA_TYPE_ENTRY, NULL);
+}
+
+/**
+ * anjuta_entry_get_text:
+ * @self: An AnjutaEntry
+ *
+ * Returns the contents of the entry. If the entry is empty, the help text will
+ * be displayed and an empty string will be returned.
+ */
+const gchar *
+anjuta_entry_get_text (AnjutaEntry *self)
+{
+	return (self->priv->showing_help_text) ? 
+		   gtk_entry_get_text (GTK_ENTRY (self)) : "";
+}
+
+/**
+ * anjuta_entry_dup_text:
+ * @self: An AnjutaEntry
+ *
+ * Returns a copy of the contents of the entry. If the entry is empty, the 
+ * returned string will be empty. The returned string must be freed when no
+ * longer needed. 
+ */
+gchar *
+anjuta_entry_dup_text (AnjutaEntry *self)
+{
+	return g_strdup (anjuta_entry_get_text (self));
+}
+
+/**
+ * anjuta_entry_is_showing_help_text:
+ * @self: An AnjutaEntry
+ * 
+ * Returns whether the entry is showing its help text. In practice, if this
+ * method returns %TRUE, it means that the user has not entered anything.
+ */
+gboolean
+anjuta_entry_is_showing_help_text (AnjutaEntry *self)
+{
+	return self->priv->showing_help_text;
+}
diff --git a/libanjuta/anjuta-entry.h b/libanjuta/anjuta-entry.h
new file mode 100644
index 0000000..61fed90
--- /dev/null
+++ b/libanjuta/anjuta-entry.h
@@ -0,0 +1,60 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
+/*
+ * anjuta
+ * Copyright (C) James Liggett 2010 <jrliggett cox net>
+ * 
+ * anjuta 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 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * anjuta 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _ANJUTA_ENTRY_H_
+#define _ANJUTA_ENTRY_H_
+
+#include <glib-object.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define ANJUTA_TYPE_ENTRY             (anjuta_entry_get_type ())
+#define ANJUTA_ENTRY(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), ANJUTA_TYPE_ENTRY, AnjutaEntry))
+#define ANJUTA_ENTRY_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), ANJUTA_TYPE_ENTRY, AnjutaEntryClass))
+#define ANJUTA_IS_ENTRY(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ANJUTA_TYPE_ENTRY))
+#define ANJUTA_IS_ENTRY_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), ANJUTA_TYPE_ENTRY))
+#define ANJUTA_ENTRY_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), ANJUTA_TYPE_ENTRY, AnjutaEntryClass))
+
+typedef struct _AnjutaEntryClass AnjutaEntryClass;
+typedef struct _AnjutaEntry AnjutaEntry;
+typedef struct _AnjutaEntryPriv AnjutaEntryPriv;
+
+struct _AnjutaEntryClass
+{
+	GtkEntryClass parent_class;
+};
+
+struct _AnjutaEntry
+{
+	GtkEntry parent_instance;
+
+	AnjutaEntryPriv *priv;
+};
+
+GType anjuta_entry_get_type (void) G_GNUC_CONST;
+GtkWidget *anjuta_entry_new (void);
+const gchar *anjuta_entry_get_text (AnjutaEntry *self);
+gchar *anjuta_entry_dup_text (AnjutaEntry *self);
+gboolean anjuta_entry_is_showing_help_text (AnjutaEntry *self);
+
+G_END_DECLS
+
+#endif /* _ANJUTA_ENTRY_H_ */
diff --git a/libanjuta/anjuta-glade-catalog.c b/libanjuta/anjuta-glade-catalog.c
index 94054a3..3934c94 100644
--- a/libanjuta/anjuta-glade-catalog.c
+++ b/libanjuta/anjuta-glade-catalog.c
@@ -5,4 +5,5 @@
 #include <libanjuta/anjuta-pkg-config-chooser.h>
 #include <libanjuta/anjuta-column-text-view.h>
 #include <libanjuta/anjuta-file-drop-entry.h>
+#include <libanjuta/anjuta-entry.h>
 
diff --git a/libanjuta/anjuta-glade.xml b/libanjuta/anjuta-glade.xml
index eb439f4..85151a2 100644
--- a/libanjuta/anjuta-glade.xml
+++ b/libanjuta/anjuta-glade.xml
@@ -40,6 +40,14 @@
 
 		 <glade-widget-class name="AnjutaFileDropEntry" title="File Drop Entry"
 		 generic-name="filedropentry" />
+		 
+		 <glade-widget-class name="AnjutaEntry" title="Entry" 
+		 generic-name="entry">
+		 	
+		 	<properties>
+		 		<property translatable="True" id="help-text" default="" />
+		 	</properties>
+		 </glade-widget-class>
 
 	</glade-widget-classes>
 
@@ -50,5 +58,6 @@
 		<glade-widget-class-ref name="AnjutaPkgConfigChooser" />
 		<glade-widget-class-ref name="AnjutaColumnTextView" />
 		<glade-widget-class-ref name="AnjutaFileDropEntry" />
+		<glade-widget-class-ref name="AnjutaEntry" />
 	</glade-widget-group>
 </glade-catalog>
diff --git a/plugins/git/anjuta-git.ui b/plugins/git/anjuta-git.ui
index 014faf8..8c8ea9b 100644
--- a/plugins/git/anjuta-git.ui
+++ b/plugins/git/anjuta-git.ui
@@ -1,11 +1,10 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires anjuta 0.0 -->
   <requires lib="gtk+" version="2.16"/>
   <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkVBox" id="add_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
@@ -18,7 +17,6 @@
             <child>
               <object class="AnjutaFileList" id="file_list">
                 <property name="visible">True</property>
-                <property name="orientation">vertical</property>
                 <property name="spacing">2</property>
               </object>
             </child>
@@ -263,7 +261,7 @@
                               <object class="GtkEntry" id="name_entry">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="invisible_char">&#x25CF;</property>
+                                <property name="invisible_char">â??</property>
                               </object>
                               <packing>
                                 <property name="left_attach">1</property>
@@ -274,7 +272,7 @@
                               <object class="GtkEntry" id="email_entry">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="invisible_char">&#x25CF;</property>
+                                <property name="invisible_char">â??</property>
                               </object>
                               <packing>
                                 <property name="left_attach">1</property>
@@ -550,7 +548,7 @@
                   <object class="AnjutaDropEntry" id="revision_entry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="invisible_char">â??</property>
                   </object>
                 </child>
               </object>
@@ -727,7 +725,7 @@
                   <object class="GtkEntry" id="name_entry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="invisible_char">â??</property>
                   </object>
                 </child>
               </object>
@@ -795,7 +793,7 @@
                             <property name="visible">True</property>
                             <property name="sensitive">False</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="invisible_char">â??</property>
                           </object>
                         </child>
                       </object>
@@ -1046,7 +1044,6 @@
   </object>
   <object class="GtkVBox" id="log_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkHBox" id="hbox1">
         <property name="visible">True</property>
@@ -1064,10 +1061,12 @@
                     <property name="visible">True</property>
                     <property name="spacing">2</property>
                     <child>
-                      <object class="GtkEntry" id="path_entry">
+                      <object class="AnjutaEntry" id="path_entry">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="invisible_char">â?¢</property>
+                        <property name="text" translatable="yes">Whole project; Drop a file here or type a path to view a file or folder log</property>
+                        <property name="help_text" translatable="yes">Whole project; Drop a file here or type a path to view a file or folder log</property>
                       </object>
                       <packing>
                         <property name="position">0</property>
@@ -1144,13 +1143,11 @@
     <child>
       <object class="GtkVBox" id="vbox15">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <property name="homogeneous">True</property>
         <child>
           <object class="GtkVPaned" id="vpaned1">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <property name="orientation">vertical</property>
             <child>
               <object class="GtkFrame" id="frame18">
                 <property name="visible">True</property>
@@ -1177,6 +1174,7 @@
                               <object class="GtkTreeView" id="log_view">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
+                                <property name="has_focus">True</property>
                                 <property name="has_tooltip">True</property>
                                 <child>
                                   <object class="GtkTreeViewColumn" id="ref_icon_column">
@@ -1357,7 +1355,6 @@
   </object>
   <object class="GtkVBox" id="remove_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
@@ -1370,7 +1367,6 @@
             <child>
               <object class="AnjutaFileList" id="file_list">
                 <property name="visible">True</property>
-                <property name="orientation">vertical</property>
                 <property name="spacing">2</property>
               </object>
             </child>
@@ -1465,7 +1461,6 @@
   </object>
   <object class="GtkVBox" id="remotes_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
@@ -1521,11 +1516,9 @@
   </object>
   <object class="GtkVBox" id="push_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <child>
           <object class="GtkFrame" id="repository_frame">
             <property name="visible">True</property>
@@ -1691,7 +1684,6 @@
                 <child>
                   <object class="GtkVBox" id="vbox3">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
                     <child>
                       <object class="GtkCheckButton" id="push_all_tags_check">
                         <property name="label" translatable="yes">Push all tags</property>
@@ -1800,11 +1792,9 @@
   </object>
   <object class="GtkVBox" id="pull_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <child>
           <object class="GtkFrame" id="frame1">
             <property name="visible">True</property>
@@ -1846,7 +1836,6 @@
                 <child>
                   <object class="GtkVBox" id="vbox2">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
                     <child>
                       <object class="GtkCheckButton" id="rebase_check">
                         <property name="label" translatable="yes">Rebase</property>
@@ -1998,11 +1987,9 @@
   </object>
   <object class="GtkVBox" id="checkout_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <child>
           <object class="GtkFrame" id="frame1">
             <property name="visible">True</property>
@@ -2084,11 +2071,9 @@
   </object>
   <object class="GtkVBox" id="add_remote_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <child>
           <object class="GtkFrame" id="frame1">
             <property name="visible">True</property>
@@ -2102,7 +2087,7 @@
                   <object class="GtkEntry" id="name_entry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="invisible_char">â??</property>
                   </object>
                 </child>
               </object>
@@ -2134,7 +2119,7 @@
                   <object class="GtkEntry" id="url_entry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="invisible_char">â??</property>
                   </object>
                 </child>
               </object>
@@ -2235,7 +2220,6 @@
   </object>
   <object class="GtkVBox" id="tags_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
@@ -2303,11 +2287,9 @@
   </object>
   <object class="GtkVBox" id="create_tag_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <child>
           <object class="GtkFrame" id="frame4">
             <property name="visible">True</property>
@@ -2321,7 +2303,7 @@
                   <object class="GtkEntry" id="name_entry">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="invisible_char">â??</property>
                   </object>
                 </child>
               </object>
@@ -2351,7 +2333,6 @@
                 <child>
                   <object class="GtkVBox" id="vbox2">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
                     <child>
                       <object class="GtkRadioButton" id="repository_head_radio">
                         <property name="label" translatable="yes">Repository head</property>
@@ -2387,7 +2368,7 @@
                             <property name="visible">True</property>
                             <property name="sensitive">False</property>
                             <property name="can_focus">True</property>
-                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="invisible_char">â??</property>
                           </object>
                         </child>
                       </object>
@@ -2425,7 +2406,6 @@
                 <child>
                   <object class="GtkVBox" id="vbox3">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
                     <child>
                       <object class="GtkCheckButton" id="force_check">
                         <property name="label" translatable="yes">Force</property>
@@ -2477,7 +2457,6 @@
                             <property name="visible">True</property>
                             <property name="sensitive">False</property>
                             <property name="can_focus">True</property>
-                            <property name="orientation">vertical</property>
                           </object>
                         </child>
                       </object>
@@ -2549,7 +2528,6 @@
   </object>
   <object class="GtkVBox" id="stash_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkFrame" id="frame1">
         <property name="visible">True</property>
@@ -2616,11 +2594,9 @@
   </object>
   <object class="GtkVBox" id="stash_changes_pane">
     <property name="visible">True</property>
-    <property name="orientation">vertical</property>
     <child>
       <object class="GtkVBox" id="vbox2">
         <property name="visible">True</property>
-        <property name="orientation">vertical</property>
         <child>
           <object class="GtkFrame" id="frame1">
             <property name="visible">True</property>
@@ -2634,7 +2610,6 @@
                   <object class="AnjutaColumnTextView" id="message_view">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="orientation">vertical</property>
                   </object>
                 </child>
               </object>



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