This is a first test release of the ALT branch of NDK++ project. This branch is a full rewrite and redesign of the old code. In contrary to old NDK++ this library not depends no libncurses++, but uses plain libncurses.
The main change here is about the interpretation of return values.
The original ncurses' return value was a boolean telling us if the menu's loop should be either maintained or ended. A false was "keep going" and a true was "finish the loop".
Making the menu item an item on a list box changes it in two ways:
First: for any Control::driver() method, true means that the message was consumed by the control and false means it was not. In the last case, the parent control try to consume it.
Second: to break the menubar loop you should return a KEY_CANCEL message, since it's break when child::driver(key) == KEY_CANCEL.
A special case is a value of EXIT_APP which is returned to the main menu to indicate the finalization of the app.
The main menu is identified by a flag attribute (is_main_menu), which MUST be set when you construct it on your Application::activateMenuBar reimplementation. Otherwise, the EXIT_APP will be treated as KEY_ESC and the main menu will be closed without asking comfirmation. (see ndk_demo sources for an example)
As intended a while ago, I reimplemented the menu stuff to be a descendant of the ListBox.
This gives us a lot more of flexibility than with the ncurses menues, mostly related to events and messaging.
Properly speaking, now this is more an extension of the panel library than an extension of the ncurses library, but we still have some stuff inherited from the libncurses++ stuff...
- From now on and for a while, the only changes I expect to introduce other than patches for uncovered bugs has to do with the navigation logic of the Tabbed dialogs (right now it's going to be seen what happens if you add tabs up to more than the width of the containing window. We should stack them or we should provide a button with a left/right arrow to scroll them horizontally?).
- Next. I should optimize the refresh stuff and repainting, since right now I spread them generously to be shure I got the stuff refreshed.
- The third thing to do is work a bit on color configuration.
-The fourth is to provide for different configurations (I still can't make the mouse work on the console, while on xterm it's working fine...)
- Same thing happens with the characters: on xterm the localized chars (tilded vowels, portughese consonants...) don't show up, while on the console they do
- If someone has some idea where to look for this, any help is welcome.
Well, this release only improves the existing stuff.
I guess next step will be to redo from scratch the menues stuff.
(Probably the construction of window will be separated from the construction of control by then, since I can somewhat easyly move the code from the constructors to on_dlg_init ...
Yeap. I did the same thing on my own tree of objects beginning at Control. I better solve that before criticizing what was done before, I guess... ;-) )
And following that, get the tab/shift-tab stuff to work so we can move around on the tabbed dialogs without going nuts.
As promised, the Tabbed dialogs (aka property sheets) are here.
They work pretty well, although it's navigation takes a bit to get used to.
basicaly, you gou forward with the TAB key.
To enter the dialog you use the arrow down key.
to go back to the tabs, you use the arrow up key.
To go down to the push buttons you use the arrow down key (caveat: if the control you are on consumes the arrow down key, you can't do this, just move to the next control and try again...)
To go back to the window from the push buttons use the arrow up key.... read more
We are working now to add Tabbed windows (aka Property sheets) to NDK++.