[kupfer: 16/27] ui: +progress dialog - dialog showing progress for example uploading



commit 041b9b9d200d5b4140797e06e11f0a25177f2d3a
Author: Karol BÄ?dkowski <karol bedkowsk+gh gmail com>
Date:   Thu Feb 4 19:10:36 2010 +0100

    ui: +progress dialog - dialog showing progress for example uploading

 data/progress_dialog.ui      |   86 ++++++++++++++++++++++++++++++++++++++++++
 kupfer/ui/progress_dialog.py |   48 +++++++++++++++++++++++
 2 files changed, 134 insertions(+), 0 deletions(-)
---
diff --git a/data/progress_dialog.ui b/data/progress_dialog.ui
new file mode 100644
index 0000000..27cf16f
--- /dev/null
+++ b/data/progress_dialog.ui
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.14"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window_progress">
+    <property name="border_width">6</property>
+    <property name="window_position">center</property>
+    <property name="default_width">439</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">12</property>
+        <child>
+          <object class="GtkVBox" id="vbox2">
+            <property name="visible">True</property>
+            <property name="border_width">6</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">12</property>
+            <child>
+              <object class="GtkLabel" id="label_header">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">label</property>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label_info">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0</property>
+                <property name="label" translatable="yes">label</property>
+                <property name="use_markup">True</property>
+                <property name="ellipsize">middle</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkProgressBar" id="progressbar">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="hbuttonbox1">
+            <property name="visible">True</property>
+            <property name="border_width">6</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button_abort">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_button_abort_clicked"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/kupfer/ui/progress_dialog.py b/kupfer/ui/progress_dialog.py
new file mode 100644
index 0000000..6404041
--- /dev/null
+++ b/kupfer/ui/progress_dialog.py
@@ -0,0 +1,48 @@
+import gtk
+
+from kupfer import version, config, kupferstring
+
+
+_HEADER_MARKUP = '<span weight="bold" size="larger">%s</span>'
+
+class ProgressDialogController():
+	def __init__(self, title, header=None, label=None, max_value=100):
+		"""Load ui from data file"""
+		builder = gtk.Builder()
+		builder.set_translation_domain(version.PACKAGE_NAME)
+		ui_file = config.get_data_file("progress_dialog.ui")
+
+		builder.add_from_file(ui_file)
+		builder.connect_signals(self)
+		self.window = builder.get_object("window_progress")
+		self.button_abort = builder.get_object('button_abort')
+		self.progressbar = builder.get_object('progressbar')
+		self.label_info = builder.get_object('label_info')
+		self.label_header = builder.get_object('label_header')
+
+		self.aborted = False
+		self.max_value = float(max_value)
+
+		self.window.set_title(title)
+		if header:
+			self.label_header.set_markup(_HEADER_MARKUP % header)
+		else:
+			self.label_header.hide()
+
+		self.update(0, label or '')
+
+	def on_button_abort_clicked(self, widget):
+		self.aborted = True
+		self.button_abort.set_sensitive(False)
+
+	def show(self):
+		return self.window.present()
+
+	def hide(self):
+		return self.window.hide()
+
+	def update(self, value, label):
+		self.progressbar.set_fraction(min(value/self.max_value, 1.0))
+		self.label_info.set_markup(kupferstring.toutf8(label))
+		return self.aborted
+



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