Bill Currie
60f9f4815a
[qwaq] Make qwaq_cond_init public
2020-03-24 19:48:57 +09:00
Bill Currie
baff891345
[qwaq] Rename cond_t to rwcond_t
2020-03-24 19:48:20 +09:00
Bill Currie
19a4efed16
[qwaq] Add support for invisible buttons
...
Useful for window controls.
2020-03-23 22:00:05 +09:00
Bill Currie
9bc91cd7d1
[qwaq] Implement resizing
...
Terminal resize is detected and the views adjust appropriately (well,
those for which I've set grow flags: the window title bar doesn't adjust
yet).
2020-03-23 20:14:32 +09:00
Bill Currie
bde3124533
[qwaq] Fix some more formatLine cases
...
I think this is all of them. Scrolling around in a file, including
having the end of file visible in the window, seems to work well.
2020-03-22 23:50:27 +09:00
Bill Currie
f3c68eaada
Implement mouse auto events
...
These are for when a button is held down: good for scroll bar arrows
etc.
2020-03-22 14:06:27 +09:00
Bill Currie
275ed22362
[qwaq] Actually ensure tv_nsec is valid
...
While typing the previous message I thought to check my "carry" logic.
Sure enough, it was wrong... out by 1. I guess I won the threading
lottery :P
2020-03-22 08:40:51 +09:00
Bill Currie
486728a4bd
[qwaq] Be a little paranoid about cond wait timeouts
...
I'd left qwaq-curses running overnight and found it locked up: both
threads were looping because pthread_cond_timedwait was returning
EINVAL. Thus bail if anything other than 0 is returned, and try to
ensure tv_nsec is in the range 0..999999999
2020-03-22 08:35:37 +09:00
Bill Currie
d352749666
[qwaq] Bypass ncurses for input handling
...
For now, only 1003 mouse mode is supported, and function keys are not
yet supported, but the mouse is much more reliable: no lost events.
2020-03-22 01:00:05 +09:00
Bill Currie
88b4046632
[util] Pass a data pointer to shutdown functions
...
And clean up the mess.
2020-03-22 00:57:54 +09:00
Bill Currie
176cc7b9c1
[qwaq] Make some improvements to mouse handling
...
This doesn't fix the problem of lost events: that seems to be inside
ncurses. I've done some investigations, and it seems xterm sends
separate events for motion and pre/release (which have current coords),
in both 1003 and 1006 modes. No idea what ncurses is doing (does it even
handle 1003 properly?), and it requires the use of xterm-1006 for it to
use 1006 mode (which is nice in that it disambiguates button releases
and allows for huge terminals (not that I would use such normally)).
Guess I've got some side-work cut out for me :P
2020-03-21 21:05:34 +09:00
Bill Currie
fb6883851d
[qwaq] Actually unlock the event queue mutex
...
And now everything works as well threaded as it did unthreaded.
2020-03-21 12:58:07 +09:00
Bill Currie
fb17f8093d
[qwaq] Correct some queue test logic
...
This fixes the wedge during initial setup and drawing, but the program
deadlocks when processing input and there's an event.
2020-03-21 12:58:07 +09:00
Bill Currie
abedb465af
[qwaq] Use separate conditions for queue read/write
...
While writing the code I suspected this would be necessary, but it's
nice to know. Now the window seems to be correctly fetched, but
get_event locks up.
2020-03-21 12:58:07 +09:00
Bill Currie
af137937bd
[qwaq] Add missing mutex unlock
2020-03-21 12:58:07 +09:00
Bill Currie
5f887c4773
[qwaq] Fix missed logic conversion
2020-03-21 12:58:07 +09:00
Bill Currie
7beaa567e6
[qwaq] Pass resource data into the thread
...
Things have come crashing down, but no fire (ie, no deadlocks so far).
2020-03-21 12:58:07 +09:00
Bill Currie
ac3fef6dd8
[qwaq] Fix a harmless typo
...
Amusing, though... it was cursed (segaulted).
2020-03-21 12:58:07 +09:00
Bill Currie
cf9455293b
[qwaq] Start threads for progs and curses
...
No idea if anything works, probably come crashing down in a flaming pile
of debris.
2020-03-21 12:58:07 +09:00
Bill Currie
74ed057a5f
[qwaq] Begin move over to threading
...
Of course, it currently locks up, but there aren't any other threads as
of yet so the queues starve.
2020-03-21 12:58:07 +09:00
Bill Currie
ec12941fcb
Move the ring buffer macros to their own header
...
They seem to have proven themselves to be robust.
2020-03-19 23:53:54 +09:00
Bill Currie
fe4f831512
[qwaq] Remove a pile of stray panel_free calls
...
C&P programming FTW :P
2020-03-19 20:31:01 +09:00
Bill Currie
f027a42e72
[qwaq] Treat 0 as transparent character
2020-03-19 19:53:32 +09:00
Bill Currie
490f1ad4b8
[qwaq] Add wrappers for werase
2020-03-19 18:37:05 +09:00
Bill Currie
28a8c1fda7
[qwaq] Implement more curses wrappers
2020-03-17 14:05:31 +09:00
Bill Currie
d0f21ec2b4
[qwaq] Add -refresh to TextContext
...
This does the right thing in the presence of panels and dealing with
stdscr.
2020-03-13 03:09:42 +09:00
Bill Currie
3defe50be6
[qwaq] Add printf builtin to ease debugging
2020-03-13 02:41:08 +09:00
Bill Currie
7f9a415cbc
[qwaq] Get DrawBuffer and TextContext working
...
Especially blitting whole regions. Partial regions not tested yet.
2020-03-13 02:36:53 +09:00
Bill Currie
f91fb4f840
[qwaq] Add an mvwblit_line builtin
...
I had to do my own thing with curses as the function I had planned to
use turned out to be quite different from what I wanted (misread the man
page).
2020-03-10 18:21:06 +09:00
Bill Currie
fb92ee12d6
[qwaq] Set event type to none when no events
...
Fixes the endless looping on the last event.
2020-03-10 03:11:21 +09:00
Bill Currie
0780cca496
[qwaq] Fixed swapped method implementations
...
That was fun
2020-03-08 22:21:15 +09:00
Bill Currie
8fc007648c
[qwaq] Add missed command enum string
2020-03-08 22:20:46 +09:00
Bill Currie
1250fe7446
[qwaq] Use a log file instead of stderr
...
Now I don't have to worry about remembering to redirect the output, but
debugging is still easy.
2020-03-06 18:29:16 +09:00
Bill Currie
b8b74fc074
[qwaq] Implement missing addch
...
I either forgot about it, or just didn't need it at the time, but I'm
sure it will be useful later when more stuff is implemented.
2020-03-06 17:57:33 +09:00
Bill Currie
ba9c43d2d3
[qwaq] Create a TextContext class
...
It is essentially just a wrapper around the window versions of ncurses
functions.
2020-03-06 13:54:46 +09:00
Bill Currie
f18e3c3ad7
[qwaq] Add wborder command
2020-03-06 00:31:29 +09:00
Bill Currie
971caf553d
[qwaq] Add debug output to the command queue
...
Be sure to redirect stderr or the screen will get messed up
2020-03-06 00:30:11 +09:00
Bill Currie
c377b324a1
[qwaq] Add Group and clean up lots of mess
...
Things are finally doing something again, and getting closer to having a
moveable window.
2020-03-05 15:44:53 +09:00
Bill Currie
f3236410d0
[qwaq] Make the event system more informative
...
Doesn't have timestamps at this stage, but otherwise it reflects the
event system I had in my old text UI which was heavily based on
TurboVision. TV is pretty good (after looking at things a bit closer I
found it wasn't as deep as I thought), and better yet, Borland released
it to the public domain 23 years ago! (wish I'd known that).
Anyway, this commit gets something happening on the screen, even though
the current hierarchy is still a mess.
2020-03-04 22:09:40 +09:00
Bill Currie
815ae02121
[qwaq] Allocate enough bytes for the args list
...
d'oh
2020-03-04 21:17:17 +09:00
Bill Currie
d57e05258c
[qwaq] Remove now unnecessary union field name
...
\o/
2020-03-04 19:10:09 +09:00
Bill Currie
c58cf2c2d0
[qwaq] Fail at object oriented design 101
...
This is horrible, doesn't work, isn't really the direction I want to go
(that became apparent while implementing Screen's handleEvent) and
crashes anyway (Array and not-id...)
*sigh*
Still, this does have some good stuff in it, and it pushed qfcc along
some more.
2020-03-03 21:32:19 +09:00
Bill Currie
33a07c0f6b
[qwaq] Make command buffer larger for now
...
A small one should be fine once threading is working.
2020-03-02 18:30:58 +09:00
Bill Currie
b9ab30ff59
[qwaq] Add mvwaddch and ACS support
2020-03-02 18:27:08 +09:00
Bill Currie
a0c4d56668
[qwaq] Continue processing on void commands
...
If the last command in the buffer had no parameters, its length would be
only 2 and thus processing would stop before reading the command from
the buffer.
2020-03-02 18:19:41 +09:00
Bill Currie
fa66e9fc2f
[qwaq] Move queue handling into separate functions
...
This makes it so I need to edit only one place when I get threads
working. Also, it fixes some bugs (eg, panel creation wasn't implemented
correctly).
2020-03-02 18:15:31 +09:00
Bill Currie
df2ed4b086
[qwaq] Move from tools to ruamoko
...
This fixes the dependency issues between qwaq and ruamoko. qwaq is
actually older than ruamoko. That little language feature test has come
a long way.
However, I'm considering moving to non-recursive make, but...
2020-03-01 00:55:15 +09:00