TEditor 50% complete
[nikiroo-utils.git] / docs / worklog.md
CommitLineData
55d2b2c2
KL
1Jexer Work Log
2==============
3
e8a11f98
KL
4August 12, 2017
5
6TEditor is stubbed in about 50% complete now. I have a Highlighter
7class that provides different colors based on Word text values, but it
8is a lot too simple to do true syntax highlighting. I am noodling on
9the right design that would let TEditor be both a programmer's editor
10(so Highlighter needs to have state and do a lexical scan) and a word
11processor (where Word needs to tokenize on whitespace). I estimate
12probably a good 2-4 weeks left to get the editor behavior where I want
13it, and then after that will be the 0.0.5 release.
14
15Finding more minor paper cuts and fixing them: the mouse cursor being
16ahead of a window drag event, SwingTerminal resetting blink on new
17input, prevent TWindow from resizing down into the status bar.
18
3e074355
KL
19August 8, 2017
20
21Multiscreen is looking really cool! Demo6 now brings up three
22screens, including one that is inside a TWindow of a different
23application.
24
42873e30
KL
25August 7, 2017
26
27Had trouble sleeping, what with a bunch of imaginative thoughts for
28this release. jexer.backend will be the ultimate destination for
29jexer.session and most of jexer.io. TerminalReader will be the
30interface for keyboard and mouse events. cmScreenConnected and
31cmScreenDisconnected will be new events to represent a screen
32appearing/disappearing, and MultiBackend will be a new backend
33multiplexer that goes full XRandR. Several new demos demonstrating
34multi-screen support will be coming along.
35
36August 6, 2017
37
38Time to clean up more API, particularly between Backend and Screen.
39Both of these will be interfaces soon, so that one could easily
40subclass JComponent and implement both Screen and Backend. The
41original code evolved out of Qodem, where screen.c and input.c were
42two different things leading to ECMA48Screen and ECMA48Terminal, but
43now there is really no need to keep them separate. It also
44complicates the constructors, as these are basically friend classes
45that have used package private access to get around their artificial
46separation.
47
48When I get this done it should be a lot easier to do any of:
49
50* Pass a JFrame or JComponent to SwingBackend and have it add itself,
51 like any other Swing widget.
52
53* Construct a SwingBackend and add it to any regular JComponent.
54
55* Have multiple TApplications running inside the same Swing
56 application, including having actions affect each other. (Will also
57 need to ensure that TWidgets/TWindows are not in different
58 TApplication collections.)
59
60* Build a Backend/Screen multiplexer, so that one could have a ECMA48
61 TApplication listening on a port and a local Swing monitor for it.
62
63* Build a Backend/Screen manager, so that one could have multiple
64 ECMA48 screens acting as a single large screen (e.g. XRandR).
65
66Now I need to decide which package will collect Backend, SessionInfo,
67and Screen. jexer.io has some java.io stuff, so it stays anyway.
68
2fef9c6e
KL
69July 28, 2017
70
71Got very busy with my meatspace life, now getting a chance to come
72back around.
73
74I gave up on TEditor knowing about graphemes, instead pulling back to
75simple Cells. This will be better anyway in the long run, as getting
76grapheme support in Screen someday will also get it for me in TEditor
77for free. But it does mean that TEditor will chew through much more
78RAM than it needs to for a text file. Performance optimization will
79come someday. But this means I can also go back to gcj, because I
80really like its warnings about unused imports.
81
82I've got a POM stubbed in, and created an account over at sonatype.
83If it isn't too hard, I will try to get 0.0.5 released into the maven
84universe. But that is still a bit away, I need TEditor running with
85syntax highlighting first.
86
87July 17, 2017
88
89Focus-follows-mouse is in, as is NOCLOSEBOX.
90
8c236a98
KL
91July 15, 2017
92
93I think I have cleaned up most of the window show/hide/activate mess
94in TApplication. Demo4 has some cool interactions between a
95background TDesktop and several foreground TWindows, which helped
96expose bugs.
97
98July 9, 2017
99
100While working on TWindow.hide/show I decided that I am sick of
101TApplication's active window handling. TApplication makes lots of
102assumptions, things are too fragile between modal and not, and one
103cannot easily say window.activate(). So I will also be changing that
104too. ... Code is still a bit of a mess, but hooks are in place at
105least for show/hide/activate.
106
107July 8, 2017
108
109Qodem 1.0.0 released last month, I had a vacation, and a Jexer user
110(nikiroo) started opening up pull requests. :-) So back unto the
111breach we go!
112
113TButton is now animated so that there is some feedback when selected
114via keyboard. StringJustifier was written which permits TText's to
115have left/centered/right and full justification. TDesktop is now in
116too which can act as a permanent max-sized window without borders.
117
118Next up is Viewport, an interface to collect scrollbar API, and then a
119cleaner API for scrollable widgets and windows. After that is more
120window API: hide/show/maximize/restore, and unclosable windows. I am
121cherry-picking bits from @nikiroo's PRs, which will likely break them
122before it fixes things, but I will find some way to get Niki credited
123with those pieces.
124
e685a47d
KL
125March 21, 2017
126
127I am starting to gear up for making Jexer a serious project now. I've
128created its SourceForge project, linked it back to GitHub, have most
129of its web page set up (looks like Qodem's), and released 0.0.4. And
130then this morning saw an out-of-bounds exception if you kill the main
131demo window. Glad I marked it Alpha on SourceForge...
132
133Yesterday I was digging around the other Turbo Vision derived projects
134while populating the about page, and made a sad/happy-ish realization:
135Embarcadero could probably get all of them shut down if it really
136wanted to, including Free Vision. I uncovered some hidden history in
137Free Vision, such that it appears that Graphics Vision had some
138licensed Borland code in it, so there might be enough mud in the air
139that Free Vision could be shut down the same way RHTVision was. But
140even worse is the SCOTUS ruling on Oracle vs Google: if APIs are
141copyrighted (regardless of their thoughts on fair use), then any
142software that matches the API of a proprietary project might find
143itself subject to an infringement case. So that too could shut down
144the other API-compatible TV clones.
145
146Fortunately, Jexer (and D-TUI) is completely new, and has no API
147compatibility with Turbo Vision. Jexer could be a new root to a whole
148generation of TUI applications.
149
a7986f7b
KL
150March 18, 2017
151
152TStatusBar is working, as is "smart" window placement. Overall this
153is looking quite nice. Found a lot of other small paper cut items and
154fixed them. It looks absolutely gorgeous on Mac now.
155
156Tomorrow I will get to the public wifi and get this uploaded.
157
158Time to call this 0.0.4 now though. We are up to 32,123 lines of
159code.
160
55d2b2c2
KL
161March 17, 2017
162
163Jexer is coming back to active development status. I had a lot of
164other projects ahead of it in the queue, mostly Qodem but also Jermit
165and of course lots of actual day job work keeping me too tired for
166afterhours stuff. But here we are now, and I want to get Jexer to its
1671.0.0 release before the end of 2018. After that it will be a
168critical bit of function for IWP and NIB, if I ever get those going.
169I need to re-organize the demo app a bit so that it fits within 80x25,
170and then get to TStatusBar.
171
172A status bar will be an optional part of TWindow. If it exists, then
173it will be drawn last by TApplication and get events routed to it from
174TWindow's event handlers. This will have the nice effect that the
175status bar can change depending on which window is active, without any
176real extra work on TApplication's part.
177
178Putting together a proper TODO now, with release and regression
179checklists. I think I will see if jexer is available at SourceForge,
180and if so grab it. Perhaps I can put together some good Turbo Vision
181resources too. At the very least direct people to the Borland-derived
182C++ releases and Free Vision.
183