Easier handling of fc::SpecialCharacter
This commit is contained in:
parent
48f88fdeec
commit
9ba1b77069
|
@ -1,3 +1,6 @@
|
|||
2018-12-06 Markus Gans <guru.mail@muenster.de>
|
||||
* Easier handling of fc::SpecialCharacter
|
||||
|
||||
2018-12-01 Markus Gans <guru.mail@muenster.de>
|
||||
* Switched to the language standard C++11
|
||||
* Use delegated constructors and in-class default member initializers
|
||||
|
|
|
@ -75,6 +75,10 @@ AC_CONFIG_FILES([Makefile
|
|||
finalcut.spec
|
||||
finalcut.pc])
|
||||
|
||||
# Check for C++11 support
|
||||
AX_CHECK_COMPILE_FLAG([[-std=c++11]],,
|
||||
[AC_MSG_ERROR([compiler did not accept -std=c++11])])
|
||||
|
||||
# use GPM (General Purpose Mouse)
|
||||
AC_ARG_WITH([gpm],
|
||||
[AS_HELP_STRING([--without-gpm], [Disable GPM mouse support])],
|
||||
|
|
|
@ -345,11 +345,11 @@ void Calc::drawDispay()
|
|||
|
||||
if ( isNewFont() )
|
||||
{
|
||||
wchar_t bottom_line = wchar_t(finalcut::fc::NF_border_line_bottom);
|
||||
wchar_t top_bottom_line = wchar_t(finalcut::fc::NF_border_line_up_and_down);
|
||||
wchar_t top_line = wchar_t(finalcut::fc::NF_border_line_upper);
|
||||
wchar_t right_line = wchar_t(finalcut::fc::NF_rev_border_line_right);
|
||||
wchar_t left_line = wchar_t(finalcut::fc::NF_border_line_left);
|
||||
wchar_t bottom_line = finalcut::fc::NF_border_line_bottom;
|
||||
wchar_t top_bottom_line = finalcut::fc::NF_border_line_up_and_down;
|
||||
wchar_t top_line = finalcut::fc::NF_border_line_upper;
|
||||
wchar_t right_line = finalcut::fc::NF_rev_border_line_right;
|
||||
wchar_t left_line = finalcut::fc::NF_border_line_left;
|
||||
setPrintPos (3, 2);
|
||||
print (finalcut::FString(33, bottom_line));
|
||||
setPrintPos (2, 3);
|
||||
|
@ -367,9 +367,9 @@ void Calc::drawDispay()
|
|||
}
|
||||
else
|
||||
{
|
||||
wchar_t vertical_and_right = wchar_t(finalcut::fc::BoxDrawingsVerticalAndRight);
|
||||
wchar_t horizontal = wchar_t(finalcut::fc::BoxDrawingsHorizontal);
|
||||
wchar_t vertical_and_left = wchar_t(finalcut::fc::BoxDrawingsVerticalAndLeft);
|
||||
wchar_t vertical_and_right = finalcut::fc::BoxDrawingsVerticalAndRight;
|
||||
wchar_t horizontal = finalcut::fc::BoxDrawingsHorizontal;
|
||||
wchar_t vertical_and_left = finalcut::fc::BoxDrawingsVerticalAndLeft;
|
||||
finalcut::FString separator = finalcut::FString(vertical_and_right)
|
||||
+ finalcut::FString(35, horizontal)
|
||||
+ finalcut::FString(vertical_and_left);
|
||||
|
|
|
@ -85,7 +85,7 @@ CheckList::CheckList (finalcut::FWidget* parent)
|
|||
|
||||
// Statusbar at the bottom
|
||||
finalcut::FString separator;
|
||||
separator << ' ' << wchar_t(finalcut::fc::BoxDrawingsVertical) << ' ';
|
||||
separator << ' ' << finalcut::fc::BoxDrawingsVertical << ' ';
|
||||
listView.setStatusbarMessage ( finalcut::FString()
|
||||
<< "<Q> exit" << separator
|
||||
<< "<Space> select an item" << separator
|
||||
|
@ -170,7 +170,7 @@ void CheckList::cb_showList (finalcut::FWidget*, data_ptr)
|
|||
static_cast<finalcut::FListViewItem*>(*iter);
|
||||
|
||||
if ( item->isChecked() )
|
||||
shopping_list << wchar_t(finalcut::fc::Bullet) << ' '
|
||||
shopping_list << finalcut::fc::Bullet << ' '
|
||||
<< item->getText(1) << '\n';
|
||||
|
||||
++iter;
|
||||
|
|
|
@ -53,10 +53,10 @@ int main (int argc, char* argv[])
|
|||
finalcut::FLabel label_1(&dgl);
|
||||
finalcut::FLabel label_2(&dgl);
|
||||
|
||||
label_1 << wchar_t(finalcut::fc::BlackUpPointingTriangle)
|
||||
label_1 << finalcut::fc::BlackUpPointingTriangle
|
||||
<< std::wstring(L"\n")
|
||||
<< wchar_t(finalcut::fc::BoxDrawingsUpAndRight)
|
||||
<< finalcut::FString(2, wchar_t(finalcut::fc::BoxDrawingsHorizontal))
|
||||
<< finalcut::fc::BoxDrawingsUpAndRight
|
||||
<< finalcut::FString(2, finalcut::fc::BoxDrawingsHorizontal)
|
||||
<< " Double click the title bar button,";
|
||||
label_2 << "press Q on the keyboard,\n"
|
||||
<< "or push the button below to exit\n"
|
||||
|
|
|
@ -63,7 +63,7 @@ class Menu : public finalcut::FDialog
|
|||
void cb_message (finalcut::FWidget*, data_ptr);
|
||||
|
||||
// Data Members
|
||||
finalcut::FString line{13, wchar_t(finalcut::fc::BoxDrawingsHorizontal)};
|
||||
finalcut::FString line{13, finalcut::fc::BoxDrawingsHorizontal};
|
||||
finalcut::FMenuBar Menubar{this};
|
||||
finalcut::FMenu File{"&File", &Menubar};
|
||||
finalcut::FMenu Edit{"&Edit", &Menubar};
|
||||
|
|
|
@ -242,7 +242,7 @@ void Brushes::draw()
|
|||
setColor (fg_color, bg_color);
|
||||
setPrintPos (2, 3);
|
||||
print(" ");
|
||||
print(finalcut::FString(3, wchar_t(finalcut::fc::MediumShade)));
|
||||
print(finalcut::FString(3, finalcut::fc::MediumShade));
|
||||
|
||||
if ( brush == L' ' )
|
||||
pos = 0;
|
||||
|
@ -251,9 +251,9 @@ void Brushes::draw()
|
|||
|
||||
setColor();
|
||||
setPrintPos (3 + pos, 2);
|
||||
print(wchar_t(finalcut::fc::BlackDownPointingTriangle));
|
||||
print(finalcut::fc::BlackDownPointingTriangle);
|
||||
setPrintPos (3 + pos, 4);
|
||||
print(wchar_t(finalcut::fc::BlackUpPointingTriangle));
|
||||
print(finalcut::fc::BlackUpPointingTriangle);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
@ -272,7 +272,7 @@ void Brushes::onMouseDown (finalcut::FMouseEvent* ev)
|
|||
}
|
||||
else if ( mouse_x >= 5 && mouse_x <= 7 && mouse_y == 3 )
|
||||
{
|
||||
brush = wchar_t(finalcut::fc::MediumShade);
|
||||
brush = finalcut::fc::MediumShade;
|
||||
redraw();
|
||||
}
|
||||
}
|
||||
|
@ -416,25 +416,25 @@ void MouseDraw::draw()
|
|||
for (int y = 2; y < y_max; y++)
|
||||
{
|
||||
setPrintPos (10, y);
|
||||
print (wchar_t(finalcut::fc::NF_rev_border_line_right));
|
||||
print (finalcut::fc::NF_rev_border_line_right);
|
||||
}
|
||||
|
||||
setPrintPos (10, y_max);
|
||||
print (wchar_t(finalcut::fc::NF_rev_border_corner_lower_right));
|
||||
print (finalcut::fc::NF_rev_border_corner_lower_right);
|
||||
}
|
||||
else
|
||||
{
|
||||
setPrintPos (10, 2);
|
||||
print (wchar_t(finalcut::fc::BoxDrawingsDownAndHorizontal));
|
||||
print (finalcut::fc::BoxDrawingsDownAndHorizontal);
|
||||
|
||||
for (int y = 3; y < y_max; y++)
|
||||
{
|
||||
setPrintPos (10, y);
|
||||
print (wchar_t(finalcut::fc::BoxDrawingsVertical));
|
||||
print (finalcut::fc::BoxDrawingsVertical);
|
||||
}
|
||||
|
||||
setPrintPos (10, y_max);
|
||||
print (wchar_t(finalcut::fc::BoxDrawingsUpAndHorizontal));
|
||||
print (finalcut::fc::BoxDrawingsUpAndHorizontal);
|
||||
}
|
||||
|
||||
drawCanvas();
|
||||
|
|
|
@ -103,7 +103,7 @@ void Transparent::draw()
|
|||
else
|
||||
setTransparent();
|
||||
|
||||
finalcut::FString line(getClientWidth(), wchar_t('.'));
|
||||
finalcut::FString line(getClientWidth(), '.');
|
||||
|
||||
for (int n = 1; n <= int(getClientHeight()); n++)
|
||||
{
|
||||
|
|
|
@ -770,7 +770,7 @@ void MyDialog::cb_noFunctionMsg (finalcut::FWidget* widget, data_ptr)
|
|||
void MyDialog::cb_about (finalcut::FWidget*, data_ptr)
|
||||
{
|
||||
const char libver[] = F_VERSION;
|
||||
finalcut::FString line(2, wchar_t(finalcut::fc::BoxDrawingsHorizontal));
|
||||
finalcut::FString line(2, finalcut::fc::BoxDrawingsHorizontal);
|
||||
|
||||
finalcut::FMessageBox info ( "About"
|
||||
, line + L" The Final Cut " + line + "\n\n"
|
||||
|
@ -793,7 +793,7 @@ void MyDialog::cb_terminfo (finalcut::FWidget*, data_ptr)
|
|||
<< " Type: " << getTermType() << "\n"
|
||||
<< " Name: " << getTermFileName() << "\n"
|
||||
<< " Mode: " << getEncodingString() << "\n"
|
||||
<< " Size: " << x << wchar_t(finalcut::fc::Times)
|
||||
<< " Size: " << x << finalcut::fc::Times
|
||||
<< y << "\n"
|
||||
<< "Colors: " << getMaxColor()
|
||||
, finalcut::FMessageBox::Ok, 0, 0, this
|
||||
|
|
|
@ -223,7 +223,7 @@ class Window : public finalcut::FDialog
|
|||
|
||||
// Data Members
|
||||
std::vector<win_data*> windows{};
|
||||
finalcut::FString drop_down_symbol{wchar_t(finalcut::fc::BlackDownPointingTriangle)};
|
||||
finalcut::FString drop_down_symbol{finalcut::fc::BlackDownPointingTriangle};
|
||||
finalcut::FMenuBar Menubar{this};
|
||||
finalcut::FMenu File{"&File", &Menubar};
|
||||
finalcut::FDialogListMenu DglList{drop_down_symbol, &Menubar};
|
||||
|
|
|
@ -69,6 +69,13 @@ FLabel& FLabel::operator << (const FString& s)
|
|||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FLabel& FLabel::operator << (fc::SpecialCharacter c)
|
||||
{
|
||||
setText(text + static_cast<wchar_t>(c));
|
||||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FLabel& FLabel::operator << (const wchar_t c)
|
||||
{
|
||||
|
|
|
@ -72,6 +72,13 @@ FLineEdit& FLineEdit::operator << (const FString& s)
|
|||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FLineEdit& FLineEdit::operator << (fc::SpecialCharacter c)
|
||||
{
|
||||
setText(text + static_cast<wchar_t>(c));
|
||||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FLineEdit& FLineEdit::operator << (const wchar_t c)
|
||||
{
|
||||
|
|
|
@ -1768,7 +1768,7 @@ inline FString FListView::getCheckBox (const FListViewItem* item)
|
|||
checkbox = L"[ ] ";
|
||||
|
||||
if ( item->isChecked() )
|
||||
checkbox[1] = wchar_t(fc::Times); // Times ×
|
||||
checkbox[1] = fc::Times; // Times ×
|
||||
}
|
||||
|
||||
return checkbox;
|
||||
|
@ -1789,12 +1789,12 @@ inline FString FListView::getLinePrefix ( const FListViewItem* item
|
|||
{
|
||||
if ( item->isExpand() )
|
||||
{
|
||||
line += wchar_t(fc::BlackDownPointingTriangle); // ▼
|
||||
line += fc::BlackDownPointingTriangle; // ▼
|
||||
line += L' ';
|
||||
}
|
||||
else
|
||||
{
|
||||
line += wchar_t(fc::BlackRightPointingPointer); // ►
|
||||
line += fc::BlackRightPointingPointer; // ►
|
||||
line += L' ';
|
||||
}
|
||||
}
|
||||
|
@ -1821,9 +1821,9 @@ inline void FListView::drawSortIndicator ( std::size_t& length
|
|||
length++;
|
||||
|
||||
if ( sort_order == fc::ascending )
|
||||
headerline << wchar_t(fc::BlackUpPointingTriangle); // ▲
|
||||
headerline << fc::BlackUpPointingTriangle; // ▲
|
||||
else if ( sort_order == fc::descending )
|
||||
headerline << wchar_t(fc::BlackDownPointingTriangle); // ▼
|
||||
headerline << fc::BlackDownPointingTriangle; // ▼
|
||||
|
||||
if ( length < column_width )
|
||||
{
|
||||
|
@ -1836,7 +1836,7 @@ inline void FListView::drawSortIndicator ( std::size_t& length
|
|||
inline void FListView::drawHeaderBorder (std::size_t length)
|
||||
{
|
||||
setColor();
|
||||
const FString line (length, wchar_t(fc::BoxDrawingsHorizontal));
|
||||
const FString line (length, fc::BoxDrawingsHorizontal);
|
||||
headerline << line; // horizontal line
|
||||
}
|
||||
|
||||
|
|
|
@ -1278,7 +1278,7 @@ inline void FMenu::drawSeparator (int y)
|
|||
{
|
||||
print (fc::NF_border_line_vertical_right);
|
||||
FString line ( std::size_t(getWidth()) - 2
|
||||
, wchar_t(fc::BoxDrawingsHorizontal) );
|
||||
, fc::BoxDrawingsHorizontal );
|
||||
print (line);
|
||||
print (fc::NF_rev_border_line_vertical_left);
|
||||
}
|
||||
|
@ -1286,7 +1286,7 @@ inline void FMenu::drawSeparator (int y)
|
|||
{
|
||||
print (fc::BoxDrawingsVerticalAndRight);
|
||||
FString line ( std::size_t(getWidth()) - 2
|
||||
, wchar_t(fc::BoxDrawingsHorizontal));
|
||||
, fc::BoxDrawingsHorizontal);
|
||||
print (line);
|
||||
print (fc::BoxDrawingsVerticalAndLeft);
|
||||
}
|
||||
|
@ -1447,9 +1447,9 @@ inline void FMenu::drawSubMenuIndicator (std::size_t& startpos)
|
|||
if ( len > 0 )
|
||||
{
|
||||
// Print filling blank spaces
|
||||
print (FString(len, wchar_t(' ')));
|
||||
print (FString(len, L' '));
|
||||
// Print BlackRightPointingPointer ►
|
||||
print (wchar_t(fc::BlackRightPointingPointer));
|
||||
print (fc::BlackRightPointingPointer);
|
||||
startpos = max_item_width - (c + 2);
|
||||
}
|
||||
}
|
||||
|
@ -1465,7 +1465,7 @@ inline void FMenu::drawAcceleratorKey (std::size_t& startpos, FKey accel_key)
|
|||
if ( len > 0 )
|
||||
{
|
||||
// Print filling blank spaces + accelerator key name
|
||||
FString spaces (len, wchar_t(' '));
|
||||
FString spaces (len, L' ');
|
||||
print (spaces + accel_name);
|
||||
startpos = max_item_width - (c + 2);
|
||||
}
|
||||
|
|
|
@ -62,20 +62,6 @@ FString::FString (std::size_t len, wchar_t c)
|
|||
*--pe = c;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FString::FString (std::size_t len, char c)
|
||||
{
|
||||
wchar_t* ps;
|
||||
wchar_t* pe;
|
||||
|
||||
initLength(len);
|
||||
ps = string;
|
||||
pe = string + len;
|
||||
|
||||
while ( pe != ps )
|
||||
*--pe = wchar_t(c);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FString::FString (const FString& s) // copy constructor
|
||||
{
|
||||
|
@ -119,6 +105,18 @@ FString::FString (const char s[])
|
|||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FString::FString (fc::SpecialCharacter c)
|
||||
{
|
||||
if ( c )
|
||||
{
|
||||
wchar_t s[2];
|
||||
s[0] = static_cast<wchar_t>(c);
|
||||
s[1] = L'\0';
|
||||
_assign (s);
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FString::FString (const wchar_t c)
|
||||
{
|
||||
|
@ -207,6 +205,14 @@ FString& FString::operator << (const FString& s)
|
|||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FString& FString::operator << (fc::SpecialCharacter c)
|
||||
{
|
||||
FString s(static_cast<wchar_t>(c));
|
||||
_insert (length, s.length, s.string);
|
||||
return *this;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FString& FString::operator << (const wchar_t c)
|
||||
{
|
||||
|
|
|
@ -451,7 +451,7 @@ int FVTerm::print (term_area* area, const std::vector<charData>& term_string)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
int FVTerm::print (int c)
|
||||
int FVTerm::print (wchar_t c)
|
||||
{
|
||||
term_area* area = getPrintArea();
|
||||
|
||||
|
@ -467,14 +467,14 @@ int FVTerm::print (int c)
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
int FVTerm::print (term_area* area, int c)
|
||||
int FVTerm::print (term_area* area, wchar_t c)
|
||||
{
|
||||
charData nc; // next character
|
||||
|
||||
if ( ! area )
|
||||
return -1;
|
||||
|
||||
nc.code = c;
|
||||
nc.code = wchar_t(c);
|
||||
nc.fg_color = next_attribute.fg_color;
|
||||
nc.bg_color = next_attribute.bg_color;
|
||||
nc.attr.byte[0] = next_attribute.attr.byte[0];
|
||||
|
|
|
@ -82,6 +82,7 @@ class FLabel : public FWidget
|
|||
// Overloaded operators
|
||||
FLabel& operator = (const FString&);
|
||||
FLabel& operator << (const FString&);
|
||||
FLabel& operator << (fc::SpecialCharacter);
|
||||
FLabel& operator << (const wchar_t);
|
||||
FLabel& operator << (const uInt);
|
||||
FLabel& operator << (const int);
|
||||
|
|
|
@ -85,6 +85,7 @@ class FLineEdit : public FWidget
|
|||
// Overloaded operators
|
||||
FLineEdit& operator = (const FString&);
|
||||
FLineEdit& operator << (const FString&);
|
||||
FLineEdit& operator << (fc::SpecialCharacter);
|
||||
FLineEdit& operator << (const wchar_t);
|
||||
FLineEdit& operator << (const uInt);
|
||||
FLineEdit& operator << (const int);
|
||||
|
|
|
@ -77,7 +77,7 @@ class FOptiAttr
|
|||
// Typedefs
|
||||
typedef struct
|
||||
{
|
||||
int code; // character code
|
||||
wchar_t code; // character code
|
||||
FColor fg_color; // foreground color
|
||||
FColor bg_color; // background color
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "final/fc.h"
|
||||
#include "final/ftypes.h"
|
||||
|
||||
namespace finalcut
|
||||
|
@ -86,12 +87,12 @@ class FString
|
|||
explicit FString (int);
|
||||
explicit FString (std::size_t);
|
||||
FString (std::size_t, wchar_t);
|
||||
FString (std::size_t, char);
|
||||
FString (const FString&); // implicit conversion copy constructor
|
||||
FString (const std::wstring&); // implicit conversion constructor
|
||||
FString (const wchar_t[]); // implicit conversion constructor
|
||||
FString (const std::string&); // implicit conversion constructor
|
||||
FString (const char[]); // implicit conversion constructor
|
||||
FString (fc::SpecialCharacter); // implicit conversion constructor
|
||||
FString (const wchar_t); // implicit conversion constructor
|
||||
FString (const char); // implicit conversion constructor
|
||||
|
||||
|
@ -108,6 +109,7 @@ class FString
|
|||
const FString operator + (const char);
|
||||
|
||||
FString& operator << (const FString&);
|
||||
FString& operator << (fc::SpecialCharacter);
|
||||
FString& operator << (const wchar_t);
|
||||
FString& operator << (const char);
|
||||
FString& operator << (const sInt16);
|
||||
|
|
|
@ -579,4 +579,24 @@ inline void FTerm::changeTermSizeFinished()
|
|||
|
||||
} // namespace finalcut
|
||||
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
inline std::ostream& operator << ( std::ostream& os
|
||||
, finalcut::fc::SpecialCharacter c )
|
||||
{
|
||||
return os << static_cast<char>(c);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
inline std::wostream& operator << ( std::wostream& os
|
||||
, finalcut::fc::SpecialCharacter c )
|
||||
{
|
||||
return os << static_cast<wchar_t>(c);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif // FTERM_H
|
||||
|
|
|
@ -287,8 +287,8 @@ class FVTerm
|
|||
int print (term_area*, const FString&);
|
||||
int print (const std::vector<charData>&);
|
||||
int print (term_area*, const std::vector<charData>&);
|
||||
int print (int);
|
||||
int print (term_area*, int);
|
||||
int print (wchar_t);
|
||||
int print (term_area*, wchar_t);
|
||||
int print (charData&);
|
||||
int print (term_area*, charData&);
|
||||
FVTerm& print();
|
||||
|
|
|
@ -823,6 +823,10 @@ void FStringTest::streamInsertionTest()
|
|||
out << const_cast<char*>("ABC");
|
||||
CPPUNIT_ASSERT ( out == L"ABC" );
|
||||
|
||||
out.clear();
|
||||
out << finalcut::fc::Euro;
|
||||
CPPUNIT_ASSERT ( out == L"€" );
|
||||
|
||||
out.clear();
|
||||
out << wchar_t(L'A');
|
||||
CPPUNIT_ASSERT ( out == L"A" );
|
||||
|
|
Loading…
Reference in New Issue