Load & store LRU file dialogue directory.

assets/text/TODO: updated.
This commit is contained in:
Lucio Andrés Illanes Albornoz 2019-09-24 15:10:34 +02:00
parent 70ddf4dab8
commit 1e26f4380d
4 changed files with 42 additions and 16 deletions

View File

@ -18,13 +18,11 @@
Release roadmap:
1) BUG: fix & finish Arabic/RTL text tool support
2) BUG: a) text tool b) paste text c) undo
3) BUG: a) tile once b) tile twice
4) {copy,cut,delete,insert from,paste}, edit asset in new canvas, import from {canvas,object}
5) add hotkeys.txt mIRC art canvas to help menu
6) {load,store} LRU {open,save} directory
7) operators: crop, scale, shift, slice
8) auto{load,save} & {backup,restore}
9) tools: unicode block elements
10) floating/dockable toolbar
3) {copy,cut,delete,insert from,paste}, edit asset in new canvas, import from {canvas,object}
4) add hotkeys.txt mIRC art canvas to help menu
5) operators: crop, scale, shift, slice
6) auto{load,save} & {backup,restore}
7) tools: unicode block elements
8) floating/dockable toolbar
vim:ff=dos tw=0

View File

@ -7,6 +7,7 @@
from Canvas import Canvas
from GuiFrame import GuiMiniFrame
from GuiWindow import GuiWindow
from RtlPlatform import getLocalConfPathName
import json, os, sys, wx
class RoarAssetsWindow(GuiMiniFrame):
@ -37,7 +38,9 @@ class RoarAssetsWindow(GuiMiniFrame):
else:
for pathName in dialog.GetPaths():
resultList += [self._import(f, pathName)]
self.lastDir = os.path.dirname(pathName)
lastDir = os.path.dirname(pathName)
if self.lastDir != lastDir:
self.lastDir = lastDir; self._storeLastDir(self.lastDir);
return resultList
def _load_list(self, pathName):
@ -81,6 +84,17 @@ class RoarAssetsWindow(GuiMiniFrame):
with wx.MessageDialog(self, "Error: {}".format(str(e)), "", wx.OK | wx.OK_DEFAULT) as dialog:
dialogChoice = dialog.ShowModal()
def _loadLastDir(self):
localConfFileName = getLocalConfPathName("RecentAssetsDir.txt")
if os.path.exists(localConfFileName):
with open(localConfFileName, "r", encoding="utf-8") as inFile:
self.lastDir = inFile.read().rstrip("\r\n")
def _storeLastDir(self, pathName):
localConfFileName = getLocalConfPathName("RecentAssetsDir.txt")
with open(localConfFileName, "w", encoding="utf-8") as outFile:
print(pathName, file=outFile)
def _updateScrollBars(self):
clientSize = self.panelCanvas.GetClientSize()
if self.currentIndex != None:
@ -235,7 +249,8 @@ class RoarAssetsWindow(GuiMiniFrame):
if self.lastDir != None:
dialog.SetDirectory(self.lastDir)
if dialog.ShowModal() != wx.ID_CANCEL:
pathName = dialog.GetPath(); self.lastDir = os.path.dirname(pathName);
pathName = dialog.GetPath()
self.lastDir = os.path.dirname(pathName); self._storeLastDir(self.lastDir);
self._load_list(pathName)
def onRemove(self, event):
@ -264,7 +279,8 @@ class RoarAssetsWindow(GuiMiniFrame):
if self.lastDir != None:
dialog.SetDirectory(self.lastDir)
if dialog.ShowModal() != wx.ID_CANCEL:
pathName = dialog.GetPath(); self.lastDir = os.path.dirname(pathName);
pathName = dialog.GetPath()
self.lastDir = os.path.dirname(pathName); self._storeLastDir(self.lastDir);
with open(pathName, "w") as fileObject:
for pathName in [self.canvasList[k][1] for k in self.canvasList.keys()]:
print(pathName, file=fileObject)
@ -284,6 +300,7 @@ class RoarAssetsWindow(GuiMiniFrame):
self.backend, self.canvasList, self.lastDir = backend((0, 0), cellSize), {}, None
self.cellSize, self.currentIndex, self.leftDown, self.parent, self.scrollFlag = cellSize, None, False, parent, False
self.Bind(wx.EVT_CHAR, self.onChar)
self._loadLastDir()
self.contextMenu, self.contextMenuItems = wx.Menu(), []
for text, f in (

View File

@ -48,9 +48,15 @@ class RoarCanvasCommandsFile():
if dialog.ShowModal() == wx.ID_CANCEL:
return False, None
elif self._promptSaveChanges():
pathName = dialog.GetPath(); self.lastDir = os.path.dirname(pathName);
pathName = dialog.GetPath(); self.lastDir = os.path.dirname(pathName); self._storeLastDir(self.lastDir);
return self._import(f, newDirty, pathName)
def _loadLastDir(self):
localConfFileName = getLocalConfPathName("RecentDir.txt")
if os.path.exists(localConfFileName):
with open(localConfFileName, "r", encoding="utf-8") as inFile:
self.lastDir = inFile.read().rstrip("\r\n")
def _loadRecent(self):
localConfFileName = getLocalConfPathName("Recent.lst")
if os.path.exists(localConfFileName):
@ -91,6 +97,11 @@ class RoarCanvasCommandsFile():
for lastFile in [l["pathName"] for l in self.lastFiles]:
print(lastFile, file=outFile)
def _storeLastDir(self, pathName):
localConfFileName = getLocalConfPathName("RecentDir.txt")
with open(localConfFileName, "w", encoding="utf-8") as outFile:
print(pathName, file=outFile)
@GuiCommandDecorator("Clear list", "&Clear list", None, None, False)
def canvasClearRecent(self, event):
if self.lastFiles != None:
@ -115,7 +126,7 @@ class RoarCanvasCommandsFile():
if dialog.ShowModal() == wx.ID_CANCEL:
return False
else:
outPathName = dialog.GetPath(); self.lastDir = os.path.dirname(outPathName);
outPathName = dialog.GetPath(); self.lastDir = os.path.dirname(outPathName); self._storeLastDir(self.lastDir);
self.parentCanvas.SetCursor(wx.Cursor(wx.CURSOR_WAIT))
with open(outPathName, "w", encoding="utf-8") as outFile:
self.parentCanvas.canvas.exportStore.exportAnsiFile(self.parentCanvas.canvas.map, self.parentCanvas.canvas.size, outFile)
@ -130,7 +141,7 @@ class RoarCanvasCommandsFile():
if dialog.ShowModal() == wx.ID_CANCEL:
return False
else:
outPathName = dialog.GetPath(); self.lastDir = os.path.dirname(outPathName);
outPathName = dialog.GetPath(); self.lastDir = os.path.dirname(outPathName); self._storeLastDir(self.lastDir);
self.parentCanvas.SetCursor(wx.Cursor(wx.CURSOR_WAIT))
self.parentCanvas.canvas.exportStore.exportBitmapToPngFile(self.parentCanvas.backend.canvasBitmap, outPathName, wx.BITMAP_TYPE_PNG)
self.parentCanvas.SetCursor(wx.Cursor(wx.NullCursor))
@ -258,7 +269,7 @@ class RoarCanvasCommandsFile():
if dialog.ShowModal() == wx.ID_CANCEL:
return False
else:
self.canvasPathName = dialog.GetPath(); self.lastDir = os.path.dirname(self.canvasPathName);
self.canvasPathName = dialog.GetPath(); self.lastDir = os.path.dirname(self.canvasPathName); self._storeLastDir(self.lastDir);
if self.canvasSave(event, newDirty=True):
self._pushRecent(self.canvasPathName)

View File

@ -20,7 +20,7 @@ def main(*argv):
os.makedirs(localConfirName)
wxApp, roarClient = wx.App(False), RoarClient(None)
argv0, argv = argv[0], argv[1:]
roarClient.canvasPanel.commands._loadRecent()
roarClient.canvasPanel.commands._loadLastDir(); roarClient.canvasPanel.commands._loadRecent();
if len(argv) >= 1:
if (len(argv) >= 2) and (argv[1].endswith(".lst")):
roarClient.assetsWindow._load_list(argv[1])