Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPhilipp Hörist <philipp@hoerist.com>2019-11-30 00:19:30 +0300
committerPhilipp Hörist <philipp@hoerist.com>2019-11-30 00:20:08 +0300
commit74b815b016dc90b2673ba53fa25f5765e5fce396 (patch)
treee58e4469ec17c2c201dba9e9dd49cb7acc54b4cf /test
parent06844f2371634fb985dd7363b6b8614de029f265 (diff)
Add base Assistant class
Diffstat (limited to 'test')
-rw-r--r--test/gtk/assistant.py151
1 files changed, 151 insertions, 0 deletions
diff --git a/test/gtk/assistant.py b/test/gtk/assistant.py
new file mode 100644
index 000000000..8a049a72c
--- /dev/null
+++ b/test/gtk/assistant.py
@@ -0,0 +1,151 @@
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+
+from gajim.common.const import CSSPriority
+
+from gajim.gtk.assistant import Assistant
+
+from test.gtk import util
+util.load_style('gajim.css', CSSPriority.APPLICATION)
+
+
+class TestAssistant(Assistant):
+ def __init__(self):
+ Assistant.__init__(self)
+
+ self.add_pages({'start': Start(),
+ 'progress': Progress()})
+
+ self.add_default_page('error')
+ self.add_default_page('success')
+
+ self.add_button('forward', 'Forward', 'suggested-action')
+ self.add_button('close', 'Close', 'destructive-action')
+ self.add_button('back', 'Back')
+
+ self.set_button_visible_func(self._visible_func)
+
+ self.connect('button-clicked', self._on_button_clicked)
+ self.connect('page-changed', self._on_page_changed)
+
+ self.show_all()
+
+ @staticmethod
+ def _visible_func(_assistant, page_name):
+ if page_name == 'start':
+ return ['forward']
+
+ if page_name == 'progress':
+ return ['forward', 'back']
+
+ if page_name == 'success':
+ return ['forward', 'back']
+
+ if page_name == 'error':
+ return ['back', 'close']
+ raise ValueError('page %s unknown' % page_name)
+
+ def _on_button_clicked(self, _assistant, button_name):
+ page = self.get_current_page()
+ if button_name == 'forward':
+ if page == 'start':
+ self.show_page('progress', Gtk.StackTransitionType.SLIDE_LEFT)
+ elif page == 'progress':
+ self.show_page('success', Gtk.StackTransitionType.SLIDE_LEFT)
+ elif page == 'success':
+ self.show_page('error', Gtk.StackTransitionType.SLIDE_LEFT)
+ return
+
+ if button_name == 'back':
+ if page == 'progress':
+ self.show_page('start')
+ if page == 'success':
+ self.show_page('progress')
+ if page == 'error':
+ self.show_page('success')
+ return
+
+ if button_name == 'close':
+ self.destroy()
+
+ def _on_page_changed(self, _assistant, page_name):
+ if page_name == 'start':
+ self.set_default_button('forward')
+
+ elif page_name == 'progress':
+ self.set_default_button('forward')
+
+ elif page_name == 'success':
+ success_page = self.get_success_page()
+ success_page.set_title('Success')
+ success_page.set_heading('Success Heading')
+ success_page.set_text('This is the success text')
+ self.set_default_button('forward')
+
+ elif page_name == 'error':
+ error_page = self.get_error_page()
+ error_page.set_title('Error')
+ error_page.set_heading('Error Heading')
+ error_page.set_text('This is the error text')
+ self.set_default_button('back')
+
+
+class Progress(Gtk.Box):
+
+ title = 'Progress'
+
+ def __init__(self):
+ super().__init__(orientation=Gtk.Orientation.VERTICAL)
+ self.set_spacing(18)
+ self.set_valign(Gtk.Align.CENTER)
+ label = Gtk.Label(label='Test label...')
+ label.set_max_width_chars(50)
+ label.set_line_wrap(True)
+ label.set_halign(Gtk.Align.CENTER)
+ label.set_justify(Gtk.Justification.CENTER)
+ spinner = Gtk.Spinner()
+ self.pack_start(label, False, True, 0)
+ self.pack_start(spinner, False, True, 0)
+ spinner.start()
+ self.show_all()
+
+
+class Start(Gtk.Box):
+
+ title = 'Start'
+
+ def __init__(self):
+ super().__init__(orientation=Gtk.Orientation.VERTICAL)
+ self.set_spacing(18)
+ self.set_valign(Gtk.Align.CENTER)
+ heading = Gtk.Label(label='Test Assistant')
+ heading.get_style_context().add_class('large-header')
+
+ label1 = Gtk.Label(label='This is label 1 with some text')
+ label1.set_max_width_chars(50)
+ label1.set_line_wrap(True)
+ label1.set_halign(Gtk.Align.CENTER)
+ label1.set_justify(Gtk.Justification.CENTER)
+ label1.set_margin_bottom(24)
+
+ label2 = Gtk.Label(label='This is label 2 with some more text')
+ label2.set_max_width_chars(50)
+ label2.set_line_wrap(True)
+ label2.set_halign(Gtk.Align.CENTER)
+ label2.set_justify(Gtk.Justification.CENTER)
+
+ self._server = Gtk.CheckButton.new_with_mnemonic('A fancy checkbox')
+ self._server.set_halign(Gtk.Align.CENTER)
+
+ self.pack_start(heading, False, True, 0)
+ self.pack_start(label1, False, True, 0)
+ self.pack_start(label2, False, True, 0)
+ self.pack_start(self._server, False, True, 0)
+ self.show_all()
+
+
+win = TestAssistant()
+win.connect('destroy', Gtk.main_quit)
+win.show_all()
+Gtk.main()