Implements erase tool.

assets/text/TODO: updated.
This commit is contained in:
Lucio Andrés Illanes Albornoz 2019-09-23 21:59:41 +02:00
parent 1d650bd64b
commit cefb982c1d
6 changed files with 51 additions and 14 deletions

BIN
assets/images/toolErase.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

View File

@ -21,10 +21,11 @@
High-priority list: High-priority list:
1) bug: a) select line tool b) set origin point c) move mouse about d) incr brush size e) set target point d) undo 1) bug: a) select line tool b) set origin point c) move mouse about d) incr brush size e) set target point d) undo
bug: a) new canvas/startup b) place rect c) move mouse d) undo status changes 2) bug: a) new canvas/startup b) place rect c) move mouse d) undo status changes
bug: a) text tool b) paste text c) undo 3) bug: a) start w/ spoke-vxplion.txt b) scroll down c) fix w/ canvas resize
2) bug: a) start w/ spoke-vxplion.txt b) scroll down c) fix w/ canvas resize 4) add hotkeys.txt mIRC art canvas to help menu
3) add hotkeys.txt mIRC art canvas to help menu 5) tools: pick colour, unicode block elements
4) tools: erase, pick, unicode block elements 6) bug: a) text tool b) paste text c) undo
7) bug: a) tile once b) tile twice
vim:ff=dos tw=0 vim:ff=dos tw=0

View File

@ -1,6 +1,6 @@
<Ctrl> 0-9, <Ctrl> <Shift> 0-5, <Ctrl> <Shift> 6 Set foreground colour to #0-9, #10-15, transparent colour, resp. <Ctrl> 0-9, <Ctrl> <Shift> 0-5, <Ctrl> <Shift> 6 Set foreground colour to #0-9, #10-15, transparent colour, resp.
<Ctrl> <Alt> 0-9, <Ctrl> <Alt> <Shift> 0-5, <Ctrl> <Alt> <Shift> 6 Set background colour to #0-9, #10-15, transparent colour, resp. <Ctrl> <Alt> 0-9, <Ctrl> <Alt> <Shift> 0-5, <Ctrl> <Alt> <Shift> 6 Set background colour to #0-9, #10-15, transparent colour, resp.
<Ctrl> C, U, F, L, R, E, T Switch to circle, cursor, fill, line, rectangle, object, text tool <Ctrl> C, U, E, F, L, R, E, T Switch to circle, cursor, erase, fill, line, rectangle, object, text tool
<Ctrl> I Flip colours <Ctrl> I Flip colours
<Ctrl> N New canvas <Ctrl> N New canvas
<Ctrl> O Open mIRC art file <Ctrl> O Open mIRC art file

View File

