[ghex/expand-search-options] findrep: Split as much as possible into UI files
- From: Logan Rathbone <larathbone src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ghex/expand-search-options] findrep: Split as much as possible into UI files
- Date: Thu, 28 Apr 2022 00:57:10 +0000 (UTC)
commit 04feac74fbd4d26357ccf0c37adbbf3cbf8666ff
Author: Logan Rathbone <poprocks gmail com>
Date: Wed Apr 27 20:56:40 2022 -0400
findrep: Split as much as possible into UI files
src/find-dialog.ui | 91 +++++++++++++++++++
src/findreplace.c | 223 ++++++++++++++--------------------------------
src/ghex.gresource.xml.in | 3 +
src/jump-dialog.ui | 67 ++++++++++++++
src/replace-dialog.ui | 49 ++++++++++
5 files changed, 276 insertions(+), 157 deletions(-)
---
diff --git a/src/find-dialog.ui b/src/find-dialog.ui
new file mode 100644
index 0000000..dbf3763
--- /dev/null
+++ b/src/find-dialog.ui
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- vim: ts=2 sw=2
+-->
+<!--
+ Copyright © 2022 Logan Rathbone <poprocks gmail com>
+
+ GHex is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ GHex 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 GHex; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Original GHex Author: Jaka Mocnik <jaka gnu org>
+-->
+
+<interface domain="gtk40">
+ <template class="FindDialog" parent="PaneDialog">
+
+ <child><object class="GtkBox" id="vbox">
+ <property name="orientation">vertical</property>
+
+ <child><object class="GtkFrame" id="frame">
+ <property name="label" translatable="yes">Find
String</property>
+ <accessibility>
+ <property name="description" translatable="yes">Enter
the hex data or ASCII data to search for</property>
+ </accessibility>
+ </object></child>
+
+ <child><object class="GtkBox" id="hbox">
+ <property name="orientation">horizontal</property>
+
+ <child><object class="GtkButton" id="f_next">
+ <property name="label"
translatable="yes">Find _Next</property>
+ <property name="use-underline">true</property>
+ <property
name="receives-default">true</property>
+ <accessibility>
+ <property name="description"
translatable="yes">Finds the next occurrence of the search string</property>
+ </accessibility>
+ </object></child>
+
+ <child><object class="GtkButton" id="f_prev">
+ <property name="label"
translatable="yes">Find _Previous</property>
+ <property name="use-underline">true</property>
+ <accessibility>
+ <property name="description"
translatable="yes">Finds the previous occurrence of the search string</property>
+ </accessibility>
+ </object></child>
+
+ <child><object class="GtkButton" id="f_clear">
+ <property name="label"
translatable="yes">_Clear</property>
+ <property name="use-underline">true</property>
+ <accessibility>
+ <property name="description"
translatable="yes">Clears the data you are searching for</property>
+ </accessibility>
+ </object></child>
+
+ <child><object class="GtkMenuButton" id="options_btn">
+ <property name="hexpand">true</property>
+ <property name="halign">end</property>
+ <property
name="icon-name">emblem-system-symbolic</property>
+ <accessibility>
+ <property name="label"
translatable="yes">Find options</property>
+ <property name="description"
translatable="yes">View options of the find pane</property>
+ </accessibility>
+ </object></child>
+
+ <child><object class="GtkButton" id="close">
+ <property
name="icon-name">window-close-symbolic</property>
+ <property name="has-frame">false</property>
+ <property name="hexpand">false</property>
+ <property name="halign">end</property>
+ <accessibility>
+ <property name="label"
translatable="yes">Close</property>
+ <property name="description"
translatable="yes">Closes the find pane</property>
+ </accessibility>
+ </object></child>
+
+ </object></child> <!-- hbox -->
+ </object></child> <!-- vbox -->
+ </template> <!-- FindDialog -->
+</interface>
diff --git a/src/findreplace.c b/src/findreplace.c
index afd3b6d..2cb3bc4 100644
--- a/src/findreplace.c
+++ b/src/findreplace.c
@@ -779,53 +779,16 @@ find_dialog_init (FindDialog *self)
FindDialogPrivate *f_priv = find_dialog_get_instance_private (self);
GtkBuilder *builder;
- f_priv->cancellable = g_cancellable_new ();
+ gtk_widget_init_template (GTK_WIDGET(self));
- /* Setup our root container. */
- f_priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_widget_set_parent (f_priv->vbox, GTK_WIDGET(self));
+ f_priv->cancellable = g_cancellable_new ();
- f_priv->frame = gtk_frame_new(_("Find String"));
- f_priv->f_doc = hex_document_new();
- f_priv->f_gh = create_hex_view(f_priv->f_doc);
+ /* Setup HexWidget and make child of our frame */
+ f_priv->f_doc = hex_document_new ();
+ f_priv->f_gh = create_hex_view (f_priv->f_doc);
gtk_frame_set_child (GTK_FRAME(f_priv->frame), f_priv->f_gh);
- gtk_box_append (GTK_BOX(f_priv->vbox), f_priv->frame);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->frame),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Enter the hex data or ASCII data to search for"),
- -1);
- f_priv->hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_append (GTK_BOX(f_priv->vbox), f_priv->hbox);
-
- f_priv->f_next = gtk_button_new_with_mnemonic (_("Find _Next"));
- g_signal_connect (G_OBJECT (f_priv->f_next), "clicked",
- G_CALLBACK(find_next_cb), self);
- gtk_widget_set_receives_default (f_priv->f_next, TRUE);
- gtk_box_append (GTK_BOX(f_priv->hbox), f_priv->f_next);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->f_next),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Finds the next occurrence of the search string"),
- -1);
-
- f_priv->f_prev = gtk_button_new_with_mnemonic (_("Find _Previous"));
- g_signal_connect (G_OBJECT (f_priv->f_prev), "clicked",
- G_CALLBACK(find_prev_cb), self);
- gtk_box_append (GTK_BOX(f_priv->hbox), f_priv->f_prev);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->f_prev),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Finds the previous occurrence of the search string"),
- -1);
-
- f_priv->f_clear = gtk_button_new_with_mnemonic (_("_Clear"));
- g_signal_connect (G_OBJECT (f_priv->f_clear), "clicked",
- G_CALLBACK(find_clear_cb), self);
- gtk_box_append (GTK_BOX(f_priv->hbox), f_priv->f_clear);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->f_clear),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Clears the data you are searching for"),
- -1);
-
+ /* Setup find options popover as child of our options menubutton */
builder = gtk_builder_new_from_resource (RESOURCE_BASE_PATH "/find-options.ui");
f_priv->options_popover = GTK_WIDGET(
gtk_builder_get_object (builder, "find_options_popover"));
@@ -834,42 +797,17 @@ find_dialog_init (FindDialog *self)
f_priv->options_ignore_case = GTK_WIDGET(
gtk_builder_get_object (builder, "find_options_ignore_case"));
- f_priv->options_btn = gtk_menu_button_new ();
- gtk_menu_button_set_icon_name (GTK_MENU_BUTTON(f_priv->options_btn),
- "emblem-system-symbolic");
gtk_menu_button_set_popover (GTK_MENU_BUTTON(f_priv->options_btn),
f_priv->options_popover);
- gtk_widget_set_hexpand (f_priv->options_btn, TRUE);
- gtk_widget_set_halign (f_priv->options_btn, GTK_ALIGN_END);
- gtk_box_append (GTK_BOX(f_priv->hbox), f_priv->options_btn);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->options_btn),
- GTK_ACCESSIBLE_PROPERTY_LABEL,
- _("Find options"),
- -1);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->options_btn),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("View options of the find pane"),
- -1);
g_object_unref (builder);
- f_priv->close = gtk_button_new_from_icon_name ("window-close-symbolic");
- gtk_button_set_has_frame (GTK_BUTTON(f_priv->close), FALSE);
- gtk_widget_set_hexpand (f_priv->close, FALSE);
- gtk_widget_set_halign (f_priv->close, GTK_ALIGN_END);
- g_signal_connect (G_OBJECT (f_priv->close), "clicked",
- G_CALLBACK(common_cancel_cb), self);
- g_signal_connect (G_OBJECT (f_priv->close), "clicked",
- G_CALLBACK(find_cancel_cb), self);
- gtk_box_append (GTK_BOX(f_priv->hbox), f_priv->close);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->close),
- GTK_ACCESSIBLE_PROPERTY_LABEL,
- _("Close"),
- -1);
- gtk_accessible_update_property (GTK_ACCESSIBLE(f_priv->close),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Closes the find pane"),
- -1);
+ /* Setup signals */
+ g_signal_connect (f_priv->f_next, "clicked", G_CALLBACK(find_next_cb), self);
+ g_signal_connect (f_priv->f_prev, "clicked", G_CALLBACK(find_prev_cb), self);
+ g_signal_connect (f_priv->f_clear, "clicked", G_CALLBACK(find_clear_cb), self);
+ g_signal_connect (f_priv->close, "clicked", G_CALLBACK(common_cancel_cb), self);
+ g_signal_connect (f_priv->close, "clicked", G_CALLBACK(find_cancel_cb), self);
}
static gboolean
@@ -914,6 +852,25 @@ find_dialog_class_init (FindDialogClass *klass)
object_class->finalize = find_dialog_finalize;
widget_class->grab_focus = find_dialog_grab_focus;
+
+ gtk_widget_class_set_template_from_resource (widget_class,
+ RESOURCE_BASE_PATH "/find-dialog.ui");
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ vbox);
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ frame);
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ hbox);
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ f_next);
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ f_prev);
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ f_clear);
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ options_btn);
+ gtk_widget_class_bind_template_child_private (widget_class, FindDialog,
+ close);
}
GtkWidget *
@@ -928,46 +885,33 @@ find_dialog_new (void)
static void
replace_dialog_init (ReplaceDialog *self)
{
- FindDialogPrivate *f_priv =
- find_dialog_get_instance_private (FIND_DIALOG(self));
+ FindDialogPrivate *f_priv = find_dialog_get_instance_private (FIND_DIALOG(self));
+ GtkBuilder *builder;
- self->r_doc = hex_document_new();
+ self->r_doc = hex_document_new ();
self->r_gh = create_hex_view (self->r_doc);
- self->r_frame = gtk_frame_new(_("Replace With"));
+ /* Instantiate ReplaceDialog-specific widgets and plug them into the
+ * FindDialog in the right places.
+ */
+ builder = gtk_builder_new_from_resource (RESOURCE_BASE_PATH "/replace-dialog.ui");
+
+ self->r_frame = GTK_WIDGET(gtk_builder_get_object (builder, "r_frame"));
gtk_frame_set_child (GTK_FRAME(self->r_frame), self->r_gh);
- gtk_box_insert_child_after (GTK_BOX(f_priv->vbox),
- self->r_frame, f_priv->frame);
- gtk_accessible_update_property (GTK_ACCESSIBLE(self->r_frame),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Enter the hex data or ASCII data to replace with"),
- -1);
-
- self->replace = gtk_button_new_with_mnemonic (_("_Replace"));
- g_signal_connect (G_OBJECT (self->replace),
- "clicked", G_CALLBACK(replace_one_cb),
- self);
- gtk_box_insert_child_after (GTK_BOX(f_priv->hbox),
- self->replace, f_priv->f_prev);
- gtk_accessible_update_property (GTK_ACCESSIBLE(self->replace),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Replaces the search string with the replace string"),
- -1);
-
- self->replace_all = gtk_button_new_with_mnemonic (_("Replace _All"));
- g_signal_connect (G_OBJECT (self->replace_all),
- "clicked", G_CALLBACK(replace_all_cb),
- self);
- gtk_box_insert_child_after (GTK_BOX(f_priv->hbox),
- self->replace_all, self->replace);
- gtk_accessible_update_property (GTK_ACCESSIBLE(self->replace_all),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Replaces all occurrences of the search string with the replace string"),
- -1);
-
- g_signal_connect (G_OBJECT (f_priv->f_clear),
- "clicked", G_CALLBACK(replace_clear_cb),
- self);
+ gtk_box_insert_child_after (GTK_BOX(f_priv->vbox), self->r_frame, f_priv->frame);
+
+ self->replace = GTK_WIDGET(gtk_builder_get_object (builder, "replace"));
+ gtk_box_insert_child_after (GTK_BOX(f_priv->hbox), self->replace, f_priv->f_prev);
+
+ self->replace_all = GTK_WIDGET(gtk_builder_get_object (builder, "replace_all"));
+ gtk_box_insert_child_after (GTK_BOX(f_priv->hbox), self->replace_all, self->replace);
+
+ g_object_unref (builder);
+
+ /* Setup signals */
+ g_signal_connect (self->replace, "clicked", G_CALLBACK(replace_one_cb), self);
+ g_signal_connect (self->replace_all, "clicked", G_CALLBACK(replace_all_cb), self);
+ g_signal_connect (f_priv->f_clear, "clicked", G_CALLBACK(replace_clear_cb), self);
}
static void
@@ -1021,26 +965,13 @@ jump_dialog_init (JumpDialog *self)
" padding-bottom: 6px;\n"
"}\n", -1);
- /* add the provider to our widget's style context. */
gtk_style_context_add_provider (context,
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_SETTINGS);
- /* Widget */
+ /* Widget - template, signals, etc. */
- self->box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_widget_set_parent (self->box, widget);
-
- self->label = gtk_label_new (_("Jump to byte (enter offset):"));
- self->int_entry = gtk_entry_new ();
- gtk_accessible_update_property (GTK_ACCESSIBLE(self->int_entry),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Enter the offset byte to jump to. The default is decimal format, but "
- "other format strings are supported such as hexidecimal format, if "
- "C-style notation using the '0x' prefix is used. If your string is "
- "not recognized, a dialog will be presented explaining the valid "
- "formats of strings accepted."),
- -1);
+ gtk_widget_init_template (widget);
/* In GTK4, you can't expect GtkEntry itself to report correctly whether
* it has focus, (has-focus will == FALSE even though it looks focused...
@@ -1049,37 +980,8 @@ jump_dialog_init (JumpDialog *self)
self->focus_controller = gtk_event_controller_focus_new ();
gtk_widget_add_controller (self->int_entry, self->focus_controller);
- gtk_box_append (GTK_BOX(self->box), self->label);
- gtk_box_append (GTK_BOX(self->box), self->int_entry);
-
- self->ok = gtk_button_new_with_mnemonic (_("_Jump"));
- g_signal_connect (G_OBJECT (self->ok),
- "clicked", G_CALLBACK(goto_byte_cb),
- self);
- gtk_box_append (GTK_BOX(self->box), self->ok);
- gtk_widget_set_receives_default (self->ok, TRUE);
- gtk_accessible_update_property (GTK_ACCESSIBLE(self->ok),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Jumps to the specified byte"),
- -1);
-
- self->cancel = gtk_button_new_from_icon_name ("window-close-symbolic");
- gtk_widget_set_hexpand (self->cancel, TRUE);
- gtk_widget_set_halign (self->cancel, GTK_ALIGN_END);
- gtk_button_set_has_frame (GTK_BUTTON(self->cancel), FALSE);
- g_signal_connect (G_OBJECT (self->cancel),
- "clicked", G_CALLBACK(common_cancel_cb),
- self);
- gtk_box_append (GTK_BOX(self->box), self->cancel);
-
- gtk_accessible_update_property (GTK_ACCESSIBLE(self->cancel),
- GTK_ACCESSIBLE_PROPERTY_LABEL,
- _("Close"),
- -1);
- gtk_accessible_update_property (GTK_ACCESSIBLE(self->cancel),
- GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
- _("Closes the jump-to-byte pane"),
- -1);
+ g_signal_connect (self->ok, "clicked", G_CALLBACK(goto_byte_cb), self);
+ g_signal_connect (self->cancel, "clicked", G_CALLBACK(common_cancel_cb), self);
}
static gboolean
@@ -1126,8 +1028,15 @@ jump_dialog_class_init (JumpDialogClass *klass)
widget_class->grab_focus = jump_dialog_grab_focus;
- /* CSS */
gtk_widget_class_set_css_name (widget_class, JUMP_DIALOG_CSS_NAME);
+
+ gtk_widget_class_set_template_from_resource (widget_class,
+ RESOURCE_BASE_PATH "/jump-dialog.ui");
+ gtk_widget_class_bind_template_child (widget_class, JumpDialog, box);
+ gtk_widget_class_bind_template_child (widget_class, JumpDialog, label);
+ gtk_widget_class_bind_template_child (widget_class, JumpDialog, int_entry);
+ gtk_widget_class_bind_template_child (widget_class, JumpDialog, ok);
+ gtk_widget_class_bind_template_child (widget_class, JumpDialog, cancel);
}
GtkWidget *
diff --git a/src/ghex.gresource.xml.in b/src/ghex.gresource.xml.in
index e952606..7c58568 100644
--- a/src/ghex.gresource.xml.in
+++ b/src/ghex.gresource.xml.in
@@ -29,6 +29,9 @@
<file preprocess="xml-stripblanks" compressed="true">context-menu.ui</file>
<file preprocess="xml-stripblanks" compressed="true">preferences.ui</file>
<file preprocess="xml-stripblanks" compressed="true">paste-special.ui</file>
+ <file preprocess="xml-stripblanks" compressed="true">find-dialog.ui</file>
+ <file preprocess="xml-stripblanks" compressed="true">replace-dialog.ui</file>
+ <file preprocess="xml-stripblanks" compressed="true">jump-dialog.ui</file>
<file preprocess="xml-stripblanks" compressed="true">find-options.ui</file>
</gresource>
<gresource prefix="@resource_base_path@/css">
diff --git a/src/jump-dialog.ui b/src/jump-dialog.ui
new file mode 100644
index 0000000..b9c9111
--- /dev/null
+++ b/src/jump-dialog.ui
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- vim: ts=2 sw=2
+-->
+<!--
+ Copyright © 2022 Logan Rathbone <poprocks gmail com>
+
+ GHex is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ GHex 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 GHex; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Original GHex Author: Jaka Mocnik <jaka gnu org>
+-->
+
+<interface domain="gtk40">
+ <template class="JumpDialog" parent="PaneDialog">
+
+ <child>
+ <object class="GtkBox" id="box">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">12</property>
+
+ <child><object class="GtkLabel" id="label">
+ <property name="label" translatable="yes">Jump to byte (enter
offset):</property>
+ </object></child>
+
+ <child><object class="GtkEntry" id="int_entry">
+ <accessibility>
+ <property name="description" translatable="yes">Enter
the offset byte to jump to. The default is decimal format, but other format strings are supported such as
hexidecimal format, if C-style notation using the '0x' prefix is used. If your string is not recognized, a
dialog will be presented explaining the valid formats of strings accepted.</property>
+ </accessibility>
+ </object></child>
+
+ <child><object class="GtkButton" id="ok">
+ <property name="label" translatable="yes">_Jump</property>
+ <property name="use-underline">true</property>
+ <property name="receives-default">true</property>
+ <accessibility>
+ <property name="description" translatable="yes">Jumps
to the specified byte</property>
+ </accessibility>
+ </object></child>
+
+ <child><object class="GtkButton" id="cancel">
+ <property name="icon-name">window-close-symbolic</property>
+ <property name="hexpand">true</property>
+ <property name="halign">end</property>
+ <property name="has-frame">false</property>
+ <accessibility>
+ <property name="label"
translatable="yes">Close</property>
+ <property name="description"
translatable="yes">Closes the jump-to-byte pane</property>
+ </accessibility>
+ </object></child>
+
+ </object>
+ </child> <!-- box -->
+ </template> <!-- JumpDialog -->
+</interface>
diff --git a/src/replace-dialog.ui b/src/replace-dialog.ui
new file mode 100644
index 0000000..edfbd45
--- /dev/null
+++ b/src/replace-dialog.ui
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- vim: ts=2 sw=2
+-->
+<!--
+ Copyright © 2022 Logan Rathbone <poprocks gmail com>
+
+ GHex is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ GHex 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 GHex; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Original GHex Author: Jaka Mocnik <jaka gnu org>
+-->
+
+<interface domain="gtk40">
+ <object class="GtkFrame" id="r_frame">
+ <property name="label" translatable="yes">Replace With</property>
+ <accessibility>
+ <property name="description" translatable="yes">Enter the hex data or ASCII data to
replace with</property>
+ </accessibility>
+ </object>
+
+ <object class="GtkButton" id="replace">
+ <property name="label" translatable="yes">_Replace</property>
+ <property name="use-underline">true</property>
+ <accessibility>
+ <property name="description" translatable="yes">Replaces the search string with the
replace string</property>
+ </accessibility>
+ </object>
+
+ <object class="GtkButton" id="replace_all">
+ <property name="label" translatable="yes">Replace _All</property>
+ <property name="use-underline">true</property>
+ <accessibility>
+ <property name="description" translatable="yes">Replaces all occurrences of the
search string with the replace string</property>
+ </accessibility>
+ </object>
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]