示例#1
0
    def OnNewName(self, event):

        tag_id = tagging.tag_name_to_id(self.edit_tag)
        text = event.GetEventObject()
        new_name = text.GetValue()

        for tag_name in tagging.get_all_tags():
            if tagging.tag_name_to_id(tag_name) == tag_id:
                continue

            if tag_name.lower() == new_name.lower():
                wx.MessageBox(
                    ("Tag name already in use! Two tags can't have the same "
                     "name, regardless of case."),
                    "Error",
                    wx.OK,
                )
                return

        if not re.match('^' + expression.REG_TAG_NAME + '$', new_name):
            wx.MessageBox(
                ("Invalid input! Tag names can only contain letters, "
                 "numbers and underscores (which will be displayed "
                 "as a sapce). They must start with a letter."),
                "Error",
                wx.OK,
            )
            return

        output.rename_tag(tag_id, new_name)

        if self.edit_tag in self.checked:
            self.checked.append(new_name)

        event = TagListUpdateEvent(
            self.GetId(),
            checked=self.checked
        )
        wx.PostEvent(self, event)
示例#2
0
    def OnKeyDown(self, event):
        key = event.GetKeyCode()

        if key == wx.WXK_UP:
            self.popup.CursorUp()
            return

        elif key == wx.WXK_DOWN:
            self.popup.CursorDown()
            return

        elif key in (wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER) and self.popup.Shown:
            #self.skip_event = True
            self.SetInsertionPointEnd()

            items = self.octotagger.GetSelectedItems()
            print items
            tag = self.popup.GetSelectedSuggestion()
            print tag

            if not (items and tag):
                return

            for item in items:
                tagging.tag_file(item, tag)

            self.octotagger.update_tag_list()
            self.octotagger.select_tags()
            self.Value = ""

            unformatted = tagging.get_all_tags()
            formatted = unformatted
            if len(formatted) > 0:
                self.popup.SetSuggestions(formatted, unformatted)
                self.AdjustPopupPosition()
                self.Unbind(wx.EVT_KILL_FOCUS)
                self.popup.ShowWithoutActivating()
                self.SetFocus()
                self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
            else:
                self.popup.Hide()

            self.popup.Show()
            event.Skip()

            return

        elif key == wx.WXK_HOME:
            self.popup.CursorHome()

        elif key == wx.WXK_END:
            self.popup.CursorEnd()

        elif event.ControlDown() and unichr(key).lower() == "a":
            self.SelectAll()

        elif key == wx.WXK_ESCAPE:
            self.popup.Hide()
            return

        event.Skip()
示例#3
0
    def OnKeyDown(self, event):
        key = event.GetKeyCode()

        if key == wx.WXK_UP:
            self.popup.CursorUp()
            return

        elif key == wx.WXK_DOWN:
            self.popup.CursorDown()
            return

        elif key in (wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER) and self.popup.Shown:
            #self.skip_event = True
            self.SetInsertionPointEnd()

            items = self.octotagger.GetSelectedItems()
            print items
            tag = self.popup.GetSelectedSuggestion()
            print tag

            if not (items and tag):
                return

            for item in items:
                tagging.tag_file(item, tag)

            self.octotagger.update_tag_list()
            self.octotagger.select_tags()
            self.Value = ""

            unformatted = tagging.get_all_tags()
            formatted = unformatted
            if len(formatted) > 0:
                self.popup.SetSuggestions(formatted, unformatted)
                self.AdjustPopupPosition()
                self.Unbind(wx.EVT_KILL_FOCUS)
                self.popup.ShowWithoutActivating()
                self.SetFocus()
                self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)
            else:
                self.popup.Hide()

            self.popup.Show()
            event.Skip()

            return

        elif key == wx.WXK_HOME:
            self.popup.CursorHome()

        elif key == wx.WXK_END:
            self.popup.CursorEnd()

        elif event.ControlDown() and unichr(key).lower() == "a":
            self.SelectAll()

        elif key == wx.WXK_ESCAPE:
            self.popup.Hide()
            return

        event.Skip()
