def unittest_visible_methods(): import_pymt_no_window() from pymt import MTWidget w = MTWidget() w.hide() test(w.visible == False) w.show() test(w.visible == True)
def unittest_css(): import_pymt_no_window() from pymt import MTWidget, Label from pymt import css_add_sheet css_add_sheet(''' .style { bg-color: rgba(255, 255, 255, 255); } #my { bg-color : rgba(255, 0, 255, 0);} ''') w = MTWidget(cls='style') x = MTWidget(id='my',cls='style') test(w.style['bg-color'] == [1.0 ,1.0 ,1.0 ,1.0]) test(x.style['bg-color'] == [1.0 ,0.0 ,1.0 ,0.0]) x.style['bg-color'] = [0, 0, 0, 0] test(x.style['bg-color'] == [0 ,0 ,0 ,0])
def unittest_css(): import_pymt_no_window() from pymt import MTWidget, Label from pymt import css_add_sheet css_add_sheet(''' .style { bg-color: rgba(255, 255, 255, 255); } #my { bg-color : rgba(255, 0, 255, 0);} ''') w = MTWidget(cls='style') x = MTWidget(id='my', cls='style') test(w.style['bg-color'] == [1.0, 1.0, 1.0, 1.0]) test(x.style['bg-color'] == [1.0, 0.0, 1.0, 0.0]) x.style['bg-color'] = [0, 0, 0, 0] test(x.style['bg-color'] == [0, 0, 0, 0])
def unittest_defaults(): import_pymt_no_window() from pymt import MTWidget w = MTWidget() test(w.x == 0) test(w.y == 0) test(w.width == 100) test(w.height == 100) test(w.visible == True) test(w.draw_children == True) test(w.cls == '')
def unittest_coordinate_transform(): import_pymt_no_window() from pymt import MTWidget # child 2 inside child 1 inside child0 child0 = MTWidget(pos=(100, 100)) child1 = MTWidget(pos=(200, 200)) child2 = MTWidget(pos=(300, 300)) child0.add_widget(child1) child1.add_widget(child2) test(child0.pos == (100, 100)) test(child1.pos == (200, 200)) test(child2.pos == (300, 300)) # screen coordinate is default test(child0.to_local(*child1.pos) == (200, 200)) # using the relative attribute, # we should have relative coordinate test(child0.to_local(*child1.pos, relative=True) == (100, 100)) test(child1.to_local(*child2.pos, relative=True) == (100, 100)) # screen coordinate 400,400 is 100,100 in relative coordinate from child2 test(child2.to_widget(400, 400, relative=True) == (100, 100)) # 100, 100 relative coordinate from child2 is 400, 400 in screen coordinate test(child2.to_window(100, 100, relative=True) == (400, 400))
def unittest_visible_events(): import_pymt_no_window() from pymt import MTWidget global on_update_called on_update_called = 0 def on_update(): global on_update_called on_update_called += 1 # by default, visible is True w = MTWidget() w.connect('on_update', on_update) w.dispatch_event('on_update') test(on_update_called == 1) # make it invisible w.visible = False w.dispatch_event('on_update') test(on_update_called == 1) # make it visible w.visible = True w.dispatch_event('on_update') test(on_update_called == 2) # create a new widget, visible default to False on_update_called = 0 w = MTWidget(visible=False) try: # XXX FIXME unable to connect to default on_update # since it's not yet register. w.connect('on_update', on_update) except: pass w.dispatch_event('on_update') test(on_update_called == 0) w.visible = True w.connect('on_update', on_update) w.dispatch_event('on_update') test(on_update_called == 1)
callback(*args, _reload=True) Cache.remove('pymt.css') for r in _css_widgets.copy(): o = r() if o is None: _css_widgets.remove(r) continue o.reload_css() pymt_logger.info('CSS: CSS Reloaded') # Autoload the default css + user css if 'PYMT_DOC' not in os.environ: # Add default CSSheet pymt_sheet = CSSSheet() css_add_file(os.path.join(pymt_data_dir, 'default.css')) # Add user css if exist css_filename = os.path.join(pymt_home_dir, 'user.css') if os.path.exists(css_filename): css_add_file(css_filename) if __name__ == '__main__': from pymt import MTWidget, css_get_style, MTWindow w = MTWidget() print w print css_get_style(widget=w) w = MTWindow() print w print css_get_style(widget=w)
def _test_boxlayout(orientation): import_pymt_no_window() from pymt import MTBoxLayout, MTWidget # note: this test act always if orientation # is a horizontal one. use sw() around pos or size # to ensure that the swap is done. def sw(tpl): tpl = tuple(map(int, tpl)) if orientation == 'vertical': return tpl[1], tpl[0] return tpl # note: default spacing is 1 # default padding is 0 # default add m = MTBoxLayout(orientation=orientation) for x in xrange(10): m.add_widget(MTWidget(size=(10, 10))) test(sw(m.size) == (109, 10)) # # spacing to 10 # m = MTBoxLayout(orientation=orientation, spacing=10) for x in xrange(10): m.add_widget(MTWidget(size=(10, 10))) test(sw(m.size) == (190, 10)) # # padding to 10 # m = MTBoxLayout(orientation=orientation, padding=10, spacing=0) for x in xrange(10): m.add_widget(MTWidget(size=(10, 10))) m.do_layout() # size should be 10 (number of widget) * width (10) + 2 * padding test(sw(m.size) == (120, 30)) for x in xrange(10): if orientation == 'vertical': test(sw(m.children[x].pos) == (10 + x * 10, 10)) else: test(sw(m.children[x].pos) == (10 + (9 - x) * 10, 10)) # # testing size_hint with padding # m = MTBoxLayout(orientation=orientation, padding=10, spacing=0, size_hint=(None, None), size=(500, 500)) m.add_widget(MTWidget(size_hint=(1, 1))) m.do_layout() test(sw(m.size) == (500, 500)) test(sw(m.children[0].size) == (480, 480)) # # testing size_hint with spacing # m = MTBoxLayout(orientation=orientation, spacing=10, size_hint=(None, None), size=(500, 500)) m.add_widget(MTWidget(size_hint=(1, 1))) m.do_layout() # only one should have no impact test(sw(m.size) == (500, 500)) test(sw(m.children[0].size) == (500, 500)) # add a second widget m.add_widget(MTWidget(size_hint=(1, 1))) m.do_layout() # now, we should see difference test(sw(m.size) == (500, 500)) test(sw(m.children[0].size) == (245, 500)) test(sw(m.children[1].size) == (245, 500)) # # testing with padding + spacing # m = MTBoxLayout(orientation=orientation, spacing=10, padding=10) for x in xrange(10): m.add_widget(MTWidget(size=(10, 10))) m.do_layout() test(sw(m.size) == (210, 30)) for x in xrange(10): if orientation == 'vertical': test(sw(m.children[x].pos) == (10 + x * 20, 10)) else: test(sw(m.children[x].pos) == (10 + (9 - x) * 20, 10)) # # testing with padding + spacing + size_hint # m = MTBoxLayout(orientation=orientation, spacing=10, padding=10, size_hint=(None, None), size=(500, 500)) m.add_widget(MTWidget(size_hint=(1, 1))) m.add_widget(MTWidget(size_hint=(1, 1))) m.do_layout() # now, we should see difference test(sw(m.size) == (500, 500)) test(sw(m.children[0].size) == (235, 480)) test(sw(m.children[1].size) == (235, 480)) if orientation == 'vertical': test(sw(m.children[0].pos) == (10, 10)) test(sw(m.children[1].pos) == (255, 10)) else: test(sw(m.children[0].pos) == (255, 10)) test(sw(m.children[1].pos) == (10, 10))
def unittest_visible_events(): import_pymt_no_window() from pymt import MTWidget global on_update_called on_update_called = 0 def on_update(): global on_update_called on_update_called += 1 # by default, visible is True w = MTWidget() w.connect('on_draw', on_draw) w.dispatch_event('on_draw') test(on_draw_called == 1) # make it invisible w.visible = False w.dispatch_event('on_draw') test(on_draw_called == 1) # make it visible w.visible = True w.dispatch_event('on_draw') test(on_draw_called == 2) # create a new widget, visible default to False on_draw_called = 0 w = MTWidget(visible=False) try: # XXX FIXME unable to connect to default on_draw # since it's not yet register. w.connect('on_draw', on_draw) except: pass w.dispatch_event('on_draw') test(on_draw_called == 0) w.visible = True w.connect('on_draw', on_draw) w.dispatch_event('on_draw') test(on_draw_called == 1)