def __init__(self,wnd,ctrl, **kwargs): if not 'name' in kwargs: raise KeyError('Name attribute must be passed in kwargs') kwargs.setdefault('minimized_label', kwargs['name']) super(MinimalStoryView,self).__init__(**kwargs) if ctrl is None: ctrl = TestController(wnd,'minimal' if self.isMinimal else 'full') self.ctrl = ctrl try: self.isMinimal = True if self.isMinimal else False except Exception: self.isMinimal = True self.grid_size = minimal_size story_size = scale_tuple(self.grid_size, 0.2) self._name = kwargs['name'] self._id = kwargs['id'] self._description = kwargs.setdefault('description','') self.padding = 8 self.spacing = 8 self.font_height = 13 * 2 self._full_width = int(story_size[0]) self._half_width = int(self._full_width /2) self.visible_lines = 3 self.layout = MTGridLayout(size=story_size,rows=3,cols=1, spacing=self.spacing) self.row0 = MTGridLayout(cols=2,rows=2,spacing=self.spacing, uniform_width=False, uniform_height=False) self.row1 = MTGridLayout(cols=1,rows=2, spacing=self.spacing, uniform_width=False, uniform_height=False) text_height = self.font_height * self.visible_lines sz=(self._full_width - int(len('Story Name: ')*pixels),self.font_height) self.story_name = MyTextInput(label=self._name,id='story_name_id', size=sz,keyboard_to_root='True', place_keyboard_by_control='True') self.description = MyTextArea(label=self._description,\ id='description_id', size=(self._full_width,text_height), keyboard_to_root='True', place_keyboard_by_control='True') #push handlers for each text input fields self.story_name.push_handlers(on_text_change=self._set_name) self.description.push_handlers(on_text_change=self._set_description) self.row0.add_widget(MTLabel(label='Story Name:')) self.row0.add_widget(self.story_name) self.row1.add_widget(MTLabel(label='Description:')) self.row1.add_widget(self.description) self.layout.add_widget(self.row0) self.layout.add_widget(self.row1) self.layout.pos = (25,0) self.canvas = MTScatter(size=self.grid_size, pos=(0,2), cls='storycardcss') self.canvas.add_widget(self.layout) self.add_widget(self.canvas)
def __init__(self,wnd,ctrl, **kwargs): self.isMinimal = False super(StoryCardView,self).__init__(wnd,ctrl,**kwargs) self.canvas.size = self.grid_size = \ scale_tuple(self.ctrl.get_story_size(),.1) story_size = scale_tuple(self.grid_size, 0.2) self.layout.pos = (60, 80) self._as_a = kwargs['as_a'] self._want_to = kwargs['want_to'] self._so_that = kwargs['so_that'] self._estimate = kwargs['estimate'] self._actual = kwargs['actual'] self._owner = kwargs['owner'] self.visible_lines = 5 self._full_width = int(story_size[0] - (self.padding * 7)) self._half_width = int(story_size[0] /2) -32 self.layout.size = (story_size[0], self.font_height*3) self.layout.remove_widget(self.row1) self.row1 = MTGridLayout(cols=1,rows=2, spacing=self.spacing, uniform_width=False, uniform_height=False) self.row2 = MTGridLayout(cols=2,rows=2,spacing=self.spacing, uniform_width=False, uniform_height=False) text_width = self._full_width text_height = self.font_height * self.visible_lines self.owner = MyTextInput(label=self._owner,\ id='owner_id',keyboard_to_root='True', size=((self._half_width,self.font_height)), place_keyboard_by_control='True') self.description.size = (text_width-8, self.font_height) self.as_a = MyTextArea(size=(text_width,text_height), id='as_a_id', label=self._as_a,keyboard_to_root='True', place_keyboard_by_control='True') self.want_to = MyTextArea(size=(text_width,text_height), keyboard_to_root='True', id='want_to_id',label=self._want_to, place_keyboard_by_control='True') self.so_that = MyTextArea(size=(text_width,text_height), keyboard_to_root='True', id='so_that_id', label=self._so_that, place_keyboard_by_control='True') self.estimate = MyTextInput(id='estimate_id',keyboard_to_root='True', label=self._estimate, size=((self._half_width,self.font_height)), place_keyboard_by_control='True') self.actual = MyTextInput(id='actual_id',keyboard_to_root='True', label=self._actual, size=((self._half_width,self.font_height)), place_keyboard_by_control='True') # Setup the tabs self.tabs = MyTabs() self.tabs.add_widget(self.as_a, tab='As a') self.tabs.add_widget(self.want_to, tab="I want to") self.tabs.add_widget(self.so_that, tab='so that') self.tabs.select('As a') #push handlers for each text input fields self.as_a.push_handlers(on_text_change=self._set_as_a) self.want_to.push_handlers(on_text_change=self._set_want_to) self.so_that.push_handlers(on_text_change=self._set_so_that) self.estimate.push_handlers(on_text_change=self._set_estimate) self.actual.push_handlers(on_text_change=self._set_actual) self.owner.push_handlers(on_text_change=self._set_owner) self.row0.remove_widget(self.story_name) self.story_name.width = self._half_width self.row0.add_widget(MTLabel(label='Owner: ')) self.row0.add_widget(self.story_name) self.row0.add_widget(self.owner) self.row1.add_widget(MTLabel(label='Description:')) self.row1.add_widget(self.description) self.row2.add_widget(MTLabel(label='Estimate'))#, autosize=True)) self.row2.add_widget(MTLabel(label='Actual'))#), autosize=True)) self.row2.add_widget(self.estimate) self.row2.add_widget(self.actual) #add new rows to layout self.layout.add_widget(self.row1) self.layout.add_widget(self.row2) # self.layout.add_widget(self.row3) self.canvas.add_widget(self.tabs) self.layout.pos = (45,190) self.tabs.pos=(55,185)
def __init__(self, wnd, ctrl, **kwargs): if ctrl is None: ctrl = TestController(wnd, "minimal" if self.isMinimal else "full") self.ctrl = ctrl try: self.isMinimal = True if self.isMinimal else False except Exception: # IGNORE:W0703 self.isMinimal = True self._type_name = kwargs["type_name"] self._name = kwargs.setdefault("name", self.ctrl.Name) kwargs.setdefault("minimized_label", self._name) self._id = self.ctrl.Id kwargs["size"] = self.grid_size = minimal_size super(MinView, self).__init__(**kwargs) story_size = scale_tuple(self.grid_size, 0.2) self.story_view_size = None self._description = self.ctrl.Description self.padding = 8 self.spacing = 8 self.font_height = 13 * 2 self._full_width = int(story_size[0]) self._half_width = int(self._full_width / 2) self.visible_lines = 3 self._button_image = None self.layout = MTGridLayout(size=story_size, rows=3, cols=1, spacing=self.spacing) self.row0 = MTGridLayout(cols=2, rows=2, spacing=self.spacing, uniform_width=False, uniform_height=False) self.row1 = MTGridLayout(cols=1, rows=2, spacing=self.spacing, uniform_width=False, uniform_height=False) text_height = self.font_height * self.visible_lines label_txt = "%s Name: " % self._type_name txt_in_id = "%s_name_id" % self._type_name sz = (self._full_width - int(len(label_txt) * pixels), self.font_height) self.story_name = MyTextInput( label=self.name, id=txt_in_id, group=self._id, size=sz, keyboard_to_root="True", place_keyboard_by_control="True", ) self.description = MyTextArea( label=self._description, id="description_id", group=self._id, size=(self._full_width, text_height), keyboard_to_root="True", place_keyboard_by_control="True", ) # push handlers for each text input fields self.story_name.push_handlers(on_text_change=self._set_name) self.description.push_handlers(on_text_change=self._set_description) self.row0.add_widget(MTLabel(label=label_txt)) self.row0.add_widget(self.story_name) self.row1.add_widget(MTLabel(label="Description:")) self.row1.add_widget(self.description) self.layout.add_widget(self.row0) self.layout.add_widget(self.row1) self.layout.pos = (25, 0) self.scribleWidget = MyScribbleWidget( size=self.grid_size, scribbles=self.ctrl.Scribbles, TextFields=self.ctrl.TextFields ) self.scribleWidget.push_handlers(on_change=self.add_remove_scribble) self.scribleWidget.push_handlers(on_text_change=self.scribble_text_change) self.canvas = self.layout self.canvas = self.scribleWidget self.scribleWidget.center = self.center self.add_widget(self.canvas) self.first_draw = True
class TaskMinViewOld(MyInnerWindowWithSaveAndTrash): def __init__(self,wnd,ctrl, **kwargs): kwargs.setdefault('name','') kwargs.setdefault('minimized_label', kwargs['name']) super(TaskMinViewOld,self).__init__(**kwargs) if ctrl is None: ctrl = TestController(wnd,'minimal' if self.isMinimal else 'full') self.ctrl = ctrl try: self.isMinimal = True if self.isMinimal else False except Exception: self.isMinimal = True self.grid_size = minimal_size story_size = scale_tuple(self.grid_size, 0.2) self._name = kwargs['name'] self._id = kwargs['id'] self._description = kwargs.setdefault('description', '') self.padding = 8 self.spacing = 8 self.font_height = 13 * 2 self._full_width = int(story_size[0]) self._half_width = int(self._full_width /2) self.visible_lines = 3 self.layout = MTGridLayout(size=story_size,rows=3,cols=1, spacing=self.spacing) self.row0 = MTGridLayout(cols=2,rows=2,spacing=self.spacing, uniform_width=False, uniform_height=False) self.row1 = MTGridLayout(cols=1,rows=2, spacing=self.spacing, uniform_width=False, uniform_height=False) text_height = self.font_height * self.visible_lines sz=(self._full_width - int(len('Task Name: ')*pixels), self.font_height) self.story_name = MyTextInput(label=self.name,id='task_name_id', size=sz,keyboard_to_root='True', place_keyboard_by_control='True') self.description = MyTextArea(label=self._description,\ id='description_id', size=(self._full_width,text_height), keyboard_to_root='True', place_keyboard_by_control='True') #push handlers for each text input fields self.story_name.push_handlers(on_text_change=self._set_name) self.description.push_handlers(on_text_change=self._set_description) self.row0.add_widget(MTLabel(label='Task Name:')) self.row0.add_widget(self.story_name) self.row1.add_widget(MTLabel(label='Description:')) self.row1.add_widget(self.description) self.layout.add_widget(self.row0) self.layout.add_widget(self.row1) self.layout.pos = (25,0) self.canvas = MTScatter(size=self.grid_size, pos=(0,2), cls='storycardcss') self.canvas.add_widget(self.layout) self.add_widget(self.canvas) def fullscreen(self, *largs, **kwargs): self.isMinimal = not self.isMinimal self.ctrl.switch_view(self.isMinimal) def _get_name(self): return self.ctrl.Name def _set_name(self, value): self.ctrl.Name = value name = property(_get_name, _set_name) def _set_description(self, value): self.ctrl.Description = value.value def save(self, touch, *largs, **kwargs): self.ctrl.save() def close(self, touch): if self.ctrl.Id is None: if not self.name: self.trash() return self.ctrl.close(self) super(TaskMinViewOld, self).close(touch) def trash(self, touch=None, *largs, **kwargs): self.ctrl.trash() super(TaskMinViewOld, self).close(touch)
class MinView(MyInnerWindowWithSaveAndTrash): # MyInnerWindowWithKeyboard): def __init__(self, wnd, ctrl, **kwargs): if ctrl is None: ctrl = TestController(wnd, "minimal" if self.isMinimal else "full") self.ctrl = ctrl try: self.isMinimal = True if self.isMinimal else False except Exception: # IGNORE:W0703 self.isMinimal = True self._type_name = kwargs["type_name"] self._name = kwargs.setdefault("name", self.ctrl.Name) kwargs.setdefault("minimized_label", self._name) self._id = self.ctrl.Id kwargs["size"] = self.grid_size = minimal_size super(MinView, self).__init__(**kwargs) story_size = scale_tuple(self.grid_size, 0.2) self.story_view_size = None self._description = self.ctrl.Description self.padding = 8 self.spacing = 8 self.font_height = 13 * 2 self._full_width = int(story_size[0]) self._half_width = int(self._full_width / 2) self.visible_lines = 3 self._button_image = None self.layout = MTGridLayout(size=story_size, rows=3, cols=1, spacing=self.spacing) self.row0 = MTGridLayout(cols=2, rows=2, spacing=self.spacing, uniform_width=False, uniform_height=False) self.row1 = MTGridLayout(cols=1, rows=2, spacing=self.spacing, uniform_width=False, uniform_height=False) text_height = self.font_height * self.visible_lines label_txt = "%s Name: " % self._type_name txt_in_id = "%s_name_id" % self._type_name sz = (self._full_width - int(len(label_txt) * pixels), self.font_height) self.story_name = MyTextInput( label=self.name, id=txt_in_id, group=self._id, size=sz, keyboard_to_root="True", place_keyboard_by_control="True", ) self.description = MyTextArea( label=self._description, id="description_id", group=self._id, size=(self._full_width, text_height), keyboard_to_root="True", place_keyboard_by_control="True", ) # push handlers for each text input fields self.story_name.push_handlers(on_text_change=self._set_name) self.description.push_handlers(on_text_change=self._set_description) self.row0.add_widget(MTLabel(label=label_txt)) self.row0.add_widget(self.story_name) self.row1.add_widget(MTLabel(label="Description:")) self.row1.add_widget(self.description) self.layout.add_widget(self.row0) self.layout.add_widget(self.row1) self.layout.pos = (25, 0) self.scribleWidget = MyScribbleWidget( size=self.grid_size, scribbles=self.ctrl.Scribbles, TextFields=self.ctrl.TextFields ) self.scribleWidget.push_handlers(on_change=self.add_remove_scribble) self.scribleWidget.push_handlers(on_text_change=self.scribble_text_change) self.canvas = self.layout self.canvas = self.scribleWidget self.scribleWidget.center = self.center self.add_widget(self.canvas) self.first_draw = True def draw(self): super(MinView, self).draw() if self.first_draw: self.first_draw = False self.set_button_image() def scribble_text_change(self, value): self.ctrl.scribble_text_change(value) return True def add_remove_scribble(self, idu, touches): try: scribble = touches[idu] if not idu in scribble.keys(): scribble["Id"] = idu try: self.ctrl.add_scribble(scribble) except Exception: # IGNORE:W0703 pass except KeyError: self.ctrl.remove_scribble(id) def fullscreen(self, *largs, **kwargs): self.isMinimal = not self.isMinimal self.ctrl.switch_view(self.isMinimal) def _get_name(self): if self._name is None or not len(self._name): return self.ctrl.Name return self._name def _set_name(self, value): self._name = value self.ctrl.Name = value name = property(_get_name, _set_name) @property def Id(self): return self._id def _set_description(self, value): self._description = value self.ctrl.Description = value.value @property def ButtonImage(self): return self._button_image def set_button_image(self): pos = self.to_window(*self.pos) size = self.size glReadBuffer(GL_FRONT) data = glReadPixels(pos[0], pos[1], size[0], size[1], GL_RGB, GL_UNSIGNED_BYTE) texture = Texture.create(size[0], size[1], format=GL_RGB) texture.blit_buffer(data, size) self._button_image = Image(texture) # Update all the buttons referencing this artifact try: blist = Storyapp().artifacts[self.Id][1] for im in blist: blist[im].image = self._button_image except KeyError: pass try: blist = Storyapp().backlog[self.Id][1] for im in blist: blist[im].image = self._button_image except KeyError: pass def save(self, touch=None): self.ctrl.save() def close(self, touch): if self.ctrl.Id is None: if not self.name: self.trash() return self.ctrl.close(self) super(MinView, self).close(touch) def trash(self, touch=None, *largs, **kwargs): self.ctrl.trash() super(MinView, self).close(touch)