libroar/RoarAssetsWindow.py:{_load_list,onLoadList}(): split from onLoadList().

roar.py: optionally load assets list from argv[2].
This commit is contained in:
Lucio Andrés Illanes Albornoz 2019-09-14 10:52:05 +02:00
parent 79f5e4e9e3
commit a5b37f1d2b
2 changed files with 46 additions and 40 deletions

View File

@ -40,6 +40,48 @@ class RoarAssetsWindow(GuiMiniFrame):
resultList += [self._import(f, pathName)] resultList += [self._import(f, pathName)]
return resultList return resultList
# }}} # }}}
# {{{ _load_list(self, pathName)
def _load_list(self, pathName):
try:
with open(pathName, "r") as fileObject:
try:
for line in fileObject.readlines():
line = line.rstrip("\r\n")
if not os.path.isabs(line):
line = os.path.join(os.path.dirname(pathName), line)
def importmIRC(canvas, pathName):
rc, error = canvas.importStore.importTextFile(pathName)
return (rc, error, canvas.importStore.outMap, pathName, canvas.importStore.inSize)
rc, error, canvas, newMap, newPathName, newSize = self._import(importmIRC, line)
if rc:
self.currentIndex = self.listView.GetItemCount()
self.canvasList[self.currentIndex] = [canvas, newPathName]
self.listView.InsertItem(self.currentIndex, "")
idx = -1
while True:
idx = self.listView.GetNextSelected(idx)
if idx != -1:
self.listView.Select(idx, on=0)
else:
break
self.listView.Select(self.currentIndex, on=1)
self.listView.SetFocus()
[self.listView.SetItem(self.currentIndex, col, label) for col, label in zip((0, 1), (os.path.basename(newPathName), "{}x{}".format(*newSize)))]
[self.listView.SetColumnWidth(col, wx.LIST_AUTOSIZE) for col in (0, 1)]
else:
with wx.MessageDialog(self, "Error: {}".format(error), "", wx.CANCEL | wx.OK | wx.OK_DEFAULT) as dialog:
dialogChoice = dialog.ShowModal()
if dialogChoice == wx.ID_CANCEL:
self.SetCursor(wx.Cursor(wx.NullCursor)); break;
except:
self.SetCursor(wx.Cursor(wx.NullCursor))
with wx.MessageDialog(self, "Error: {}".format(str(sys.exc_info()[1])), "", wx.OK | wx.OK_DEFAULT) as dialog:
dialogChoice = dialog.ShowModal()
except FileNotFoundError as e:
self.SetCursor(wx.Cursor(wx.NullCursor))
with wx.MessageDialog(self, "Error: {}".format(str(e)), "", wx.OK | wx.OK_DEFAULT) as dialog:
dialogChoice = dialog.ShowModal()
# }}}
# {{{ _updateScrollBars(self) # {{{ _updateScrollBars(self)
def _updateScrollBars(self): def _updateScrollBars(self):
clientSize = self.panelCanvas.GetClientSize() clientSize = self.panelCanvas.GetClientSize()
@ -201,46 +243,8 @@ class RoarAssetsWindow(GuiMiniFrame):
rc = True rc = True
with wx.FileDialog(self, "Load from list...", os.getcwd(), "", "List files (*.lst)|*.lst|Text files (*.txt)|*.txt|All Files (*.*)|*.*", wx.FD_OPEN) as dialog: with wx.FileDialog(self, "Load from list...", os.getcwd(), "", "List files (*.lst)|*.lst|Text files (*.txt)|*.txt|All Files (*.*)|*.*", wx.FD_OPEN) as dialog:
if dialog.ShowModal() != wx.ID_CANCEL: if dialog.ShowModal() != wx.ID_CANCEL:
try:
pathName = dialog.GetPath() pathName = dialog.GetPath()
with open(pathName, "r") as fileObject: self._load_list(pathName)
try:
for line in fileObject.readlines():
line = line.rstrip("\r\n")
if not os.path.isabs(line):
line = os.path.join(os.path.dirname(pathName), line)
def importmIRC(canvas, pathName):
rc, error = canvas.importStore.importTextFile(pathName)
return (rc, error, canvas.importStore.outMap, pathName, canvas.importStore.inSize)
rc, error, canvas, newMap, newPathName, newSize = self._import(importmIRC, line)
if rc:
self.currentIndex = self.listView.GetItemCount()
self.canvasList[self.currentIndex] = [canvas, newPathName]
self.listView.InsertItem(self.currentIndex, "")
idx = -1
while True:
idx = self.listView.GetNextSelected(idx)
if idx != -1:
self.listView.Select(idx, on=0)
else:
break
self.listView.Select(self.currentIndex, on=1)
self.listView.SetFocus()
[self.listView.SetItem(self.currentIndex, col, label) for col, label in zip((0, 1), (os.path.basename(newPathName), "{}x{}".format(*newSize)))]
[self.listView.SetColumnWidth(col, wx.LIST_AUTOSIZE) for col in (0, 1)]
else:
with wx.MessageDialog(self, "Error: {}".format(error), "", wx.CANCEL | wx.OK | wx.OK_DEFAULT) as dialog:
dialogChoice = dialog.ShowModal()
if dialogChoice == wx.ID_CANCEL:
self.SetCursor(wx.Cursor(wx.NullCursor)); break;
except:
self.SetCursor(wx.Cursor(wx.NullCursor))
with wx.MessageDialog(self, "Error: {}".format(str(sys.exc_info()[1])), "", wx.OK | wx.OK_DEFAULT) as dialog:
dialogChoice = dialog.ShowModal()
except FileNotFoundError as e:
self.SetCursor(wx.Cursor(wx.NullCursor))
with wx.MessageDialog(self, "Error: {}".format(str(e)), "", wx.OK | wx.OK_DEFAULT) as dialog:
dialogChoice = dialog.ShowModal()
# }}} # }}}
# {{{ onRemove(self, event) # {{{ onRemove(self, event)
def onRemove(self, event): def onRemove(self, event):

View File

@ -15,7 +15,9 @@ import wx
# Entry point # Entry point
def main(*argv): def main(*argv):
wxApp, roarClient = wx.App(False), RoarClient(None) wxApp, roarClient = wx.App(False), RoarClient(None)
if (len(argv) > 1) and (len(argv[1]) > 0): if len(argv) >= 1:
if argv[2].endswith(".lst"):
roarClient.assetsWindow._load_list(argv[2])
roarClient.canvasPanel.commands.canvasPathName = argv[1] roarClient.canvasPanel.commands.canvasPathName = argv[1]
rc, error = roarClient.canvasPanel.canvas.importStore.importTextFile(argv[1]) rc, error = roarClient.canvasPanel.canvas.importStore.importTextFile(argv[1])
if rc: if rc: