[baobab/wip/vala: 41/46] Use a GtkInfoBar to display errors.
- From: Stefano Facchini <sfacchini src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [baobab/wip/vala: 41/46] Use a GtkInfoBar to display errors.
- Date: Sun, 11 Mar 2012 17:34:06 +0000 (UTC)
commit 188b61f754fe0f281abae70489c42626ddc313d6
Author: Paolo Borelli <pborelli gnome org>
Date: Sun Feb 5 14:07:58 2012 +0100
Use a GtkInfoBar to display errors.
data/baobab-main-window.ui | 64 ++++++++++++++++++++++++++++++++++++++++++-
src/baobab-window.vala | 22 +++++++++++----
2 files changed, 78 insertions(+), 8 deletions(-)
---
diff --git a/data/baobab-main-window.ui b/data/baobab-main-window.ui
index 9c06782..35a4726 100644
--- a/data/baobab-main-window.ui
+++ b/data/baobab-main-window.ui
@@ -141,7 +141,67 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkInfoBar" id="infobar">
+ <property name="visible">False</property>
+ <child internal-child="content_area">
+ <object class="GtkBox" id="infobar-content-area">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">8</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">16</property>
+ <child>
+ <object class="GtkLabel" id="infobar-primary-label">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">label</property>
+ <property name="selectable">True</property>
+ <property name="use-markup">True</property>
+ <property name="halign">GTK_ALIGN_START</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="infobar-secondary-label">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">label</property>
+ <property name="selectable">True</property>
+ <property name="use-markup">True</property>
+ <property name="halign">GTK_ALIGN_START</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="infobar-action-area">
+ <property name="visible">False</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
@@ -363,7 +423,7 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
- <property name="width">2</property>
+ <property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index eb94a09..7bb7987 100644
--- a/src/baobab-window.vala
+++ b/src/baobab-window.vala
@@ -1,6 +1,9 @@
namespace Baobab {
public class Window : Gtk.ApplicationWindow {
Settings ui_settings;
+ Gtk.InfoBar infobar;
+ Gtk.Label infobar_primary;
+ Gtk.Label infobar_secondary;
Gtk.TreeView treeview;
Gtk.Notebook chart_notebook;
Chart rings_chart;
@@ -77,6 +80,9 @@ namespace Baobab {
}
// Cache some objects from the builder.
+ infobar = builder.get_object ("infobar") as Gtk.InfoBar;
+ infobar_primary = builder.get_object ("infobar-primary-label") as Gtk.Label;
+ infobar_secondary = builder.get_object ("infobar-secondary-label") as Gtk.Label;
treeview = builder.get_object ("treeview") as Gtk.TreeView;
chart_notebook = builder.get_object ("chart-notebook") as Gtk.Notebook;
rings_chart = builder.get_object ("rings-chart") as Chart;
@@ -337,11 +343,14 @@ namespace Baobab {
}
void message (string primary_msg, string secondary_msg, Gtk.MessageType type) {
- var dialog = new Gtk.MessageDialog (this, Gtk.DialogFlags.DESTROY_WITH_PARENT, type,
- Gtk.ButtonsType.OK, "%s", primary_msg);
- dialog.format_secondary_text ("%s", secondary_msg);
- dialog.run (); /* XXX kill it with fire */
- dialog.destroy ();
+ infobar.message_type = type;
+ infobar_primary.set_label ("<b>%s</b>".printf (_(primary_msg)));
+ infobar_secondary.set_label ("<small>%s</small>".printf (_(secondary_msg)));
+ infobar.show ();
+ }
+
+ void clear_message () {
+ infobar.hide ();
}
void set_busy (bool busy) {
@@ -426,6 +435,7 @@ namespace Baobab {
Scanner.Columns.PERCENT,
Scanner.Columns.ELEMENTS, null);
+ clear_message ();
set_busy (true);
scanner.completed.connect(() => {
try {
@@ -435,7 +445,7 @@ namespace Baobab {
scanner.clear ();
} catch (Error e) {
var primary = _("Could not scan folder \"%s\"").printf (scanner.directory.get_parse_name ());
- message (primary, e.message, Gtk.MessageType.INFO);
+ message (primary, e.message, Gtk.MessageType.WARNING);
scanner.clear ();
} finally {
set_busy (false);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]