示例#4
0
    def InitUI(self):
        """Initialize User Interface"""

        panel = wx.Panel(self, style=wx.BORDER_SIMPLE)
        empty_panel = wx.Panel(self)
        self.tags = []
        for tag in tagging.get_all_tags():
            self.tags.append(tag.replace("_", " "))

        # Set sizers

        main_sz = wx.BoxSizer(wx.VERTICAL)
        main_sz.Add(panel, 1, flag=wx.EXPAND)
        self.SetSizer(main_sz)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sz_location = wx.BoxSizer(wx.HORIZONTAL)
        sz_name = wx.BoxSizer(wx.HORIZONTAL)
        sz_options = wx.BoxSizer(wx.HORIZONTAL)
        sz_symlinks = wx.BoxSizer(wx.VERTICAL)
        sz_automatic = wx.BoxSizer(wx.HORIZONTAL)
        sz_tags = wx.BoxSizer(wx.VERTICAL)
        sz_tags_body = wx.BoxSizer(wx.HORIZONTAL)
        sz_sel_btn = wx.BoxSizer(wx.VERTICAL)
        sz_close_btn = wx.BoxSizer(wx.HORIZONTAL)

        sizer.Add(sz_location, 0, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_name, 0, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_options, 0, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_tags, 1, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_close_btn, 0, flag=wx.ALL | wx.EXPAND, border=5)

        sz_options.Add(sz_symlinks, 1, flag=wx.ALL, border=5)
        sz_options.Add(sz_automatic, 1, flag=wx.ALL, border=5)

        # Define elements and add them to sizers
        # Labels

        txt_directory = wx.StaticText(panel, size=(80, -1), label="Location:")
        sz_location.Add(txt_directory, 0, flag=wx.ALL, border=5)

        txt_name = wx.StaticText(panel, size=(80, -1), label="Name:")
        sz_name.Add(txt_name, 0, flag=wx.ALL, border=5)

        txt_tags = wx.StaticText(panel, label="Tags: ")
        sz_tags.Add(txt_tags, 0, flag=wx.ALL, border=5)

        txt_symlinks = wx.StaticText(panel, label="Symlink method:")
        sz_symlinks.Add(txt_symlinks, 0)

        # Text controls

        self.tc_directory = wx.TextCtrl(panel)
        sz_location.Add(self.tc_directory,
                        1,
                        flag=wx.ALL | wx.EXPAND,
                        border=5)

        self.tc_name = wx.TextCtrl(panel)
        sz_name.Add(self.tc_name, 1, flag=wx.ALL | wx.EXPAND, border=5)

        # Radio buttons

        self.rb_softlinks = wx.RadioButton(panel, -1, "Softlinks")
        sz_symlinks.Add(self.rb_softlinks, 0, flag=wx.TOP | wx.LEFT, border=5)

        self.rb_hardlinks = wx.RadioButton(panel, -1, "Hardlinks")
        sz_symlinks.Add(self.rb_hardlinks, 0, flag=wx.LEFT, border=5)

        # Checkbox

        self.cb_automatic = wx.CheckBox(panel,
                                        label="Automatically add new tags",
                                        name="auto")
        sz_automatic.Add(self.cb_automatic, 0)

        # Buttons

        btn_browse = wx.Button(panel, label="Browse...")
        btn_browse.Bind(wx.EVT_BUTTON, self.OnBrowse)
        sz_location.Add(btn_browse, 0, flag=wx.ALL, border=5)

        btn_select_all = wx.Button(panel, label="Select all")
        btn_select_all.Bind(wx.EVT_BUTTON, self.OnSelectAll)
        sz_sel_btn.Add(btn_select_all, 0, flag=wx.ALL, border=5)

        btn_deselect_all = wx.Button(panel, label="Deselect all")
        btn_deselect_all.Bind(wx.EVT_BUTTON, self.OnDeselectAll)
        sz_sel_btn.Add(btn_deselect_all, 0, flag=wx.ALL, border=5)

        btn_ok = wx.Button(panel, label="Ok")
        btn_ok.Bind(wx.EVT_BUTTON, self.OnOk)
        sz_close_btn.Add(empty_panel, 1, flag=wx.ALL | wx.EXPAND, border=5)
        sz_close_btn.Add(btn_ok, 0, flag=wx.ALL, border=5)

        btn_cancel = wx.Button(panel, label="Cancel")
        btn_cancel.Bind(wx.EVT_BUTTON, self.OnClose)
        sz_close_btn.Add(btn_cancel, 0, flag=wx.ALL, border=5)

        # Tags
        # Check list box
        self.lb = wx.CheckListBox(panel, wx.ID_ANY, (0, 0), wx.DefaultSize,
                                  self.tags)
        sz_tags_body.Add(self.lb, 1, flag=wx.ALL | wx.EXPAND, border=5)
        sz_tags_body.Add(sz_sel_btn, 0, flag=wx.ALL, border=5)
        sz_tags.Add(sz_tags_body, 1, flag=wx.ALL | wx.EXPAND, border=5)

        panel.SetSizerAndFit(sizer)
        self.Layout()
        self.InitData()
    def InitUI(self):
        """Initialize User Interface"""

        panel = wx.Panel(self, style=wx.BORDER_SIMPLE)
        empty_panel = wx.Panel(self)
        self.tags = []
        for tag in tagging.get_all_tags():
            self.tags.append(tag.replace("_", " "))

        # Set sizers

        main_sz = wx.BoxSizer(wx.VERTICAL)
        main_sz.Add(panel, 1, flag=wx.EXPAND)
        self.SetSizer(main_sz)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sz_location = wx.BoxSizer(wx.HORIZONTAL)
        sz_name = wx.BoxSizer(wx.HORIZONTAL)
        sz_options = wx.BoxSizer(wx.HORIZONTAL)
        sz_symlinks = wx.BoxSizer(wx.VERTICAL)
        sz_automatic = wx.BoxSizer(wx.HORIZONTAL)
        sz_tags = wx.BoxSizer(wx.VERTICAL)
        sz_tags_body = wx.BoxSizer(wx.HORIZONTAL)
        sz_sel_btn = wx.BoxSizer(wx.VERTICAL)
        sz_close_btn = wx.BoxSizer(wx.HORIZONTAL)

        sizer.Add(sz_location, 0, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_name, 0, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_options, 0, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_tags, 1, flag=wx.ALL | wx.EXPAND, border=5)
        sizer.Add(sz_close_btn, 0, flag=wx.ALL | wx.EXPAND, border=5)

        sz_options.Add(sz_symlinks, 1, flag=wx.ALL, border=5)
        sz_options.Add(sz_automatic, 1, flag=wx.ALL, border=5)

        # Define elements and add them to sizers
        # Labels

        txt_directory = wx.StaticText(panel, size=(80, -1), label="Location:")
        sz_location.Add(txt_directory, 0, flag=wx.ALL, border=5)

        txt_name = wx.StaticText(panel, size=(80, -1), label="Name:")
        sz_name.Add(txt_name, 0, flag=wx.ALL, border=5)

        txt_tags = wx.StaticText(panel, label="Tags: ")
        sz_tags.Add(txt_tags, 0, flag=wx.ALL, border=5)

        txt_symlinks = wx.StaticText(panel, label="Symlink method:")
        sz_symlinks.Add(txt_symlinks, 0)

        # Text controls

        self.tc_directory = wx.TextCtrl(panel)
        sz_location.Add(self.tc_directory, 1,
                        flag=wx.ALL | wx.EXPAND, border=5)

        self.tc_name = wx.TextCtrl(panel)
        sz_name.Add(self.tc_name, 1, flag=wx.ALL | wx.EXPAND, border=5)

        # Radio buttons

        self.rb_softlinks = wx.RadioButton(panel, -1, "Softlinks")
        sz_symlinks.Add(self.rb_softlinks, 0, flag=wx.TOP | wx.LEFT, border=5)

        self.rb_hardlinks = wx.RadioButton(panel, -1, "Hardlinks")
        sz_symlinks.Add(self.rb_hardlinks, 0, flag=wx.LEFT, border=5)

        # Checkbox

        self.cb_automatic = wx.CheckBox(
            panel, label="Automatically add new tags", name="auto")
        sz_automatic.Add(self.cb_automatic, 0)

        # Buttons

        btn_browse = wx.Button(panel, label="Browse...")
        btn_browse.Bind(wx.EVT_BUTTON, self.OnBrowse)
        sz_location.Add(btn_browse, 0, flag=wx.ALL, border=5)

        btn_select_all = wx.Button(panel, label="Select all")
        btn_select_all.Bind(wx.EVT_BUTTON, self.OnSelectAll)
        sz_sel_btn.Add(btn_select_all, 0, flag=wx.ALL, border=5)

        btn_deselect_all = wx.Button(panel, label="Deselect all")
        btn_deselect_all.Bind(wx.EVT_BUTTON, self.OnDeselectAll)
        sz_sel_btn.Add(btn_deselect_all, 0, flag=wx.ALL, border=5)

        btn_ok = wx.Button(panel, label="Ok")
        btn_ok.Bind(wx.EVT_BUTTON, self.OnOk)
        sz_close_btn.Add(empty_panel, 1, flag=wx.ALL | wx.EXPAND, border=5)
        sz_close_btn.Add(btn_ok, 0, flag=wx.ALL, border=5)

        btn_cancel = wx.Button(panel, label="Cancel")
        btn_cancel.Bind(wx.EVT_BUTTON, self.OnClose)
        sz_close_btn.Add(btn_cancel, 0, flag=wx.ALL, border=5)

        # Tags
        # Check list box
        self.lb = wx.CheckListBox(
            panel,
            wx.ID_ANY,
            (0, 0),
            wx.DefaultSize,
            self.tags
        )
        sz_tags_body.Add(self.lb, 1, flag=wx.ALL | wx.EXPAND, border=5)
        sz_tags_body.Add(sz_sel_btn, 0, flag=wx.ALL, border=5)
        sz_tags.Add(sz_tags_body, 1, flag=wx.ALL | wx.EXPAND, border=5)

        panel.SetSizerAndFit(sizer)
        self.Layout()