[nautilus/wip/oholy/encrypted-archive-crashes-followup] operations-ui-manager: Port passphrase dialog to GtkBuilder
- From: António Fernandes <antoniof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/oholy/encrypted-archive-crashes-followup] operations-ui-manager: Port passphrase dialog to GtkBuilder
- Date: Sat, 13 Nov 2021 00:40:26 +0000 (UTC)
commit 4dedce2da901e651d0d5570dc51ee2a0de2680ba
Author: António Fernandes <antoniof gnome org>
Date: Sat Nov 13 00:31:20 2021 +0000
operations-ui-manager: Port passphrase dialog to GtkBuilder
This removes usage of the GtkContainer API, preparing for GTK4.
po/POTFILES.in | 1 +
src/nautilus-operations-ui-manager.c | 50 ++++++-------------
src/resources/nautilus.gresource.xml | 1 +
...lus-operations-ui-manager-request-passphrase.ui | 56 ++++++++++++++++++++++
4 files changed, 72 insertions(+), 36 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 859e7efcf..fc777c5db 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -87,6 +87,7 @@ src/resources/ui/nautilus-files-view-context-menus.ui
src/resources/ui/nautilus-folder-is-empty.ui
src/resources/ui/nautilus-list-view-column-editor.ui
src/resources/ui/nautilus-no-search-results.ui
+src/resources/ui/nautilus-operations-ui-manager-request-passphrase.ui
src/resources/ui/nautilus-pathbar-context-menu.ui
src/resources/ui/nautilus-preferences-window.ui
src/resources/ui/nautilus-progress-info-widget.ui
diff --git a/src/nautilus-operations-ui-manager.c b/src/nautilus-operations-ui-manager.c
index 0bd4ae36e..a6f694157 100644
--- a/src/nautilus-operations-ui-manager.c
+++ b/src/nautilus-operations-ui-manager.c
@@ -617,7 +617,7 @@ typedef struct
ContextInvokeData parent_type;
GtkWindow *parent_window;
const gchar *basename;
- GtkWidget *passphrase_entry;
+ GtkEntry *passphrase_entry;
gchar *passphrase;
} PassphraseRequestData;
@@ -631,7 +631,7 @@ on_request_passphrase_cb (GtkDialog *dialog,
if (response_id != GTK_RESPONSE_CANCEL &&
response_id != GTK_RESPONSE_DELETE_EVENT)
{
- data->passphrase = g_strdup (gtk_entry_get_text (GTK_ENTRY (data->passphrase_entry)));
+ data->passphrase = g_strdup (gtk_entry_get_text (data->passphrase_entry));
}
gtk_widget_destroy (GTK_WIDGET (dialog));
@@ -643,43 +643,21 @@ run_passphrase_dialog (gpointer user_data)
{
PassphraseRequestData *data = user_data;
g_autofree gchar *label_str = NULL;
- GtkWidget *dialog;
- GtkWidget *entry;
- GtkWidget *label;
- GtkWidget *box;
-
- dialog = gtk_dialog_new_with_buttons (_("Password Required"),
- data->parent_window,
- GTK_DIALOG_USE_HEADER_BAR | GTK_DIALOG_MODAL,
- _("Cancel"), GTK_RESPONSE_CANCEL,
- _("Extract"), GTK_RESPONSE_OK,
- NULL);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-
- box = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
- gtk_widget_set_margin_start (box, 20);
- gtk_widget_set_margin_end (box, 20);
- gtk_widget_set_margin_top (box, 20);
- gtk_widget_set_margin_bottom (box, 20);
+ g_autoptr (GtkBuilder) builder = NULL;
+ GObject *dialog;
+ GObject *label;
+
+ builder = gtk_builder_new_from_resource
("/org/gnome/nautilus/ui/nautilus-operations-ui-manager-request-passphrase.ui");
+ dialog = gtk_builder_get_object (builder, "request_passphrase_dialog");
+ label = gtk_builder_get_object (builder, "label");
+ data->passphrase_entry = GTK_ENTRY (gtk_builder_get_object (builder, "entry"));
label_str = g_strdup_printf (_("“%s” is password-protected."), data->basename);
- label = gtk_label_new (label_str);
- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
- gtk_label_set_max_width_chars (GTK_LABEL (label), 60);
- gtk_container_add (GTK_CONTAINER (box), label);
-
- entry = gtk_entry_new ();
- gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
- gtk_widget_set_valign (entry, GTK_ALIGN_END);
- gtk_widget_set_vexpand (entry, TRUE);
- gtk_entry_set_placeholder_text (GTK_ENTRY (entry), _("Enter password…"));
- gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE);
- gtk_entry_set_input_purpose (GTK_ENTRY (entry), GTK_INPUT_PURPOSE_PASSWORD);
- gtk_container_add (GTK_CONTAINER (box), entry);
-
- data->passphrase_entry = entry;
+ gtk_label_set_text (GTK_LABEL (label), label_str);
+
g_signal_connect (dialog, "response", G_CALLBACK (on_request_passphrase_cb), data);
- gtk_widget_show_all (dialog);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), data->parent_window);
+ gtk_widget_show (GTK_WIDGET (dialog));
return G_SOURCE_REMOVE;
}
diff --git a/src/resources/nautilus.gresource.xml b/src/resources/nautilus.gresource.xml
index 5188b58c4..200a57bfe 100644
--- a/src/resources/nautilus.gresource.xml
+++ b/src/resources/nautilus.gresource.xml
@@ -25,6 +25,7 @@
<file>ui/nautilus-properties-window.ui</file>
<file>ui/nautilus-file-properties-change-permissions.ui</file>
<file>ui/nautilus-file-conflict-dialog.ui</file>
+ <file>ui/nautilus-operations-ui-manager-request-passphrase.ui</file>
<file alias="gtk/ui/nautilusgtkplacesview.ui">../gtk/nautilusgtkplacesview.ui</file>
<file alias="gtk/ui/nautilusgtkplacesviewrow.ui">../gtk/nautilusgtkplacesviewrow.ui</file>
<file alias="icons/thumbnail_frame.png">../../icons/thumbnail_frame.png</file>
diff --git a/src/resources/ui/nautilus-operations-ui-manager-request-passphrase.ui
b/src/resources/ui/nautilus-operations-ui-manager-request-passphrase.ui
new file mode 100644
index 000000000..f36294c28
--- /dev/null
+++ b/src/resources/ui/nautilus-operations-ui-manager-request-passphrase.ui
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkDialog" id="request_passphrase_dialog">
+ <property name="title" translatable="yes">Password Required</property>
+ <property name="modal">True</property>
+ <property name="destroy-with-parent">True</property>
+ <property name="type-hint">dialog</property>
+ <property name="use-header-bar">1</property>
+ <property name="resizable">False</property>
+ <child internal-child="vbox">
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <child>
+ <object class="GtkLabel" id="label">
+ <property name="visible">True</property>
+ <property name="max-width-chars">60</property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">word-char</property>
+ </object>
+ <object class="GtkEntry">
+ <property name="visible">True</property>
+ <property name="activates-default">True</property>
+ <property name="valign">end</property>
+ <property name="vexpand">True</property>
+ <property name="placeholder-text" translatable="yes">Enter password…</property>
+ <property name="visibility">False</property>
+ <property name="input-purpose">password</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="cancel_button">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child type="action">
+ <object class="GtkButton" id="extract_button">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="label" translatable="yes">Extract</property>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="cancel">cancel_button</action-widget>
+ <action-widget response="ok" default="true">extract_button</action-widget>
+ </action-widgets>
+ </object>
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]