--- 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)
-