From e53ed321d97cf4065534c1e046ae3ac4272b7b47 Mon Sep 17 00:00:00 2001 From: jaseg Date: Thu, 13 Dec 2018 12:03:46 +0900 Subject: Add mouse pairing mockup --- .../Screenshot_2018-12-13_11-46-26.png | Bin 0 -> 29906 bytes mouse_pairing_mockup/mockup.py | 51 +++++++++++++++++++++ mouse_pairing_mockup/mockup.xcf | Bin 0 -> 116954 bytes 3 files changed, 51 insertions(+) create mode 100644 mouse_pairing_mockup/Screenshot_2018-12-13_11-46-26.png create mode 100644 mouse_pairing_mockup/mockup.py create mode 100644 mouse_pairing_mockup/mockup.xcf (limited to 'mouse_pairing_mockup') diff --git a/mouse_pairing_mockup/Screenshot_2018-12-13_11-46-26.png b/mouse_pairing_mockup/Screenshot_2018-12-13_11-46-26.png new file mode 100644 index 0000000..2889ec1 Binary files /dev/null and b/mouse_pairing_mockup/Screenshot_2018-12-13_11-46-26.png differ diff --git a/mouse_pairing_mockup/mockup.py b/mouse_pairing_mockup/mockup.py new file mode 100644 index 0000000..b8903d7 --- /dev/null +++ b/mouse_pairing_mockup/mockup.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +import itertools + +import gi +import gi +from gi.repository import Gtk as gtk, Gdk as gdk, Pango as pango, GLib as glib + +import numpy as np + + +class PyApp(gtk.Window): + def __init__(self, m=5): + super(PyApp, self).__init__() + + self.set_title("Mouse pairing mockup") + self.set_default_size(400, 400) + vbox = gtk.VBox() + grid = gtk.Grid(row_spacing=20, column_spacing=20, row_homogeneous=True, column_homogeneous=True, margin=20) + lbl = self.lbl = gtk.Label('Please press the buttons below in order 1-2-3...') + + # GTK has the best APIs... -.- + screen = gdk.Screen.get_default() + gtk_provider = gtk.CssProvider() + gtk_context = gtk.StyleContext() + gtk_context.add_provider_for_screen(screen, gtk_provider, gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) + css = b''' + #pinpad > button {font: 24 bold} + #pinpad > button:checked {background: linear-gradient(#e5efd4, #588a5a)} + ''' + grid.set_name('pinpad') + gtk_provider.load_from_data(css) + + st = np.random.RandomState(seed=0) + for i, (x, y) in zip(st.permutation(m**2), itertools.product(range(m), range(m))): + btn = gtk.ToggleButton(f'{i+1}') + btn.connect("toggled", self.on_toggled) + grid.attach(btn, x, y, 1, 1) + + vbox.pack_start(lbl, True, True, 0) + vbox.pack_start(grid, True, True, 0) + self.add(vbox) + self.connect("destroy", gtk.main_quit) + self.show_all() + + def on_toggled(self, widget, data=None): + print(f'Clicked : {widget.get_label()}') + +if __name__ == '__main__': + PyApp() + gtk.main() diff --git a/mouse_pairing_mockup/mockup.xcf b/mouse_pairing_mockup/mockup.xcf new file mode 100644 index 0000000..a24e279 Binary files /dev/null and b/mouse_pairing_mockup/mockup.xcf differ -- cgit