Application.MainWindow: Construct infobars programatically
Construct infobars programatically so they can derive from Components.Infobar and don't need to be initially part of the widget hierarchy.
This commit is contained in:
parent
feece66c6e
commit
058a314e40
2 changed files with 43 additions and 314 deletions
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright 2016 Software Freedom Conservancy Inc.
|
||||
* Copyright 2016, 2019 Michael Gratton <mike@vee.net>
|
||||
* Copyright © 2016 Software Freedom Conservancy Inc.
|
||||
* Copyright © 2016, 2019-2020 Michael Gratton <mike@vee.net>
|
||||
*
|
||||
* This software is licensed under the GNU Lesser General Public License
|
||||
* (version 2.1 or later). See the COPYING file in this distribution.
|
||||
|
|
@ -339,13 +339,10 @@ public class Application.MainWindow :
|
|||
[GtkChild]
|
||||
private Gtk.Grid info_bar_container;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.InfoBar offline_infobar;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.InfoBar cert_problem_infobar;
|
||||
|
||||
[GtkChild]
|
||||
private Gtk.InfoBar auth_problem_infobar;
|
||||
|
||||
private Components.ProblemReportInfoBar? service_problem_infobar = null;
|
||||
|
|
@ -529,6 +526,45 @@ public class Application.MainWindow :
|
|||
add_account(context);
|
||||
}
|
||||
|
||||
this.offline_infobar = new Components.InfoBar(
|
||||
// Translators: An info bar status label
|
||||
_("Working offline"),
|
||||
// Translators: An info bar description label
|
||||
_("You will not be able to send or receive email until re-connected.")
|
||||
);
|
||||
this.offline_infobar.show_close_button = true;
|
||||
this.offline_infobar.response.connect(on_offline_infobar_response);
|
||||
|
||||
this.auth_problem_infobar = new Components.InfoBar(
|
||||
// Translators: An info bar status label
|
||||
_("Login problem"),
|
||||
// Translators: An info bar description label
|
||||
_("An account has reported an incorrect login or password.")
|
||||
);
|
||||
// Translators: An info bar button label
|
||||
var auth_retry = new Gtk.Button.with_label(_("Login"));
|
||||
// Translators: An info bar button tool-tip
|
||||
auth_retry.tooltip_text = _(
|
||||
"Retry login, you will be prompted for your password"
|
||||
);
|
||||
auth_retry.clicked.connect(on_auth_problem_retry);
|
||||
this.auth_problem_infobar.get_action_area().add(auth_retry);
|
||||
|
||||
this.cert_problem_infobar = new Components.InfoBar(
|
||||
// Translators: An info bar status label
|
||||
_("Security problem"),
|
||||
// Translators: An info bar description label
|
||||
_("An account has reported an untrusted server..")
|
||||
);
|
||||
// Translators: An info bar button label
|
||||
var cert_retry = new Gtk.Button.with_label(_("Check"));
|
||||
// Translators: An info bar button tool-tip
|
||||
cert_retry.tooltip_text = _(
|
||||
"Check the security details for the connection"
|
||||
);
|
||||
cert_retry.clicked.connect(on_cert_problem_retry);
|
||||
this.cert_problem_infobar.get_action_area().add(cert_retry);
|
||||
|
||||
this.conversation_list_view.grab_focus();
|
||||
}
|
||||
|
||||
|
|
@ -1919,7 +1955,6 @@ public class Application.MainWindow :
|
|||
return Gdk.EVENT_STOP;
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_offline_infobar_response() {
|
||||
this.offline_infobar.hide();
|
||||
update_infobar_frame();
|
||||
|
|
@ -1930,14 +1965,12 @@ public class Application.MainWindow :
|
|||
retry_service_problem(Geary.ClientService.Status.CONNECTION_FAILED);
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_cert_problem_retry() {
|
||||
this.cert_problem_infobar.hide();
|
||||
update_infobar_frame();
|
||||
retry_service_problem(Geary.ClientService.Status.TLS_VALIDATION_FAILED);
|
||||
}
|
||||
|
||||
[GtkCallback]
|
||||
private void on_auth_problem_retry() {
|
||||
this.auth_problem_infobar.hide();
|
||||
update_infobar_frame();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.22.1 -->
|
||||
<!-- Generated with glade 3.22.2 -->
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<template class="ApplicationMainWindow" parent="GtkApplicationWindow">
|
||||
|
|
@ -137,311 +137,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame" id="info_bar_frame">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="no_show_all">True</property>
|
||||
<property name="label_xalign">0</property>
|
||||
<property name="shadow_type">in</property>
|
||||
<child>
|
||||
<object class="GtkGrid" id="info_bar_container">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<signal name="remove" handler="on_info_bar_container_remove" swapped="no"/>
|
||||
<child>
|
||||
<object class="GtkInfoBar" id="offline_infobar">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="show_close_button">True</property>
|
||||
<signal name="response" handler="on_offline_infobar_response" swapped="no"/>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkButtonBox">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="content_area">
|
||||
<object class="GtkBox">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">16</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="offline_title">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes" comments="Infobar title when one or more accounts are offline">Working offline</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="offline_description">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Label and tooltip for offline infobar">Your computer does not appear to be connected to the Internet.
|
||||
You will not be able to send or receive email until it is re-connected.</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes" comments="Label and tooltip for offline infobar">You will not be able to send or receive email until re-connected.</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="ellipsize">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="sigh"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkInfoBar" id="cert_problem_infobar">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="message_type">error</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkButtonBox">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes" comments="Button label for retrying TLS cert validation">Check</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Button tooltip for retrying TLS cert validation">Check the security details for the connection</property>
|
||||
<signal name="clicked" handler="on_cert_problem_retry" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="content_area">
|
||||
<object class="GtkBox">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">16</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="cert_problem_title">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes" comments="Infobar title when one or more accounts have a TLS cert validation error">Security problem</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="cert_problem_description">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Label and tooltip for TLS cert validation error infobar">An account has reported an untrusted server.
|
||||
Please check the server configuration and try again.</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes" comments="Label and tooltip for TLS cert validation error infobar">An account has reported an untrusted server.</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="ellipsize">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="sigh"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkInfoBar" id="auth_problem_infobar">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="message_type">error</property>
|
||||
<child internal-child="action_area">
|
||||
<object class="GtkButtonBox">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">6</property>
|
||||
<property name="layout_style">end</property>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes" comments="Button label for retrying when a login error has occurred">Login</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Button tooltip for retrying when a login error has occurred">Retry login, you will be prompted for your password</property>
|
||||
<signal name="clicked" handler="on_auth_problem_retry" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="content_area">
|
||||
<object class="GtkBox">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="spacing">16</property>
|
||||
<child>
|
||||
<object class="GtkGrid">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="auth_problem_title">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes" comments="Infobar title when one or more accounts have a login error">Login problem</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="auth_problem_description">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="tooltip_text" translatable="yes" comments="Label and tooltip for authentication problem infobar">An account has reported an incorrect login or password.
|
||||
Please check your login name and try again.</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label" translatable="yes" comments="Label and tooltip for authentication problem infobar">An account has reported an incorrect login or password.</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="ellipsize">end</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="sigh"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">0</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
<property name="top_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label_item">
|
||||
<placeholder/>
|
||||
</child>
|
||||
<style>
|
||||
<class name="geary-info-bar-frame"/>
|
||||
</style>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue