Ejemplo n.º 1
0
    def update_frame_labels_for_recog(self, frames=None):
        frames = frames or self.get_picked_frames_from_frame()
        if frames is not None:
            for f in frames:
                label = ttk.Label(self.pick_scrolledframe_innerframe)
                self.set_label_image(f, label)
                index = self.get_picked_frame_labels_for_recog_len()
                label.bind(
                    "<Button-1>",
                    lambda event, index=index: self.recog_frame_by_index(index
                                                                         ),
                )
                label.pack(
                    side="left",
                    anchor="nw",
                    padx=self.picked_frame_label_margin / 2,
                )
                simpletooltip.create(label, _("Click to recognize."))
                self.add_picked_frame_label_for_recog(label)
            self.set_picked_frames_without_update_widgets(frames)

        else:
            self.set_msg(_("Nothing picked."))
            if self.is_test():
                print(_("Picked frame is None."))
        pass
Ejemplo n.º 2
0
 def set_frame_labels_image_use_saved_frames(self,
                                             frames=None,
                                             for_read=False):
     if for_read:
         if not self.is_action_read():
             print("`NOT` is_action_read.")
             return
     saved_frames = frames or self.get_saved_frames()
     if saved_frames is None:
         if self.is_test():
             print(self.get_info_id(), _("Saved frames is None."))
         return
     if self.is_test():
         print("saved_frames_len", len(saved_frames))
     for _id, f in saved_frames:
         if self.is_test():
             print("`saved_frame.id`", _id)
         label = ttk.Label(self.pick_scrolledframe_innerframe)
         self.set_label_image(f, label)
         label.bind(
             "<Button-1>",
             lambda event, _id=_id: self.del_saved_frame_by_id(_id),
         )
         label.pack(
             side="left",
             anchor="nw",
             padx=self.frame_label_margin / 2,
         )
         simpletooltip.create(label, _("Saved frame, Click to delete."))
         self.saved_frame_labels.append(label)
     pass
Ejemplo n.º 3
0
    def set_labels_image_by_frames_return_labels(self,
                                                 frames=None,
                                                 parent_widget=None,
                                                 label_func=None):
        assert frames is not None
        label_func = label_func or (
            lambda: print("`set_labels_image_by_frames.label_func` is None."))
        parent_widget = parent_widget or self.pick_scrolledframe_innerframe
        index = 0
        labels = []
        for f in frames:
            label = ttk.Label(parent_widget)
            self.set_label_image(f, label)
            label.bind(
                "<Button-1>",
                lambda event, _index=index: label_func(_index),
            )
            label.pack(
                side="left",
                anchor="nw",
                padx=self.frame_label_margin / 2,
            )
            simpletooltip.create(label, _("Saved frame, Click to delete."))
            labels.append(label)

        return labels
 def add_button(self, tabid, group, label, ttiplabel, image, callback):
     master = self._tabs[tabid].child_master()
     #master = self._tabs[tabid]
     b = ttk.Button(master, text=label, image=image,
                    style='ComponentPalette.Toolbutton', command=callback,
                    compound='top', takefocus=True)
     tooltip.create(b, ttiplabel)
     b.pack(side='left')
     self._buttons.append((b, group))
Ejemplo n.º 5
0
    def create_accordion_widget_list(self, treelist):
        acf = AccordionFrame(self.widgetlist)
        acf.grid(sticky=tk.NSEW)
        acf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle)

        #Default widget image:
        default_image = ''
        try:
            default_image = StockImage.get('22x22-tk.default')
        except StockImageException as e:
            pass

        #Start building widget tree selector
        roots = {}
        sections = {}
        for key, wc in treelist:
            root, section = key.split('>')
            #insert root
            if root not in roots:
                roots[root] = acf.add_group(root, root)
            #insert section
            if key not in sections:
                sectionacf = AccordionFrame(roots[root])
                sectionacf.grid(sticky=tk.NSEW, padx='5 0')
                sectionacf.bind('<<AccordionGroupToggle>>',
                                self.on_widgetlist_group_toogle)
                sectiongrp = sectionacf.add_group(key, section)
                sections[key] = AutoArrangeFrame(sectiongrp)
                sections[key].grid(sticky=tk.NSEW)

            #insert widget
            w_image = default_image
            try:
                w_image = StockImage.get('22x22-{0}'.format(wc.classname))
            except StockImageException as e:
                pass

            #define callback for button
            def create_cb(cname):
                return lambda: self.on_add_widget_event(cname)

            b = ttk.Button(sections[key],
                           text=wc.label,
                           image=w_image,
                           style='Toolbutton',
                           command=create_cb(wc.classname))
            tooltip.create(b, wc.classname)
            b.grid()

        #Expand prefered widget set
        hidews = 'tk'
        prefws = get_option('widget_set')
        if hidews == prefws:
            hidews = 'ttk'
        acf.group_toogle(hidews)
        self.widgetlist_sf.reposition()
Ejemplo n.º 6
0
    def set_frame_labels_image_use_picked_frames(self,
                                                 frames=None,
                                                 from_new_frame=False):
        """
        Set frame label images using picked_frames
        Args:
            frames (Unit[int, numpy.array]): The video or image frame or the
            the `return` signal if `frames` is 0.
        """

        if frames == 0:
            return
        if frames is None:
            frames = (self.get_picked_frames() or
                      (from_new_frame and self.get_picked_frames_from_frame())
                      or None)
        if frames is not None:
            for f in frames:
                label = ttk.Label(self.pick_scrolledframe_innerframe,
                                  state="active")
                self.set_label_image(f, label)
                index = len(self.picked_frame_labels)
                label.bind(
                    "<Button-1>",
                    lambda event, index=index: self.del_picked_frame_by_index(
                        index),
                )
                label.pack(
                    side="left",
                    anchor="nw",
                    padx=self.picked_frame_label_margin / 2,
                )
                simpletooltip.create(label, _("Click to delete."))
                self.picked_frame_labels.append(label)
        else:
            if self.is_test():
                print(_("Picked frame is None."))
Ejemplo n.º 7
0
    def set_widgets(self):
        super().set_widgets()
        self.set_frame_widget()

        self.saved_info_combobox = ttk.Combobox(
            self.root,
            textvariable=self.saved_info_combobox_var,
            values=self.get_saved_info_combobox_values(),
            justify="center",
        )
        self.saved_info_combobox_var.trace(
            "w", self.saved_info_combobox_var_trace_w)

        self.pick_scrolledframe = ScrolledFrame(self.root,
                                                scrolltype="horizontal")
        self.pick_scrolledframe_innerframe = self.pick_scrolledframe.innerframe
        self.pick_scrolledframe_innerframe.configure(
            height=self.get_pick_scrolledframe_innerframe_height())
        self.info_tip_label = ttk.Label(
            self.root, text=_("Write information in your strict format."))
        self.basic_info_entry = tk.Entry(self.root, justify="center")
        simpletooltip.create(self.basic_info_entry,
                             _("Write basic information here."))
        self.info_text = tk.Text(self.root)
        simpletooltip.create(self.info_text,
                             _("Write additional information here."))
        self.save_button = ttk.Button(self.root,
                                      text=_("Save"),
                                      command=self.save_button_command)
        self.delete_button = tk.Button(
            self.root,
            text=_("Delete"),
            background="red",
            activebackground="red",
            command=self.delete_button_command,
        )
Ejemplo n.º 8
0
    def configure_widget_list(self):
        acf = AccordionFrame(self.widgetlist)
        acf.grid(sticky=tk.NSEW)
        acf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle)

        root_tagset = set(('tk', 'ttk'))

        #create unique tag set
        tagset = set()
        for c in builder.CLASS_MAP.keys():
            wc = builder.CLASS_MAP[c]
            tagset.update(wc.tags)
        tagset.difference_update(root_tagset)

        treelist = []
        for c in builder.CLASS_MAP.keys():
            wc = builder.CLASS_MAP[c]
            ctags = set(wc.tags)
            roots = (root_tagset & ctags)
            sections = (tagset & ctags)
            for r in roots:
                for s in sections:
                    key = '{0}>{1}'.format(r,s)
                    treelist.append((key, wc))

        #sort tags by label
        def by_label(t):
            return "{0}{1}".format(t[0], t[1].label)
        treelist.sort(key=by_label)

        #Default widget image:
        default_image = ''
        try:
            default_image = StockImage.get('22x22-tk.default')
        except StockImageException as e:
            pass

        #Start building widget tree selector
        roots = {}
        sections = {}
        for key, wc in treelist:
            root, section = key.split('>')
            #insert root
            if root not in roots:
                roots[root] = acf.add_group(root, root)
            #insert section
            if key not in sections:
                sectionacf = AccordionFrame(roots[root])
                sectionacf.grid(sticky=tk.NSEW, padx='5 0')
                sectionacf.bind('<<AccordionGroupToggle>>',
                    self.on_widgetlist_group_toogle)
                sectiongrp = sectionacf.add_group(key, section)
                sections[key] = AutoArrangeFrame(sectiongrp)
                sections[key].grid(sticky=tk.NSEW)

            #insert widget
            w_image = default_image
            try:
                w_image = StockImage.get('22x22-{0}'.format(wc.classname))
            except StockImageException as e:
                pass

            #define callback for button
            def create_cb(cname):
                return lambda: self.on_add_widget_event(cname)

            b = ttk.Button(sections[key], text=wc.label, image=w_image,
                style='Toolbutton', command=create_cb(wc.classname))
            tooltip.create(b, wc.classname)
            b.grid()

        #hide tk widget by default
        acf.group_toogle('tk')
        self.widgetlist_sf.reposition()
Ejemplo n.º 9
0
    def configure_widget_list(self):
        acf = AccordionFrame(self.widgetlist)
        acf.grid(sticky=tk.NSEW)
        acf.bind('<<AccordionGroupToggle>>', self.on_widgetlist_group_toogle)

        root_tagset = set(('tk', 'ttk'))

        #create unique tag set
        tagset = set()
        for c in builder.CLASS_MAP.keys():
            wc = builder.CLASS_MAP[c]
            tagset.update(wc.tags)
        tagset.difference_update(root_tagset)

        treelist = []
        for c in builder.CLASS_MAP.keys():
            wc = builder.CLASS_MAP[c]
            ctags = set(wc.tags)
            roots = (root_tagset & ctags)
            sections = (tagset & ctags)
            for r in roots:
                for s in sections:
                    key = '{0}>{1}'.format(r, s)
                    treelist.append((key, wc))

        #sort tags by label
        def by_label(t):
            return "{0}{1}".format(t[0], t[1].label)

        treelist.sort(key=by_label)

        #Default widget image:
        default_image = ''
        try:
            default_image = StockImage.get('22x22-tk.default')
        except StockImageException as e:
            pass

        #Start building widget tree selector
        roots = {}
        sections = {}
        for key, wc in treelist:
            root, section = key.split('>')
            #insert root
            if root not in roots:
                roots[root] = acf.add_group(root, root)
            #insert section
            if key not in sections:
                sectionacf = AccordionFrame(roots[root])
                sectionacf.grid(sticky=tk.NSEW, padx='5 0')
                sectionacf.bind('<<AccordionGroupToggle>>',
                                self.on_widgetlist_group_toogle)
                sectiongrp = sectionacf.add_group(key, section)
                sections[key] = AutoArrangeFrame(sectiongrp)
                sections[key].grid(sticky=tk.NSEW)

            #insert widget
            w_image = default_image
            try:
                w_image = StockImage.get('22x22-{0}'.format(wc.classname))
            except StockImageException as e:
                pass

            #define callback for button
            def create_cb(cname):
                return lambda: self.on_add_widget_event(cname)

            b = ttk.Button(sections[key],
                           text=wc.label,
                           image=w_image,
                           style='Toolbutton',
                           command=create_cb(wc.classname))
            tooltip.create(b, wc.classname)
            b.grid()

        #hide tk widget by default
        acf.group_toogle('tk')
        self.widgetlist_sf.reposition()