readme update

This commit is contained in:
Markus Gans 2015-08-30 13:11:49 +02:00
parent 81f03182c4
commit 44e31bd115
6 changed files with 70 additions and 26 deletions

View File

@ -1,7 +1,7 @@
The Final Cut [![Build Status](https://travis-ci.org/gansm/finalcut.svg?branch=master)](https://travis-ci.org/gansm/finalcut) The Final Cut [![Build Status](https://travis-ci.org/gansm/finalcut.svg?branch=master)](https://travis-ci.org/gansm/finalcut)
============= =============
The Final Cut is a programming library and widget toolkit that creates a text-based user interface with full mouse support. It supports the controlled handling of multiple simultaneous windows. The Final Cut is a class library and widget toolkit with full mouse support for creating a text-based user interface. The library supports the programmer to develop an application for the text console. It allows the simultaneous handling of multiple windows on the screen.
The C++ class design is inspired by the Qt framework. It offers common user interface elements like dialog windows, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on. The C++ class design was inspired by the Qt framework. It provides common controls like dialog windows, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on.
![](https://github.com/gansm/finalcut/blob/master/doc/fileopen-dialog.png) ![](https://github.com/gansm/finalcut/blob/master/doc/fileopen-dialog.png)

View File

@ -2,10 +2,12 @@
The Final Cut The Final Cut
---------------------------------------------------------------------- ----------------------------------------------------------------------
The Final Cut is a programming library and widget toolkit that creates The Final Cut is a class library and widget toolkit with full mouse
a text-based user interface with full mouse support. It supports the support for creating a text-based user interface. The library supports
controlled handling of multiple simultaneous windows. the programmer to develop an application for the text console. It allows
The C++ class design is inspired by the Qt framework. It offers common the simultaneous handling of multiple windows on the screen.
user interface elements like dialog windows, push buttons, check boxes,
The C++ class design was inspired by the Qt framework. It provides
common controls like dialog windows, push buttons, check boxes,
radio buttons, input lines, list boxes, status bars and so on. radio buttons, input lines, list boxes, status bars and so on.

View File

@ -39,6 +39,21 @@ FMenu::FMenu (const char* txt, FWidget* parent) : FWindow(parent)
//---------------------------------------------------------------------- //----------------------------------------------------------------------
FMenu::~FMenu() FMenu::~FMenu()
{ {
activatePrevWindow();
delWindow(this);
const FRect& geometry = getGeometryGlobalShadow();
restoreVTerm (geometry);
parentWidget()->redraw(); // ????
if ( vwin != 0 )
{
if ( vwin->changes != 0 )
delete[] vwin->changes;
if ( vwin->text != 0 )
delete[] vwin->text;
delete vwin;
}
} }
@ -46,8 +61,35 @@ FMenu::~FMenu()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FMenu::init() void FMenu::init()
{ {
width = 10;
height = 2;
xmin = 1;
ymin = 1;
xmax = width;
ymax = height;
client_xmin = 1;
client_ymin = 1;
client_xmax = width;
client_ymax = height;
top_padding = 1;
left_padding = 1;
bottom_padding = 1;
right_padding = 1;
createArea (vwin);
setGeometry (1, 1, 10, 2, false); // initialize geometry values
ignore_padding = true;
window_object = true;
addWindow(this);
setActiveWindow(this);
FWidget* old_focus = FWidget::getFocusWidget();
if ( old_focus )
{
setFocus();
old_focus->redraw();
}
item->setMenu(this); item->setMenu(this);
setGeometry (1,1,1,1);
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -93,7 +135,18 @@ int FMenu::getHotkeyPos (wchar_t*& src, wchar_t*& dest, uInt length)
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FMenu::draw() void FMenu::draw()
{ {
if ( itemlist.empty() )
return;
// fill the background
setColor (foregroundColor, backgroundColor);
setUpdateVTerm(false);
clrscr();
drawBorder();
drawItems(); drawItems();
setUpdateVTerm(true);
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -102,11 +155,6 @@ void FMenu::drawItems()
std::vector<FMenuItem*>::const_iterator iter, end; std::vector<FMenuItem*>::const_iterator iter, end;
int y = 1; int y = 1;
if ( itemlist.empty() )
return;
setUpdateVTerm(false);
iter = itemlist.begin(); iter = itemlist.begin();
end = itemlist.end(); end = itemlist.end();
@ -144,7 +192,7 @@ void FMenu::drawItems()
} }
gotoxy (xpos+xmin+1, ypos+ymin+y); gotoxy (xpos+xmin+1, ypos+ymin+y);
setColor (foregroundColor, backgroundColor); setColor (foregroundColor, backgroundColor);
print (vmenubar, ' '); print (' ');
txt = (*iter)->getText(); txt = (*iter)->getText();
txt_length = int(txt.getLength()); txt_length = int(txt.getLength());
@ -169,13 +217,13 @@ void FMenu::drawItems()
setColor (wc.menu_hotkey_fg, wc.menu_hotkey_bg); setColor (wc.menu_hotkey_fg, wc.menu_hotkey_bg);
if ( ! isNoUnderline ) if ( ! isNoUnderline )
setUnderline(); setUnderline();
print (vmenubar, item_text[z]); print (item_text[z]);
if ( ! isNoUnderline ) if ( ! isNoUnderline )
unsetUnderline(); unsetUnderline();
setColor (foregroundColor, backgroundColor); setColor (foregroundColor, backgroundColor);
} }
else else
print (vmenubar, item_text[z]); print (item_text[z]);
} }
if ( isActive && isSelected ) if ( isActive && isSelected )
@ -185,7 +233,6 @@ void FMenu::drawItems()
++iter; ++iter;
y++; y++;
} }
setUpdateVTerm(true);
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -350,8 +397,8 @@ void FMenu::setGeometry (int xx, int yy, int ww, int hh, bool adjust)
int old_width = width; int old_width = width;
int old_height = height; int old_height = height;
FWidget::setGeometry (xx, yy, ww, hh, adjust); FWidget::setGeometry (xx, yy, ww, hh, adjust);
if ( vmenubar && (width != old_width || height != old_height) ) if ( vwin && (width != old_width || height != old_height) )
resizeArea (vmenubar); resizeArea (vwin);
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View File

@ -102,9 +102,3 @@ void FMenuList::clear()
itemlist.clear(); itemlist.clear();
} }
// protected methods of FMenuList
//----------------------------------------------------------------------
/*void FMenuList::cb_item_activated (FWidget*, void*)
{
}*/

View File

@ -15,7 +15,7 @@
FMenuList ------- FMenuItem FMenuList ------- FMenuItem
FWidget FMenu FWindow FMenu
*/ */

1
stamp-h1 Normal file
View File

@ -0,0 +1 @@
timestamp for config.h