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