controls/IDBrowser.py
changeset 2492 7dd551ac2fa0
parent 2458 2a70d5240300
child 2537 eb4a4cc41914
--- a/controls/IDBrowser.py	Thu Mar 07 21:57:18 2019 +0100
+++ b/controls/IDBrowser.py	Mon Mar 11 01:03:32 2019 +0100
@@ -4,13 +4,13 @@
 # See COPYING file for copyrights details.
 
 from __future__ import absolute_import
-import os
 import wx
 import wx.dataview as dv
 import PSKManagement as PSK
 from PSKManagement import *
 from dialogs.IDMergeDialog import IDMergeDialog
 
+
 class IDBrowserModel(dv.PyDataViewIndexListModel):
     def __init__(self, project_path, columncount):
         self.project_path = project_path
@@ -36,9 +36,9 @@
 
     def GetCount(self):
         return len(self.data)
-    
+
     def Compare(self, item1, item2, col, ascending):
-        if not ascending: # swap sort order?
+        if not ascending:  # swap sort order?
             item2, item1 = item1, item2
         row1 = self.GetRow(item1)
         row2 = self.GetRow(item2)
@@ -50,13 +50,13 @@
     def DeleteRows(self, rows):
         rows = list(rows)
         rows.sort(reverse=True)
-        
+
         for row in rows:
             PSK.DeleteID(self.project_path, self.data[row][COL_ID])
             del self.data[row]
             self.RowDeleted(row)
         self._saveData()
-            
+
     def AddRow(self, value):
         self.data.append(value)
         self.RowAppended()
@@ -66,16 +66,18 @@
         data = PSK.ImportIDs(self.project_path, filepath, sircb)
         if data is not None:
             self.data = data
-            self.Reset(len(self.data)) 
+            self.Reset(len(self.data))
 
     def Export(self, filepath):
         PSK.ExportIDs(self.project_path, filepath)
 
-colflags = dv.DATAVIEW_COL_RESIZABLE|dv.DATAVIEW_COL_SORTABLE
+
+colflags = dv.DATAVIEW_COL_RESIZABLE | dv.DATAVIEW_COL_SORTABLE
+
 
 class IDBrowser(wx.Panel):
     def __init__(self, parent, ctr, SelectURICallBack=None, SelectIDCallBack=None, **kwargs):
-        big = self.isManager = SelectURICallBack is None and SelectIDCallBack is None 
+        big = self.isManager = SelectURICallBack is None and SelectIDCallBack is None
         wx.Panel.__init__(self, parent, -1, size=(800 if big else 450,
                                                   600 if big else 200))
 
@@ -83,66 +85,66 @@
         self.SelectIDCallBack = SelectIDCallBack
 
         dvStyle = wx.BORDER_THEME | dv.DV_ROW_LINES
-        if self.isManager :
+        if self.isManager:
             # no multiple selection in selector mode
             dvStyle |= dv.DV_MULTIPLE
-        self.dvc = dv.DataViewCtrl(self, style = dvStyle)
-                    
-        args = lambda *a,**k:(a,k)
+        self.dvc = dv.DataViewCtrl(self, style=dvStyle)
+
+        def args(*a, **k):
+            return (a, k)
 
         ColumnsDesc = [
-            args(_("ID"), COL_ID, width = 70),
-            args(_("Last URI"), COL_URI, width = 300 if big else 80),
-            args(_("Description"), COL_DESC, width = 300 if big else 200, 
-                mode = dv.DATAVIEW_CELL_EDITABLE 
-                       if self.isManager 
-                       else dv.DATAVIEW_CELL_INERT),
-            args(_("Last connection"),  COL_LAST, width = 120),
+            args(_("ID"), COL_ID, width=70),
+            args(_("Last URI"), COL_URI, width=300 if big else 80),
+            args(_("Description"), COL_DESC, width=300 if big else 200,
+                 mode=dv.DATAVIEW_CELL_EDITABLE
+                      if self.isManager
+                      else dv.DATAVIEW_CELL_INERT),
+            args(_("Last connection"), COL_LAST, width=120),
         ]
 
         self.model = IDBrowserModel(ctr.ProjectPath, len(ColumnsDesc))
         self.dvc.AssociateModel(self.model)
 
         col_list = []
-        for a,k in ColumnsDesc:
+        for a, k in ColumnsDesc:
             col_list.append(
-                self.dvc.AppendTextColumn(*a,**dict(k, flags = colflags)))
+                self.dvc.AppendTextColumn(*a, **dict(k, flags=colflags)))
         col_list[COL_LAST].SetSortOrder(False)
 
         # TODO : sort by last bvisit by default
 
-        self.Sizer = wx.BoxSizer(wx.VERTICAL) 
+        self.Sizer = wx.BoxSizer(wx.VERTICAL)
         self.Sizer.Add(self.dvc, 1, wx.EXPAND)
 
         btnbox = wx.BoxSizer(wx.HORIZONTAL)
-        if self.isManager :
+        if self.isManager:
 
             # deletion of secret and metadata
             deleteButton = wx.Button(self, label=_("Delete ID"))
             self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, deleteButton)
-            btnbox.Add(deleteButton, 0, wx.LEFT|wx.RIGHT, 5)
+            btnbox.Add(deleteButton, 0, wx.LEFT | wx.RIGHT, 5)
 
             # export all
             exportButton = wx.Button(self, label=_("Export all"))
             self.Bind(wx.EVT_BUTTON, self.OnExportButton, exportButton)
-            btnbox.Add(exportButton, 0, wx.LEFT|wx.RIGHT, 5)
+            btnbox.Add(exportButton, 0, wx.LEFT | wx.RIGHT, 5)
 
             # import with a merge -> duplicates are asked for
             importButton = wx.Button(self, label=_("Import"))
             self.Bind(wx.EVT_BUTTON, self.OnImportButton, importButton)
-            btnbox.Add(importButton, 0, wx.LEFT|wx.RIGHT, 5)
-
-        else :
+            btnbox.Add(importButton, 0, wx.LEFT | wx.RIGHT, 5)
+
+        else:
             # selector mode
             self.useURIButton = wx.Button(self, label=_("Use last URI"))
             self.Bind(wx.EVT_BUTTON, self.OnUseURIButton, self.useURIButton)
             self.useURIButton.Disable()
-            btnbox.Add(self.useURIButton, 0, wx.LEFT|wx.RIGHT, 5)
-
-        self.Sizer.Add(btnbox, 0, wx.TOP|wx.BOTTOM, 5)
+            btnbox.Add(self.useURIButton, 0, wx.LEFT | wx.RIGHT, 5)
+
+        self.Sizer.Add(btnbox, 0, wx.TOP | wx.BOTTOM, 5)
         self.Bind(dv.EVT_DATAVIEW_SELECTION_CHANGED, self.OnSelectionChanged, self.dvc)
 
-
     def OnDeleteButton(self, evt):
         items = self.dvc.GetSelections()
         rows = [self.model.GetRow(item) for item in items]
@@ -150,13 +152,13 @@
         # Ask if user really wants to delete
         if wx.MessageBox(_('Are you sure to delete selected IDs?'),
                          _('Delete IDs'),
-                             wx.YES_NO | wx.CENTRE | wx.NO_DEFAULT) != wx.YES:
+                         wx.YES_NO | wx.CENTRE | wx.NO_DEFAULT) != wx.YES:
             return
 
         self.model.DeleteRows(rows)
 
     def OnSelectionChanged(self, evt):
-        if not self.isManager :
+        if not self.isManager:
             items = self.dvc.GetSelections()
             somethingSelected = len(items) > 0
             self.useURIButton.Enable(somethingSelected)
@@ -165,7 +167,6 @@
                 ID = self.model.GetValueByRow(row, COL_ID)
                 self.SelectIDCallBack(ID)
 
-
     def OnUseURIButton(self, evt):
         row = self.model.GetRow(self.dvc.GetSelections()[0])
         URI = self.model.GetValueByRow(row, COL_URI)
@@ -174,16 +175,18 @@
 
     def OnExportButton(self, evt):
         dialog = wx.FileDialog(self, _("Choose a file"),
-                               wildcard = _("PSK ZIP files (*.zip)|*.zip"), 
-                               style = wx.SAVE | wx.OVERWRITE_PROMPT)
+                               wildcard=_("PSK ZIP files (*.zip)|*.zip"),
+                               style=wx.SAVE | wx.OVERWRITE_PROMPT)
         if dialog.ShowModal() == wx.ID_OK:
             self.model.Export(dialog.GetPath())
 
-    def ShouldIReplaceCallback(self,existing,replacement):
-        ID,URI,DESC,LAST = existing
-        _ID,_URI,_DESC,_LAST = replacement
-        dlg = IDMergeDialog(self, 
-            _("Import IDs"), 
+    # pylint: disable=unused-variable
+    def ShouldIReplaceCallback(self, existing, replacement):
+        ID, URI, DESC, LAST = existing
+        _ID, _URI, _DESC, _LAST = replacement
+        dlg = IDMergeDialog(
+            self,
+            _("Import IDs"),
             (_("Replace information for ID {ID} ?") + "\n\n" +
              _("Existing:") + "\n    " +
              _("Description:") + " {DESC}\n    " +
@@ -194,9 +197,9 @@
              _("Last known URI:") + " {_URI}\n    " +
              _("Last connection:") + " {_LAST}\n").format(**locals()),
             _("Do the same for following IDs"),
-            [_("Replace"), _("Keep"),_("Cancel")])
-
-        answer = dlg.ShowModal() # return value ignored as we have "Ok" only anyhow
+            [_("Replace"), _("Keep"), _("Cancel")])
+
+        answer = dlg.ShowModal()  # return value ignored as we have "Ok" only anyhow
         if answer == wx.ID_CANCEL:
             return CANCEL
 
@@ -211,9 +214,8 @@
 
     def OnImportButton(self, evt):
         dialog = wx.FileDialog(self, _("Choose a file"),
-                               wildcard = _("PSK ZIP files (*.zip)|*.zip"), 
-                               style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
+                               wildcard=_("PSK ZIP files (*.zip)|*.zip"),
+                               style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
         if dialog.ShowModal() == wx.ID_OK:
             self.model.Import(dialog.GetPath(),
                               self.ShouldIReplaceCallback)
-