From a79416c4358d3fb1a35eacd26f359f9bde7e9a32 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Wed, 13 Oct 2010 17:11:03 +0300 Subject: [PATCH 1/2] Some tweaks and + in import dlg --- gui/importExport.py | 57 +++++++++++++++++++++++++++++++++++++-------- service/fit.py | 5 ++-- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/gui/importExport.py b/gui/importExport.py index 2e13740f3..233337a33 100755 --- a/gui/importExport.py +++ b/gui/importExport.py @@ -19,47 +19,84 @@ import wx import service +import config class ImportDialog(wx.Dialog): def __init__(self, parent): wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title=u"Import fitting from ...", pos=wx.DefaultPosition, size=wx.Size(500, 300), style=wx.DEFAULT_DIALOG_STYLE) - + self._toggleEdit = -1 self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) - + self.SetMinSize((500,300)) mainSizer = wx.BoxSizer(wx.VERTICAL) headerSizer = wx.BoxSizer(wx.HORIZONTAL) - self.cFilePicker = wx.FilePickerCtrl(self, wx.ID_ANY, wx.EmptyString, u"Select a fit file", u"*.*", style=wx.FLP_DEFAULT_STYLE | wx.FLP_FILE_MUST_EXIST) + self.cFilePicker = wx.FilePickerCtrl(self, wx.ID_ANY, wx.EmptyString, u"Select a fit file", u"*.*", style=wx.FLP_DEFAULT_STYLE | wx.FLP_FILE_MUST_EXIST | wx.FLP_CHANGE_DIR) headerSizer.Add(self.cFilePicker, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) - mainSizer.Add(headerSizer, 0, wx.EXPAND, 5) + self.tbtnEdit = wx.ToggleButton( self, wx.ID_ANY, u"Live Edit", wx.DefaultPosition, wx.DefaultSize, 0 ) + headerSizer.Add( self.tbtnEdit, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 5 ) + + mainSizer.Add(headerSizer, 0, wx.EXPAND, 5) + self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ) + self.m_staticline2.SetMinSize( wx.Size( 480,1 ) ) + mainSizer.Add( self.m_staticline2, 0, wx.EXPAND, 5 ) contentSizer = wx.BoxSizer(wx.VERTICAL) - self.tcPreview = wx.TextCtrl(self, wx.ID_ANY, u"", style=wx.TE_READONLY) - contentSizer.Add(self.tcPreview, 1, wx.EXPAND, 5) + self.tcEdit = wx.TextCtrl(self, wx.ID_ANY, u"", style=wx.TE_READONLY|wx.TE_MULTILINE) + self.tcEdit.SetMinSize( wx.Size( -1,250 ) ) + contentSizer.Add(self.tcEdit, 1, wx.EXPAND, 5) mainSizer.Add(contentSizer, 1, wx.EXPAND, 5) footerSizer = wx.BoxSizer(wx.HORIZONTAL) - self.ckbPreview = wx.CheckBox(self, wx.ID_ANY, u"Preview") - footerSizer.Add(self.ckbPreview, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) - self.btnOK = wx.Button(self, wx.ID_ANY, u"OK", wx.DefaultPosition, wx.DefaultSize, 0) + self.stStatus = wx.StaticText( self, wx.ID_ANY, u"Status:", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.stStatus.Wrap( -1 ) + footerSizer.Add( self.stStatus, 1, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + + self.btnOK = wx.Button(self, wx.ID_OK, u"OK", wx.DefaultPosition, wx.DefaultSize, 0) footerSizer.Add(self.btnOK, 0, wx.ALL, 5) mainSizer.Add(footerSizer, 0, wx.EXPAND, 5) self.SetSizer(mainSizer) + + self.tbtnEdit.SetValue( True ) + self.tcEdit.Show(False) + self.Layout() + self.Fit() + + self.Bind( wx.EVT_CLOSE, self.CloseDlg ) + self.btnOK.Bind( wx.EVT_BUTTON, self.CloseDlg ) + self.cFilePicker.Bind( wx.EVT_FILEPICKER_CHANGED, self.importFits ) + self.tbtnEdit.Bind( wx.EVT_TOGGLEBUTTON, self.SwitchEditCtrl ) self.Centre(wx.BOTH) def importFits(self, event): sFit = service.Fit.getInstance() - self.tcPreview.SetLabel(sFit.importFit(event.Path)) + self.stStatus.SetLabel("Imported %d fit(s)" % (sFit.importFit(event.Path))) + + def ImportFromFile( self, event ): + print event.Path + event.Skip() + + def CloseDlg( self, event ): + event.Skip() + + def SwitchEditCtrl( self, event ): + self._toggleEdit *= -1 + if self._toggleEdit == -1: + self.tcEdit.Show(False) + else: + self.tcEdit.Show(True) + self.Layout() + self.Fit() + event.Skip() class ExportDialog(wx.Dialog): def __init__(self, parent): diff --git a/service/fit.py b/service/fit.py index 6098ce5ca..17a78c96c 100644 --- a/service/fit.py +++ b/service/fit.py @@ -269,8 +269,9 @@ class Fit(object): f = file(path) type, fits = eos.types.Fit.importAuto(f.read()) output = "" + for fit in fits: eos.db.save(fit) - output += "Importing %s (%s)" % (fit.name, fit.ship.item.name) + output += "Importing %s (%s)\n" % (fit.name, fit.ship.item.name) - return output + return len(fits) From 02dd0815ac466469fc3f46ef229b3ca9ae5396d5 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Wed, 13 Oct 2010 18:06:58 +0300 Subject: [PATCH 2/2] Import dlg - changed behaviour / modified import funcs in service/fit --- gui/importExport.py | 49 +++++++++++++++++++++++++++++++++++++-------- service/fit.py | 13 ++++++++---- 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/gui/importExport.py b/gui/importExport.py index 233337a33..6bd8fbebc 100755 --- a/gui/importExport.py +++ b/gui/importExport.py @@ -27,6 +27,10 @@ class ImportDialog(wx.Dialog): self._toggleEdit = -1 self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) self.SetMinSize((500,300)) + + self._fitsFromFile = None + self._fitsFromEdit = None + mainSizer = wx.BoxSizer(wx.VERTICAL) headerSizer = wx.BoxSizer(wx.HORIZONTAL) @@ -34,7 +38,7 @@ class ImportDialog(wx.Dialog): self.cFilePicker = wx.FilePickerCtrl(self, wx.ID_ANY, wx.EmptyString, u"Select a fit file", u"*.*", style=wx.FLP_DEFAULT_STYLE | wx.FLP_FILE_MUST_EXIST | wx.FLP_CHANGE_DIR) headerSizer.Add(self.cFilePicker, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) - self.tbtnEdit = wx.ToggleButton( self, wx.ID_ANY, u"Live Edit", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.tbtnEdit = wx.ToggleButton( self, wx.ID_ANY, u"Text Edit", wx.DefaultPosition, wx.DefaultSize, 0 ) headerSizer.Add( self.tbtnEdit, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 5 ) @@ -44,7 +48,7 @@ class ImportDialog(wx.Dialog): mainSizer.Add( self.m_staticline2, 0, wx.EXPAND, 5 ) contentSizer = wx.BoxSizer(wx.VERTICAL) - self.tcEdit = wx.TextCtrl(self, wx.ID_ANY, u"", style=wx.TE_READONLY|wx.TE_MULTILINE) + self.tcEdit = wx.TextCtrl(self, wx.ID_ANY, u"", style=wx.TE_MULTILINE) self.tcEdit.SetMinSize( wx.Size( -1,250 ) ) contentSizer.Add(self.tcEdit, 1, wx.EXPAND, 5) @@ -53,12 +57,15 @@ class ImportDialog(wx.Dialog): footerSizer = wx.BoxSizer(wx.HORIZONTAL) - self.stStatus = wx.StaticText( self, wx.ID_ANY, u"Status:", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.stStatus = wx.StaticText( self, wx.ID_ANY, u"Status: File mode.", wx.DefaultPosition, wx.DefaultSize, 0 ) self.stStatus.Wrap( -1 ) footerSizer.Add( self.stStatus, 1, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5 ) + self.btnImport = wx.Button( self, wx.ID_ANY, u"Import", wx.DefaultPosition, wx.DefaultSize, 0 ) + footerSizer.Add( self.btnImport, 0, wx.ALIGN_CENTER_VERTICAL|wx.TOP|wx.BOTTOM|wx.RIGHT, 5 ) + self.btnOK = wx.Button(self, wx.ID_OK, u"OK", wx.DefaultPosition, wx.DefaultSize, 0) - footerSizer.Add(self.btnOK, 0, wx.ALL, 5) + footerSizer.Add(self.btnOK, 0, wx.TOP|wx.BOTTOM|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL, 5) mainSizer.Add(footerSizer, 0, wx.EXPAND, 5) @@ -72,14 +79,36 @@ class ImportDialog(wx.Dialog): self.Bind( wx.EVT_CLOSE, self.CloseDlg ) self.btnOK.Bind( wx.EVT_BUTTON, self.CloseDlg ) - self.cFilePicker.Bind( wx.EVT_FILEPICKER_CHANGED, self.importFits ) + self.cFilePicker.Bind( wx.EVT_FILEPICKER_CHANGED, self.prepareFileFits ) self.tbtnEdit.Bind( wx.EVT_TOGGLEBUTTON, self.SwitchEditCtrl ) - + self.btnImport.Bind( wx.EVT_BUTTON, self.ImportFittings ) self.Centre(wx.BOTH) - def importFits(self, event): + + def ImportFittings( self, event ): sFit = service.Fit.getInstance() - self.stStatus.SetLabel("Imported %d fit(s)" % (sFit.importFit(event.Path))) + if self._toggleEdit == -1: + if self._fitsFromFile: + sFit.saveImportedFits(self._fitsFromFile) + self.stStatus.SetLabel("Status: %d fit(s) imported" % len(self._fitsFromFile)) + self._fitsFromFile = None + else: + self.stStatus.SetLabel("Status: No fits were specified. Use Browse button.") + else: + buffer = self.tcEdit.GetValue() + if len(buffer) != 0: + self._fitsFromEdit = sFit.importFitFromBuffer(buffer) + sFit.saveImportedFits(self._fitsFromEdit) + self.stStatus.SetLabel("Status: %d fit(s) imported" % len(self._fitsFromEdit)) + else: + self.stStatus.SetLabel("Status: Nothing specified.") + event.Skip() + + + def prepareFileFits(self, event): + sFit = service.Fit.getInstance() + self._fitsFromFile = sFit.importFit(event.Path) + self.stStatus.SetLabel("Found %d fit(s)." % len(self._fitsFromFile)) def ImportFromFile( self, event ): print event.Path @@ -92,8 +121,12 @@ class ImportDialog(wx.Dialog): self._toggleEdit *= -1 if self._toggleEdit == -1: self.tcEdit.Show(False) + self.cFilePicker.Enable( True ) + self.stStatus.SetLabel("Status: File mode.") else: self.tcEdit.Show(True) + self.cFilePicker.Enable( False ) + self.stStatus.SetLabel("Status: Text edit mode.") self.Layout() self.Fit() event.Skip() diff --git a/service/fit.py b/service/fit.py index 17a78c96c..1b6dd0372 100644 --- a/service/fit.py +++ b/service/fit.py @@ -268,10 +268,15 @@ class Fit(object): def importFit(self, path): f = file(path) type, fits = eos.types.Fit.importAuto(f.read()) - output = "" + return fits + + def importFitFromBuffer(self, buffer): + type,fits = eos.types.Fit.importAuto(buffer) + + return fits + + def saveImportedFits(self, fits): for fit in fits: eos.db.save(fit) - output += "Importing %s (%s)\n" % (fit.name, fit.ship.item.name) - - return len(fits) + #should return -1 in case of errors \ No newline at end of file