@ -129,7 +129,7 @@ class RoarCanvasCommands(RoarCanvasCommandsFile, RoarCanvasCommandsEdit, RoarCan
self.canvasUndo, self.canvasRedo, NID_TOOLBAR_HSEP, self.canvasUndo, self.canvasRedo, NID_TOOLBAR_HSEP,
self.canvasCut, self.canvasCopy, self.canvasPaste, self.canvasDelete, NID_TOOLBAR_HSEP, self.canvasCut, self.canvasCopy, self.canvasPaste, self.canvasDelete, NID_TOOLBAR_HSEP,
self.canvasAssetsWindowHide, self.canvasAssetsWindowShow, NID_TOOLBAR_HSEP, self.canvasAssetsWindowHide, self.canvasAssetsWindowShow, NID_TOOLBAR_HSEP,
self.canvasTool(self.canvasTool, 1), self.canvasTool(self.canvasTool, 5), self.canvasTool(self.canvasTool, 0), self.canvasTool(self.canvasTool, 2), self.canvasTool(self.canvasTool, 3), self.canvasTool(self.canvasTool, 6), self.canvasTool(self.canvasTool, 4), self.canvasTool(self.canvasTool, 1), self.canvasTool(self.canvasTool, 6), self.canvasTool(self.canvasTool, 0), self.canvasTool(self.canvasTool, 3), self.canvasTool(self.canvasTool, 4), self.canvasTool(self.canvasTool, 7), self.canvasTool(self.canvasTool, 5), self.canvasTool(self.canvasTool, 2),
]) ])
toolBars.append( toolBars.append(
[self.canvasColour(self.canvasColour, 0), self.canvasColour(self.canvasColour, 1), self.canvasColour(self.canvasColour, 2), self.canvasColour(self.canvasColour, 3), [self.canvasColour(self.canvasColour, 0), self.canvasColour(self.canvasColour, 1), self.canvasColour(self.canvasColour, 2), self.canvasColour(self.canvasColour, 3),

View File

@ -6,6 +6,7 @@
from GuiFrame import GuiSelectDecorator from GuiFrame import GuiSelectDecorator
from ToolCircle import ToolCircle from ToolCircle import ToolCircle
from ToolErase import ToolErase
from ToolFill import ToolFill from ToolFill import ToolFill
from ToolLine import ToolLine from ToolLine import ToolLine
from ToolObject import ToolObject from ToolObject import ToolObject
@ -16,18 +17,19 @@ import wx
class RoarCanvasCommandsTools(): class RoarCanvasCommandsTools():
@GuiSelectDecorator(0, "Circle", "&Circle", ["toolCircle.png"], [wx.ACCEL_CTRL, ord("C")], False) @GuiSelectDecorator(0, "Circle", "&Circle", ["toolCircle.png"], [wx.ACCEL_CTRL, ord("C")], False)
@GuiSelectDecorator(1, "Cursor", "C&ursor", ["toolCursor.png"], [wx.ACCEL_CTRL, ord("U")], False) @GuiSelectDecorator(1, "Cursor", "C&ursor", ["toolCursor.png"], [wx.ACCEL_CTRL, ord("U")], False)
@GuiSelectDecorator(2, "Fill", "&Fill", ["toolFill.png"], [wx.ACCEL_CTRL, ord("F")], False) @GuiSelectDecorator(2, "Erase", "&Erase", ["toolErase.png"], [wx.ACCEL_CTRL, ord("A")], False)
@GuiSelectDecorator(3, "Line", "&Line", ["toolLine.png"], [wx.ACCEL_CTRL, ord("L")], False) @GuiSelectDecorator(3, "Fill", "&Fill", ["toolFill.png"], [wx.ACCEL_CTRL, ord("F")], False)
@GuiSelectDecorator(4, "Object", "&Object", ["toolObject.png"], [wx.ACCEL_CTRL, ord("E")], False) @GuiSelectDecorator(4, "Line", "&Line", ["toolLine.png"], [wx.ACCEL_CTRL, ord("L")], False)
@GuiSelectDecorator(5, "Rectangle", "&Rectangle", ["toolRect.png"], [wx.ACCEL_CTRL, ord("R")], True) @GuiSelectDecorator(5, "Object", "&Object", ["toolObject.png"], [wx.ACCEL_CTRL, ord("E")], False)
@GuiSelectDecorator(6, "Text", "&Text", ["toolText.png"], [wx.ACCEL_CTRL, ord("T")], False) @GuiSelectDecorator(6, "Rectangle", "&Rectangle", ["toolRect.png"], [wx.ACCEL_CTRL, ord("R")], True)
@GuiSelectDecorator(7, "Text", "&Text", ["toolText.png"], [wx.ACCEL_CTRL, ord("T")], False)
def canvasTool(self, f, idx): def canvasTool(self, f, idx):
def canvasTool_(event): def canvasTool_(event):
if (self.currentTool.__class__ == ToolObject) \ if (self.currentTool.__class__ == ToolObject) \
and (self.currentTool.toolState > self.currentTool.TS_NONE) \ and (self.currentTool.toolState > self.currentTool.TS_NONE) \
and self.currentTool.external: and self.currentTool.external:
self.parentCanvas.dropTarget.done() self.parentCanvas.dropTarget.done()
self.lastTool, self.currentTool = self.currentTool, [ToolCircle, None, ToolFill, ToolLine, ToolObject, ToolRect, ToolText][idx] self.lastTool, self.currentTool = self.currentTool, [ToolCircle, None, ToolErase, ToolFill, ToolLine, ToolObject, ToolRect, ToolText][idx]
if self.currentTool != None: if self.currentTool != None:
self.currentTool = self.currentTool() self.currentTool = self.currentTool()
self.currentOperator, self.operatorState = None, None self.currentOperator, self.operatorState = None, None
@ -51,7 +53,7 @@ class RoarCanvasCommandsTools():
self.accels = () self.accels = ()
self.menus = ( self.menus = (
("&Tools", ("&Tools",
self.canvasTool(self.canvasTool, 1), self.canvasTool(self.canvasTool, 5), self.canvasTool(self.canvasTool, 0), self.canvasTool(self.canvasTool, 2), self.canvasTool(self.canvasTool, 3), self.canvasTool(self.canvasTool, 6), self.canvasTool(self.canvasTool, 4), self.canvasTool(self.canvasTool, 1), self.canvasTool(self.canvasTool, 6), self.canvasTool(self.canvasTool, 0), self.canvasTool(self.canvasTool, 3), self.canvasTool(self.canvasTool, 4), self.canvasTool(self.canvasTool, 7), self.canvasTool(self.canvasTool, 5), self.canvasTool(self.canvasTool, 2),
), ),
) )
self.toolBars = () self.toolBars = ()

34
libtools/ToolErase.py Normal file
View File

@ -0,0 +1,34 @@
#!/usr/bin/env python3
#
# ToolErase.py
# Copyright (c) 2018, 2019 Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de>
#
from Tool import Tool
class ToolErase(Tool):
name = "Erase"
#
# onMouseEvent(self, atPoint, brushColours, brushPos, brushSize, canvas, dispatchFn, eventDc, keyModifiers, mapPoint, mouseDragging, mouseLeftDown, mouseRightDown)
def onMouseEvent(self, atPoint, brushColours, brushPos, brushSize, canvas, dispatchFn, eventDc, keyModifiers, mapPoint, mouseDragging, mouseLeftDown, mouseRightDown):
brushColours, brushSize, dirty = list(brushColours), list(brushSize), False
if mouseRightDown:
brushColours = [brushColours[0], brushColours[0]]
else:
brushColours = [brushColours[1], brushColours[1]]
if brushSize[0] > 1:
brushSize[0] *= 2
for brushRow in range(brushSize[1]):
for brushCol in range(brushSize[0]):
patchColours = [brushColours[1]] * 2
patch = [mapPoint[0] + brushCol, mapPoint[1] + brushRow, *patchColours, 0, " "]
if mouseLeftDown or mouseRightDown:
if not dirty:
dirty = True
dispatchFn(eventDc, False, patch); dispatchFn(eventDc, True, patch);
else:
dispatchFn(eventDc, True, patch)
return True, dirty
# vim:expandtab foldmethod=marker sw=4 ts=4 tw=120