Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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
Example #4
0
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)
Example #5
0
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)