68ba42f244MiRC2png.py: fix mIRC colour control code sequence counting & rendering logic.
Lucio Andrés Illanes Albornoz
2018-01-05 00:52:02 +0100
e0300331fdMiRC2png.py:MiRC2png._parseAs{Char,ColourSpec}(): fix indentation.
Lucio Andrés Illanes Albornoz
2018-01-04 23:45:30 +0100
325a454db7MiRCART.py:MiRCARTCanvas._eventPointToMap[XY](): added for _onMouseEvent(). MiRCART.py:MiRCARTCanvas._onMouseEvent(): split into _processMapPatches() and _drawPatch(). MiRCART.py:MiRCARTCanvas.getCell{Height,Width}(): added for _drawPatch() and _eventPointToMap[XY](). MiRCART.py:MiRCARTCanvas.onPaletteEvent(): only set self.mirc[FB]g. MiRCART.py:MiRCARTCanvas.__init__(): cache canvas window size. MiRCART.py:MiRCARTCanvas.__init__(): initialise & append canvasTools. MiRCART.py:MiRCARTCanvas.__init__(): pre-create 16 mIRC colour brushes & pens. MiRCART.py:MiRCARTCanvas.__init__(): initialise temporary & {un,re}do patches. MiRCART.py:MiRCARTTool: added abstract base class for all canvas tools. MiRCART.py:MiRCARTToolRect: initial implementation w/ cursor, limited to 1x1 rectangles. MiRCART.py:MiRCARTFrame.__init__(): initialise MiRCARTCanvas() w/ canvasTools=[MiRCARTToolRect].
Lucio Andrés Illanes Albornoz
2018-01-04 23:22:09 +0100
91e33f8a4aMiRCART.py:MiRCARTCanvas.canvasBitmap: added to optimise onPaint(). MiRCART.py:MiRCARTCanvas._onMouseEvent(): additionally draw to canvasBitmap via temporary wx.MemoryDC(). MiRCART.py:MiRCARTCanvas.onPaint(): reimplement using (double-buffered) wx.BufferedPaintDC() from canvasBitmap. MiRCART.py:MiRCARTCanvas.__init__(): initialise canvasBitmap from canvas window size.
Lucio Andrés Illanes Albornoz
2018-01-04 20:22:15 +0100
42e18ec252MiRCART.py:MiRCARTCanvas.{_onMouseEvent,onPaint,__init__}(): switch addressing mode of self.canvasMap to [Y][X]. MiRCART.py:MiRCARTCanvas.get{Height,Map,Width}(): added for MiRCARTFrame.onFileSaveAs(). MiRCART.py:MiRCARTFrame.onFileSaveAs(): initial implementation.
Lucio Andrés Illanes Albornoz
2018-01-04 18:11:57 +0100
427290e783MiRCART.py:mircColours, MiRCARTCanvas.{onPaint,__init__}(): moved from MiRCARTCanvas.mircColours. MiRCART.py:MiRCARTCanvas.get{Background,Foreground}Colour: added for MiRCARTFrame._updateStatusBar(). MiRCART.py:MiRCARTCanvas.onCharHook(): merged into MiRCARTCanvas.onPaletteEvent(). MiRCART.py:MiRCARTCanvas.onPaletteEvent(): set self.{mirc,brush,pen}{Fg,Bg} from colour choice event. MiRCART.py:MiRCARTPalette: implements 16 colour palette panels GUI. MiRCART.py:MiRCARTFrame._updateStatusBar(): show canvas {fore,back}ground colours in status bar. MiRCART.py:MiRCARTFrame.onPaletteEvent(): hand off to MiRCARTCanvas.onPaletteEvent() and call _updateStatusBar(). MiRCART.py:MiRCARTFrame.__init__(): fix `&File' menu item order. MiRCART.py:MiRCARTFrame.__init__(): create & update status bar.
Lucio Andrés Illanes Albornoz
2018-01-04 17:26:12 +0100
1a2dd5f692MiRC2png.py: renamed from MiRCART.py. {IrcClient,IrcMiRCARTBot,MiRC2png}.py: update Vim modeline w/ `sw=4 ts=4'. {IrcMiRCARTBot,MiRC2png}.py: update header legend. IrcMiRCARTBot.py:IrcMiRCARTBot._dispatchPrivmsg(): lower rate limit to (once per) 30 seconds. IrcMiRCARTBot.py:IrcMiRCARTBot._dispatchPrivmsg(): eliminate useless instance variable. IrcMiRCARTBot.py:IrcMiRCARTBot._urlretrieveReportHook(): compare against correct limit of 1 MB (2**20.) MiRCART.py: initial commit. README.md: updated.
Lucio Andrés Illanes Albornoz
2018-01-04 16:24:06 +0100
49705ad4bcIrcMiRCARTBot.py:IrcMiRCARTBot.{ContentTooLargeException,_urlretrieveReportHook()}: restrict ASCII downloads to 1 MB in size. IrcMiRCARTBot.py:IrcMiRCARTBot._dispatchPrivmsg(): pass (static) _urlretrieveReportHook() to urllib.request.urlretrieve(). IrcMiRCARTBot.py:IrcMiRCARTBot._dispatchPrivmsg(): handle ContentTooLargeException, urllib.error.URLError, and ValueError exceptions. IrcMiRCARTBot.py:IrcMiRCARTBot._dispatchPrivmsg(): only reset clientLastMessage after successful completion.
Lucio Andrés Illanes Albornoz
2018-01-03 15:37:26 +0100
b71ca6af89IrcClient.py:IrcClient.{queue,unqueue}(): always CR NL-terminate messages & encode() before queuing.
Lucio Andrés Illanes Albornoz
2018-01-03 15:18:28 +0100
9c34fe3220IrcClient.py:IrcClient.unqueue(): handle timeout from timed select().
Lucio Andrés Illanes Albornoz
2018-01-03 15:13:52 +0100
6fcf0e0a4fIrcClient.py:IrcClient.{queue,unqueue}(): split. IrcMiRCARTBot.py:IrcMiRCARTBot._dispatch{001,Ping,Privmsg,Timer}(): replace readline() calls w/ queue() calls. IrcMiRCARTBot.py:IrcMiRCARTBot.dispatch(): call unqueue() after processing timers and prior to calling readline().
Lucio Andrés Illanes Albornoz
2018-01-03 04:15:43 +0100
523d91ff89MiRCART.py:MiRCART._parseAsChar(): derive rectangle & line coordinates and outCur{X,Y} offset from outImgFontSize[{0,1}]. MiRCART.py:MiRCART.__init__(): initialise outImgFontSize and add underline area offset. MiRCART.py:MiRCART.__init__(): derive outCurY offset from outImgFontSize[1].
Lucio Andrés Illanes Albornoz
2018-01-03 03:52:41 +0100
e182f0ffa9{IrcMiRCARTBot,MiRCART}.py: differentiate private class member functions.
Lucio Andrés Illanes Albornoz
2018-01-03 03:33:57 +0100
ebd2ce9393pngbot.py:IrcMiRCARTBot.dispatch353(): skip empty nick specs.
Lucio Andrés Illanes Albornoz
2018-01-03 00:53:42 +0100
a0db56a530pngbot.py:IrcBot.readline(): add optional timeout parameter. pngbot.py:IrcMiRCARTBot.clientChannelRejoin{,TimerNext}: added to support delayed rejoin-on-kick logic. pngbot.py:IrcMiRCARTBot.dispatchJoin(): reset clientChannelRejoin{,TimerNext} on successful (re)join to clientChannel. pngbot.py:IrcMiRCARTBot.dispatchKick(): set clientChannelRejoin{,TimerNext} on kick from clientChannel to time.time() + 15 (seconds.) pngbot.py:IrcMiRCARTBot.dispatchTimer(): (re)join clientChannel and set clientChannelRejoin{,TimerNext} to time.time() + 15 (seconds.) pngbot.py:IrcMiRCARTBot.dispatch(): call readline() w/ timeout delta given clientChannelRejoinTimerNext.
Lucio Andrés Illanes Albornoz
2018-01-03 00:40:37 +0100
936bfb6c86pngbot.py:IrcMiRCARTBot.dispatchKick(): rejoin channel on kick.
Lucio Andrés Illanes Albornoz
2018-01-03 00:13:02 +0100
c6aa3f9ad9pngbot.py:IrcBot.readline(): correctly parse messages w/o a prefix.
Lucio Andrés Illanes Albornoz
2018-01-03 00:05:46 +0100
f4218e8ae1pngbot.py:IrcMiRCARTBot.dispatch{001,353,MODE,None,PING,PRIVMSG}(): split from dispatch().
Lucio Andrés Illanes Albornoz
2018-01-02 23:35:01 +0100
28e5b9b958pngbot.py:IrcMiRCARTBot.dispatch(): ignore `!pngbot' requests from unauthorised (non-opped) nicks. pngbot.py:IrcMiRCARTBot.dispatch(): add status (stdout) messages. pngbot.py:IrcMiRCARTBot.dispatch(): always use lower-case channel name in status (stdout) messages.
Lucio Andrés Illanes Albornoz
2018-01-02 23:23:30 +0100
993e986ec0pngbot.py:IrcMiRCARTBot.clientChannelOps: added to track nicks authorised to use `!pngbot'. pngbot.py:IrcMiRCARTBot.dispatch(): sync clientChannelOps w/ 353 (RPL_NAMREPLY) and (channel) MODE messages.
Lucio Andrés Illanes Albornoz
2018-01-02 23:12:26 +0100
75e8e5fdf0pngbot.py:IrcMiRCARTBot.uploadToImgur(): split from dispatch(). pngbot.py:IrcMiRCARTBot.dispatch(): only os.remove() if target file exists.
Lucio Andrés Illanes Albornoz
2018-01-02 22:38:10 +0100
4556f8b238pngbot.py: set +x bit.
Lucio Andrés Illanes Albornoz
2018-01-02 22:25:00 +0100
3b29343e15mirc2png.py:MiRCART.__init__(): move defaults from main().
Lucio Andrés Illanes Albornoz
2018-01-02 22:24:21 +0100
4f56b9c783pngbot.py: splits main into class IrcMiRCARTBot. pngbot.py:IrcBot.close(): only close() clientSocket if non-None. pngbot.py:IrcMiRCARTBot.connect(): correctly zero-initialise clientLastMessage. pngbot.py:IrcMiRCARTBot.dispatch(): fix imgurResponseHttp.status_code reference.
Lucio Andrés Illanes Albornoz
2018-01-02 22:20:20 +0100
4c5755d2fcpngbot.py: rate-limit `!pngbot' processing to once (1) each 45 seconds.
Lucio Andrés Illanes Albornoz
2018-01-02 22:02:36 +0100
e091920bdapngbot.py: handle HTTP status codes differing from 200. pngbot.py: update IRC message text.
Lucio Andrés Illanes Albornoz
2018-01-02 21:57:21 +0100
b94d3afdb5pngbot.py: convert to lower case when comparing channel names.
Lucio Andrés Illanes Albornoz
2018-01-02 21:54:02 +0100
93946c3bc9mirc2png.py: fix class declaration & commenting style.
Lucio Andrés Illanes Albornoz
2018-01-02 20:51:06 +0100
89e244890c.gitignore: ignore __pycache__/.
Lucio Andrés Illanes Albornoz
2018-01-02 20:50:40 +0100
1c664f26e0.gitignore: added to repository.
Lucio Andrés Illanes Albornoz
2018-01-02 19:16:09 +0100
2d397ad4cfREADME.md: added to repository.
Lucio Andrés Illanes Albornoz
2018-01-02 17:03:15 +0100
734cc19333DejaVuSansMono.ttf: added to repository for convenience. mirc2png.py:main(): default fontFilePath to `DejaVuSansMono.ttf'.
Lucio Andrés Illanes Albornoz
2018-01-02 16:58:15 +0100
abaa92b53dmirc2png.py:parseAsChar(): implement underline (^_.) mirc2png.py:__init__(): increment self.outCurY by correct row height.
Lucio Andrés Illanes Albornoz
2018-01-02 16:54:39 +0100
2ea89a0559Initial commit.
Lucio Andrés Illanes Albornoz
2018-01-02 16:19:07 +0100