author | Edouard Tisserant <edouard.tisserant@gmail.com> |
Thu, 28 Jul 2022 13:24:49 +0200 | |
branch | wxPython4 |
changeset 3566 | 7f5659b1eeb8 |
parent 2537 | eb4a4cc41914 |
child 3750 | f62625418bff |
permissions | -rw-r--r-- |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
2 |
# -*- coding: utf-8 -*- |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
3 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
4 |
# See COPYING file for copyrights details. |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
5 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
6 |
from __future__ import absolute_import |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
7 |
import wx |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
8 |
import wx.dataview as dv |
2339
48b4eba13064
IDManager : refactored a bit, moved some code into PSKManagement.py. Now captures URI and PSK on new PYRO(S) and propose them when editing URI. Import/export still to be implemented.
Edouard Tisserant
parents:
2336
diff
changeset
|
9 |
import PSKManagement as PSK |
2428
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
10 |
from PSKManagement import * |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
11 |
from dialogs.IDMergeDialog import IDMergeDialog |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
12 |
|
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
13 |
|
2336
869a61616b42
Renamed IDManager control into IDBrowser, because dialog will be named IDManager
Edouard Tisserant
parents:
2335
diff
changeset
|
14 |
class IDBrowserModel(dv.PyDataViewIndexListModel): |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
15 |
def __init__(self, project_path, columncount): |
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
16 |
self.project_path = project_path |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
17 |
self.columncount = columncount |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
18 |
self.data = PSK.GetData(project_path) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
19 |
dv.PyDataViewIndexListModel.__init__(self, len(self.data)) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
20 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
21 |
def _saveData(self): |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
22 |
PSK.SaveData(self.project_path, self.data) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
23 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
24 |
def GetColumnType(self, col): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
25 |
return "string" |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
26 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
27 |
def GetValueByRow(self, row, col): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
28 |
return self.data[row][col] |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
29 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
30 |
def SetValueByRow(self, value, row, col): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
31 |
self.data[row][col] = value |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
32 |
self._saveData() |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
33 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
34 |
def GetColumnCount(self): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
35 |
return len(self.data[0]) if self.data else self.columncount |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
36 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
37 |
def GetCount(self): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
38 |
return len(self.data) |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
39 |
|
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
40 |
def Compare(self, item1, item2, col, ascending): |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
41 |
if not ascending: # swap sort order? |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
42 |
item2, item1 = item1, item2 |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
43 |
row1 = self.GetRow(item1) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
44 |
row2 = self.GetRow(item2) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
45 |
if col == 0: |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
46 |
return cmp(int(self.data[row1][col]), int(self.data[row2][col])) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
47 |
else: |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
48 |
return cmp(self.data[row1][col], self.data[row2][col]) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
49 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
50 |
def DeleteRows(self, rows): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
51 |
rows = list(rows) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
52 |
rows.sort(reverse=True) |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
53 |
|
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
54 |
for row in rows: |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
55 |
PSK.DeleteID(self.project_path, self.data[row][COL_ID]) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
56 |
del self.data[row] |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
57 |
self.RowDeleted(row) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
58 |
self._saveData() |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
59 |
|
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
60 |
def AddRow(self, value): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
61 |
self.data.append(value) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
62 |
self.RowAppended() |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
63 |
self._saveData() |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
64 |
|
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
65 |
def Import(self, filepath, sircb): |
2428
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
66 |
data = PSK.ImportIDs(self.project_path, filepath, sircb) |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
67 |
if data is not None: |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
68 |
self.data = data |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
69 |
self.Reset(len(self.data)) |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
70 |
|
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
71 |
def Export(self, filepath): |
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
72 |
PSK.ExportIDs(self.project_path, filepath) |
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
73 |
|
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
74 |
|
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
75 |
colflags = dv.DATAVIEW_COL_RESIZABLE | dv.DATAVIEW_COL_SORTABLE |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
76 |
|
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
77 |
|
2336
869a61616b42
Renamed IDManager control into IDBrowser, because dialog will be named IDManager
Edouard Tisserant
parents:
2335
diff
changeset
|
78 |
class IDBrowser(wx.Panel): |
2335 | 79 |
def __init__(self, parent, ctr, SelectURICallBack=None, SelectIDCallBack=None, **kwargs): |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
80 |
big = self.isManager = SelectURICallBack is None and SelectIDCallBack is None |
2458
2a70d5240300
IDManager : small cosmetic fixes and cleanup.
Edouard Tisserant
parents:
2428
diff
changeset
|
81 |
wx.Panel.__init__(self, parent, -1, size=(800 if big else 450, |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
82 |
600 if big else 200)) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
83 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
84 |
self.SelectURICallBack = SelectURICallBack |
2335 | 85 |
self.SelectIDCallBack = SelectIDCallBack |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
86 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
87 |
dvStyle = wx.BORDER_THEME | dv.DV_ROW_LINES |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
88 |
if self.isManager: |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
89 |
# no multiple selection in selector mode |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
90 |
dvStyle |= dv.DV_MULTIPLE |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
91 |
self.dvc = dv.DataViewCtrl(self, style=dvStyle) |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
92 |
|
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
93 |
def args(*a, **k): |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
94 |
return (a, k) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
95 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
96 |
ColumnsDesc = [ |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
97 |
args(_("ID"), COL_ID, width=70), |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
98 |
args(_("Last URI"), COL_URI, width=300 if big else 80), |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
99 |
args(_("Description"), COL_DESC, width=300 if big else 200, |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
100 |
mode=dv.DATAVIEW_CELL_EDITABLE |
2537
eb4a4cc41914
Fix various pylint and pep8 errors
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
2492
diff
changeset
|
101 |
if self.isManager |
eb4a4cc41914
Fix various pylint and pep8 errors
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
2492
diff
changeset
|
102 |
else dv.DATAVIEW_CELL_INERT), |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
103 |
args(_("Last connection"), COL_LAST, width=120), |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
104 |
] |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
105 |
|
2339
48b4eba13064
IDManager : refactored a bit, moved some code into PSKManagement.py. Now captures URI and PSK on new PYRO(S) and propose them when editing URI. Import/export still to be implemented.
Edouard Tisserant
parents:
2336
diff
changeset
|
106 |
self.model = IDBrowserModel(ctr.ProjectPath, len(ColumnsDesc)) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
107 |
self.dvc.AssociateModel(self.model) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
108 |
|
2458
2a70d5240300
IDManager : small cosmetic fixes and cleanup.
Edouard Tisserant
parents:
2428
diff
changeset
|
109 |
col_list = [] |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
110 |
for a, k in ColumnsDesc: |
2458
2a70d5240300
IDManager : small cosmetic fixes and cleanup.
Edouard Tisserant
parents:
2428
diff
changeset
|
111 |
col_list.append( |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
112 |
self.dvc.AppendTextColumn(*a, **dict(k, flags=colflags))) |
2458
2a70d5240300
IDManager : small cosmetic fixes and cleanup.
Edouard Tisserant
parents:
2428
diff
changeset
|
113 |
col_list[COL_LAST].SetSortOrder(False) |
2a70d5240300
IDManager : small cosmetic fixes and cleanup.
Edouard Tisserant
parents:
2428
diff
changeset
|
114 |
|
2a70d5240300
IDManager : small cosmetic fixes and cleanup.
Edouard Tisserant
parents:
2428
diff
changeset
|
115 |
# TODO : sort by last bvisit by default |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
116 |
|
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
117 |
self.Sizer = wx.BoxSizer(wx.VERTICAL) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
118 |
self.Sizer.Add(self.dvc, 1, wx.EXPAND) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
119 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
120 |
btnbox = wx.BoxSizer(wx.HORIZONTAL) |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
121 |
if self.isManager: |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
122 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
123 |
# deletion of secret and metadata |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
124 |
deleteButton = wx.Button(self, label=_("Delete ID")) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
125 |
self.Bind(wx.EVT_BUTTON, self.OnDeleteButton, deleteButton) |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
126 |
btnbox.Add(deleteButton, 0, wx.LEFT | wx.RIGHT, 5) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
127 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
128 |
# export all |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
129 |
exportButton = wx.Button(self, label=_("Export all")) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
130 |
self.Bind(wx.EVT_BUTTON, self.OnExportButton, exportButton) |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
131 |
btnbox.Add(exportButton, 0, wx.LEFT | wx.RIGHT, 5) |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
132 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
133 |
# import with a merge -> duplicates are asked for |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
134 |
importButton = wx.Button(self, label=_("Import")) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
135 |
self.Bind(wx.EVT_BUTTON, self.OnImportButton, importButton) |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
136 |
btnbox.Add(importButton, 0, wx.LEFT | wx.RIGHT, 5) |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
137 |
|
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
138 |
else: |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
139 |
# selector mode |
2335 | 140 |
self.useURIButton = wx.Button(self, label=_("Use last URI")) |
141 |
self.Bind(wx.EVT_BUTTON, self.OnUseURIButton, self.useURIButton) |
|
142 |
self.useURIButton.Disable() |
|
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
143 |
btnbox.Add(self.useURIButton, 0, wx.LEFT | wx.RIGHT, 5) |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
144 |
|
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
145 |
self.Sizer.Add(btnbox, 0, wx.TOP | wx.BOTTOM, 5) |
2335 | 146 |
self.Bind(dv.EVT_DATAVIEW_SELECTION_CHANGED, self.OnSelectionChanged, self.dvc) |
147 |
||
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
148 |
def OnDeleteButton(self, evt): |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
149 |
items = self.dvc.GetSelections() |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
150 |
rows = [self.model.GetRow(item) for item in items] |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
151 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
152 |
# Ask if user really wants to delete |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
153 |
if wx.MessageBox(_('Are you sure to delete selected IDs?'), |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
154 |
_('Delete IDs'), |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
155 |
wx.YES_NO | wx.CENTRE | wx.NO_DEFAULT) != wx.YES: |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
156 |
return |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
157 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
158 |
self.model.DeleteRows(rows) |
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
159 |
|
2335 | 160 |
def OnSelectionChanged(self, evt): |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
161 |
if not self.isManager: |
2335 | 162 |
items = self.dvc.GetSelections() |
163 |
somethingSelected = len(items) > 0 |
|
164 |
self.useURIButton.Enable(somethingSelected) |
|
165 |
if somethingSelected: |
|
166 |
row = self.model.GetRow(items[0]) |
|
167 |
ID = self.model.GetValueByRow(row, COL_ID) |
|
168 |
self.SelectIDCallBack(ID) |
|
169 |
||
170 |
def OnUseURIButton(self, evt): |
|
171 |
row = self.model.GetRow(self.dvc.GetSelections()[0]) |
|
172 |
URI = self.model.GetValueByRow(row, COL_URI) |
|
173 |
if URI: |
|
174 |
self.SelectURICallBack(URI) |
|
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
175 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
176 |
def OnExportButton(self, evt): |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
177 |
dialog = wx.FileDialog(self, _("Choose a file"), |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
178 |
wildcard=_("PSK ZIP files (*.zip)|*.zip"), |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
179 |
style=wx.SAVE | wx.OVERWRITE_PROMPT) |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
180 |
if dialog.ShowModal() == wx.ID_OK: |
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
181 |
self.model.Export(dialog.GetPath()) |
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
182 |
|
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
183 |
# pylint: disable=unused-variable |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
184 |
def ShouldIReplaceCallback(self, existing, replacement): |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
185 |
ID, URI, DESC, LAST = existing |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
186 |
_ID, _URI, _DESC, _LAST = replacement |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
187 |
dlg = IDMergeDialog( |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
188 |
self, |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
189 |
_("Import IDs"), |
2428
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
190 |
(_("Replace information for ID {ID} ?") + "\n\n" + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
191 |
_("Existing:") + "\n " + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
192 |
_("Description:") + " {DESC}\n " + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
193 |
_("Last known URI:") + " {URI}\n " + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
194 |
_("Last connection:") + " {LAST}\n\n" + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
195 |
_("Replacement:") + "\n " + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
196 |
_("Description:") + " {_DESC}\n " + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
197 |
_("Last known URI:") + " {_URI}\n " + |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
198 |
_("Last connection:") + " {_LAST}\n").format(**locals()), |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
199 |
_("Do the same for following IDs"), |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
200 |
[_("Replace"), _("Keep"), _("Cancel")]) |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
201 |
|
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
202 |
answer = dlg.ShowModal() # return value ignored as we have "Ok" only anyhow |
2428
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
203 |
if answer == wx.ID_CANCEL: |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
204 |
return CANCEL |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
205 |
|
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
206 |
if dlg.OptionChecked(): |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
207 |
if answer == wx.ID_YES: |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
208 |
return REPLACE_ALL |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
209 |
return KEEP_ALL |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
210 |
else: |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
211 |
if answer == wx.ID_YES: |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
212 |
return REPLACE |
e0f16317668e
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant
parents:
2340
diff
changeset
|
213 |
return KEEP |
2334
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
214 |
|
d1470c052662
Added early implementation of IDManager.py. For now only used to select ID in URIEditor
Edouard Tisserant
parents:
diff
changeset
|
215 |
def OnImportButton(self, evt): |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
216 |
dialog = wx.FileDialog(self, _("Choose a file"), |
2492
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
217 |
wildcard=_("PSK ZIP files (*.zip)|*.zip"), |
7dd551ac2fa0
check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com>
parents:
2458
diff
changeset
|
218 |
style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) |
2340
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
219 |
if dialog.ShowModal() == wx.ID_OK: |
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
220 |
self.model.Import(dialog.GetPath(), |
decf52efb7f7
IDManager: added import/export plus little cosmetic enhancements.
Edouard Tisserant
parents:
2339
diff
changeset
|
221 |
self.ShouldIReplaceCallback) |