def view_actor(self, parent, actor, **kargs): ret = gui.Button(parent, item=actor, holdable=1000, **kargs) hbox = gui.Box(ret, axis=0, border=0, spacing=0) if actor.item.icon: icon_path = actor.item.path(actor.item.icon) icon = tichy.Image(icon_path, size=Vect(96, 96)).view(hbox) else: gui.Widget(hbox, min_size=Vect(0, 96)) text_box = gui.Box(hbox, axis=1, border=0, spacing=0) actor.item.get_text().view(text_box) sub_text = actor.get_sub_text() if sub_text: sub_text.view(text_box) def on_clicked(b, actor, self): self.select_actor(actor, b) ret.connect('clicked', on_clicked, actor, self) def on_holded(b, actor, self): self.select_actor(actor, b, use_default=False) ret.connect('holded', on_holded, actor, self) return ret
def __init__(self, parent, actor, **kargs): assert isinstance(actor, tichy.Actor) super(ActorView, self).__init__(parent, item=actor, tags=['grid-item']) box = gui.Box(self, axis=1, spacing=0, border=0) icon_frame = gui.Frame(box, border=0) if actor.item.icon: icon_path = actor.item.path(actor.item.icon) icon = tichy.Image(icon_path, size=Vect(96, 96)).view(icon_frame) else: gui.Widget(icon_frame, min_size=Vect(96, 96)) actor.get_text().view(box)
def view(self, parent, same_as=None): size = Vect(self.rect[2] * 64, self.rect[3] * 64) pos = Vect(self.rect[0] * 64, self.rect[1] * 64) ret = gui.Button(parent, item=self, min_size=size, optimal_size=size, pos=pos, same_as=same_as) # If we provided a widget for optimization, then we can also # use the widget child for next view if same_as is not None: same_as = same_as.children[0] gui.Label(ret, self.text, min_size=size, optimal_size=size, same_as=same_as) return ret
def __init__(self, parent, actors, **args): super(Wheel, self).__init__(parent, min_size=Vect(480, 480)) box = gui.Fixed(self, min_size=Vect(480, 480)) self.wheel = tichy.Image(WheelDesign.path('wheel.png'), Vect(480, 288)).view(box) self.actors = [] for i, actor in enumerate(actors): label = actor.get_text().view(box) self.actors.append(label) self.radius = 200 self.center = Vect(self.radius, 0) self.angle = pi
def run(self, parent): self.window = gui.Window(parent, modal=True) vbox = gui.Box(self.window, axis=1, border=0, spacing=0) self.lock_widget = ScreenLockWidget(vbox, Vect(480, 560)) size = Vect(42, 42) gui.Label(vbox, ' Trace the pattern to unlock', min_size=size, optimal_size=size) yield tichy.Wait(self.lock_widget, 'unlocked-screen') self.window.destroy()
def __set_angle(self, value): self.__angle = value r = self.radius for i, actor in enumerate(self.actors): angle = value + i * pi / 5 actor.pos = Vect(int(r * cos(angle)), -int(r * sin(angle))) + self.center
def __init__(self, parent, preview=None, item=None, min_size=Vect(64 * 7, 64 * 5), **kargs): super(KeyboardWidget, self).__init__(parent, item=item, min_size=min_size, **kargs) self.keys = [] self.preview = preview self.update_layout(self.item.layout) self.item.connect('layout-changed', self.on_keyboard_update_layout)
def view(self, parent): ### should I use actor? displayButton = gui.Button(parent) displayButtonBox = gui.Box(displayButton, axis=0) tichy.Image(self.get_icon_path(), size=Vect(96, 96)).view(displayButtonBox) tichy.Text(self.name).view(displayButtonBox) self.button = displayButton self.button.connect('clicked', self.on_click) return self.button
def run(self, window): frame = self.view(window, back_button=True) vbox = gui.Box(frame, axis=1) actor = frame.actor edit_item = actor.new_action('Edit') load_item = edit_item.new_action('Load') load_item.connect('activated', self.on_load) save_item = edit_item.new_action('Save') save_item.connect('activated', self.on_save) edit_item.new_action('Clear').connect('activated', self.on_clear) colors_item = actor.new_action('Color') def on_color(action, item, w, color): self.draw_widget.color = color for c, name in [((255, 0, 0), 'red'), ((0, 255, 0), 'green'), ((0, 0, 255), 'blue'), ((255, 255, 255), 'white')]: color_item = colors_item.new_action(name) color_item.connect('activated', on_color, c) sizes_item = actor.new_action('Size') def on_size(action, item, w, size): self.draw_widget.radius = size for s in [2, 4, 8, 16]: size_item = sizes_item.new_action(str(s)) size_item.connect('activated', on_size, s) def on_about(action, item, w): yield tichy.Dialog(self.window, "About", "Just a test") about_item = actor.new_action('About') about_item.connect('activated', on_about) self.draw_widget = DrawingWidget(vbox, Vect(480, 480)) gui.Spring(vbox, axis=1) yield tichy.Wait(frame, 'back')
def view(self, parent, item=None, **kargs): ret = gui.Box(parent, axis=1, border=0, spacing=0) preview = tichy.Text('') preview.view(ret, optimal_size=Vect(128, 64), min_size=Vect(128, 64)) KeyboardWidget(ret, item=self, preview=preview, **kargs) return ret
def view_actor_list(self, parent, actors, **kargs): return Wheel(parent, actors, min_size=Vect(480, 480))