Separate the virtual terminal into a own class vterm
This commit is contained in:
parent
e14cd1af83
commit
b668f7011c
|
@ -1,3 +1,6 @@
|
||||||
|
2016-10-11 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Separate the virtual terminal into a own class vterm
|
||||||
|
|
||||||
2016-10-09 Markus Gans <guru.mail@muenster.de>
|
2016-10-09 Markus Gans <guru.mail@muenster.de>
|
||||||
* Remove some duplicate code
|
* Remove some duplicate code
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ libfinal_la_SOURCES = \
|
||||||
ftextview.cpp \
|
ftextview.cpp \
|
||||||
fstatusbar.cpp \
|
fstatusbar.cpp \
|
||||||
fterm.cpp \
|
fterm.cpp \
|
||||||
|
fvterm.cpp \
|
||||||
fevent.cpp \
|
fevent.cpp \
|
||||||
foptiattr.cpp \
|
foptiattr.cpp \
|
||||||
foptimove.cpp \
|
foptimove.cpp \
|
||||||
|
@ -87,6 +88,7 @@ finalcutinclude_HEADERS = \
|
||||||
fstring.h \
|
fstring.h \
|
||||||
ftcap_map.h \
|
ftcap_map.h \
|
||||||
fterm.h \
|
fterm.h \
|
||||||
|
fvterm.cpp \
|
||||||
ftextview.h \
|
ftextview.h \
|
||||||
ftogglebutton.h \
|
ftogglebutton.h \
|
||||||
fwidget.h \
|
fwidget.h \
|
||||||
|
|
|
@ -38,6 +38,7 @@ INCLUDE_HEADERS = \
|
||||||
fstatusbar.h \
|
fstatusbar.h \
|
||||||
fstring.h \
|
fstring.h \
|
||||||
fterm.h \
|
fterm.h \
|
||||||
|
fvterm.h \
|
||||||
ftextview.h \
|
ftextview.h \
|
||||||
ftogglebutton.h \
|
ftogglebutton.h \
|
||||||
fwidget.h \
|
fwidget.h \
|
||||||
|
@ -83,6 +84,7 @@ OBJS = \
|
||||||
ftextview.o \
|
ftextview.o \
|
||||||
fstatusbar.o \
|
fstatusbar.o \
|
||||||
fterm.o \
|
fterm.o \
|
||||||
|
fvterm.o \
|
||||||
fevent.o \
|
fevent.o \
|
||||||
foptiattr.o \
|
foptiattr.o \
|
||||||
foptimove.o \
|
foptimove.o \
|
||||||
|
|
|
@ -38,6 +38,7 @@ INCLUDE_HEADERS = \
|
||||||
fstatusbar.h \
|
fstatusbar.h \
|
||||||
fstring.h \
|
fstring.h \
|
||||||
fterm.h \
|
fterm.h \
|
||||||
|
fvterm.h \
|
||||||
ftextview.h \
|
ftextview.h \
|
||||||
ftogglebutton.h \
|
ftogglebutton.h \
|
||||||
fwidget.h \
|
fwidget.h \
|
||||||
|
@ -83,6 +84,7 @@ OBJS = \
|
||||||
ftextview.o \
|
ftextview.o \
|
||||||
fstatusbar.o \
|
fstatusbar.o \
|
||||||
fterm.o \
|
fterm.o \
|
||||||
|
fvterm.o \
|
||||||
fevent.o \
|
fevent.o \
|
||||||
foptiattr.o \
|
foptiattr.o \
|
||||||
foptimove.o \
|
foptimove.o \
|
||||||
|
|
|
@ -134,8 +134,9 @@ am_libfinal_la_OBJECTS = fstring.lo fpoint.lo frect.lo fscrollbar.lo \
|
||||||
flabel.lo flistbox.lo fmenu.lo fdialoglistmenu.lo fmenubar.lo \
|
flabel.lo flistbox.lo fmenu.lo fdialoglistmenu.lo fmenubar.lo \
|
||||||
fmenuitem.lo fradiomenuitem.lo fcheckmenuitem.lo fmenulist.lo \
|
fmenuitem.lo fradiomenuitem.lo fcheckmenuitem.lo fmenulist.lo \
|
||||||
fdialog.lo fwindow.lo fmessagebox.lo ftooltip.lo \
|
fdialog.lo fwindow.lo fmessagebox.lo ftooltip.lo \
|
||||||
ffiledialog.lo ftextview.lo fstatusbar.lo fterm.lo fevent.lo \
|
ffiledialog.lo ftextview.lo fstatusbar.lo fterm.lo fvterm.lo \
|
||||||
foptiattr.lo foptimove.lo fapp.lo fwidget.lo fobject.lo
|
fevent.lo foptiattr.lo foptimove.lo fapp.lo fwidget.lo \
|
||||||
|
fobject.lo
|
||||||
libfinal_la_OBJECTS = $(am_libfinal_la_OBJECTS)
|
libfinal_la_OBJECTS = $(am_libfinal_la_OBJECTS)
|
||||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||||
|
@ -402,6 +403,7 @@ libfinal_la_SOURCES = \
|
||||||
ftextview.cpp \
|
ftextview.cpp \
|
||||||
fstatusbar.cpp \
|
fstatusbar.cpp \
|
||||||
fterm.cpp \
|
fterm.cpp \
|
||||||
|
fvterm.cpp \
|
||||||
fevent.cpp \
|
fevent.cpp \
|
||||||
foptiattr.cpp \
|
foptiattr.cpp \
|
||||||
foptimove.cpp \
|
foptimove.cpp \
|
||||||
|
@ -449,6 +451,7 @@ finalcutinclude_HEADERS = \
|
||||||
fstring.h \
|
fstring.h \
|
||||||
ftcap_map.h \
|
ftcap_map.h \
|
||||||
fterm.h \
|
fterm.h \
|
||||||
|
fvterm.cpp \
|
||||||
ftextview.h \
|
ftextview.h \
|
||||||
ftogglebutton.h \
|
ftogglebutton.h \
|
||||||
fwidget.h \
|
fwidget.h \
|
||||||
|
@ -566,6 +569,7 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftextview.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftextview.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftogglebutton.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftogglebutton.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftooltip.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftooltip.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fvterm.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fwidget.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fwidget.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fwindow.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fwindow.Plo@am__quote@
|
||||||
|
|
||||||
|
|
35
src/fapp.cpp
35
src/fapp.cpp
|
@ -36,7 +36,6 @@ FApplication::FApplication (int& _argc, char**& _argv)
|
||||||
: FWidget(0)
|
: FWidget(0)
|
||||||
, app_argc(_argc)
|
, app_argc(_argc)
|
||||||
, app_argv(_argv)
|
, app_argv(_argv)
|
||||||
, skipped_terminal_update(0)
|
|
||||||
, key(0)
|
, key(0)
|
||||||
#ifdef F_HAVE_LIBGPM
|
#ifdef F_HAVE_LIBGPM
|
||||||
, gpm_ev()
|
, gpm_ev()
|
||||||
|
@ -89,9 +88,11 @@ void FApplication::init()
|
||||||
time_mousepressed.tv_sec = 0;
|
time_mousepressed.tv_sec = 0;
|
||||||
time_mousepressed.tv_usec = 0;
|
time_mousepressed.tv_usec = 0;
|
||||||
x11_button_state = 0x23;
|
x11_button_state = 0x23;
|
||||||
|
|
||||||
#ifdef F_HAVE_LIBGPM
|
#ifdef F_HAVE_LIBGPM
|
||||||
gpm_ev.x = -1;
|
gpm_ev.x = -1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
zero_point = new FPoint(0,0);
|
zero_point = new FPoint(0,0);
|
||||||
event_queue = new std::deque<eventPair>;
|
event_queue = new std::deque<eventPair>;
|
||||||
// init arrays with '\0'
|
// init arrays with '\0'
|
||||||
|
@ -276,6 +277,7 @@ void FApplication::processKeyboardEvent()
|
||||||
flush_out();
|
flush_out();
|
||||||
|
|
||||||
#ifdef F_HAVE_LIBGPM
|
#ifdef F_HAVE_LIBGPM
|
||||||
|
|
||||||
if ( gpm_mouse_enabled )
|
if ( gpm_mouse_enabled )
|
||||||
{
|
{
|
||||||
gpmMouseEvent = false;
|
gpmMouseEvent = false;
|
||||||
|
@ -296,8 +298,11 @@ void FApplication::processKeyboardEvent()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
isKeyPressed = KeyPressed();
|
isKeyPressed = KeyPressed();
|
||||||
|
|
||||||
#else // without gpm
|
#else // without gpm
|
||||||
|
|
||||||
isKeyPressed = KeyPressed();
|
isKeyPressed = KeyPressed();
|
||||||
|
|
||||||
#endif // F_HAVE_LIBGPM
|
#endif // F_HAVE_LIBGPM
|
||||||
|
|
||||||
if ( isKeyPressed )
|
if ( isKeyPressed )
|
||||||
|
@ -1605,7 +1610,7 @@ void FApplication::processMouseEvent()
|
||||||
sendEvent (clicked_widget, &m_down_ev);
|
sendEvent (clicked_widget, &m_down_ev);
|
||||||
|
|
||||||
// gnome-terminal sends no released on middle click
|
// gnome-terminal sends no released on middle click
|
||||||
if ( gnome_terminal )
|
if ( isGnomeTerminal() )
|
||||||
clicked_widget = 0;
|
clicked_widget = 0;
|
||||||
}
|
}
|
||||||
else if ( b_state.middle_button == Released )
|
else if ( b_state.middle_button == Released )
|
||||||
|
@ -1714,32 +1719,6 @@ int FApplication::processTimerEvent()
|
||||||
return activated;
|
return activated;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
void FApplication::processTerminalUpdate()
|
|
||||||
{
|
|
||||||
const int max_skip = 8;
|
|
||||||
|
|
||||||
if ( terminal_update_pending )
|
|
||||||
{
|
|
||||||
if ( ! unprocessedInput() )
|
|
||||||
{
|
|
||||||
updateTerminal();
|
|
||||||
terminal_update_pending = false;
|
|
||||||
skipped_terminal_update = 0;
|
|
||||||
}
|
|
||||||
else if ( skipped_terminal_update > max_skip )
|
|
||||||
{
|
|
||||||
force_terminal_update = true;
|
|
||||||
updateTerminal();
|
|
||||||
force_terminal_update = false;
|
|
||||||
terminal_update_pending = false;
|
|
||||||
skipped_terminal_update = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
skipped_terminal_update++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FApplication::processCloseWidget()
|
void FApplication::processCloseWidget()
|
||||||
{
|
{
|
||||||
|
|
13
src/fapp.h
13
src/fapp.h
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
@ -31,8 +36,6 @@
|
||||||
#ifndef _FAPPLICATION_H
|
#ifndef _FAPPLICATION_H
|
||||||
#define _FAPPLICATION_H
|
#define _FAPPLICATION_H
|
||||||
|
|
||||||
#include <linux/keyboard.h> // need for gpm keyboard modifiers
|
|
||||||
#include <sys/time.h> // need for gettimeofday
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
|
||||||
|
@ -62,7 +65,6 @@ class FApplication : public FWidget
|
||||||
static int loop_level;
|
static int loop_level;
|
||||||
static bool process_timer_event;
|
static bool process_timer_event;
|
||||||
static FPoint* zero_point;
|
static FPoint* zero_point;
|
||||||
int skipped_terminal_update;
|
|
||||||
int key;
|
int key;
|
||||||
char k_buf[1024];
|
char k_buf[1024];
|
||||||
char x11_mouse[4];
|
char x11_mouse[4];
|
||||||
|
@ -70,6 +72,7 @@ class FApplication : public FWidget
|
||||||
char urxvt_mouse[13];
|
char urxvt_mouse[13];
|
||||||
|
|
||||||
#ifdef F_HAVE_LIBGPM
|
#ifdef F_HAVE_LIBGPM
|
||||||
|
|
||||||
Gpm_Event gpm_ev;
|
Gpm_Event gpm_ev;
|
||||||
bool gpmMouseEvent;
|
bool gpmMouseEvent;
|
||||||
enum gpmEventType
|
enum gpmEventType
|
||||||
|
@ -78,6 +81,7 @@ class FApplication : public FWidget
|
||||||
keyboard_event = 1,
|
keyboard_event = 1,
|
||||||
mouse_event = 2
|
mouse_event = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum btn_state
|
enum btn_state
|
||||||
|
@ -138,14 +142,15 @@ class FApplication : public FWidget
|
||||||
bool parseUrxvtMouse();
|
bool parseUrxvtMouse();
|
||||||
|
|
||||||
#ifdef F_HAVE_LIBGPM
|
#ifdef F_HAVE_LIBGPM
|
||||||
|
|
||||||
int gpmEvent (bool = true);
|
int gpmEvent (bool = true);
|
||||||
bool processGpmEvent();
|
bool processGpmEvent();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void processMouseEvent();
|
void processMouseEvent();
|
||||||
void processResizeEvent();
|
void processResizeEvent();
|
||||||
int processTimerEvent();
|
int processTimerEvent();
|
||||||
void processTerminalUpdate();
|
|
||||||
void processCloseWidget();
|
void processCloseWidget();
|
||||||
bool processNextEvent();
|
bool processNextEvent();
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ void FButton::draw()
|
||||||
|
|
||||||
for (int y=1; y <= getHeight(); y++)
|
for (int y=1; y <= getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (1, y);
|
setPrintPos (1, y);
|
||||||
print (' '); // clear one left █
|
print (' '); // clear one left █
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ void FButton::draw()
|
||||||
|
|
||||||
for (int y=0; y < getHeight(); y++)
|
for (int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (1+d, 1+y);
|
setPrintPos (1+d, 1+y);
|
||||||
print (space); // full block █
|
print (space); // full block █
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ void FButton::draw()
|
||||||
|
|
||||||
for (int y=0; y < getHeight(); y++)
|
for (int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (1+d, 1+y);
|
setPrintPos (1+d, 1+y);
|
||||||
|
|
||||||
// Cygwin terminal use IBM Codepage 850
|
// Cygwin terminal use IBM Codepage 850
|
||||||
if ( isCygwinTerminal() )
|
if ( isCygwinTerminal() )
|
||||||
|
@ -282,7 +282,7 @@ void FButton::draw()
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
|
||||||
printPos (1+getWidth(), y);
|
setPrintPos (1+getWidth(), y);
|
||||||
print (' '); // clear right
|
print (' '); // clear right
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
|
@ -301,7 +301,7 @@ void FButton::draw()
|
||||||
else
|
else
|
||||||
j=0;
|
j=0;
|
||||||
|
|
||||||
printPos (1+margin+d, 1+j);
|
setPrintPos (1+margin+d, 1+j);
|
||||||
setColor (button_fg, button_bg);
|
setColor (button_fg, button_bg);
|
||||||
|
|
||||||
for (x=0; x < i; x++)
|
for (x=0; x < i; x++)
|
||||||
|
@ -353,14 +353,14 @@ void FButton::draw()
|
||||||
{
|
{
|
||||||
for (i=0; i < j; i++)
|
for (i=0; i < j; i++)
|
||||||
{
|
{
|
||||||
printPos (2+d, 1+i);
|
setPrintPos (2+d, 1+i);
|
||||||
|
|
||||||
for (int z=1; z < getWidth(); z++)
|
for (int z=1; z < getWidth(); z++)
|
||||||
print (space); // █
|
print (space); // █
|
||||||
}
|
}
|
||||||
for (i=j+1; i < getHeight(); i++)
|
for (i=j+1; i < getHeight(); i++)
|
||||||
{
|
{
|
||||||
printPos (2+d, 1+i);
|
setPrintPos (2+d, 1+i);
|
||||||
|
|
||||||
for (int z=1; z < getWidth(); z++)
|
for (int z=1; z < getWidth(); z++)
|
||||||
print (space); // █
|
print (space); // █
|
||||||
|
@ -525,7 +525,7 @@ void FButton::hide()
|
||||||
|
|
||||||
for (int y=0; y < getHeight()+s+(f << 1); y++)
|
for (int y=0; y < getHeight()+s+(f << 1); y++)
|
||||||
{
|
{
|
||||||
printPos (1-f, 1+y-f);
|
setPrintPos (1-f, 1+y-f);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -252,9 +252,9 @@ void FButtonGroup::drawLabel()
|
||||||
length--;
|
length--;
|
||||||
|
|
||||||
if ( border )
|
if ( border )
|
||||||
printPos (2, 1);
|
setPrintPos (2, 1);
|
||||||
else
|
else
|
||||||
printPos (0, 1);
|
setPrintPos (0, 1);
|
||||||
|
|
||||||
if ( isEnabled() )
|
if ( isEnabled() )
|
||||||
setColor(wc.label_emphasis_fg, wc.label_bg);
|
setColor(wc.label_emphasis_fg, wc.label_bg);
|
||||||
|
@ -330,7 +330,7 @@ void FButtonGroup::hide()
|
||||||
|
|
||||||
for (int y=0; y < getHeight(); y++)
|
for (int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (1, 1+y);
|
setPrintPos (1, 1+y);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -53,7 +53,7 @@ void FCheckBox::drawCheckButton()
|
||||||
if ( ! isVisible() )
|
if ( ! isVisible() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
setColor();
|
setColor();
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -163,22 +163,22 @@ void FDialog::drawBorder()
|
||||||
{
|
{
|
||||||
for (int y=y1; y < y2; y++)
|
for (int y=y1; y < y2; y++)
|
||||||
{
|
{
|
||||||
printPos (x1, y);
|
setPrintPos (x1, y);
|
||||||
// border left ⎸
|
// border left ⎸
|
||||||
print (fc::NF_border_line_left);
|
print (fc::NF_border_line_left);
|
||||||
printPos (x2, y);
|
setPrintPos (x2, y);
|
||||||
// border right⎹
|
// border right⎹
|
||||||
print (fc::NF_rev_border_line_right);
|
print (fc::NF_rev_border_line_right);
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x1, y2);
|
setPrintPos (x1, y2);
|
||||||
// lower left corner border ⎣
|
// lower left corner border ⎣
|
||||||
print (fc::NF_border_corner_lower_left);
|
print (fc::NF_border_corner_lower_left);
|
||||||
|
|
||||||
for (int x=1; x < getWidth()-1; x++) // low line _
|
for (int x=1; x < getWidth()-1; x++) // low line _
|
||||||
print (fc::NF_border_line_bottom);
|
print (fc::NF_border_line_bottom);
|
||||||
|
|
||||||
printPos (x2, y2);
|
setPrintPos (x2, y2);
|
||||||
// lower right corner border ⎦
|
// lower right corner border ⎦
|
||||||
print (fc::NF_rev_border_corner_lower_right);
|
print (fc::NF_rev_border_corner_lower_right);
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ void FDialog::drawTitleBar()
|
||||||
const int menu_btn = 3;
|
const int menu_btn = 3;
|
||||||
|
|
||||||
// draw the title button
|
// draw the title button
|
||||||
printPos (1, 1);
|
setPrintPos (1, 1);
|
||||||
|
|
||||||
if ( dialog_menu && dialog_menu->isVisible() )
|
if ( dialog_menu && dialog_menu->isVisible() )
|
||||||
setColor (wc.titlebar_button_focus_fg, wc.titlebar_button_focus_bg);
|
setColor (wc.titlebar_button_focus_fg, wc.titlebar_button_focus_bg);
|
||||||
|
@ -204,7 +204,7 @@ void FDialog::drawTitleBar()
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
{
|
{
|
||||||
if ( isActiveWindow() )
|
if ( isWindowActive() )
|
||||||
setReverse(false);
|
setReverse(false);
|
||||||
else
|
else
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
@ -244,7 +244,7 @@ void FDialog::drawTitleBar()
|
||||||
if ( getMaxColor() < 16 )
|
if ( getMaxColor() < 16 )
|
||||||
setBold();
|
setBold();
|
||||||
|
|
||||||
if ( isActiveWindow() || (dialog_menu && dialog_menu->isVisible()) )
|
if ( isWindowActive() || (dialog_menu && dialog_menu->isVisible()) )
|
||||||
setColor (wc.titlebar_active_fg, wc.titlebar_active_bg);
|
setColor (wc.titlebar_active_fg, wc.titlebar_active_bg);
|
||||||
else
|
else
|
||||||
setColor (wc.titlebar_inactive_fg, wc.titlebar_inactive_bg);
|
setColor (wc.titlebar_inactive_fg, wc.titlebar_inactive_bg);
|
||||||
|
@ -352,7 +352,7 @@ void FDialog::drawTitleBar()
|
||||||
setReverse(false);
|
setReverse(false);
|
||||||
|
|
||||||
/* print the number of window in stack */
|
/* print the number of window in stack */
|
||||||
//printPos (getWidth()-2, 1);
|
//setPrintPos (getWidth()-2, 1);
|
||||||
//printf ("(%d)", getWindowLayer(this));
|
//printf ("(%d)", getWindowLayer(this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -538,7 +538,7 @@ void FDialog::drawDialogShadow()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
drawShadow();
|
drawShadow();
|
||||||
printPos (1, 1+getHeight());
|
setPrintPos (1, 1+getHeight());
|
||||||
setTransparent();
|
setTransparent();
|
||||||
print(' ');
|
print(' ');
|
||||||
unsetTransparent();
|
unsetTransparent();
|
||||||
|
@ -757,7 +757,7 @@ void FDialog::onMouseDown (FMouseEvent* ev)
|
||||||
|
|
||||||
has_raised = raiseWindow();
|
has_raised = raiseWindow();
|
||||||
|
|
||||||
if ( ! isActiveWindow() )
|
if ( ! isWindowActive() )
|
||||||
activateDialog();
|
activateDialog();
|
||||||
|
|
||||||
if ( has_raised )
|
if ( has_raised )
|
||||||
|
@ -815,7 +815,7 @@ void FDialog::onMouseDown (FMouseEvent* ev)
|
||||||
// click on titlebar: just activate
|
// click on titlebar: just activate
|
||||||
if ( mouse_x >= 4 && mouse_x <= getWidth() && mouse_y == 1 )
|
if ( mouse_x >= 4 && mouse_x <= getWidth() && mouse_y == 1 )
|
||||||
{
|
{
|
||||||
if ( ! isActiveWindow() )
|
if ( ! isWindowActive() )
|
||||||
activateDialog();
|
activateDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -827,7 +827,7 @@ void FDialog::onMouseDown (FMouseEvent* ev)
|
||||||
{
|
{
|
||||||
bool has_lowered = lowerWindow();
|
bool has_lowered = lowerWindow();
|
||||||
|
|
||||||
if ( ! isActiveWindow() )
|
if ( ! isWindowActive() )
|
||||||
activateDialog();
|
activateDialog();
|
||||||
else if ( has_lowered )
|
else if ( has_lowered )
|
||||||
updateTerminal();
|
updateTerminal();
|
||||||
|
@ -1077,7 +1077,7 @@ void FDialog::onMouseDoubleClick (FMouseEvent* ev)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FDialog::onAccel (FAccelEvent*)
|
void FDialog::onAccel (FAccelEvent*)
|
||||||
{
|
{
|
||||||
if ( ! (isHiddenWindow() || isActiveWindow()) )
|
if ( ! (isWindowHidden() || isWindowActive()) )
|
||||||
{
|
{
|
||||||
bool has_raised = raiseWindow();
|
bool has_raised = raiseWindow();
|
||||||
activateDialog();
|
activateDialog();
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
81
src/fenum.h
81
src/fenum.h
|
@ -967,6 +967,87 @@ class fc
|
||||||
CurlyBrackets = 3, // { }
|
CurlyBrackets = 3, // { }
|
||||||
AngleBrackets = 4 // < >
|
AngleBrackets = 4 // < >
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum termcaps
|
||||||
|
{
|
||||||
|
t_bell,
|
||||||
|
t_clear_screen,
|
||||||
|
t_cursor_home,
|
||||||
|
t_cursor_to_ll,
|
||||||
|
t_carriage_return,
|
||||||
|
t_tab,
|
||||||
|
t_back_tab,
|
||||||
|
t_insert_padding,
|
||||||
|
t_insert_character,
|
||||||
|
t_parm_ich,
|
||||||
|
t_initialize_color,
|
||||||
|
t_initialize_pair,
|
||||||
|
t_set_a_foreground,
|
||||||
|
t_set_a_background,
|
||||||
|
t_set_foreground,
|
||||||
|
t_set_background,
|
||||||
|
t_set_color_pair,
|
||||||
|
t_orig_pair,
|
||||||
|
t_orig_colors,
|
||||||
|
t_no_color_video,
|
||||||
|
t_cursor_address,
|
||||||
|
t_column_address,
|
||||||
|
t_row_address,
|
||||||
|
t_cursor_visible,
|
||||||
|
t_cursor_invisible,
|
||||||
|
t_cursor_normal,
|
||||||
|
t_cursor_up,
|
||||||
|
t_cursor_down,
|
||||||
|
t_cursor_left,
|
||||||
|
t_cursor_right,
|
||||||
|
t_parm_up_cursor,
|
||||||
|
t_parm_down_cursor,
|
||||||
|
t_parm_left_cursor,
|
||||||
|
t_parm_right_cursor,
|
||||||
|
t_save_cursor,
|
||||||
|
t_restore_cursor,
|
||||||
|
t_scroll_forward,
|
||||||
|
t_scroll_reverse,
|
||||||
|
t_enter_ca_mode,
|
||||||
|
t_exit_ca_mode,
|
||||||
|
t_enable_acs,
|
||||||
|
t_enter_bold_mode,
|
||||||
|
t_exit_bold_mode,
|
||||||
|
t_enter_dim_mode,
|
||||||
|
t_exit_dim_mode,
|
||||||
|
t_enter_italics_mode,
|
||||||
|
t_exit_italics_mode,
|
||||||
|
t_enter_underline_mode,
|
||||||
|
t_exit_underline_mode,
|
||||||
|
t_enter_blink_mode,
|
||||||
|
t_exit_blink_mode,
|
||||||
|
t_enter_reverse_mode,
|
||||||
|
t_exit_reverse_mode,
|
||||||
|
t_enter_standout_mode,
|
||||||
|
t_exit_standout_mode,
|
||||||
|
t_enter_secure_mode,
|
||||||
|
t_exit_secure_mode,
|
||||||
|
t_enter_protected_mode,
|
||||||
|
t_exit_protected_mode,
|
||||||
|
t_enter_crossed_out_mode,
|
||||||
|
t_exit_crossed_out_mode,
|
||||||
|
t_enter_dbl_underline_mode,
|
||||||
|
t_exit_dbl_underline_mode,
|
||||||
|
t_set_attributes,
|
||||||
|
t_exit_attribute_mode,
|
||||||
|
t_enter_alt_charset_mode,
|
||||||
|
t_exit_alt_charset_mode,
|
||||||
|
t_enter_pc_charset_mode,
|
||||||
|
t_exit_pc_charset_mode,
|
||||||
|
t_enter_insert_mode,
|
||||||
|
t_exit_insert_mode,
|
||||||
|
t_enter_am_mode,
|
||||||
|
t_exit_am_mode,
|
||||||
|
t_acs_chars,
|
||||||
|
t_keypad_xmit,
|
||||||
|
t_keypad_local,
|
||||||
|
t_key_mouse
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -284,7 +284,7 @@ void FLabel::draw()
|
||||||
else
|
else
|
||||||
std::wcsncpy(dest, src, length);
|
std::wcsncpy(dest, src, length);
|
||||||
|
|
||||||
printPos (1, 1+int(y));
|
setPrintPos (1, 1+int(y));
|
||||||
|
|
||||||
if ( hotkeypos != -1 )
|
if ( hotkeypos != -1 )
|
||||||
{
|
{
|
||||||
|
@ -314,7 +314,7 @@ void FLabel::draw()
|
||||||
if ( hotkeypos != -1 )
|
if ( hotkeypos != -1 )
|
||||||
length--;
|
length--;
|
||||||
|
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
xoffset = getXOffset (int(length));
|
xoffset = getXOffset (int(length));
|
||||||
printLine (LabelText, length, hotkeypos, xoffset);
|
printLine (LabelText, length, hotkeypos, xoffset);
|
||||||
delete[] LabelText;
|
delete[] LabelText;
|
||||||
|
@ -363,7 +363,7 @@ void FLabel::hide()
|
||||||
blank = new char[size+1];
|
blank = new char[size+1];
|
||||||
std::memset(blank, ' ', uLong(size));
|
std::memset(blank, ' ', uLong(size));
|
||||||
blank[getWidth()] = '\0';
|
blank[getWidth()] = '\0';
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
print (blank);
|
print (blank);
|
||||||
delete[] blank;
|
delete[] blank;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -53,7 +53,7 @@ FLineEdit::~FLineEdit() // destructor
|
||||||
{
|
{
|
||||||
setXTermCursorStyle(fc::blinking_underline);
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
setKDECursor(fc::UnderlineCursor);
|
setKDECursor(fc::UnderlineCursor);
|
||||||
setConsoleCursor(fc::underscore_cursor);
|
setConsoleCursor(fc::underscore_cursor, isCursorHidden());
|
||||||
|
|
||||||
if ( isUrxvtTerminal() )
|
if ( isUrxvtTerminal() )
|
||||||
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
||||||
|
@ -134,7 +134,7 @@ void FLineEdit::drawInputField()
|
||||||
isShadow = ((flags & fc::shadow) != 0 );
|
isShadow = ((flags & fc::shadow) != 0 );
|
||||||
|
|
||||||
updateVTerm(false);
|
updateVTerm(false);
|
||||||
printPos (1, 1);
|
setPrintPos (1, 1);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
{
|
{
|
||||||
|
@ -310,7 +310,7 @@ void FLineEdit::hide()
|
||||||
|
|
||||||
for (int y=0; y < getHeight()+s; y++)
|
for (int y=0; y < getHeight()+s; y++)
|
||||||
{
|
{
|
||||||
printPos (1, 1+y);
|
setPrintPos (1, 1+y);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -490,7 +490,7 @@ void FLineEdit::onKeyPress (FKeyEvent* ev)
|
||||||
{
|
{
|
||||||
setXTermCursorStyle(fc::blinking_underline);
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
setKDECursor(fc::UnderlineCursor);
|
setKDECursor(fc::UnderlineCursor);
|
||||||
setConsoleCursor(fc::underscore_cursor);
|
setConsoleCursor(fc::underscore_cursor, isCursorHidden());
|
||||||
|
|
||||||
if ( isUrxvtTerminal() )
|
if ( isUrxvtTerminal() )
|
||||||
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
||||||
|
@ -499,7 +499,7 @@ void FLineEdit::onKeyPress (FKeyEvent* ev)
|
||||||
{
|
{
|
||||||
setXTermCursorStyle(fc::steady_block);
|
setXTermCursorStyle(fc::steady_block);
|
||||||
setKDECursor(fc::BlockCursor);
|
setKDECursor(fc::BlockCursor);
|
||||||
setConsoleCursor(fc::full_block_cursor);
|
setConsoleCursor(fc::full_block_cursor, isCursorHidden());
|
||||||
|
|
||||||
if ( isUrxvtTerminal() )
|
if ( isUrxvtTerminal() )
|
||||||
setXTermCursorColor("rgb:eeee/0000/0000");
|
setXTermCursorColor("rgb:eeee/0000/0000");
|
||||||
|
@ -769,7 +769,7 @@ void FLineEdit::onHide (FHideEvent*)
|
||||||
{
|
{
|
||||||
setXTermCursorStyle(fc::blinking_underline);
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
setKDECursor(fc::UnderlineCursor);
|
setKDECursor(fc::UnderlineCursor);
|
||||||
setConsoleCursor(fc::underscore_cursor);
|
setConsoleCursor(fc::underscore_cursor, isCursorHidden());
|
||||||
if ( isUrxvtTerminal() )
|
if ( isUrxvtTerminal() )
|
||||||
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
||||||
}
|
}
|
||||||
|
@ -782,7 +782,7 @@ void FLineEdit::onFocusIn (FFocusEvent*)
|
||||||
{
|
{
|
||||||
setXTermCursorStyle(fc::blinking_underline);
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
setKDECursor(fc::UnderlineCursor);
|
setKDECursor(fc::UnderlineCursor);
|
||||||
setConsoleCursor(fc::underscore_cursor);
|
setConsoleCursor(fc::underscore_cursor, isCursorHidden());
|
||||||
if ( isUrxvtTerminal() )
|
if ( isUrxvtTerminal() )
|
||||||
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
||||||
}
|
}
|
||||||
|
@ -790,7 +790,7 @@ void FLineEdit::onFocusIn (FFocusEvent*)
|
||||||
{
|
{
|
||||||
setXTermCursorStyle(fc::steady_block);
|
setXTermCursorStyle(fc::steady_block);
|
||||||
setKDECursor(fc::BlockCursor);
|
setKDECursor(fc::BlockCursor);
|
||||||
setConsoleCursor(fc::full_block_cursor);
|
setConsoleCursor(fc::full_block_cursor, isCursorHidden());
|
||||||
if ( isUrxvtTerminal() )
|
if ( isUrxvtTerminal() )
|
||||||
setXTermCursorColor("rgb:0000/0000/0000");
|
setXTermCursorColor("rgb:0000/0000/0000");
|
||||||
}
|
}
|
||||||
|
@ -816,7 +816,7 @@ void FLineEdit::onFocusOut (FFocusEvent*)
|
||||||
{
|
{
|
||||||
setXTermCursorStyle(fc::blinking_underline);
|
setXTermCursorStyle(fc::blinking_underline);
|
||||||
setKDECursor(fc::UnderlineCursor);
|
setKDECursor(fc::UnderlineCursor);
|
||||||
setConsoleCursor(fc::underscore_cursor);
|
setConsoleCursor(fc::underscore_cursor, isCursorHidden());
|
||||||
|
|
||||||
if ( isUrxvtTerminal() )
|
if ( isUrxvtTerminal() )
|
||||||
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
setXTermCursorColor("rgb:ffff/ffff/ffff");
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -151,7 +151,7 @@ void FListBox::draw()
|
||||||
|
|
||||||
for (int y=2; y < getHeight(); y++)
|
for (int y=2; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (getWidth(),y);
|
setPrintPos (getWidth(),y);
|
||||||
print (' '); // clear right side of the scrollbar
|
print (' '); // clear right side of the scrollbar
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,7 +196,7 @@ void FListBox::drawLabel()
|
||||||
|
|
||||||
txt = " " + text + " ";
|
txt = " " + text + " ";
|
||||||
length = txt.getLength();
|
length = txt.getLength();
|
||||||
printPos (2, 1);
|
setPrintPos (2, 1);
|
||||||
|
|
||||||
if ( isEnabled() )
|
if ( isEnabled() )
|
||||||
setColor(wc.label_emphasis_fg, wc.label_bg);
|
setColor(wc.label_emphasis_fg, wc.label_bg);
|
||||||
|
@ -246,7 +246,7 @@ void FListBox::drawList()
|
||||||
|
|
||||||
for (uInt y=start; y < end; y++)
|
for (uInt y=start; y < end; y++)
|
||||||
{
|
{
|
||||||
printPos (2, 2 + int(y));
|
setPrintPos (2, 2 + int(y));
|
||||||
bool serach_mark = false;
|
bool serach_mark = false;
|
||||||
bool lineHasBrackets = hasBrackets(int(y) + yoffset + 1);
|
bool lineHasBrackets = hasBrackets(int(y) + yoffset + 1);
|
||||||
bool isLineSelected = isSelected(int(y) + yoffset + 1);
|
bool isLineSelected = isSelected(int(y) + yoffset + 1);
|
||||||
|
@ -599,7 +599,7 @@ void FListBox::hide()
|
||||||
|
|
||||||
for (int y=0; y < getHeight(); y++)
|
for (int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (1, 1 + y);
|
setPrintPos (1, 1 + y);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1792,7 +1792,7 @@ void FListBox::clear()
|
||||||
|
|
||||||
for (int y=0; y < getHeight()-2; y++)
|
for (int y=0; y < getHeight()-2; y++)
|
||||||
{
|
{
|
||||||
printPos (2, 2 + y);
|
setPrintPos (2, 2 + y);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -594,6 +594,12 @@ void FMenu::drawItems()
|
||||||
c = 1;
|
c = 1;
|
||||||
|
|
||||||
while ( iter != end )
|
while ( iter != end )
|
||||||
|
{
|
||||||
|
if ( (*iter)->isSeparator() )
|
||||||
|
{
|
||||||
|
drawSeparator(y);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
wchar_t* src;
|
wchar_t* src;
|
||||||
wchar_t* dest;
|
wchar_t* dest;
|
||||||
|
@ -609,14 +615,7 @@ void FMenu::drawItems()
|
||||||
bool is_radio_btn = (*iter)->radio_button;
|
bool is_radio_btn = (*iter)->radio_button;
|
||||||
bool is_selected = (*iter)->isSelected();
|
bool is_selected = (*iter)->isSelected();
|
||||||
bool is_noUnderline = (((*iter)->getFlags() & fc::no_underline) != 0);
|
bool is_noUnderline = (((*iter)->getFlags() & fc::no_underline) != 0);
|
||||||
bool is_separator = (*iter)->isSeparator();
|
|
||||||
|
|
||||||
if ( is_separator )
|
|
||||||
{
|
|
||||||
drawSeparator(y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( is_enabled )
|
if ( is_enabled )
|
||||||
{
|
{
|
||||||
if ( is_selected )
|
if ( is_selected )
|
||||||
|
@ -645,7 +644,7 @@ void FMenu::drawItems()
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (2, 2 + y);
|
setPrintPos (2, 2 + y);
|
||||||
setColor();
|
setColor();
|
||||||
|
|
||||||
if ( has_checkable_items )
|
if ( has_checkable_items )
|
||||||
|
@ -799,7 +798,7 @@ void FMenu::drawItems()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FMenu::drawSeparator(int y)
|
inline void FMenu::drawSeparator(int y)
|
||||||
{
|
{
|
||||||
printPos (1, 2 + y);
|
setPrintPos (1, 2 + y);
|
||||||
setColor (wc.menu_active_fg, wc.menu_active_bg);
|
setColor (wc.menu_active_fg, wc.menu_active_bg);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
|
@ -1001,7 +1000,7 @@ void FMenu::onMouseDown (FMouseEvent* ev)
|
||||||
if ( mouse_down )
|
if ( mouse_down )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( ! isActiveWindow() )
|
if ( ! isWindowActive() )
|
||||||
setActiveWindow(this);
|
setActiveWindow(this);
|
||||||
|
|
||||||
mouse_down = true;
|
mouse_down = true;
|
||||||
|
@ -1190,7 +1189,7 @@ void FMenu::onMouseMove (FMouseEvent* ev)
|
||||||
if ( ev->getButton() != fc::LeftButton )
|
if ( ev->getButton() != fc::LeftButton )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( ! isActiveWindow() )
|
if ( ! isWindowActive() )
|
||||||
setActiveWindow(this);
|
setActiveWindow(this);
|
||||||
|
|
||||||
if ( mouse_down && ! item_list.empty() )
|
if ( mouse_down && ! item_list.empty() )
|
||||||
|
|
|
@ -8,8 +8,13 @@
|
||||||
// ▕ FObject ▏ ▕ FTerm ▏
|
// ▕ FObject ▏ ▕ FTerm ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏ ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏ ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
// ▲ ▲
|
// ▲ ▲
|
||||||
// │ │ *▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏
|
// │ │
|
||||||
// └─────┬─────┘ ┌ - -▕ FRadioMenuItem ▏
|
// └─────┬─────┘
|
||||||
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏ *▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▲ ┌ - -▕ FRadioMenuItem ▏
|
||||||
// │ : ▕▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▏
|
// │ : ▕▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▏
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏ :
|
// ▕▔▔▔▔▔▔▔▔▔▏ :
|
||||||
// ▕ FWidget ▏ : *▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏
|
// ▕ FWidget ▏ : *▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▏
|
||||||
|
|
|
@ -314,7 +314,7 @@ void FMenuBar::drawItems()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
updateVTerm(false);
|
updateVTerm(false);
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
@ -424,12 +424,12 @@ void FMenuBar::drawItems()
|
||||||
{
|
{
|
||||||
if ( startpos < screenWidth )
|
if ( startpos < screenWidth )
|
||||||
{
|
{
|
||||||
printPos (screenWidth - 1, 1);
|
setPrintPos (screenWidth - 1, 1);
|
||||||
print ("..");
|
print ("..");
|
||||||
}
|
}
|
||||||
else if ( startpos-1 <= screenWidth )
|
else if ( startpos-1 <= screenWidth )
|
||||||
{
|
{
|
||||||
printPos (screenWidth, 1);
|
setPrintPos (screenWidth, 1);
|
||||||
print (' ');
|
print (' ');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -596,7 +596,7 @@ void FMenuBar::onMouseDown (FMouseEvent* ev)
|
||||||
|
|
||||||
mouse_down = true;
|
mouse_down = true;
|
||||||
|
|
||||||
if ( ! isActiveWindow() )
|
if ( ! isWindowActive() )
|
||||||
setActiveWindow(this);
|
setActiveWindow(this);
|
||||||
|
|
||||||
if ( ! item_list.empty() )
|
if ( ! item_list.empty() )
|
||||||
|
@ -769,7 +769,7 @@ void FMenuBar::onMouseMove (FMouseEvent* ev)
|
||||||
if ( ev->getButton() != fc::LeftButton )
|
if ( ev->getButton() != fc::LeftButton )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( ! isActiveWindow() )
|
if ( ! isWindowActive() )
|
||||||
setActiveWindow(this);
|
setActiveWindow(this);
|
||||||
|
|
||||||
if ( mouse_down && ! item_list.empty() )
|
if ( mouse_down && ! item_list.empty() )
|
||||||
|
@ -911,7 +911,7 @@ void FMenuBar::hide()
|
||||||
blank = new char[screenWidth+1];
|
blank = new char[screenWidth+1];
|
||||||
std::memset(blank, ' ', uLong(screenWidth));
|
std::memset(blank, ' ', uLong(screenWidth));
|
||||||
blank[screenWidth] = '\0';
|
blank[screenWidth] = '\0';
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
print (blank);
|
print (blank);
|
||||||
delete[] blank;
|
delete[] blank;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -853,9 +853,10 @@ void FMenuItem::openMenu()
|
||||||
FMenu* dd_menu; // Drop-down menu
|
FMenu* dd_menu; // Drop-down menu
|
||||||
FMenu* open_menu;
|
FMenu* open_menu;
|
||||||
|
|
||||||
if ( hasMenu() )
|
if ( ! hasMenu() )
|
||||||
{
|
return;
|
||||||
dd_menu = getMenu();
|
|
||||||
|
dd_menu = getMenu(); // Drop-down menu
|
||||||
|
|
||||||
if ( dd_menu->isVisible() )
|
if ( dd_menu->isVisible() )
|
||||||
return;
|
return;
|
||||||
|
@ -878,7 +879,6 @@ void FMenuItem::openMenu()
|
||||||
dd_menu->redraw();
|
dd_menu->redraw();
|
||||||
updateTerminal();
|
updateTerminal();
|
||||||
flush_out();
|
flush_out();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -245,7 +245,7 @@ void FMessageBox::draw()
|
||||||
if ( center_text ) // center one line
|
if ( center_text ) // center one line
|
||||||
center_x = int((max_line_width - headline_length) / 2);
|
center_x = int((max_line_width - headline_length) / 2);
|
||||||
|
|
||||||
printPos (1 + msg_x + center_x, 4);
|
setPrintPos (1 + msg_x + center_x, 4);
|
||||||
print (headline_text);
|
print (headline_text);
|
||||||
head_offset = 2;
|
head_offset = 2;
|
||||||
}
|
}
|
||||||
|
@ -259,7 +259,7 @@ void FMessageBox::draw()
|
||||||
if ( center_text ) // center one line
|
if ( center_text ) // center one line
|
||||||
center_x = int((max_line_width - line_length) / 2);
|
center_x = int((max_line_width - line_length) / 2);
|
||||||
|
|
||||||
printPos (1 + msg_x + center_x, 4 + head_offset + i);
|
setPrintPos (1 + msg_x + center_x, 4 + head_offset + i);
|
||||||
print(text_components[i]);
|
print(text_components[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -562,7 +562,7 @@ inline bool FOptiMove::isWideMove ( int xold, int yold
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
char* FOptiMove::cursor_move (int xold, int yold, int xnew, int ynew)
|
char* FOptiMove::moveCursor (int xold, int yold, int xnew, int ynew)
|
||||||
{
|
{
|
||||||
char null_result[sizeof(move_buf)];
|
char null_result[sizeof(move_buf)];
|
||||||
char* null_ptr = null_result;
|
char* null_ptr = null_result;
|
||||||
|
|
|
@ -112,7 +112,7 @@ class FOptiMove
|
||||||
void set_auto_left_margin (bool&);
|
void set_auto_left_margin (bool&);
|
||||||
void set_eat_newline_glitch (bool&);
|
void set_eat_newline_glitch (bool&);
|
||||||
|
|
||||||
char* cursor_move (int, int, int, int);
|
char* moveCursor (int, int, int, int);
|
||||||
void printDurations();
|
void printDurations();
|
||||||
};
|
};
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
|
@ -37,7 +37,7 @@ void FProgressbar::drawPercentage()
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
|
||||||
printPos (getWidth() - 3, 0);
|
setPrintPos (getWidth() - 3, 0);
|
||||||
|
|
||||||
if ( percentage < 0 || percentage > 100 )
|
if ( percentage < 0 || percentage > 100 )
|
||||||
print ("--- %");
|
print ("--- %");
|
||||||
|
@ -53,7 +53,7 @@ void FProgressbar::drawBar()
|
||||||
{
|
{
|
||||||
int i = 1;
|
int i = 1;
|
||||||
float length = float(bar_length * percentage) / 100;
|
float length = float(bar_length * percentage) / 100;
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
{
|
{
|
||||||
|
@ -206,12 +206,12 @@ void FProgressbar::hide()
|
||||||
|
|
||||||
for (int y=0; y < getHeight()+s; y++)
|
for (int y=0; y < getHeight()+s; y++)
|
||||||
{
|
{
|
||||||
printPos (1, 1 + y);
|
setPrintPos (1, 1 + y);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] blank;
|
delete[] blank;
|
||||||
printPos (getWidth() - 4, 0);
|
setPrintPos (getWidth() - 4, 0);
|
||||||
print (" "); // hide percentage
|
print (" "); // hide percentage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -54,7 +54,7 @@ void FRadioButton::drawRadioButton()
|
||||||
if ( ! isVisible() )
|
if ( ! isVisible() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
setColor();
|
setColor();
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -571,7 +571,7 @@ void FScrollbar::drawBar()
|
||||||
|
|
||||||
for (z=1; z <= slider_pos; z++)
|
for (z=1; z <= slider_pos; z++)
|
||||||
{
|
{
|
||||||
printPos (1, 1 + z);
|
setPrintPos (1, 1 + z);
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
print (fc::NF_border_line_left); // ⎸
|
print (fc::NF_border_line_left); // ⎸
|
||||||
|
@ -589,7 +589,7 @@ void FScrollbar::drawBar()
|
||||||
|
|
||||||
for (z=1; z <= slider_length; z++)
|
for (z=1; z <= slider_length; z++)
|
||||||
{
|
{
|
||||||
printPos (1, 1 + slider_pos + z);
|
setPrintPos (1, 1 + slider_pos + z);
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
print (' ');
|
print (' ');
|
||||||
|
@ -604,7 +604,7 @@ void FScrollbar::drawBar()
|
||||||
|
|
||||||
for (z=slider_pos+slider_length+1; z <= bar_length; z++)
|
for (z=slider_pos+slider_length+1; z <= bar_length; z++)
|
||||||
{
|
{
|
||||||
printPos (1, 1 + z);
|
setPrintPos (1, 1 + z);
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
print (fc::NF_border_line_left); // ⎸
|
print (fc::NF_border_line_left); // ⎸
|
||||||
|
@ -621,9 +621,9 @@ void FScrollbar::drawBar()
|
||||||
z = 0;
|
z = 0;
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
printPos (3 + z, 1);
|
setPrintPos (3 + z, 1);
|
||||||
else
|
else
|
||||||
printPos (2 + z, 1);
|
setPrintPos (2 + z, 1);
|
||||||
|
|
||||||
for (; z < slider_pos; z++)
|
for (; z < slider_pos; z++)
|
||||||
{
|
{
|
||||||
|
@ -678,13 +678,13 @@ void FScrollbar::drawButtons()
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
{
|
{
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
|
|
||||||
if ( bar_orientation == fc::vertical )
|
if ( bar_orientation == fc::vertical )
|
||||||
{
|
{
|
||||||
print (fc::NF_rev_up_arrow1);
|
print (fc::NF_rev_up_arrow1);
|
||||||
print (fc::NF_rev_up_arrow2);
|
print (fc::NF_rev_up_arrow2);
|
||||||
printPos (1, length);
|
setPrintPos (1, length);
|
||||||
print (fc::NF_rev_down_arrow1);
|
print (fc::NF_rev_down_arrow1);
|
||||||
print (fc::NF_rev_down_arrow2);
|
print (fc::NF_rev_down_arrow2);
|
||||||
}
|
}
|
||||||
|
@ -692,14 +692,14 @@ void FScrollbar::drawButtons()
|
||||||
{
|
{
|
||||||
print (fc::NF_rev_left_arrow1);
|
print (fc::NF_rev_left_arrow1);
|
||||||
print (fc::NF_rev_left_arrow2);
|
print (fc::NF_rev_left_arrow2);
|
||||||
printPos (length-1, 1);
|
setPrintPos (length-1, 1);
|
||||||
print (fc::NF_rev_right_arrow1);
|
print (fc::NF_rev_right_arrow1);
|
||||||
print (fc::NF_rev_right_arrow2);
|
print (fc::NF_rev_right_arrow2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
@ -711,7 +711,7 @@ void FScrollbar::drawButtons()
|
||||||
else
|
else
|
||||||
print (fc::BlackUpPointingTriangle); // ▲
|
print (fc::BlackUpPointingTriangle); // ▲
|
||||||
|
|
||||||
printPos (1, length);
|
setPrintPos (1, length);
|
||||||
|
|
||||||
if ( isCygwinTerminal() )
|
if ( isCygwinTerminal() )
|
||||||
print ('v');
|
print ('v');
|
||||||
|
@ -721,7 +721,7 @@ void FScrollbar::drawButtons()
|
||||||
else // horizontal
|
else // horizontal
|
||||||
{
|
{
|
||||||
print (fc::BlackLeftPointingPointer); // ◄
|
print (fc::BlackLeftPointingPointer); // ◄
|
||||||
printPos (length, 1);
|
setPrintPos (length, 1);
|
||||||
print (fc::BlackRightPointingPointer); // ►
|
print (fc::BlackRightPointingPointer); // ►
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -221,7 +221,7 @@ void FStatusBar::drawKeys()
|
||||||
}
|
}
|
||||||
|
|
||||||
updateVTerm(false);
|
updateVTerm(false);
|
||||||
printPos (1, 1);
|
setPrintPos (1, 1);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
@ -356,7 +356,7 @@ void FStatusBar::hide()
|
||||||
blank = new char[screenWidth+1];
|
blank = new char[screenWidth+1];
|
||||||
std::memset(blank, ' ', uLong(screenWidth));
|
std::memset(blank, ' ', uLong(screenWidth));
|
||||||
blank[screenWidth] = '\0';
|
blank[screenWidth] = '\0';
|
||||||
printPos (1, 1);
|
setPrintPos (1, 1);
|
||||||
print (blank);
|
print (blank);
|
||||||
delete[] blank;
|
delete[] blank;
|
||||||
}
|
}
|
||||||
|
@ -583,7 +583,7 @@ void FStatusBar::drawMessage()
|
||||||
|
|
||||||
updateVTerm(false);
|
updateVTerm(false);
|
||||||
setColor (wc.statusbar_fg, wc.statusbar_bg);
|
setColor (wc.statusbar_fg, wc.statusbar_bg);
|
||||||
printPos (x, 1);
|
setPrintPos (x, 1);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
|
|
@ -12,6 +12,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -54,7 +54,7 @@ void FSwitch::drawCheckButton()
|
||||||
|
|
||||||
wchar_t on[6] = L" On ";
|
wchar_t on[6] = L" On ";
|
||||||
wchar_t off[6] = L" Off ";
|
wchar_t off[6] = L" Off ";
|
||||||
printPos (1 + switch_offset_pos, 1);
|
setPrintPos (1 + switch_offset_pos, 1);
|
||||||
|
|
||||||
if ( checked )
|
if ( checked )
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -3,20 +3,9 @@
|
||||||
#ifndef _FTCAPMAP_H
|
#ifndef _FTCAPMAP_H
|
||||||
#define _FTCAPMAP_H
|
#define _FTCAPMAP_H
|
||||||
|
|
||||||
#pragma pack(push)
|
#include "ftermcap.h"
|
||||||
#pragma pack(1)
|
|
||||||
|
|
||||||
typedef struct
|
static FTermcap::tcap_map term_caps[] =
|
||||||
{
|
|
||||||
char* string;
|
|
||||||
char tname[3];
|
|
||||||
}
|
|
||||||
tcap_map;
|
|
||||||
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
|
|
||||||
static tcap_map tcap[] =
|
|
||||||
{
|
{
|
||||||
// .------------- term string
|
// .------------- term string
|
||||||
// | .-------- Tcap-code
|
// | .-------- Tcap-code
|
||||||
|
@ -115,85 +104,4 @@ static tcap_map tcap[] =
|
||||||
* "XX", "Us" and "Ue" are unofficial and they are only used here.
|
* "XX", "Us" and "Ue" are unofficial and they are only used here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum termcaps
|
|
||||||
{
|
|
||||||
t_bell,
|
|
||||||
t_clear_screen,
|
|
||||||
t_cursor_home,
|
|
||||||
t_cursor_to_ll,
|
|
||||||
t_carriage_return,
|
|
||||||
t_tab,
|
|
||||||
t_back_tab,
|
|
||||||
t_insert_padding,
|
|
||||||
t_insert_character,
|
|
||||||
t_parm_ich,
|
|
||||||
t_initialize_color,
|
|
||||||
t_initialize_pair,
|
|
||||||
t_set_a_foreground,
|
|
||||||
t_set_a_background,
|
|
||||||
t_set_foreground,
|
|
||||||
t_set_background,
|
|
||||||
t_set_color_pair,
|
|
||||||
t_orig_pair,
|
|
||||||
t_orig_colors,
|
|
||||||
t_no_color_video,
|
|
||||||
t_cursor_address,
|
|
||||||
t_column_address,
|
|
||||||
t_row_address,
|
|
||||||
t_cursor_visible,
|
|
||||||
t_cursor_invisible,
|
|
||||||
t_cursor_normal,
|
|
||||||
t_cursor_up,
|
|
||||||
t_cursor_down,
|
|
||||||
t_cursor_left,
|
|
||||||
t_cursor_right,
|
|
||||||
t_parm_up_cursor,
|
|
||||||
t_parm_down_cursor,
|
|
||||||
t_parm_left_cursor,
|
|
||||||
t_parm_right_cursor,
|
|
||||||
t_save_cursor,
|
|
||||||
t_restore_cursor,
|
|
||||||
t_scroll_forward,
|
|
||||||
t_scroll_reverse,
|
|
||||||
t_enter_ca_mode,
|
|
||||||
t_exit_ca_mode,
|
|
||||||
t_enable_acs,
|
|
||||||
t_enter_bold_mode,
|
|
||||||
t_exit_bold_mode,
|
|
||||||
t_enter_dim_mode,
|
|
||||||
t_exit_dim_mode,
|
|
||||||
t_enter_italics_mode,
|
|
||||||
t_exit_italics_mode,
|
|
||||||
t_enter_underline_mode,
|
|
||||||
t_exit_underline_mode,
|
|
||||||
t_enter_blink_mode,
|
|
||||||
t_exit_blink_mode,
|
|
||||||
t_enter_reverse_mode,
|
|
||||||
t_exit_reverse_mode,
|
|
||||||
t_enter_standout_mode,
|
|
||||||
t_exit_standout_mode,
|
|
||||||
t_enter_secure_mode,
|
|
||||||
t_exit_secure_mode,
|
|
||||||
t_enter_protected_mode,
|
|
||||||
t_exit_protected_mode,
|
|
||||||
t_enter_crossed_out_mode,
|
|
||||||
t_exit_crossed_out_mode,
|
|
||||||
t_enter_dbl_underline_mode,
|
|
||||||
t_exit_dbl_underline_mode,
|
|
||||||
t_set_attributes,
|
|
||||||
t_exit_attribute_mode,
|
|
||||||
t_enter_alt_charset_mode,
|
|
||||||
t_exit_alt_charset_mode,
|
|
||||||
t_enter_pc_charset_mode,
|
|
||||||
t_exit_pc_charset_mode,
|
|
||||||
t_enter_insert_mode,
|
|
||||||
t_exit_insert_mode,
|
|
||||||
t_enter_am_mode,
|
|
||||||
t_exit_am_mode,
|
|
||||||
t_acs_chars,
|
|
||||||
t_keypad_xmit,
|
|
||||||
t_keypad_local,
|
|
||||||
t_key_mouse
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // _FTCAPMAP_H
|
#endif // _FTCAPMAP_H
|
||||||
|
|
2433
src/fterm.cpp
2433
src/fterm.cpp
File diff suppressed because it is too large
Load Diff
229
src/fterm.h
229
src/fterm.h
|
@ -21,13 +21,8 @@
|
||||||
// : ▕▁▁▁▁▁▁▁▁▏
|
// : ▕▁▁▁▁▁▁▁▁▏
|
||||||
// :
|
// :
|
||||||
// : *▕▔▔▔▔▔▔▔▏
|
// : *▕▔▔▔▔▔▔▔▏
|
||||||
// :- - - -▕ FRect ▏
|
// └- - - -▕ FRect ▏
|
||||||
// : ▕▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▏
|
||||||
// :
|
|
||||||
// : *▕▔▔▔▔▔▔▔▔▔▏
|
|
||||||
// └- - - -▕ FWidget ▏
|
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef _FTERM_H
|
#ifndef _FTERM_H
|
||||||
#define _FTERM_H
|
#define _FTERM_H
|
||||||
|
@ -39,11 +34,12 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <linux/fb.h> // Linux framebuffer console
|
#include <linux/fb.h> // Linux framebuffer console
|
||||||
|
#include <linux/keyboard.h> // need for gpm keyboard modifiers
|
||||||
|
|
||||||
#include <sys/io.h>
|
#include <sys/io.h> // <asm/io.h> is deprecated, use <sys/io.h> instead
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/kd.h>
|
#include <sys/kd.h>
|
||||||
#include <sys/stat.h> // <asm/io.h> is deprecated, use <sys/io.h> instead
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <langinfo.h>
|
#include <langinfo.h>
|
||||||
|
@ -63,6 +59,7 @@
|
||||||
#include "fpoint.h"
|
#include "fpoint.h"
|
||||||
#include "frect.h"
|
#include "frect.h"
|
||||||
#include "fstring.h"
|
#include "fstring.h"
|
||||||
|
#include "ftermcap.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef F_HAVE_LIBGPM
|
#ifdef F_HAVE_LIBGPM
|
||||||
|
@ -88,11 +85,6 @@
|
||||||
// parseKeyString return value
|
// parseKeyString return value
|
||||||
#define NEED_MORE_DATA -1
|
#define NEED_MORE_DATA -1
|
||||||
|
|
||||||
// Buffer size for character output on the terminal
|
|
||||||
#define TERMINAL_OUTPUT_BUFFER_SIZE 32768
|
|
||||||
|
|
||||||
// class forward declaration
|
|
||||||
class FWidget;
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// class FTerm
|
// class FTerm
|
||||||
|
@ -104,16 +96,13 @@ class FWidget;
|
||||||
class FTerm
|
class FTerm
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
static std::queue<int>* output_buffer;
|
|
||||||
static std::map <uChar,uChar>* vt100_alt_char;
|
static std::map <uChar,uChar>* vt100_alt_char;
|
||||||
static std::map <std::string,fc::encoding>* encoding_set;
|
static std::map <std::string,fc::encoding>* encoding_set;
|
||||||
|
static FTermcap::tcap_map* tcap;
|
||||||
|
|
||||||
static bool hidden_cursor;
|
|
||||||
static bool mouse_support;
|
static bool mouse_support;
|
||||||
static bool raw_mode;
|
static bool raw_mode;
|
||||||
static bool input_data_pending;
|
static bool input_data_pending;
|
||||||
static bool terminal_update_pending;
|
|
||||||
static bool force_terminal_update;
|
|
||||||
static bool non_blocking_stdin;
|
static bool non_blocking_stdin;
|
||||||
static bool gpm_mouse_enabled;
|
static bool gpm_mouse_enabled;
|
||||||
static bool pc_charset_console;
|
static bool pc_charset_console;
|
||||||
|
@ -140,9 +129,6 @@ class FTerm
|
||||||
static bool linux_terminal;
|
static bool linux_terminal;
|
||||||
static bool screen_terminal;
|
static bool screen_terminal;
|
||||||
static bool tmux_terminal;
|
static bool tmux_terminal;
|
||||||
static bool terminal_updates;
|
|
||||||
static bool stop_terminal_updates;
|
|
||||||
static bool vterm_updates;
|
|
||||||
static bool background_color_erase;
|
static bool background_color_erase;
|
||||||
static bool automatic_left_margin;
|
static bool automatic_left_margin;
|
||||||
static bool automatic_right_margin;
|
static bool automatic_right_margin;
|
||||||
|
@ -155,9 +141,8 @@ class FTerm
|
||||||
static char* locale_xterm;
|
static char* locale_xterm;
|
||||||
static uChar x11_button_state;
|
static uChar x11_button_state;
|
||||||
static FRect* term; // current terminal geometry
|
static FRect* term; // current terminal geometry
|
||||||
static FPoint* term_pos; // terminal cursor position
|
|
||||||
static FPoint* mouse; // mouse click position
|
static FPoint* mouse; // mouse click position
|
||||||
static FPoint* cursor; // virtual print cursor
|
|
||||||
static int stdin_status_flags;
|
static int stdin_status_flags;
|
||||||
static int stdin_no;
|
static int stdin_no;
|
||||||
static int stdout_no;
|
static int stdout_no;
|
||||||
|
@ -168,8 +153,6 @@ class FTerm
|
||||||
static char exit_message[8192];
|
static char exit_message[8192];
|
||||||
|
|
||||||
static struct termios term_init;
|
static struct termios term_init;
|
||||||
static FOptiAttr::char_data term_attribute;
|
|
||||||
static FOptiAttr::char_data next_attribute;
|
|
||||||
|
|
||||||
static fc::consoleCursorStyle console_cursor_style;
|
static fc::consoleCursorStyle console_cursor_style;
|
||||||
static struct console_font_op screen_font;
|
static struct console_font_op screen_font;
|
||||||
|
@ -203,19 +186,6 @@ class FTerm
|
||||||
uChar : 4; // padding bits
|
uChar : 4; // padding bits
|
||||||
} mod_key;
|
} mod_key;
|
||||||
|
|
||||||
enum covered_state
|
|
||||||
{
|
|
||||||
non_covered,
|
|
||||||
half_covered,
|
|
||||||
fully_covered
|
|
||||||
};
|
|
||||||
|
|
||||||
enum character_type
|
|
||||||
{
|
|
||||||
overlapped_character,
|
|
||||||
covered_character
|
|
||||||
};
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static bool NewFont;
|
static bool NewFont;
|
||||||
static bool VGAFont;
|
static bool VGAFont;
|
||||||
|
@ -224,34 +194,6 @@ class FTerm
|
||||||
static uInt attr_without_color;
|
static uInt attr_without_color;
|
||||||
static fc::encoding Encoding;
|
static fc::encoding Encoding;
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uInt xmin;
|
|
||||||
uInt xmax;
|
|
||||||
uInt trans_count;
|
|
||||||
} line_changes;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
int right_shadow;
|
|
||||||
int bottom_shadow;
|
|
||||||
int input_cursor_x;
|
|
||||||
int input_cursor_y;
|
|
||||||
int input_cursor_visible;
|
|
||||||
FWidget* widget;
|
|
||||||
line_changes* changes;
|
|
||||||
FOptiAttr::char_data* text;
|
|
||||||
bool visible;
|
|
||||||
} term_area;
|
|
||||||
|
|
||||||
static term_area* vterm; // virtual terminal
|
|
||||||
static term_area* vdesktop; // virtual desktop
|
|
||||||
static term_area* last_area; // last used area
|
|
||||||
static term_area* active_area; // active area
|
|
||||||
term_area* vwin; // virtual window
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Disable copy constructor
|
// Disable copy constructor
|
||||||
FTerm (const FTerm&);
|
FTerm (const FTerm&);
|
||||||
|
@ -269,7 +211,7 @@ class FTerm
|
||||||
static int setScreenFont (uChar*, uInt, uInt, uInt, bool = false);
|
static int setScreenFont (uChar*, uInt, uInt, uInt, bool = false);
|
||||||
static int setUnicodeMap (struct unimapdesc*);
|
static int setUnicodeMap (struct unimapdesc*);
|
||||||
static int getUnicodeMap ();
|
static int getUnicodeMap ();
|
||||||
static int setLightBackgroundColors (bool);
|
static int setBlinkAsIntensity (bool);
|
||||||
static void init_console();
|
static void init_console();
|
||||||
static uInt getBaudRate (const struct termios*);
|
static uInt getBaudRate (const struct termios*);
|
||||||
static void init_consoleCharMap();
|
static void init_consoleCharMap();
|
||||||
|
@ -288,42 +230,14 @@ class FTerm
|
||||||
static uInt charEncode (uInt, fc::encoding);
|
static uInt charEncode (uInt, fc::encoding);
|
||||||
static uInt cp437_to_unicode (uChar);
|
static uInt cp437_to_unicode (uChar);
|
||||||
static void signal_handler (int);
|
static void signal_handler (int);
|
||||||
|
|
||||||
// Friend classes
|
// Friend classes
|
||||||
friend class FWidget;
|
friend class FWidget;
|
||||||
|
friend class FVTerm;
|
||||||
friend class FApplication;
|
friend class FApplication;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static bool charEncodable (uInt);
|
static bool charEncodable (uInt);
|
||||||
void createArea (const FRect&, const FPoint&, FTerm::term_area*&);
|
|
||||||
void createArea (int, int, int, int, FTerm::term_area*&);
|
|
||||||
static void resizeArea (const FRect&, const FPoint&, FTerm::term_area*);
|
|
||||||
static void resizeArea (int, int, int, int, FTerm::term_area*);
|
|
||||||
static void removeArea (FTerm::term_area*&);
|
|
||||||
static void restoreVTerm (const FRect&);
|
|
||||||
static void restoreVTerm (int, int, int, int);
|
|
||||||
static FTerm::covered_state isCovered (const FPoint&, FTerm::term_area*);
|
|
||||||
static FTerm::covered_state isCovered (int, int, FTerm::term_area*);
|
|
||||||
static void updateVTerm (bool);
|
|
||||||
static void updateVTerm (FTerm::term_area*);
|
|
||||||
static bool updateVTermCursor (FTerm::term_area*);
|
|
||||||
static bool isInsideArea (int, int, FTerm::term_area*);
|
|
||||||
static void setAreaCursor (const FPoint&, bool, FTerm::term_area*);
|
|
||||||
static void setAreaCursor (int, int, bool, FTerm::term_area*);
|
|
||||||
static void getArea (const FPoint&, FTerm::term_area*);
|
|
||||||
static void getArea (int, int, FTerm::term_area*);
|
|
||||||
static void getArea (const FRect&, FTerm::term_area*);
|
|
||||||
static void getArea (int, int, int, int, FTerm::term_area*);
|
|
||||||
static void putArea (const FPoint&, FTerm::term_area*);
|
|
||||||
static void putArea (int, int, FTerm::term_area*);
|
|
||||||
static void scrollAreaForward (FTerm::term_area*);
|
|
||||||
static void scrollAreaReverse (FTerm::term_area*);
|
|
||||||
static void clearArea (FTerm::term_area*);
|
|
||||||
static FOptiAttr::char_data getCharacter (int, const FPoint&, FTerm*);
|
|
||||||
static FOptiAttr::char_data getCharacter (int, int, int, FTerm*);
|
|
||||||
static FOptiAttr::char_data getCoveredCharacter (const FPoint&, FTerm*);
|
|
||||||
static FOptiAttr::char_data getCoveredCharacter (int, int, FTerm*);
|
|
||||||
static FOptiAttr::char_data getOverlappedCharacter (const FPoint&, FTerm*);
|
|
||||||
static FOptiAttr::char_data getOverlappedCharacter (int, int, FTerm*);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
|
@ -332,12 +246,11 @@ class FTerm
|
||||||
virtual ~FTerm();
|
virtual ~FTerm();
|
||||||
|
|
||||||
virtual const char* getClassName() const;
|
virtual const char* getClassName() const;
|
||||||
FTerm::term_area* getVWin() const;
|
|
||||||
static bool isKeyTimeout (timeval*, register long);
|
static bool isKeyTimeout (timeval*, register long);
|
||||||
static int parseKeyString (char*, int, timeval*);
|
static int parseKeyString (char*, int, timeval*);
|
||||||
bool& unprocessedInput() const;
|
static bool& unprocessedInput();
|
||||||
int getLineNumber();
|
static int getLineNumber();
|
||||||
int getColumnNumber();
|
static int getColumnNumber();
|
||||||
static FString getKeyName (int);
|
static FString getKeyName (int);
|
||||||
static void getModifierKey();
|
static void getModifierKey();
|
||||||
|
|
||||||
|
@ -367,18 +280,12 @@ class FTerm
|
||||||
static bool isNewFont();
|
static bool isNewFont();
|
||||||
static bool setOldFont();
|
static bool setOldFont();
|
||||||
static bool setCursorOptimisation (bool);
|
static bool setCursorOptimisation (bool);
|
||||||
static void setConsoleCursor (fc::consoleCursorStyle);
|
static void setConsoleCursor (fc::consoleCursorStyle, bool);
|
||||||
|
static char* moveCursor (int, int, int, int);
|
||||||
|
static char* enableCursor();
|
||||||
|
static char* disableCursor();
|
||||||
static void getTermSize();
|
static void getTermSize();
|
||||||
static void setTermSize (int, int);
|
static void setTermSize (int, int);
|
||||||
void createVTerm (const FRect&);
|
|
||||||
void createVTerm (int, int);
|
|
||||||
static void resizeVTerm (const FRect&);
|
|
||||||
static void resizeVTerm (int, int);
|
|
||||||
static void putVTerm();
|
|
||||||
static void updateTerminal (bool);
|
|
||||||
static void updateTerminal();
|
|
||||||
static bool updateTerminalCursor();
|
|
||||||
static bool isInsideTerminal (int, int);
|
|
||||||
static void setKDECursor (fc::kdeKonsoleCursorShape);
|
static void setKDECursor (fc::kdeKonsoleCursorShape);
|
||||||
static FString getXTermFont();
|
static FString getXTermFont();
|
||||||
static FString getXTermTitle();
|
static FString getXTermTitle();
|
||||||
|
@ -400,8 +307,6 @@ class FTerm
|
||||||
static void saveColorMap();
|
static void saveColorMap();
|
||||||
static void resetColorMap();
|
static void resetColorMap();
|
||||||
static void setPalette (short, int, int, int);
|
static void setPalette (short, int, int, int);
|
||||||
static short getTermForegroundColor();
|
|
||||||
static short getTermBackgroundColor();
|
|
||||||
static int getMaxColor();
|
static int getMaxColor();
|
||||||
static void xtermMouse (bool);
|
static void xtermMouse (bool);
|
||||||
static void enableXTermMouse();
|
static void enableXTermMouse();
|
||||||
|
@ -413,16 +318,10 @@ class FTerm
|
||||||
static bool disableGpmMouse();
|
static bool disableGpmMouse();
|
||||||
#endif // F_HAVE_LIBGPM
|
#endif // F_HAVE_LIBGPM
|
||||||
|
|
||||||
static void setTermXY (register int, register int);
|
|
||||||
static void setBeep (int, int);
|
static void setBeep (int, int);
|
||||||
static void resetBeep();
|
static void resetBeep();
|
||||||
static void beep();
|
static void beep();
|
||||||
|
|
||||||
static bool hideCursor (bool);
|
|
||||||
static bool hideCursor();
|
|
||||||
static bool showCursor();
|
|
||||||
static bool isHiddenCursor();
|
|
||||||
|
|
||||||
static void setEncoding (std::string);
|
static void setEncoding (std::string);
|
||||||
static std::string getEncoding();
|
static std::string getEncoding();
|
||||||
|
|
||||||
|
@ -448,37 +347,6 @@ class FTerm
|
||||||
static FString getAnswerbackMsg();
|
static FString getAnswerbackMsg();
|
||||||
static FString getSecDA();
|
static FString getSecDA();
|
||||||
|
|
||||||
static void printPosTerm (const FPoint&);
|
|
||||||
static void printPosTerm (register int, register int);
|
|
||||||
int printf (const wchar_t*, ...);
|
|
||||||
int printf (const char*, ...)
|
|
||||||
#if defined(__clang__)
|
|
||||||
__attribute__((__format__ (__printf__, 2, 3)))
|
|
||||||
#elif defined(__GNUC__)
|
|
||||||
__attribute__ ((format (printf, 2, 3)))
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
int print (const std::wstring&);
|
|
||||||
int print (FTerm::term_area*, const std::wstring&);
|
|
||||||
int print (const wchar_t*);
|
|
||||||
int print (FTerm::term_area*, const wchar_t*);
|
|
||||||
int print (const char*);
|
|
||||||
int print (FTerm::term_area*, const char*);
|
|
||||||
int print (const std::string&);
|
|
||||||
int print (FTerm::term_area*, const std::string&);
|
|
||||||
int print (FString&);
|
|
||||||
int print (FTerm::term_area*, FString&);
|
|
||||||
int print (int);
|
|
||||||
int print (FTerm::term_area*, int);
|
|
||||||
static void newFontChanges (FOptiAttr::char_data*&);
|
|
||||||
static void charsetChanges (FOptiAttr::char_data*&);
|
|
||||||
static void appendCharacter (FOptiAttr::char_data*&);
|
|
||||||
static void appendAttributes (FOptiAttr::char_data*&);
|
|
||||||
static int appendLowerRight (FOptiAttr::char_data*&);
|
|
||||||
static void appendOutputBuffer (std::string&);
|
|
||||||
static void appendOutputBuffer (const char*);
|
|
||||||
static int appendOutputBuffer (int);
|
|
||||||
static void flush_out();
|
|
||||||
static int (*Fputchar)(int); // function pointer -> static function
|
static int (*Fputchar)(int); // function pointer -> static function
|
||||||
static void putstringf (const char*, ...)
|
static void putstringf (const char*, ...)
|
||||||
#if defined(__clang__)
|
#if defined(__clang__)
|
||||||
|
@ -500,32 +368,6 @@ class FTerm
|
||||||
inline const char* FTerm::getClassName() const
|
inline const char* FTerm::getClassName() const
|
||||||
{ return "FTerm"; }
|
{ return "FTerm"; }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline FTerm::term_area* FTerm::getVWin() const
|
|
||||||
{ return vwin; }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline bool& FTerm::unprocessedInput() const
|
|
||||||
{ return input_data_pending; }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline int FTerm::getLineNumber()
|
|
||||||
{
|
|
||||||
if ( term->getHeight() == 0 )
|
|
||||||
getTermSize();
|
|
||||||
|
|
||||||
return term->getHeight();
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline int FTerm::getColumnNumber()
|
|
||||||
{
|
|
||||||
if ( term->getWidth() == 0 )
|
|
||||||
getTermSize();
|
|
||||||
|
|
||||||
return term->getWidth();
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline char* FTerm::getTermType()
|
inline char* FTerm::getTermType()
|
||||||
{ return termtype; }
|
{ return termtype; }
|
||||||
|
@ -554,10 +396,6 @@ inline bool FTerm::hasASCII()
|
||||||
inline bool FTerm::isNewFont()
|
inline bool FTerm::isNewFont()
|
||||||
{ return NewFont; }
|
{ return NewFont; }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline bool FTerm::isHiddenCursor()
|
|
||||||
{ return hidden_cursor; }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline bool FTerm::isMonochron()
|
inline bool FTerm::isMonochron()
|
||||||
{ return monochron; }
|
{ return monochron; }
|
||||||
|
@ -620,23 +458,12 @@ inline bool FTerm::isTmuxTerm()
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline bool FTerm::setCursorOptimisation (bool on)
|
inline bool FTerm::setCursorOptimisation (bool on)
|
||||||
{
|
{ return cursor_optimisation = (on) ? true : false; }
|
||||||
cursor_optimisation = on;
|
|
||||||
return cursor_optimisation;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline bool FTerm::isRaw()
|
inline bool FTerm::isRaw()
|
||||||
{ return raw_mode; }
|
{ return raw_mode; }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline short FTerm::getTermForegroundColor()
|
|
||||||
{ return next_attribute.fg_color; }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline short FTerm::getTermBackgroundColor()
|
|
||||||
{ return next_attribute.bg_color; }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline int FTerm::getMaxColor()
|
inline int FTerm::getMaxColor()
|
||||||
{ return max_color; }
|
{ return max_color; }
|
||||||
|
@ -649,7 +476,6 @@ inline void FTerm::enableXTermMouse()
|
||||||
inline void FTerm::disableXTermMouse()
|
inline void FTerm::disableXTermMouse()
|
||||||
{ xtermMouse(false); }
|
{ xtermMouse(false); }
|
||||||
|
|
||||||
|
|
||||||
#ifdef F_HAVE_LIBGPM
|
#ifdef F_HAVE_LIBGPM
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline bool FTerm::enableGpmMouse()
|
inline bool FTerm::enableGpmMouse()
|
||||||
|
@ -658,17 +484,8 @@ inline bool FTerm::enableGpmMouse()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline bool FTerm::disableGpmMouse()
|
inline bool FTerm::disableGpmMouse()
|
||||||
{ return gpmMouse(false); }
|
{ return gpmMouse(false); }
|
||||||
|
|
||||||
#endif // F_HAVE_LIBGPM
|
#endif // F_HAVE_LIBGPM
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline bool FTerm::hideCursor()
|
|
||||||
{ return hideCursor(true); }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline bool FTerm::showCursor()
|
|
||||||
{ return hideCursor(false); }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline bool FTerm::setNonBlockingInput()
|
inline bool FTerm::setNonBlockingInput()
|
||||||
{ return setNonBlockingInput(true); }
|
{ return setNonBlockingInput(true); }
|
||||||
|
@ -705,13 +522,5 @@ inline bool FTerm::unsetRawMode()
|
||||||
inline bool FTerm::setCookedMode()
|
inline bool FTerm::setCookedMode()
|
||||||
{ return setRawMode(false); }
|
{ return setRawMode(false); }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FTerm::printPosTerm (const FPoint& pos)
|
|
||||||
{ printPosTerm (pos.getX(), pos.getY()); }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FTerm::printPosTerm (register int x, register int y)
|
|
||||||
{ cursor->setPoint(x,y); }
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _FTERM_H
|
#endif // _FTERM_H
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
// File: ftermcap.h
|
||||||
|
// Provides: class FTermcap
|
||||||
|
//
|
||||||
|
// Standalone class
|
||||||
|
// ════════════════
|
||||||
|
//
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FTermcap ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
||||||
|
#ifndef _FTERMCAP_H
|
||||||
|
#define _FTERMCAP_H
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FTermcap
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FTermcap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char* string;
|
||||||
|
char tname[3];
|
||||||
|
}
|
||||||
|
tcap_map;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static tcap_map* tcap;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FTermcap()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
~FTermcap()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
tcap_map* getTermcapMap()
|
||||||
|
{
|
||||||
|
return tcap;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setTermcapMap (tcap_map* t)
|
||||||
|
{
|
||||||
|
tcap = t;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
#endif // _FTERMCAP_H
|
|
@ -146,7 +146,7 @@ void FTextView::drawText()
|
||||||
uInt i, len;
|
uInt i, len;
|
||||||
FString line;
|
FString line;
|
||||||
const wchar_t* line_str;
|
const wchar_t* line_str;
|
||||||
printPos (2, 2 - nf_offset + int(y));
|
setPrintPos (2, 2 - nf_offset + int(y));
|
||||||
line = data[y+uInt(yoffset)].mid ( uInt(1 + xoffset)
|
line = data[y+uInt(yoffset)].mid ( uInt(1 + xoffset)
|
||||||
, uInt(getWidth() - nf_offset - 2) );
|
, uInt(getWidth() - nf_offset - 2) );
|
||||||
line_str = line.wc_str();
|
line_str = line.wc_str();
|
||||||
|
@ -267,7 +267,7 @@ void FTextView::hide()
|
||||||
|
|
||||||
for (int y=0; y < getHeight(); y++)
|
for (int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (1, 1 + y);
|
setPrintPos (1, 1 + y);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -921,7 +921,7 @@ void FTextView::clear()
|
||||||
|
|
||||||
for (int y=0; y < getHeight() + nf_offset - 2; y++)
|
for (int y=0; y < getHeight() + nf_offset - 2; y++)
|
||||||
{
|
{
|
||||||
printPos (2, 2 - nf_offset + y);
|
setPrintPos (2, 2 - nf_offset + y);
|
||||||
print (blank);
|
print (blank);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -219,7 +219,7 @@ void FToggleButton::drawLabel()
|
||||||
if ( hotkeypos != -1 )
|
if ( hotkeypos != -1 )
|
||||||
length--;
|
length--;
|
||||||
|
|
||||||
printPos (1 + label_offset_pos, 1);
|
setPrintPos (1 + label_offset_pos, 1);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
@ -376,7 +376,7 @@ void FToggleButton::hide()
|
||||||
blank = new char[size+1];
|
blank = new char[size+1];
|
||||||
std::memset(blank, ' ', uLong(size));
|
std::memset(blank, ' ', uLong(size));
|
||||||
blank[size] = '\0';
|
blank[size] = '\0';
|
||||||
printPos (1, 1);
|
setPrintPos (1, 1);
|
||||||
print (blank);
|
print (blank);
|
||||||
delete[] blank;
|
delete[] blank;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
|
@ -123,7 +123,7 @@ void FToolTip::draw()
|
||||||
|
|
||||||
for (int i=0; i < int(text_num_lines); i++)
|
for (int i=0; i < int(text_num_lines); i++)
|
||||||
{
|
{
|
||||||
printPos (3, 2 + i);
|
setPrintPos (3, 2 + i);
|
||||||
print(text_components[i]);
|
print(text_components[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,252 @@
|
||||||
|
// File: fvterm.h
|
||||||
|
// Provides: class FVTerm
|
||||||
|
//
|
||||||
|
// Inheritance diagram
|
||||||
|
// ═══════════════════
|
||||||
|
//
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▔▏ ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FObject ▏ ▕ FTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▁▏ ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲ ▲
|
||||||
|
// │ │
|
||||||
|
// └─────┬─────┘
|
||||||
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _FVTERM_H
|
||||||
|
#define _FVTERM_H
|
||||||
|
|
||||||
|
#include "fterm.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Buffer size for character output on the terminal
|
||||||
|
#define TERMINAL_OUTPUT_BUFFER_SIZE 32768
|
||||||
|
|
||||||
|
// class forward declaration
|
||||||
|
class FWidget;
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
// class FVTerm
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
|
#pragma pack(push)
|
||||||
|
#pragma pack(1)
|
||||||
|
|
||||||
|
class FVTerm : public FObject, public FTerm
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
static std::queue<int>* output_buffer;
|
||||||
|
static FOptiAttr::char_data term_attribute;
|
||||||
|
static FOptiAttr::char_data next_attribute;
|
||||||
|
static FPoint* term_pos; // terminal cursor position
|
||||||
|
static FPoint* cursor; // virtual print cursor
|
||||||
|
static FTermcap::tcap_map* tcap;
|
||||||
|
|
||||||
|
static bool hidden_cursor;
|
||||||
|
static bool terminal_update_pending;
|
||||||
|
static bool force_terminal_update;
|
||||||
|
static bool terminal_updates;
|
||||||
|
static bool stop_terminal_updates;
|
||||||
|
static bool vterm_updates;
|
||||||
|
static int skipped_terminal_update;
|
||||||
|
|
||||||
|
enum covered_state
|
||||||
|
{
|
||||||
|
non_covered,
|
||||||
|
half_covered,
|
||||||
|
fully_covered
|
||||||
|
};
|
||||||
|
|
||||||
|
enum character_type
|
||||||
|
{
|
||||||
|
overlapped_character,
|
||||||
|
covered_character
|
||||||
|
};
|
||||||
|
|
||||||
|
protected:
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uInt xmin;
|
||||||
|
uInt xmax;
|
||||||
|
uInt trans_count;
|
||||||
|
} line_changes;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
int right_shadow;
|
||||||
|
int bottom_shadow;
|
||||||
|
int input_cursor_x;
|
||||||
|
int input_cursor_y;
|
||||||
|
int input_cursor_visible;
|
||||||
|
FWidget* widget;
|
||||||
|
line_changes* changes;
|
||||||
|
FOptiAttr::char_data* text;
|
||||||
|
bool visible;
|
||||||
|
} term_area;
|
||||||
|
|
||||||
|
static term_area* vterm; // virtual terminal
|
||||||
|
static term_area* vdesktop; // virtual desktop
|
||||||
|
static term_area* last_area; // last used area
|
||||||
|
static term_area* active_area; // active area
|
||||||
|
term_area* print_area; // print area for this object
|
||||||
|
term_area* vwin; // virtual window
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void createArea (const FRect&, const FPoint&, FVTerm::term_area*&);
|
||||||
|
void createArea (int, int, int, int, FVTerm::term_area*&);
|
||||||
|
static void resizeArea (const FRect&, const FPoint&, FVTerm::term_area*);
|
||||||
|
static void resizeArea (int, int, int, int, FVTerm::term_area*);
|
||||||
|
static void removeArea (FVTerm::term_area*&);
|
||||||
|
static void restoreVTerm (const FRect&);
|
||||||
|
static void restoreVTerm (int, int, int, int);
|
||||||
|
static FVTerm::covered_state isCovered (const FPoint&, FVTerm::term_area*);
|
||||||
|
static FVTerm::covered_state isCovered (int, int, FVTerm::term_area*);
|
||||||
|
static void updateVTerm (bool);
|
||||||
|
static void updateVTerm (FVTerm::term_area*);
|
||||||
|
static bool updateVTermCursor (FVTerm::term_area*);
|
||||||
|
static bool isInsideArea (int, int, FVTerm::term_area*);
|
||||||
|
static void setAreaCursor (const FPoint&, bool, FVTerm::term_area*);
|
||||||
|
static void setAreaCursor (int, int, bool, FVTerm::term_area*);
|
||||||
|
static void getArea (const FPoint&, FVTerm::term_area*);
|
||||||
|
static void getArea (int, int, FVTerm::term_area*);
|
||||||
|
static void getArea (const FRect&, FVTerm::term_area*);
|
||||||
|
static void getArea (int, int, int, int, FVTerm::term_area*);
|
||||||
|
static void putArea (const FPoint&, FVTerm::term_area*);
|
||||||
|
static void putArea (int, int, FVTerm::term_area*);
|
||||||
|
static void scrollAreaForward (FVTerm::term_area*);
|
||||||
|
static void scrollAreaReverse (FVTerm::term_area*);
|
||||||
|
static void clearArea (FVTerm::term_area*);
|
||||||
|
static FOptiAttr::char_data getCharacter (int, const FPoint&, FVTerm*);
|
||||||
|
static FOptiAttr::char_data getCharacter (int, int, int, FVTerm*);
|
||||||
|
static FOptiAttr::char_data getCoveredCharacter (const FPoint&, FVTerm*);
|
||||||
|
static FOptiAttr::char_data getCoveredCharacter (int, int, FVTerm*);
|
||||||
|
static FOptiAttr::char_data getOverlappedCharacter (const FPoint&, FVTerm*);
|
||||||
|
static FOptiAttr::char_data getOverlappedCharacter (int, int, FVTerm*);
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Disable copy constructor
|
||||||
|
FVTerm (const FVTerm&);
|
||||||
|
// Disable assignment operator (=)
|
||||||
|
FVTerm& operator = (const FVTerm&);
|
||||||
|
|
||||||
|
void init();
|
||||||
|
void finish();
|
||||||
|
term_area* getPrintArea();
|
||||||
|
void setPrintArea (term_area*);
|
||||||
|
|
||||||
|
// Friend class
|
||||||
|
friend class FWidget;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
explicit FVTerm (FVTerm* = 0);
|
||||||
|
// Destructor
|
||||||
|
~FVTerm();
|
||||||
|
|
||||||
|
virtual const char* getClassName() const;
|
||||||
|
|
||||||
|
static void setTermXY (register int, register int);
|
||||||
|
|
||||||
|
static bool hideCursor (bool);
|
||||||
|
static bool hideCursor();
|
||||||
|
static bool showCursor();
|
||||||
|
static bool isCursorHidden();
|
||||||
|
|
||||||
|
static short getTermForegroundColor();
|
||||||
|
static short getTermBackgroundColor();
|
||||||
|
FVTerm::term_area* getVWin() const;
|
||||||
|
void createVTerm (const FRect&);
|
||||||
|
void createVTerm (int, int);
|
||||||
|
static void resizeVTerm (const FRect&);
|
||||||
|
static void resizeVTerm (int, int);
|
||||||
|
static void putVTerm();
|
||||||
|
static void updateTerminal (bool);
|
||||||
|
static void updateTerminal();
|
||||||
|
static bool updateTerminalCursor();
|
||||||
|
static void processTerminalUpdate();
|
||||||
|
static bool isInsideTerminal (int, int);
|
||||||
|
|
||||||
|
void setPrintCursor (const FPoint&);
|
||||||
|
void setPrintCursor (register int, register int);
|
||||||
|
FPoint* getPrintPos() const;
|
||||||
|
int printf (const wchar_t*, ...);
|
||||||
|
int printf (const char*, ...)
|
||||||
|
#if defined(__clang__)
|
||||||
|
__attribute__((__format__ (__printf__, 2, 3)))
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
__attribute__ ((format (printf, 2, 3)))
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
int print (const std::wstring&);
|
||||||
|
int print (FVTerm::term_area*, const std::wstring&);
|
||||||
|
int print (const wchar_t*);
|
||||||
|
int print (FVTerm::term_area*, const wchar_t*);
|
||||||
|
int print (const char*);
|
||||||
|
int print (FVTerm::term_area*, const char*);
|
||||||
|
int print (const std::string&);
|
||||||
|
int print (FVTerm::term_area*, const std::string&);
|
||||||
|
int print (FString&);
|
||||||
|
int print (FVTerm::term_area*, FString&);
|
||||||
|
int print (int);
|
||||||
|
int print (FVTerm::term_area*, int);
|
||||||
|
static void newFontChanges (FOptiAttr::char_data*&);
|
||||||
|
static void charsetChanges (FOptiAttr::char_data*&);
|
||||||
|
static void appendCharacter (FOptiAttr::char_data*&);
|
||||||
|
static void appendAttributes (FOptiAttr::char_data*&);
|
||||||
|
static int appendLowerRight (FOptiAttr::char_data*&);
|
||||||
|
static void appendOutputBuffer (std::string&);
|
||||||
|
static void appendOutputBuffer (const char*);
|
||||||
|
static int appendOutputBuffer (int);
|
||||||
|
static void flush_out();
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
// FVTerm inline functions
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FVTerm::setPrintArea (term_area* area)
|
||||||
|
{ print_area = area; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const char* FVTerm::getClassName() const
|
||||||
|
{ return "FVTerm"; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FVTerm::hideCursor()
|
||||||
|
{ return hideCursor(true); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FVTerm::showCursor()
|
||||||
|
{ return hideCursor(false); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline bool FVTerm::isCursorHidden()
|
||||||
|
{ return hidden_cursor; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline short FVTerm::getTermForegroundColor()
|
||||||
|
{ return next_attribute.fg_color; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline short FVTerm::getTermBackgroundColor()
|
||||||
|
{ return next_attribute.bg_color; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FVTerm::term_area* FVTerm::getVWin() const
|
||||||
|
{ return vwin; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FVTerm::setPrintCursor (const FPoint& pos)
|
||||||
|
{ setPrintCursor (pos.getX(), pos.getY()); }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline void FVTerm::setPrintCursor (register int x, register int y)
|
||||||
|
{ cursor->setPoint(x,y); }
|
||||||
|
|
||||||
|
#endif // _FVTERM_H
|
107
src/fwidget.cpp
107
src/fwidget.cpp
|
@ -5,7 +5,7 @@
|
||||||
#include "fmenubar.h"
|
#include "fmenubar.h"
|
||||||
#include "fstatusbar.h"
|
#include "fstatusbar.h"
|
||||||
#include "fwidget.h"
|
#include "fwidget.h"
|
||||||
#include "fwindow.h"
|
|
||||||
|
|
||||||
// global FWidget object
|
// global FWidget object
|
||||||
static FWidget* rootObject = 0;
|
static FWidget* rootObject = 0;
|
||||||
|
@ -30,7 +30,7 @@ FWidget::widget_colors FWidget::wc;
|
||||||
// constructors and destructor
|
// constructors and destructor
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
FWidget::FWidget (FWidget* parent)
|
FWidget::FWidget (FWidget* parent)
|
||||||
: FObject(parent)
|
: FVTerm(parent)
|
||||||
, callback_objects()
|
, callback_objects()
|
||||||
, member_callback_objects()
|
, member_callback_objects()
|
||||||
, accelerator_list(0)
|
, accelerator_list(0)
|
||||||
|
@ -56,7 +56,6 @@ FWidget::FWidget (FWidget* parent)
|
||||||
, wshadow(0,0)
|
, wshadow(0,0)
|
||||||
, foreground_color(fc::Default)
|
, foreground_color(fc::Default)
|
||||||
, background_color(fc::Default)
|
, background_color(fc::Default)
|
||||||
, print_area(0)
|
|
||||||
, statusbar_message()
|
, statusbar_message()
|
||||||
{
|
{
|
||||||
resize_term = false;
|
resize_term = false;
|
||||||
|
@ -366,33 +365,6 @@ void FWidget::setColorTheme()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
FTerm::term_area* FWidget::getPrintArea()
|
|
||||||
{
|
|
||||||
// returns the print area of this object
|
|
||||||
if ( print_area )
|
|
||||||
return print_area;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FWidget* obj = static_cast<FWidget*>(this);
|
|
||||||
FWidget* p_obj = static_cast<FWidget*>(obj->getParent());
|
|
||||||
|
|
||||||
while ( ! obj->vwin && p_obj )
|
|
||||||
{
|
|
||||||
obj = p_obj;
|
|
||||||
p_obj = static_cast<FWidget*>(p_obj->getParent());
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( obj->vwin )
|
|
||||||
{
|
|
||||||
print_area = obj->vwin;
|
|
||||||
return print_area;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return vdesktop;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// protected methods of FWidget
|
// protected methods of FWidget
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -1544,7 +1516,7 @@ bool FWidget::setFocus (bool on)
|
||||||
// set window focus
|
// set window focus
|
||||||
if ( on && window )
|
if ( on && window )
|
||||||
{
|
{
|
||||||
if ( ! window->isActiveWindow() )
|
if ( ! window->isWindowActive() )
|
||||||
{
|
{
|
||||||
bool has_raised = window->raiseWindow();
|
bool has_raised = window->raiseWindow();
|
||||||
FWindow::setActiveWindow(window);
|
FWindow::setActiveWindow(window);
|
||||||
|
@ -1852,7 +1824,7 @@ void FWidget::getTermSize()
|
||||||
void FWidget::setTermSize (int w, int h)
|
void FWidget::setTermSize (int w, int h)
|
||||||
{
|
{
|
||||||
// Set xterm size to w x h
|
// Set xterm size to w x h
|
||||||
if ( xterm_terminal )
|
if ( isXTerminal() )
|
||||||
{
|
{
|
||||||
rootObject->wsize.setRect(1, 1, w, h);
|
rootObject->wsize.setRect(1, 1, w, h);
|
||||||
rootObject->adjust_wsize = rootObject->wsize;
|
rootObject->adjust_wsize = rootObject->wsize;
|
||||||
|
@ -1945,6 +1917,23 @@ bool FWidget::setCursorPos (register int x, register int y)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FWidget::setPrintPos (register int x, register int y)
|
||||||
|
{
|
||||||
|
setPrintCursor ( offset.getX1() + adjust_wsize.getX() - 1 + x,
|
||||||
|
offset.getY1() + adjust_wsize.getY() - 1 + y );
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
FPoint FWidget::getPrintPos() const
|
||||||
|
{
|
||||||
|
const FPoint* cur = FVTerm::getPrintPos();
|
||||||
|
int cx = cur->getX();
|
||||||
|
int cy = cur->getY();
|
||||||
|
return FPoint ( cx - offset.getX1() - adjust_wsize.getX() + 1
|
||||||
|
, cy - offset.getY1() - adjust_wsize.getY() + 1 );
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FWidget::drawShadow()
|
void FWidget::drawShadow()
|
||||||
{
|
{
|
||||||
|
@ -1969,7 +1958,7 @@ void FWidget::drawShadow()
|
||||||
if ( trans_shadow )
|
if ( trans_shadow )
|
||||||
{
|
{
|
||||||
// transparent shadow
|
// transparent shadow
|
||||||
printPos (x2+1, y1);
|
setPrintPos (x2+1, y1);
|
||||||
setTransparent();
|
setTransparent();
|
||||||
print (" ");
|
print (" ");
|
||||||
unsetTransparent();
|
unsetTransparent();
|
||||||
|
@ -1979,12 +1968,12 @@ void FWidget::drawShadow()
|
||||||
|
|
||||||
for (int i=1; i < getHeight(); i++)
|
for (int i=1; i < getHeight(); i++)
|
||||||
{
|
{
|
||||||
printPos (x2+1, y1+i);
|
setPrintPos (x2+1, y1+i);
|
||||||
print (" ");
|
print (" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
unsetTransShadow();
|
unsetTransShadow();
|
||||||
printPos (x1, y2+1);
|
setPrintPos (x1, y2+1);
|
||||||
setTransparent();
|
setTransparent();
|
||||||
print (" ");
|
print (" ");
|
||||||
unsetTransparent();
|
unsetTransparent();
|
||||||
|
@ -2004,7 +1993,7 @@ void FWidget::drawShadow()
|
||||||
{
|
{
|
||||||
// non-transparent shadow
|
// non-transparent shadow
|
||||||
int block;
|
int block;
|
||||||
printPos (x2+1, y1);
|
setPrintPos (x2+1, y1);
|
||||||
|
|
||||||
if ( isWindowWidget() )
|
if ( isWindowWidget() )
|
||||||
{
|
{
|
||||||
|
@ -2031,11 +2020,11 @@ void FWidget::drawShadow()
|
||||||
|
|
||||||
for (int i=1; i < getHeight(); i++)
|
for (int i=1; i < getHeight(); i++)
|
||||||
{
|
{
|
||||||
printPos (x2+1, y1+i);
|
setPrintPos (x2+1, y1+i);
|
||||||
print (block); // █
|
print (block); // █
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x1+1, y2+1);
|
setPrintPos (x1+1, y2+1);
|
||||||
|
|
||||||
if ( isWindowWidget() )
|
if ( isWindowWidget() )
|
||||||
setInheritBackground();
|
setInheritBackground();
|
||||||
|
@ -2078,14 +2067,14 @@ void FWidget::clearShadow()
|
||||||
{
|
{
|
||||||
for (int i=0; i < getHeight(); i++)
|
for (int i=0; i < getHeight(); i++)
|
||||||
{
|
{
|
||||||
printPos (x2+1, y1+i);
|
setPrintPos (x2+1, y1+i);
|
||||||
print (' '); // clear █
|
print (' '); // clear █
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( y2 <= offset.getY2() )
|
if ( y2 <= offset.getY2() )
|
||||||
{
|
{
|
||||||
printPos (x1+1, y2+1);
|
setPrintPos (x1+1, y2+1);
|
||||||
|
|
||||||
for (int i=1; i <= getWidth(); i++)
|
for (int i=1; i <= getWidth(); i++)
|
||||||
print (' '); // clear ▀
|
print (' '); // clear ▀
|
||||||
|
@ -2115,7 +2104,7 @@ void FWidget::drawFlatBorder()
|
||||||
|
|
||||||
for (int y=0; y < getHeight(); y++)
|
for (int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (x1-1, y1+y+1);
|
setPrintPos (x1-1, y1+y+1);
|
||||||
|
|
||||||
if ( double_flatline_mask.left[uLong(y)] )
|
if ( double_flatline_mask.left[uLong(y)] )
|
||||||
print (fc::NF_rev_border_line_right_and_left); // left+right line (on left side)
|
print (fc::NF_rev_border_line_right_and_left); // left+right line (on left side)
|
||||||
|
@ -2123,7 +2112,7 @@ void FWidget::drawFlatBorder()
|
||||||
print (fc::NF_rev_border_line_right); // right line (on left side)
|
print (fc::NF_rev_border_line_right); // right line (on left side)
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x2, y1+1);
|
setPrintPos (x2, y1+1);
|
||||||
|
|
||||||
for (int y=0; y < getHeight(); y++)
|
for (int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
|
@ -2132,10 +2121,10 @@ void FWidget::drawFlatBorder()
|
||||||
else
|
else
|
||||||
print (fc::NF_border_line_left); // left line (on right side)
|
print (fc::NF_border_line_left); // left line (on right side)
|
||||||
|
|
||||||
printPos (x2, y1+y+2);
|
setPrintPos (x2, y1+y+2);
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x1, y1);
|
setPrintPos (x1, y1);
|
||||||
|
|
||||||
for (int x=0; x < getWidth(); x++)
|
for (int x=0; x < getWidth(); x++)
|
||||||
{
|
{
|
||||||
|
@ -2145,7 +2134,7 @@ void FWidget::drawFlatBorder()
|
||||||
print (fc::NF_border_line_bottom); // bottom line (at top)
|
print (fc::NF_border_line_bottom); // bottom line (at top)
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x1, y2);
|
setPrintPos (x1, y2);
|
||||||
|
|
||||||
for (int x=0; x < getWidth(); x++)
|
for (int x=0; x < getWidth(); x++)
|
||||||
{
|
{
|
||||||
|
@ -2177,7 +2166,7 @@ void FWidget::clearFlatBorder()
|
||||||
// clear on left side
|
// clear on left side
|
||||||
for (register int y=0; y < getHeight(); y++)
|
for (register int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (x1-1, y1+y+1);
|
setPrintPos (x1-1, y1+y+1);
|
||||||
|
|
||||||
if ( double_flatline_mask.left[uLong(y)] )
|
if ( double_flatline_mask.left[uLong(y)] )
|
||||||
print (fc::NF_border_line_left);
|
print (fc::NF_border_line_left);
|
||||||
|
@ -2188,7 +2177,7 @@ void FWidget::clearFlatBorder()
|
||||||
// clear on right side
|
// clear on right side
|
||||||
for (register int y=0; y < getHeight(); y++)
|
for (register int y=0; y < getHeight(); y++)
|
||||||
{
|
{
|
||||||
printPos (x2, y1+y+1);
|
setPrintPos (x2, y1+y+1);
|
||||||
|
|
||||||
if ( double_flatline_mask.right[uLong(y)] )
|
if ( double_flatline_mask.right[uLong(y)] )
|
||||||
print (fc::NF_rev_border_line_right);
|
print (fc::NF_rev_border_line_right);
|
||||||
|
@ -2197,7 +2186,7 @@ void FWidget::clearFlatBorder()
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear at top
|
// clear at top
|
||||||
printPos (x1, y1);
|
setPrintPos (x1, y1);
|
||||||
|
|
||||||
for (register int x=0; x < getWidth(); x++)
|
for (register int x=0; x < getWidth(); x++)
|
||||||
{
|
{
|
||||||
|
@ -2208,7 +2197,7 @@ void FWidget::clearFlatBorder()
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear at bottom
|
// clear at bottom
|
||||||
printPos (x1, y2);
|
setPrintPos (x1, y2);
|
||||||
|
|
||||||
for (register int x=0; x < getWidth(); x++)
|
for (register int x=0; x < getWidth(); x++)
|
||||||
{
|
{
|
||||||
|
@ -2357,7 +2346,7 @@ void FWidget::drawBorder (int x1, int y1, int x2, int y2)
|
||||||
|
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
{
|
{
|
||||||
printPos (x1, y1);
|
setPrintPos (x1, y1);
|
||||||
print (fc::NF_border_corner_middle_upper_left); // ┌
|
print (fc::NF_border_corner_middle_upper_left); // ┌
|
||||||
|
|
||||||
for (int x=x1+1; x < x2; x++)
|
for (int x=x1+1; x < x2; x++)
|
||||||
|
@ -2367,13 +2356,13 @@ void FWidget::drawBorder (int x1, int y1, int x2, int y2)
|
||||||
|
|
||||||
for (int y=y1+1; y <= y2; y++)
|
for (int y=y1+1; y <= y2; y++)
|
||||||
{
|
{
|
||||||
printPos (x1, y);
|
setPrintPos (x1, y);
|
||||||
print (fc::NF_border_line_left); // border left ⎸
|
print (fc::NF_border_line_left); // border left ⎸
|
||||||
printPos (x2, y);
|
setPrintPos (x2, y);
|
||||||
print (fc::NF_rev_border_line_right); // border right⎹
|
print (fc::NF_rev_border_line_right); // border right⎹
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x1, y2);
|
setPrintPos (x1, y2);
|
||||||
print (fc::NF_border_corner_middle_lower_left); // └
|
print (fc::NF_border_corner_middle_lower_left); // └
|
||||||
|
|
||||||
for (int x=x1+1; x < x2; x++)
|
for (int x=x1+1; x < x2; x++)
|
||||||
|
@ -2383,7 +2372,7 @@ void FWidget::drawBorder (int x1, int y1, int x2, int y2)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printPos (x1, y1);
|
setPrintPos (x1, y1);
|
||||||
print (fc::BoxDrawingsDownAndRight); // ┌
|
print (fc::BoxDrawingsDownAndRight); // ┌
|
||||||
|
|
||||||
for (int x=x1+1; x < x2; x++)
|
for (int x=x1+1; x < x2; x++)
|
||||||
|
@ -2393,13 +2382,13 @@ void FWidget::drawBorder (int x1, int y1, int x2, int y2)
|
||||||
|
|
||||||
for (int y=y1+1; y < y2; y++)
|
for (int y=y1+1; y < y2; y++)
|
||||||
{
|
{
|
||||||
printPos (x1, y);
|
setPrintPos (x1, y);
|
||||||
print (fc::BoxDrawingsVertical); // │
|
print (fc::BoxDrawingsVertical); // │
|
||||||
printPos (x2, y);
|
setPrintPos (x2, y);
|
||||||
print (fc::BoxDrawingsVertical); // │
|
print (fc::BoxDrawingsVertical); // │
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x1, y2);
|
setPrintPos (x1, y2);
|
||||||
print (fc::BoxDrawingsUpAndRight); // └
|
print (fc::BoxDrawingsUpAndRight); // └
|
||||||
|
|
||||||
for (int x=x1+1; x < x2; x++)
|
for (int x=x1+1; x < x2; x++)
|
||||||
|
@ -2409,9 +2398,9 @@ void FWidget::drawBorder (int x1, int y1, int x2, int y2)
|
||||||
|
|
||||||
for (int x=x1+1; x < x2; x++)
|
for (int x=x1+1; x < x2; x++)
|
||||||
{
|
{
|
||||||
printPos (x, y1);
|
setPrintPos (x, y1);
|
||||||
print (fc::BoxDrawingsHorizontal); // ─
|
print (fc::BoxDrawingsHorizontal); // ─
|
||||||
printPos (x, y2);
|
setPrintPos (x, y2);
|
||||||
print (fc::BoxDrawingsHorizontal); // ─
|
print (fc::BoxDrawingsHorizontal); // ─
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏ 1 1▕▔▔▔▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏ 1 1▕▔▔▔▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏-┬- - - -▕ FStatusBar ▏
|
// ▕ FWidget ▏-┬- - - -▕ FStatusBar ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏ : ▕▁▁▁▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏ : ▕▁▁▁▁▁▁▁▁▁▁▁▁▏
|
||||||
|
@ -66,7 +71,7 @@
|
||||||
#ifndef _FWIDGET_H
|
#ifndef _FWIDGET_H
|
||||||
#define _FWIDGET_H
|
#define _FWIDGET_H
|
||||||
|
|
||||||
#include "fterm.h"
|
#include "fvterm.h"
|
||||||
|
|
||||||
|
|
||||||
// Callback macros
|
// Callback macros
|
||||||
|
@ -88,7 +93,7 @@ class FMenuBar;
|
||||||
#pragma pack(push)
|
#pragma pack(push)
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
class FWidget : public FObject, public FTerm
|
class FWidget : public FVTerm
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef std::vector<FWidget*> widgetList;
|
typedef std::vector<FWidget*> widgetList;
|
||||||
|
@ -302,7 +307,6 @@ class FWidget : public FObject, public FTerm
|
||||||
short foreground_color;
|
short foreground_color;
|
||||||
short background_color;
|
short background_color;
|
||||||
|
|
||||||
term_area* print_area;
|
|
||||||
FString statusbar_message;
|
FString statusbar_message;
|
||||||
|
|
||||||
static FStatusBar* statusbar;
|
static FStatusBar* statusbar;
|
||||||
|
@ -310,7 +314,6 @@ class FWidget : public FObject, public FTerm
|
||||||
static FWidget* show_root_widget;
|
static FWidget* show_root_widget;
|
||||||
static FWidget* redraw_root_widget;
|
static FWidget* redraw_root_widget;
|
||||||
|
|
||||||
friend class FTerm;
|
|
||||||
friend class FApplication;
|
friend class FApplication;
|
||||||
friend class FToggleButton;
|
friend class FToggleButton;
|
||||||
|
|
||||||
|
@ -325,8 +328,6 @@ class FWidget : public FObject, public FTerm
|
||||||
void processDestroy();
|
void processDestroy();
|
||||||
virtual void draw();
|
virtual void draw();
|
||||||
static void setColorTheme();
|
static void setColorTheme();
|
||||||
term_area* getPrintArea();
|
|
||||||
void setPrintArea (term_area*);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void adjustSize();
|
virtual void adjustSize();
|
||||||
|
@ -504,8 +505,8 @@ class FWidget : public FObject, public FTerm
|
||||||
bool setCursorPos (register int, register int);
|
bool setCursorPos (register int, register int);
|
||||||
void unsetCursorPos();
|
void unsetCursorPos();
|
||||||
|
|
||||||
void printPos (const FPoint&);
|
void setPrintPos (const FPoint&);
|
||||||
void printPos (register int, register int);
|
void setPrintPos (register int, register int);
|
||||||
FPoint getPrintPos() const;
|
FPoint getPrintPos() const;
|
||||||
|
|
||||||
static void setNormal();
|
static void setNormal();
|
||||||
|
@ -612,10 +613,6 @@ class FWidget : public FObject, public FTerm
|
||||||
inline void FWidget::processDestroy()
|
inline void FWidget::processDestroy()
|
||||||
{ emitCallback("destroy"); }
|
{ emitCallback("destroy"); }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FWidget::setPrintArea (term_area* area)
|
|
||||||
{ print_area = area; }
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline const char* FWidget::getClassName() const
|
inline const char* FWidget::getClassName() const
|
||||||
{ return "FWidget"; }
|
{ return "FWidget"; }
|
||||||
|
@ -928,24 +925,8 @@ inline void FWidget::unsetCursorPos()
|
||||||
{ widget_cursor_position.setPoint(-1,-1); }
|
{ widget_cursor_position.setPoint(-1,-1); }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FWidget::printPos (const FPoint& pos)
|
inline void FWidget::setPrintPos (const FPoint& pos)
|
||||||
{ printPos (pos.getX(), pos.getY()); }
|
{ setPrintPos (pos.getX(), pos.getY()); }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FWidget::printPos (register int x, register int y)
|
|
||||||
{
|
|
||||||
cursor->setPoint ( offset.getX1() + adjust_wsize.getX() - 1 + x,
|
|
||||||
offset.getY1() + adjust_wsize.getY() - 1 + y );
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline FPoint FWidget::getPrintPos() const
|
|
||||||
{
|
|
||||||
int cx = cursor->getX();
|
|
||||||
int cy = cursor->getY();
|
|
||||||
return FPoint ( cx - offset.getX1() - adjust_wsize.getX() + 1
|
|
||||||
, cy - offset.getY1() - adjust_wsize.getY() + 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FWidget::setNormal()
|
inline void FWidget::setNormal()
|
||||||
|
|
|
@ -9,11 +9,12 @@
|
||||||
// static attributes
|
// static attributes
|
||||||
FWindow* FWindow::previous_widget = 0;
|
FWindow* FWindow::previous_widget = 0;
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// class FWindow
|
// class FWindow
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
||||||
// constructors and destructor
|
// constructor and destructor
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
FWindow::FWindow(FWidget* parent)
|
FWindow::FWindow(FWidget* parent)
|
||||||
: FWidget(parent)
|
: FWidget(parent)
|
||||||
|
@ -161,7 +162,7 @@ void FWindow::drawBorder()
|
||||||
int y1 = 1;
|
int y1 = 1;
|
||||||
int y2 = 1 + getHeight() - 1;
|
int y2 = 1 + getHeight() - 1;
|
||||||
|
|
||||||
printPos (x1, y1);
|
setPrintPos (x1, y1);
|
||||||
print (fc::NF_border_corner_upper_left); // ⎡
|
print (fc::NF_border_corner_upper_left); // ⎡
|
||||||
|
|
||||||
for (int x=x1+1; x < x2; x++)
|
for (int x=x1+1; x < x2; x++)
|
||||||
|
@ -171,22 +172,22 @@ void FWindow::drawBorder()
|
||||||
|
|
||||||
for (int y=y1+1; y < y2; y++)
|
for (int y=y1+1; y < y2; y++)
|
||||||
{
|
{
|
||||||
printPos (x1, y);
|
setPrintPos (x1, y);
|
||||||
// border left ⎸
|
// border left ⎸
|
||||||
print (fc::NF_border_line_left);
|
print (fc::NF_border_line_left);
|
||||||
printPos (x2, y);
|
setPrintPos (x2, y);
|
||||||
// border right⎹
|
// border right⎹
|
||||||
print (fc::NF_rev_border_line_right);
|
print (fc::NF_rev_border_line_right);
|
||||||
}
|
}
|
||||||
|
|
||||||
printPos (x1, y2);
|
setPrintPos (x1, y2);
|
||||||
// lower left corner border ⎣
|
// lower left corner border ⎣
|
||||||
print (fc::NF_border_corner_lower_left);
|
print (fc::NF_border_corner_lower_left);
|
||||||
|
|
||||||
for (int x=2; x < getWidth(); x++) // low line _
|
for (int x=2; x < getWidth(); x++) // low line _
|
||||||
print (fc::NF_border_line_bottom);
|
print (fc::NF_border_line_bottom);
|
||||||
|
|
||||||
printPos (x2, y2);
|
setPrintPos (x2, y2);
|
||||||
// lower right corner border ⎦
|
// lower right corner border ⎦
|
||||||
print (fc::NF_rev_border_corner_lower_right);
|
print (fc::NF_rev_border_corner_lower_right);
|
||||||
}
|
}
|
||||||
|
@ -283,7 +284,7 @@ FWindow* FWindow::getWindowWidgetAt (int x, int y)
|
||||||
{
|
{
|
||||||
FWindow* w = static_cast<FWindow*>(*iter);
|
FWindow* w = static_cast<FWindow*>(*iter);
|
||||||
|
|
||||||
if ( ! w->isHiddenWindow()
|
if ( ! w->isWindowHidden()
|
||||||
&& w->getTermGeometry().contains(x,y) )
|
&& w->getTermGeometry().contains(x,y) )
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
@ -571,7 +572,7 @@ void FWindow::setActiveWindow (FWindow* window)
|
||||||
{
|
{
|
||||||
if ( *iter == window )
|
if ( *iter == window )
|
||||||
{
|
{
|
||||||
if ( ! window->isActiveWindow() )
|
if ( ! window->isWindowActive() )
|
||||||
{
|
{
|
||||||
window->activateWindow();
|
window->activateWindow();
|
||||||
FEvent ev(fc::WindowActive_Event);
|
FEvent ev(fc::WindowActive_Event);
|
||||||
|
@ -582,7 +583,7 @@ void FWindow::setActiveWindow (FWindow* window)
|
||||||
{
|
{
|
||||||
FWindow* w = static_cast<FWindow*>(*iter);
|
FWindow* w = static_cast<FWindow*>(*iter);
|
||||||
|
|
||||||
if ( w->isActiveWindow() )
|
if ( w->isWindowActive() )
|
||||||
{
|
{
|
||||||
w->deactivateWindow();
|
w->deactivateWindow();
|
||||||
FEvent ev(fc::WindowInactive_Event);
|
FEvent ev(fc::WindowInactive_Event);
|
||||||
|
@ -631,7 +632,7 @@ void FWindow::switchToPrevWindow()
|
||||||
|
|
||||||
if ( w
|
if ( w
|
||||||
&& w != active_window
|
&& w != active_window
|
||||||
&& ! (w->isHiddenWindow() || w->isActiveWindow())
|
&& ! (w->isWindowHidden() || w->isWindowActive())
|
||||||
&& w != static_cast<FWindow*>(statusBar())
|
&& w != static_cast<FWindow*>(statusBar())
|
||||||
&& w != static_cast<FWindow*>(menuBar()) )
|
&& w != static_cast<FWindow*>(menuBar()) )
|
||||||
{
|
{
|
||||||
|
@ -647,7 +648,7 @@ void FWindow::switchToPrevWindow()
|
||||||
{
|
{
|
||||||
FWidget* focus_widget = active_window->getWindowFocusWidget();
|
FWidget* focus_widget = active_window->getWindowFocusWidget();
|
||||||
|
|
||||||
if ( ! active_window->isActiveWindow() )
|
if ( ! active_window->isWindowActive() )
|
||||||
setActiveWindow(active_window);
|
setActiveWindow(active_window);
|
||||||
|
|
||||||
if ( focus_widget )
|
if ( focus_widget )
|
||||||
|
@ -668,10 +669,10 @@ bool FWindow::activatePrevWindow()
|
||||||
|
|
||||||
if ( w )
|
if ( w )
|
||||||
{
|
{
|
||||||
if ( w->isActiveWindow() )
|
if ( w->isWindowActive() )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( w && ! w->isHiddenWindow() )
|
if ( w && ! w->isWindowHidden() )
|
||||||
{
|
{
|
||||||
setActiveWindow(w);
|
setActiveWindow(w);
|
||||||
return true;
|
return true;
|
||||||
|
@ -695,7 +696,7 @@ bool FWindow::activateWindow (bool on)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
bool FWindow::isHiddenWindow() const
|
bool FWindow::isWindowHidden() const
|
||||||
{
|
{
|
||||||
// returns the window hidden state
|
// returns the window hidden state
|
||||||
term_area* area = getVWin();
|
term_area* area = getVWin();
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
// │ │
|
// │ │
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘
|
||||||
// │
|
// │
|
||||||
|
// ▕▔▔▔▔▔▔▔▔▏
|
||||||
|
// ▕ FVTerm ▏
|
||||||
|
// ▕▁▁▁▁▁▁▁▁▏
|
||||||
|
// ▲
|
||||||
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWidget ▏
|
// ▕ FWidget ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
|
@ -114,10 +119,10 @@ class FWindow : public FWidget
|
||||||
bool activateWindow (bool);
|
bool activateWindow (bool);
|
||||||
bool activateWindow();
|
bool activateWindow();
|
||||||
bool deactivateWindow();
|
bool deactivateWindow();
|
||||||
bool isActiveWindow() const;
|
bool isWindowActive() const;
|
||||||
bool isHiddenWindow() const;
|
bool isWindowHidden() const;
|
||||||
bool setResizeable (bool);
|
virtual bool setResizeable (bool);
|
||||||
bool setResizeable();
|
virtual bool setResizeable();
|
||||||
bool unsetResizeable();
|
bool unsetResizeable();
|
||||||
bool isResizeable();
|
bool isResizeable();
|
||||||
bool setTransparentShadow (bool);
|
bool setTransparentShadow (bool);
|
||||||
|
@ -175,7 +180,7 @@ inline bool FWindow::deactivateWindow()
|
||||||
{ return activateWindow(false); }
|
{ return activateWindow(false); }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline bool FWindow::isActiveWindow() const
|
inline bool FWindow::isWindowActive() const
|
||||||
{ return window_active; }
|
{ return window_active; }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -327,7 +327,7 @@ void Calc::drawDispay()
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(false);
|
setReverse(false);
|
||||||
|
|
||||||
printPos (3,3);
|
setPrintPos (3,3);
|
||||||
print(display);
|
print(display);
|
||||||
print(L' ');
|
print(L' ');
|
||||||
setColor(wc.dialog_fg, wc.dialog_bg);
|
setColor(wc.dialog_fg, wc.dialog_bg);
|
||||||
|
@ -338,15 +338,15 @@ void Calc::drawDispay()
|
||||||
if ( isNewFont() )
|
if ( isNewFont() )
|
||||||
{
|
{
|
||||||
FString bottom_line(33, wchar_t(fc::NF_border_line_bottom));
|
FString bottom_line(33, wchar_t(fc::NF_border_line_bottom));
|
||||||
printPos (3,2);
|
setPrintPos (3,2);
|
||||||
print (bottom_line);
|
print (bottom_line);
|
||||||
printPos (2,3);
|
setPrintPos (2,3);
|
||||||
print (wchar_t(fc::NF_rev_border_line_right));
|
print (wchar_t(fc::NF_rev_border_line_right));
|
||||||
printPos (36,3);
|
setPrintPos (36,3);
|
||||||
print (wchar_t(fc::NF_border_line_left));
|
print (wchar_t(fc::NF_border_line_left));
|
||||||
FString top_bottom_line_5(5, wchar_t(fc::NF_border_line_up_and_down));
|
FString top_bottom_line_5(5, wchar_t(fc::NF_border_line_up_and_down));
|
||||||
FString top_line_2(2, wchar_t(fc::NF_border_line_upper));
|
FString top_line_2(2, wchar_t(fc::NF_border_line_upper));
|
||||||
printPos (3,4);
|
setPrintPos (3,4);
|
||||||
print ( top_bottom_line_5 + top_line_2
|
print ( top_bottom_line_5 + top_line_2
|
||||||
+ top_bottom_line_5 + top_line_2
|
+ top_bottom_line_5 + top_line_2
|
||||||
+ top_bottom_line_5 + top_line_2
|
+ top_bottom_line_5 + top_line_2
|
||||||
|
@ -358,7 +358,7 @@ void Calc::drawDispay()
|
||||||
FString separator = FString(wchar_t(fc::BoxDrawingsVerticalAndRight))
|
FString separator = FString(wchar_t(fc::BoxDrawingsVerticalAndRight))
|
||||||
+ FString(35, wchar_t(fc::BoxDrawingsHorizontal))
|
+ FString(35, wchar_t(fc::BoxDrawingsHorizontal))
|
||||||
+ FString(wchar_t(fc::BoxDrawingsVerticalAndLeft));
|
+ FString(wchar_t(fc::BoxDrawingsVerticalAndLeft));
|
||||||
printPos (1,4);
|
setPrintPos (1,4);
|
||||||
print(separator);
|
print(separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ void keyboard::draw()
|
||||||
setNormal();
|
setNormal();
|
||||||
setColor(fc::Default, fc::Default);
|
setColor(fc::Default, fc::Default);
|
||||||
clearArea (vdesktop);
|
clearArea (vdesktop);
|
||||||
printPosTerm (1,1);
|
setPrintPos (1,1);
|
||||||
print ("---------------\n");
|
print ("---------------\n");
|
||||||
print ("Press Q to quit\n");
|
print ("Press Q to quit\n");
|
||||||
print ("---------------\n");
|
print ("---------------\n");
|
||||||
|
|
|
@ -68,7 +68,7 @@ void Mandelbrot::draw()
|
||||||
for (y0=y_min; y0 < y_max && current_line < Lines; y0+=dY)
|
for (y0=y_min; y0 < y_max && current_line < Lines; y0+=dY)
|
||||||
{
|
{
|
||||||
current_line++;
|
current_line++;
|
||||||
printPos (xoffset, yoffset + current_line);
|
setPrintPos (xoffset, yoffset + current_line);
|
||||||
|
|
||||||
for (x0=x_min; x0 < x_max; x0+=dX)
|
for (x0=x_min; x0 < x_max; x0+=dX)
|
||||||
{
|
{
|
||||||
|
|
|
@ -231,7 +231,7 @@ void AttribDemo::printAltCharset()
|
||||||
if ( ! isMonochron() )
|
if ( ! isMonochron() )
|
||||||
setColor (wc.label_fg, wc.label_bg);
|
setColor (wc.label_fg, wc.label_bg);
|
||||||
|
|
||||||
printPos (1,1);
|
setPrintPos (1,1);
|
||||||
print("alternate charset: ");
|
print("alternate charset: ");
|
||||||
|
|
||||||
if ( parent->bgcolor == fc::Default )
|
if ( parent->bgcolor == fc::Default )
|
||||||
|
@ -262,7 +262,7 @@ void AttribDemo::draw()
|
||||||
|
|
||||||
for (int y=0; y < getParentWidget()->getHeight()-7; y++)
|
for (int y=0; y < getParentWidget()->getHeight()-7; y++)
|
||||||
{
|
{
|
||||||
printPos (1, 2+y);
|
setPrintPos (1, 2+y);
|
||||||
|
|
||||||
if ( ! isMonochron() )
|
if ( ! isMonochron() )
|
||||||
setColor (wc.label_fg, wc.label_bg);
|
setColor (wc.label_fg, wc.label_bg);
|
||||||
|
@ -366,7 +366,7 @@ void AttribDemo::draw()
|
||||||
if ( ! isMonochron() )
|
if ( ! isMonochron() )
|
||||||
setColor(wc.label_fg, wc.label_bg);
|
setColor(wc.label_fg, wc.label_bg);
|
||||||
|
|
||||||
printPos (1, 15);
|
setPrintPos (1, 15);
|
||||||
short bg = static_cast<AttribDlg*>(getParent())->bgcolor;
|
short bg = static_cast<AttribDlg*>(getParent())->bgcolor;
|
||||||
print (" Background color:");
|
print (" Background color:");
|
||||||
|
|
||||||
|
@ -375,7 +375,7 @@ void AttribDemo::draw()
|
||||||
else
|
else
|
||||||
printf ( " %d", bg);
|
printf ( " %d", bg);
|
||||||
|
|
||||||
printPos (16, 17);
|
setPrintPos (16, 17);
|
||||||
print ("Change background color ->");
|
print ("Change background color ->");
|
||||||
updateVTerm(true);
|
updateVTerm(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ void timer::draw()
|
||||||
setNormal();
|
setNormal();
|
||||||
setColor (fc::Default, fc::Default);
|
setColor (fc::Default, fc::Default);
|
||||||
clearArea (vdesktop);
|
clearArea (vdesktop);
|
||||||
printPosTerm (1,1);
|
setPrintPos (1,1);
|
||||||
print ("---------------\n");
|
print ("---------------\n");
|
||||||
print ("Press Q to quit\n");
|
print ("Press Q to quit\n");
|
||||||
print ("---------------\n");
|
print ("---------------\n");
|
||||||
|
|
|
@ -85,7 +85,7 @@ void Transparent::draw()
|
||||||
|
|
||||||
for (int n=1; n <= getClientHeight(); n++)
|
for (int n=1; n <= getClientHeight(); n++)
|
||||||
{
|
{
|
||||||
printPos (2, 2+n);
|
setPrintPos (2, 2+n);
|
||||||
print(line);
|
print(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,9 +217,9 @@ void MainWindow::draw()
|
||||||
setReverse(true);
|
setReverse(true);
|
||||||
|
|
||||||
setColor();
|
setColor();
|
||||||
printPos (2,4);
|
setPrintPos (2,4);
|
||||||
print(line1);
|
print(line1);
|
||||||
printPos (2,5);
|
setPrintPos (2,5);
|
||||||
print(line2);
|
print(line2);
|
||||||
|
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
|
|
|
@ -339,7 +339,7 @@ Window::~Window()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void Window::activateWindow (FDialog* win)
|
void Window::activateWindow (FDialog* win)
|
||||||
{
|
{
|
||||||
if ( win && ! win->isHiddenWindow() && ! win->isActiveWindow() )
|
if ( win && ! win->isWindowHidden() && ! win->isWindowActive() )
|
||||||
{
|
{
|
||||||
bool has_raised = FWindow::raiseWindow(win);
|
bool has_raised = FWindow::raiseWindow(win);
|
||||||
win->activateDialog();
|
win->activateDialog();
|
||||||
|
@ -443,7 +443,7 @@ void Window::cb_next (FWidget*, void*)
|
||||||
|
|
||||||
while ( iter != dialog_list->end() )
|
while ( iter != dialog_list->end() )
|
||||||
{
|
{
|
||||||
if ( static_cast<FWindow*>(*iter)->isActiveWindow() )
|
if ( static_cast<FWindow*>(*iter)->isWindowActive() )
|
||||||
{
|
{
|
||||||
FDialog* next;
|
FDialog* next;
|
||||||
widgetList::const_iterator next_element;
|
widgetList::const_iterator next_element;
|
||||||
|
@ -484,7 +484,7 @@ void Window::cb_previous (FWidget*, void*)
|
||||||
--iter;
|
--iter;
|
||||||
|
|
||||||
if ( (*iter)->isDialogWidget()
|
if ( (*iter)->isDialogWidget()
|
||||||
&& static_cast<FWindow*>(*iter)->isActiveWindow() )
|
&& static_cast<FWindow*>(*iter)->isWindowActive() )
|
||||||
{
|
{
|
||||||
FDialog* prev;
|
FDialog* prev;
|
||||||
widgetList::const_iterator prev_element;
|
widgetList::const_iterator prev_element;
|
||||||
|
|
Loading…
Reference in New Issue