[gtksourceview/wip/search] test-search-ui: add replace entry and button



commit b7136fe8faa599e48593379764efa55ea558b933
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Mon Jul 1 17:11:34 2013 +0200

    test-search-ui: add replace entry and button

 tests/test-search-ui.c  |   53 +++++++++++++++++++++++++++++
 tests/test-search-ui.ui |   84 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 137 insertions(+), 0 deletions(-)
---
diff --git a/tests/test-search-ui.c b/tests/test-search-ui.c
index 888317b..91398bd 100644
--- a/tests/test-search-ui.c
+++ b/tests/test-search-ui.c
@@ -22,6 +22,13 @@
 #include <gtk/gtk.h>
 #include <gtksourceview/gtksource.h>
 
+typedef struct
+{
+       GtkSourceView *view;
+       GtkSourceBuffer *buffer;
+       GtkEntry *replace_entry;
+} ReplaceWidgets;
+
 static void
 open_file (GtkSourceBuffer *buffer,
           const gchar     *filename)
@@ -149,6 +156,30 @@ on_button_next_clicked_cb (GtkButton   *button,
 }
 
 static void
+on_replace_cb (GtkButton      *button,
+              ReplaceWidgets *widgets)
+{
+       gtk_source_buffer_replace_search_match (widgets->buffer,
+                                               NULL,
+                                               NULL,
+                                               gtk_entry_get_text (widgets->replace_entry),
+                                               -1);
+
+       gtk_source_buffer_forward_search_async (widgets->buffer,
+                                               NULL,
+                                               NULL,
+                                               (GAsyncReadyCallback)forward_search_finished,
+                                               widgets->view);
+}
+
+static void
+on_replace_all_cb (GtkButton      *button,
+                  ReplaceWidgets *widgets)
+{
+       g_message ("Not implemented yet.");
+}
+
+static void
 create_window (void)
 {
        GtkBuilder *builder;
@@ -163,7 +194,11 @@ create_window (void)
        GtkCheckButton *wrap_around;
        GtkButton *button_previous;
        GtkButton *button_next;
+       GtkEntry *replace_entry;
+       GtkButton *button_replace;
+       GtkButton *button_replace_all;
        PangoFontDescription *font;
+       ReplaceWidgets *replace_widgets;
 
        builder = gtk_builder_new ();
 
@@ -185,6 +220,9 @@ create_window (void)
        wrap_around = GTK_CHECK_BUTTON (gtk_builder_get_object (builder, "checkbutton_wrap_around"));
        button_previous = GTK_BUTTON (gtk_builder_get_object (builder, "button_previous"));
        button_next = GTK_BUTTON (gtk_builder_get_object (builder, "button_next"));
+       replace_entry = GTK_ENTRY (gtk_builder_get_object (builder, "entry_replace"));
+       button_replace = GTK_BUTTON (gtk_builder_get_object (builder, "button_replace"));
+       button_replace_all = GTK_BUTTON (gtk_builder_get_object (builder, "button_replace_all"));
 
        font = pango_font_description_from_string ("Monospace 10");
        gtk_widget_override_font (GTK_WIDGET (source_view), font);
@@ -240,6 +278,21 @@ create_window (void)
                                source_buffer, "search-wrap-around",
                                G_BINDING_SYNC_CREATE);
 
+       replace_widgets = g_slice_new (ReplaceWidgets);
+       replace_widgets->view = source_view;
+       replace_widgets->buffer = source_buffer;
+       replace_widgets->replace_entry = replace_entry;
+
+       g_signal_connect (button_replace,
+                         "clicked",
+                         G_CALLBACK (on_replace_cb),
+                         replace_widgets);
+
+       g_signal_connect (button_replace_all,
+                         "clicked",
+                         G_CALLBACK (on_replace_all_cb),
+                         replace_widgets);
+
        g_object_unref (builder);
 }
 
diff --git a/tests/test-search-ui.ui b/tests/test-search-ui.ui
index 5bfa595..d171529 100644
--- a/tests/test-search-ui.ui
+++ b/tests/test-search-ui.ui
@@ -14,6 +14,18 @@
     <property name="stock">gtk-go-down</property>
     <property name="icon_size">1</property>
   </object>
+  <object class="GtkImage" id="image3">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-find-and-replace</property>
+    <property name="icon_size">1</property>
+  </object>
+  <object class="GtkImage" id="image4">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-find-and-replace</property>
+    <property name="icon_size">1</property>
+  </object>
   <object class="GtkWindow" id="window">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -198,6 +210,78 @@
             <property name="height">1</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkGrid" id="grid4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="column_spacing">6</property>
+            <child>
+              <object class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label">Replace:</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="entry_replace">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button_replace">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="image">image3</property>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button_replace_all">
+                <property name="label">All</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="image">image4</property>
+                <property name="always_show_image">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">3</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">3</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
       </object>
     </child>
   </object>


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