Commit Graph

76 Commits

Author SHA1 Message Date
Lucio Andrés Illanes Albornoz
c8a048403a Hard-wire default canvas size on New to [100, 30]. 2019-10-25 13:21:48 +02:00
Lucio Andrés Illanes Albornoz
0c66f94797 Cleanup, bugfixes & C++ backend implementation.
1) {About,Melp?} window: switch to green on black.
2) Assets window: scroll assets list on selected item update w/ <Cursor> or on deletion.
3) Canvas window: change default brush colours to [3, -1].
4) Canvas window: copy canvas cells given transparent cells from tools.
5) Canvas window: don't disable {re,un}do during object tool usage.
6) Canvas window: don't hide cursor during {re,un}do.
7) Canvas window: draw new cells using current brush background colour on resize.
8) Canvas window: fix memory leak on cell size updating.
9) Text tool: process [\r\n] in text pasted from clipboard.

assets/audio/roar{vap0r[1-8],viking[1-5]}.wav: added.
assets/text/README.txt: updated.
assets/tools/AnsiToMiRCART.py: added (for spoke.)
assets/tools/deploy-python.sh: updated.
2019-10-24 21:14:00 +02:00
Lucio Andrés Illanes Albornoz
90840bd0a0 Various bugfixes & usability improvements.
1) Canvas window: clear new canvases w/ [-1, -1] by default.
2) Canvas window: don't create new canvas on initialisation.
3) Canvas window: set default brush colours to [3, 9].
4) Erase tool: correctly fill non-text cells w/ background colour.
5) GUI: correctly show current operator name in status bar whilst active.
6) GUI: {de,in}crease canvas {height,width} w/ <Ctrl> & cursor keys.
7) GUI: disable tiling items unless current tool is object tool.
8) GUI: select tool w/ <F2-F10> accelerators.
2019-10-01 21:34:42 +02:00
Lucio Andrés Illanes Albornoz
bc969295dd Various bugfixes & usability improvements.
1) Backend: initial optimised cell rendering Python C module implementation skeleton.
2) Backend: raise alpha blending {fore,back}ground colour coefficient to {0.8,1.0 - 0.8}, resp.
3) Backend: reimplement cell rendering using Draw{Rectangle,Text}List().
4) Canvas window: eliminate {canvas,{scroll,tool}bar} flickering during resize.
5) Canvas window: fix cursor artifacts during resizing by masking cursor.
6) Canvas window: restore cursor after executing operations that remove it.
7) Import store: correctly parse non-conforming \u0003,<bg colour> sequences.
8) GUI: correctly save list of recently used files post-update.
2019-10-01 19:03:29 +02:00
Lucio Andrés Illanes Albornoz
1fd0768912 Apply tool w/ mouse state on brush/colour update. 2019-09-28 20:12:53 +02:00
Lucio Andrés Illanes Albornoz
19957a2006 Implements automatic snapshotting & restoring from snapshots. 2019-09-28 19:45:45 +02:00
Lucio Andrés Illanes Albornoz
451a708d7a Minor cleanup & usability improvements.
1) Add format clarification to commands documentation.
2) Allow changing {canvas,brush} size w/ {<Ctrl> <Shift>,<Ctrl>} <Mouse wheel>.
3) Backend: {draw,produce,remove} cursor w/ list of coordinates instead of cells.
4) Update changing rendered cell size hotkey to <Ctrl> <Alt> <Mouse wheel>.
2019-09-28 12:08:52 +02:00
Lucio Andrés Illanes Albornoz
de96a7cdaa Various bugfixes.
1) Fix erroneous canvas repositioning on resize given no docked toolbars.
2) Correctly update scrollbar parameters when changing font (and hence cell) size.
2019-09-28 10:11:49 +02:00
Lucio Andrés Illanes Albornoz
4b98d1cdf1 Various bugfixes & usability improvements.
1)  Assets window: adds clear list context menu item.
2)  Assets window: allow deleting multiple selected items.
3)  Assets window: fix list view cursor key navigation.
4)  Backend: correctly blend transparent background cursor cells with canvas character cells.
5)  Backend: correctly determine cell size & set font size.
6)  Backend: correctly unmask cursor.
7)  Backend: disable font anti-aliasing on Windows.
8)  Backend: render transparent background cells as RGBA #303030FF.
9)  Canvas window: adds <F1> accelerator for `View melp?' menu item.
10) Canvas window: implement {dockable,floating} toolbars w/ wx' AUI framework.
11) Canvas window: separate tools toolbar from edit commands toolbar & dock both on right-hand side alongside each other.
12) Flip horizontally tool: flip characters, including some Unicode symbols.
13) Flip vertically tool: flip additional Unicode symbols.
14) Text tool: don't process keyboard events w/ either of <{Alt,AltGr,Ctrl}> modifiers.

assets/images/roar.png: updated.
2019-09-27 20:17:39 +02:00
Lucio Andrés Illanes Albornoz
50edb55e0b Fix brush size toolbar items. 2019-09-26 23:15:56 +02:00
Lucio Andrés Illanes Albornoz
76e57bd081 Improve backend latency and throughput via batching.
assets/text/TODO: updated.
libtools/ToolLine.py: reflect brush width in pre-line dragging cursor.
2019-09-26 22:38:28 +02:00
Lucio Andrés Illanes Albornoz
86e2c9e904 Various bugfixes & usability improvements.
1) Correctly unmask cursor and dispatch delta patches on successful {re,un}do.
2) Don't prompt to save twice on exit via Exit {accelerator,menu item}.
3) Fix cursor artifacts by always resetting origin point on DC whilst unmasking cursor cells.
4) Fix {re,un}do {accelerator,{menu,toolbar} item} desynchronisation with actual canvas journal undo level.
5) Remove scattered remnants of initial implementation of unimplemented italic support.
6) Replace rendering transparent cursor w/ manual blending over wx.GraphicsContext() due to canvas bitmap masking & performance degradation.

assets/text/TODO: updated.
2019-09-26 14:06:11 +02:00
Lucio Andrés Illanes Albornoz
e2183acf46 Update canvas filename on save as.
libroar/RoarCanvasCommandsFile.py:{_importFile,canvasSaveAs}(): fix return values.
2019-09-24 18:09:05 +02:00
Lucio Andrés Illanes Albornoz
279cca3313 Prompt to save changes on application exit. 2019-09-24 18:08:49 +02:00
Lucio Andrés Illanes Albornoz
b479e7ddbb Remove cursor before {re,un}doing to prevent artifacts.
assets/text/TODO: updated.
2019-09-24 17:45:18 +02:00
Lucio Andrés Illanes Albornoz
9eec4f58ab Increase roar window height to match default canvas size.
{assets/tools,lib{canvas,gui,roar,rtl,tools}}/*.py: remove Vim fold marker remnants.
2019-09-24 17:02:02 +02:00
Lucio Andrés Illanes Albornoz
a3d1ed3d96 libroar/RoarWindowMelp.py: set button accelerator. 2019-09-24 16:59:51 +02:00
Lucio Andrés Illanes Albornoz
84d20a4398 Adds GitHub & (hotkey) help dialogue menu items.
assets/text/hotkeys.txt: updated.
assets/text/TODO: updated.
libtools/ToolText.py: minor cleanup.
2019-09-24 16:46:02 +02:00
Lucio Andrés Illanes Albornoz
c083800b3b Don't show error when cancelling assets loading. 2019-09-24 15:13:48 +02:00
Lucio Andrés Illanes Albornoz
35f6910427 Load & store LRU file dialogue directory.
assets/text/TODO: updated.
2019-09-24 15:10:34 +02:00
Lucio Andrés Illanes Albornoz
c7dd80327d Fix canvas windows size regarding scrollbars.
assets/text/TODO: updated.
libroar/RoarClient.py: I FUCKING _HATE_ WXPYTHON
2019-09-24 14:39:37 +02:00
Lucio Andrés Illanes Albornoz
a2295d1cfc Various bugfixes & usability improvements.
1) Directly render characters to canvas DC w/ clipping.
2) Fix background colour toolbar icon bitmaps.
3) Line tool: correctly set brush colours whenever updated.
4) Line tool: fix artifacts bug.
5) Render tool cursor transparently at opacity 200 (out of 255.)

assets/text/TODO: updated.
2019-09-24 14:03:16 +02:00
Lucio Andrés Illanes Albornoz
3eb4eaeea5 RoarWindowAbout.py: add website URL. 2019-09-23 22:32:37 +02:00
Lucio Andrés Illanes Albornoz
dc8b96146e Further shorten {file,operator,tool} status bar items.
assets/images/roar.png: updated.
2019-09-23 22:25:32 +02:00
Lucio Andrés Illanes Albornoz
c355e848b2 Implements pick colour tool.
assets/text/TODO: updated.
2019-09-23 22:12:20 +02:00
Lucio Andrés Illanes Albornoz
cefb982c1d Implements erase tool.
assets/text/TODO: updated.
2019-09-23 21:59:41 +02:00
Lucio Andrés Illanes Albornoz
1d650bd64b Allow purging MRU list manually & on failure.
assets/text/TODO: updated.
2019-09-23 21:37:52 +02:00
Lucio Andrés Illanes Albornoz
a48d7f3d32 Fix dirty flag updating on {new,open,resize}.
assets/text/hotkeys.txt: updated.
assets/text/TODO: updated.
2019-09-23 19:55:31 +02:00
Lucio Andrés Illanes Albornoz
bff70b409b {assets/tools,lib{canvas,gui,roar,rtl,tools}}/*.py: fix formatting. 2019-09-23 19:21:06 +02:00
Lucio Andrés Illanes Albornoz
6fcac2b3b9 libroar/RoarCanvasCommands.py:update(): shorten {file,operator,tool} status bar items.
assets/text/TODO: updated.
2019-09-23 18:59:18 +02:00
Lucio Andrés Illanes Albornoz
f504fa2b76 Various bugfixes & usability improvements.
1)  Add background colour toolbar beneath (foreground) colour toolbar.
2)  Add colour flipping command w/ {accelerator,{menu,toolbar} item}.
3)  Add {de,in}crease {brush,canvas} size accelerator.
4)  Add {hide,show} assets window toolbar item.
5)  Circle tool: draw outline with foreground colour.
6)  Circle tool: honour transparency.
7)  Fill tool: change comprehensive fill modifier key from <Shift> to <Ctrl>.
8)  Fill tool: fill with {back,fore}ground colour given <[RL]MB>
9)  Fix arrow keys cursor motion when scrolled down.
10  Instantly reflect {brush size,colour,tool} changes in canvas.
11) Object tool: honour transparency w/ non-external objects.
12) Object tool: update selection rectangle during <LMB> whilst dragging, set w/ release of <LMB>.
13) Rectangle tool: draw outline with foreground colour.
14) Rectangle tool: honour transparency.
15) Replace wx.ToolBar() w/ wx.lib.agw.aui.AuiToolBar() & custom wx.lib.agw.aui.AuiDefaultToolBarArt().
16) Restore scrolling position after resizing canvas.

.TODO: deleted.
assets/audio/roar{arab8,spoke11}.wav: added.
assets/text/hotkeys.txt: added to document hotkeys.
assets/text/requirements.txt, requirements.txt: moved.
assets/text/TODO: updated.
{assets/tools,lib{canvas,gui,roar,rtl,tools}}/*.py: remove Vim fold markers.
libroar/RoarCanvasCommandsFile.py:_importFile(): update wx.FileDialog() message.
libroar/RoarCanvasCommandsOperators.py:canvasOperator(): update invert colours {caption,label}.
2019-09-23 18:49:33 +02:00
Lucio Andrés Illanes Albornoz
eb3795a98e Initial {rotate,tile} operator implementation. 2019-09-23 09:21:57 +02:00
Lucio Andrés Illanes Albornoz
1a0e1bf2de assets/audio/roar{arab6,spoke9}.wav: added.
libroar/RoarWindowAbout.py: correctly pick random soundBitePathName.
2019-09-17 08:50:33 +02:00
Lucio Andrés Illanes Albornoz
93c05d6b09 libroar/RoarCanvasWindow.py:onKeyboardInput(): simulate LMB & advance to the right w/ space key except w/ Text tool. 2019-09-16 17:31:17 +02:00
Lucio Andrés Illanes Albornoz
d01cf7d167 assets/images/toolCursor.png: fix mode bits.
libroar/RoarCanvasWindow.py: remove trailing SP.
2019-09-16 17:17:04 +02:00
Lucio Andrés Illanes Albornoz
1c82e723c1 Implements foreground colour accelerators.
libgui/GuiFrame.py:onMenu(): don't call wx.SafeYield() because wxPython doesn't actually know what it wants from you EVER.
libroar/RoarCanvasCommands.py:update(): select tool corresponding to new foreground colour on change thereof.
libroar/RoarCanvasCommandsEdit.py:canvasColour(): specify <Control> <[0-9]> & <Control> <Shift> <[0-5]> accelerators.
libroar/RoarCanvasCommandsEdit.py:canvasColourAlpha(): specify <Control> <Shift> 6 accelerator.
2019-09-16 17:13:55 +02:00
Lucio Andrés Illanes Albornoz
3dae6dadde Decisively vanquish the lion's share of ftupid fucking fcrolling.
libgui/GuiCanvasWxBackend.py: rOAorAoARRAORA ROaroAR RAOAr roar RAOAAAR...
libroar/Roar{AssetsWindow,Canvas{CommandsOperators,Window}}.py: RoaWORAROORAOARORARARRA!!
libtools/Tool{,Circle,Fill,Line,Object,Rect,Text}.py: ROAOaRoaROAROAROOAAAARORORAOR?
assets/text/TODO: updated.
2019-09-16 16:54:07 +02:00
Lucio Andrés Illanes Albornoz
deba33deba Initial implementation of Arabic character reshaping & handling.
libgui/GuiCanvasWxBackend.py:{arabicShapes{},_reshapeArabic()}: initial implementation.
libgui/GuiCanvasWxBackend.py:draw{CursorMaskWithJournal,Patch}(): update type signature.
libgui/GuiCanvasWxBackend.py:drawPatch(): call _reshapeArabic() on Arabic character patches.
libroar/Roar{Assets,Canvas}Window.py: pass updated set of arguments to backend.draw{CursorWithMask,Patch}().
libtools/ToolText.py:{arabicRegEx{},_checkRtl()}: initial implementation.
libtools/ToolText.py:_processKeyChar(): call _checkRtl().
libtools/ToolText.py:onKeyboardEvent(): initial implementation of RTL backspace support.
assets/text/TODO: updated.
2019-09-16 14:13:44 +02:00
Lucio Andrés Illanes Albornoz
632e3a8ac1 libroar/RoarCanvasCommandsOperators.py:canvasOperator(): correctly {pass,set} parentCanvas.dirty.
assets/text/TODO: updated.
2019-09-16 11:38:14 +02:00
Lucio Andrés Illanes Albornoz
c93c8dd8b0 libroar/RoarCanvasCommandsTools.py:canvasTool(): call dropTarget.done() when setting new tool from external object as current tool. 2019-09-16 11:23:47 +02:00
Lucio Andrés Illanes Albornoz
99369626c4 Fully implement {{arrow keys,backspace,enter},arrow keys} in {text,} tool{,s}.
libroar/RoarCanvasWindow.py:applyTool(): delegate updating of brushPos to ToolText if current tool.
libroar/RoarCanvasWindow.py:applyTool(): fix function result.
libroar/RoarCanvasWindow.py:applyTool(): pass updated set of arguments to on{Keyboard,Mouse}Event().
libroar/RoarCanvasWindow.py:onKeyboardInput(): allow wrapping around canvas when receiving cursor key input.
libroar/RoarCanvasWindow.py:onKeyboardInput(): supply keyCode or None to applyTool().
libroar/RoarCanvas{CommandsTools,Window}.py: supply keyCode or None to applyTool().
libtools/Tool{,Circle,Fill,Line,Object,Rect}.py:on{Keyboard,Mouse}Event(): update type signature.
libtools/ToolText.py:onKeyboardEvent(): fully implement {arrow keys,backspace,enter}.
libtools/ToolText.py:onKeyboardEvent(): update cursor when necessary.
libtools/ToolText.py:onMouseEvent(): correctly set brushPos if mouseLeftDown or mouseRightDown.
libtools/ToolText.py:__init__(): removed.
assets/text/TODO: updated.
2019-09-16 09:55:30 +02:00
Lucio Andrés Illanes Albornoz
aef7f629d0 libroar/RoarCanvasCommandsFile.py:canvasSaveAs(): fix self.canvasPathName reference.
libroar/RoarCanvasWindow.py:applyTool(): don't dispatch cursor patch if mapPoint == None.
libroar/RoarCanvasWindow.py:applyTool(): correctly handle cursor tool.
assets/text/TODO: updated.
2019-09-16 08:05:50 +02:00
Lucio Andrés Illanes Albornoz
df8ee6fedf Implements cursor tool & arrow keys navigation.
assets/images/toolCursor.png: added.
libroar/Roar{CanvasCommands{,Tools},Client}.py: adds cursor tool.
libroar/RoarCanvasWindow.py:applyTool(): dummy-handle cursor tool.
libroar/RoarCanvasWindow.py:onKeyboardInput(): update cursor position & cursor on {down,left,right,up} arrow key input.
assets/text/TODO: updated.
2019-09-15 21:33:19 +02:00
Lucio Andrés Illanes Albornoz
aed3f7157c Implements invert colours operator.
liboperators/OperatorInvert.py: initial implementation.
libroar/RoarCanvasCommandsOperators.py: adds OperatorInvert.
assets/text/TODO: updated.
2019-09-15 20:43:49 +02:00
Lucio Andrés Illanes Albornoz
78b567d42b Fix assets management canvas panel scrolling.
libgui/GuiWindow.py: ONCE, THERE WAS A _LETHALLY FUCKING WOUNDED_ WXPYTHON
libroar/RoarAssetsWindow.py: ON THE VERY EDGE OF ITS MISERABLE EXISTENCE
libroar/RoarCanvasWindow.py: BECAUSE A LION VICIOUSLY MAULED IT AND TORTURED IT FOR 392 DAYS AND TWO (2) SECONDS
2019-09-15 16:54:19 +02:00
Lucio Andrés Illanes Albornoz
9f72bd5a4c Inhibit {drag & drop,{un,re}do} during object tool usage.
libroar/RoarCanvasCommands.py:update(): disable {re,un}do {menu,toolbar} items on lastPanelState["undoInhibit"].
libroar/RoarCanvasWindow.py:applyTool(): call commands.update(undoInhibit=True) after active object tool usage.
libroar/RoarCanvasWindow.py:OnDropText(): inhibit during active object tool usage.
2019-09-15 16:04:38 +02:00
Lucio Andrés Illanes Albornoz
1487f2eb9a libroar/RoarCanvasWindow.py:onKeyboardInput(): enter pdb on <Shift> <Pause>. 2019-09-15 15:17:27 +02:00
Lucio Andrés Illanes Albornoz
d7ebed77f7 libroar/RoarCanvasWindow.py:RoarCanvasWindowDropTarget.{done,OnDropText,__init__}(): {honour,set} inProgress.
libroar/RoarCanvasWindow.py:applyTool(): call dropTarget.done() when resetting to last tool.
2019-09-15 13:57:41 +02:00
Lucio Andrés Illanes Albornoz
a40017b607 Implements object tool operators context menu.
libgui/GuiFrame.py: _FUCK_ _YOU_ WXPYTHON
libroar/RoarCanvasCommandsOperators.py: I _FUCKING_ _HATE_ WXPYTHON
libroar/RoarCanvasWindow.py: DIE IN A DITCH WXPYTHON YOU ROTTING PILE OF FUCKING HIPPOPOTAMUS SHIT
libroar/RoarClient.py: I HATE WXPYTHON I HATE WXPYTHON I HATE WXPYTHON I HATE WXPYTHON I HATE WXPYTHON
2019-09-15 13:52:44 +02:00
Lucio Andrés Illanes Albornoz
1c7524ba6f libroar/RoarCanvasWindow.py:onPaint(): invariably remove cursor prior to calling backend.onPaint().
libroar/RoarCanvasWindow.py:onScroll(): removed.
2019-09-15 12:58:39 +02:00