controls/IDBrowser.py
changeset 2428 e0f16317668e
parent 2340 decf52efb7f7
child 2458 2a70d5240300
--- a/controls/IDBrowser.py	Wed Nov 21 14:10:51 2018 +0100
+++ b/controls/IDBrowser.py	Thu Nov 22 23:39:54 2018 +0100
@@ -8,7 +8,8 @@
 import wx
 import wx.dataview as dv
 import PSKManagement as PSK
-from PSKManagement import COL_ID,COL_URI,COL_DESC,COL_LAST
+from PSKManagement import *
+from dialogs.IDMergeDialog import IDMergeDialog
 
 class IDBrowserModel(dv.PyDataViewIndexListModel):
     def __init__(self, project_path, columncount):
@@ -70,7 +71,10 @@
         self._saveData()
 
     def Import(self, filepath, sircb):
-        PSK.ImportIDs(self.project_path, filepath, sircb)
+        data = PSK.ImportIDs(self.project_path, filepath, sircb)
+        if data is not None:
+            self.data = data
+            self.Reset(len(self.data)) 
 
     def Export(self, filepath):
         PSK.ExportIDs(self.project_path, filepath)
@@ -184,10 +188,35 @@
         if dialog.ShowModal() == wx.ID_OK:
             self.model.Export(dialog.GetPath())
 
-    def ShouldIReplaceCallback(self,some,stuff):
-        # TODO
-        wx.MessageBox("TODO : ShouldIReplaceCallback")
-        return True
+    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    " +
+             _("Last known URI:") + " {URI}\n    " +
+             _("Last connection:") + " {LAST}\n\n" +
+             _("Replacement:") + "\n    " +
+             _("Description:") + " {_DESC}\n    " +
+             _("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
+        if answer == wx.ID_CANCEL:
+            return CANCEL
+
+        if dlg.OptionChecked():
+            if answer == wx.ID_YES:
+                return REPLACE_ALL
+            return KEEP_ALL
+        else:
+            if answer == wx.ID_YES:
+                return REPLACE
+            return KEEP
 
     def OnImportButton(self, evt):
         dialog = wx.FileDialog(self, _("Choose a file"),