diff --git a/ChangeLog b/ChangeLog index e8c9d785..924f442e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2021-06-19 Markus Gans + * Moving the creator methods from FTerm to its own class + 2021-06-16 Markus Gans * Converted the internal timer from timeval to std::chrono::time_point diff --git a/examples/opti-move.cpp b/examples/opti-move.cpp index f80ebabe..8e0adf17 100644 --- a/examples/opti-move.cpp +++ b/examples/opti-move.cpp @@ -203,7 +203,7 @@ DirectLogger::~DirectLogger() noexcept = default; // destructor int main (int argc, char* argv[]) { // Disable mouse, color palette changes and terminal data requests - auto& start_options = finalcut::FStartOptions::getFStartOptions(); + auto& start_options = finalcut::FStartOptions::getInstance(); start_options.mouse_support = false; start_options.color_change = false; start_options.terminal_data_request = false; @@ -265,7 +265,7 @@ int main (int argc, char* argv[]) std::cout << "\r" << line << std::flush; // Generation of a logger in a shared_ptr via a pointer finalcut::FApplication::setLog(std::make_shared()); - const auto& opti_move = finalcut::FTerm::getFOptiMove(); + const auto& opti_move = finalcut::FOptiMove::getInstance(); finalcut::printDurations(opti_move); // Waiting for keypress diff --git a/examples/rotozoomer.cpp b/examples/rotozoomer.cpp index 7d1f0332..1b62812c 100644 --- a/examples/rotozoomer.cpp +++ b/examples/rotozoomer.cpp @@ -308,7 +308,7 @@ int main (int argc, char* argv[]) { benchmark = true; // Disable terminal data requests - auto& start_options = finalcut::FStartOptions::getFStartOptions(); + auto& start_options = finalcut::FStartOptions::getInstance(); start_options.terminal_data_request = false; } diff --git a/examples/termcap.cpp b/examples/termcap.cpp index 8c3f4bc9..a15ed0a1 100644 --- a/examples/termcap.cpp +++ b/examples/termcap.cpp @@ -33,7 +33,7 @@ using finalcut::Termcap; void tcapBoolean (const std::string&, bool); void tcapNumeric (const std::string&, int); void tcapString (const std::string&, const char[]); -void debug (const finalcut::FApplication&); +void debug(); void booleans(); void numeric(); void string(); @@ -210,10 +210,9 @@ void tcapString (const std::string& name, const char cap_string[]) //---------------------------------------------------------------------- #if DEBUG -void debug (const finalcut::FApplication& TermApp) +void debug() { - const auto& fterm = TermApp.getFTerm(); - auto& debug_data = fterm.getFTermDebugData(); + auto& debug_data = finalcut::FTermDebugData::getInstance(); const auto& ab_s = debug_data.getAnswerbackString(); const auto& sec_da = debug_data.getSecDAString(); std::cout << "\n.------------------- debug -------------------\r\n"; @@ -310,7 +309,7 @@ int main (int argc, char* argv[]) finalcut::FTerm::useAlternateScreen(false); // Disable color palette changes and terminal data requests - auto& start_options = finalcut::FStartOptions::getFStartOptions(); + auto& start_options = finalcut::FStartOptions::getInstance(); start_options.color_change = false; start_options.terminal_data_request = false; @@ -326,7 +325,7 @@ int main (int argc, char* argv[]) std::cout << "--------\r\nFTermcap\r\n--------\r\n\n"; std::cout << "Terminal: " << finalcut::FTerm::getTermType() << "\r\n"; - debug (term_app); + debug(); booleans(); numeric(); diff --git a/examples/ui.cpp b/examples/ui.cpp index 316d6101..c0b609e6 100644 --- a/examples/ui.cpp +++ b/examples/ui.cpp @@ -427,7 +427,7 @@ void MyDialog::initMenu() Drive.setStatusbarMessage ("Show drive symbols"); Line3.setSeparator(); - if ( finalcut::FStartOptions::getFStartOptions().dark_theme ) + if ( finalcut::FStartOptions::getInstance().dark_theme ) Theme.setChecked(); } diff --git a/src/fapplication.cpp b/src/fapplication.cpp index 0fb51420..edaec43d 100644 --- a/src/fapplication.cpp +++ b/src/fapplication.cpp @@ -90,7 +90,7 @@ FApplication::FApplication (const int& arg_c, char* arg_v[]) if ( internal::var::app_object ) { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); fterm_data.setExitMessage("FApplication: There should be " "only one application object"); FApplication::exit(EXIT_FAILURE); @@ -339,7 +339,7 @@ void FApplication::setLogFile (const FString& filename) } else { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); fterm_data.setExitMessage ( "Could not open log file \"" + filename + "\"" ); exit(EXIT_FAILURE); @@ -395,7 +395,7 @@ void FApplication::init() time_last_event = TimeValue{}; // Initialize keyboard - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); auto cmd1 = [this] () { this->keyPressed(); }; auto cmd2 = [this] () { this->keyReleased(); }; auto cmd3 = [this] () { this->escapeKeyPressed(); }; @@ -412,7 +412,7 @@ void FApplication::init() keyboard.setKeypressTimeout (key_timeout); // Initialize mouse control - auto& mouse = FTerm::getFMouseControl(); + auto& mouse = FMouseControl::getInstance(); auto cmd = [this] (const FMouseData& md) { this->mouseEvent(md); }; FMouseCommand mouse_cmd (cmd); mouse.setEventCommand (mouse_cmd); @@ -443,7 +443,7 @@ void FApplication::setTerminalEncoding (const FString& enc_str) showParameterUsage(); else { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); fterm_data.setExitMessage ( "Unknown encoding \"" + enc_str + "\"\n(Valid encodings are utf8, " + "vt100, pc and ascii)" ); @@ -562,7 +562,7 @@ void FApplication::cmdOptions (const Args& args) //---------------------------------------------------------------------- inline FStartOptions& FApplication::getStartOptions() { - return FStartOptions::getFStartOptions(); + return FStartOptions::getInstance(); } //---------------------------------------------------------------------- @@ -657,8 +657,8 @@ inline void FApplication::findKeyboardWidget() const //---------------------------------------------------------------------- inline bool FApplication::isKeyPressed() const { - auto& mouse = FTerm::getFMouseControl(); - auto& keyboard = FTerm::getFKeyboard(); + auto& mouse = FMouseControl::getInstance(); + auto& keyboard = FKeyboard::getInstance(); if ( mouse.isGpmMouseEnabled() ) return mouse.getGpmKeyPressed(keyboard.hasUnprocessedInput()); @@ -693,7 +693,7 @@ void FApplication::mouseTracking() const //---------------------------------------------------------------------- inline void FApplication::performKeyboardAction() { - const auto& keyboard = FTerm::getFKeyboard(); + const auto& keyboard = FKeyboard::getInstance(); if ( keyboard.getKey() == FKey::Ctrl_l ) // Ctrl-L (redraw the screen) { @@ -712,8 +712,8 @@ inline void FApplication::performKeyboardAction() //---------------------------------------------------------------------- inline void FApplication::performMouseAction() const { - auto& mouse = FTerm::getFMouseControl(); - auto& keyboard = FTerm::getFKeyboard(); + auto& mouse = FMouseControl::getInstance(); + auto& keyboard = FKeyboard::getInstance(); const auto key = keyboard.getKey(); auto& buffer = keyboard.getKeyBuffer(); @@ -760,7 +760,7 @@ inline void FApplication::sendEscapeKeyPressEvent() const inline bool FApplication::sendKeyDownEvent (FWidget* widget) const { // Send key down event - const auto& keyboard = FTerm::getFKeyboard(); + const auto& keyboard = FKeyboard::getInstance(); FKeyEvent k_down_ev (Event::KeyDown, keyboard.getKey()); sendEvent (widget, &k_down_ev); return k_down_ev.isAccepted(); @@ -770,7 +770,7 @@ inline bool FApplication::sendKeyDownEvent (FWidget* widget) const inline bool FApplication::sendKeyPressEvent (FWidget* widget) const { // Send key press event - const auto& keyboard = FTerm::getFKeyboard(); + const auto& keyboard = FKeyboard::getInstance(); FKeyEvent k_press_ev (Event::KeyPress, keyboard.getKey()); sendEvent (widget, &k_press_ev); return k_press_ev.isAccepted(); @@ -780,7 +780,7 @@ inline bool FApplication::sendKeyPressEvent (FWidget* widget) const inline bool FApplication::sendKeyUpEvent (FWidget* widget) const { // Send key up event - const auto& keyboard = FTerm::getFKeyboard(); + const auto& keyboard = FKeyboard::getInstance(); FKeyEvent k_up_ev (Event::KeyUp, keyboard.getKey()); sendEvent (widget, &k_up_ev); return k_up_ev.isAccepted(); @@ -817,8 +817,8 @@ inline void FApplication::sendKeyboardAccelerator() //---------------------------------------------------------------------- inline bool FApplication::hasDataInQueue() const { - const auto& keyboard = FTerm::getFKeyboard(); - const auto& mouse = FTerm::getFMouseControl(); + const auto& keyboard = FKeyboard::getInstance(); + const auto& mouse = FMouseControl::getInstance(); if ( keyboard.hasDataInQueue() || mouse.hasDataInQueue() @@ -837,7 +837,7 @@ void FApplication::queuingKeyboardInput() const return; findKeyboardWidget(); - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.escapeKeyHandling(); // special case: Esc key keyboard.clearKeyBufferOnTimeout(); @@ -848,7 +848,7 @@ void FApplication::queuingKeyboardInput() const //---------------------------------------------------------------------- void FApplication::queuingMouseInput() const { - auto& mouse = FTerm::getFMouseControl(); + auto& mouse = FMouseControl::getInstance(); if ( quit_now || internal::var::exit_loop @@ -856,7 +856,7 @@ void FApplication::queuingMouseInput() const || FTerm::hasChangedTermSize() ) return; - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); auto time_keypressed = keyboard.getKeyPressedTime(); mouse.processEvent (time_keypressed); keyboard.hasUnprocessedInput() = mouse.hasUnprocessedInput(); @@ -871,7 +871,7 @@ void FApplication::processKeyboardEvent() const || FTerm::hasChangedTermSize() ) return; - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.processQueuedInput(); } @@ -883,13 +883,13 @@ void FApplication::processMouseEvent() const || FTerm::hasChangedTermSize() ) return; - FTerm::getFMouseControl().processQueuedInput(); + FMouseControl::getInstance().processQueuedInput(); } //---------------------------------------------------------------------- bool FApplication::processDialogSwitchAccelerator() const { - const auto& keyboard = FTerm::getFKeyboard(); + const auto& keyboard = FKeyboard::getInstance(); if ( keyboard.getKey() >= FKey::Meta_1 && keyboard.getKey() <= FKey::Meta_9 ) @@ -927,7 +927,7 @@ bool FApplication::processAccelerator (const FWidget& widget) const for (auto&& item : widget.getAcceleratorList()) { - if ( item.key == FTerm::getFKeyboard().getKey() ) + if ( item.key == FKeyboard::getInstance().getKey() ) { // unset the move/size mode auto move_size = getMoveSizeWidget(); @@ -1257,7 +1257,7 @@ void FApplication::processResizeEvent() const return; FTerm::detectTermSize(); // Detect and save the current terminal size - auto& mouse = FTerm::getFMouseControl(); + auto& mouse = FMouseControl::getInstance(); mouse.setMaxWidth (uInt16(getDesktopWidth())); mouse.setMaxHeight (uInt16(getDesktopHeight())); FResizeEvent r_ev(Event::Resize); diff --git a/src/fbutton.cpp b/src/fbutton.cpp index 40c310bb..c16dca8f 100644 --- a/src/fbutton.cpp +++ b/src/fbutton.cpp @@ -319,6 +319,12 @@ void FButton::onMouseMove (FMouseEvent* ev) } } +//---------------------------------------------------------------------- +void FButton::onWheel (FWheelEvent*) +{ + setUp(); +} + //---------------------------------------------------------------------- void FButton::onTimer (FTimerEvent* ev) { diff --git a/src/fcolorpalette.cpp b/src/fcolorpalette.cpp index d75daec9..a1186b62 100644 --- a/src/fcolorpalette.cpp +++ b/src/fcolorpalette.cpp @@ -3,7 +3,7 @@ * * * This file is part of the FINAL CUT widget toolkit * * * -* Copyright 2020 Markus Gans * +* Copyright 2020-2021 Markus Gans * * * * FINAL CUT is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * @@ -39,6 +39,15 @@ FColorPalette::FColorPalette (const FSetPalette& f) FColorPalette::~FColorPalette() noexcept = default; // destructor +// public methods of FColorPalette +//---------------------------------------------------------------------- +auto FColorPalette::getInstance() -> std::shared_ptr& +{ + static const auto& color_theme = make_unique>(); + return *color_theme.get(); +} + + // protected methods of FColorPalette //---------------------------------------------------------------------- void FColorPalette::setPalette (FColor index, int r, int g, int b) const diff --git a/src/fcombobox.cpp b/src/fcombobox.cpp index 5d6db801..3a340f25 100644 --- a/src/fcombobox.cpp +++ b/src/fcombobox.cpp @@ -611,7 +611,7 @@ void FComboBox::cb_closeComboBox() //---------------------------------------------------------------------- void FComboBox::cb_inputFieldSwitch() { - auto& mouse = FTerm::getFMouseControl(); + auto& mouse = FMouseControl::getInstance(); if ( ! mouse.isLeftButtonPressed() ) return; @@ -630,7 +630,7 @@ void FComboBox::cb_inputFieldSwitch() //---------------------------------------------------------------------- void FComboBox::cb_inputFieldHandOver() { - auto& mouse = FTerm::getFMouseControl(); + auto& mouse = FMouseControl::getInstance(); if ( list_window.isHidden() ) return; diff --git a/src/fdialog.cpp b/src/fdialog.cpp index 61f3b81a..f41a45be 100644 --- a/src/fdialog.cpp +++ b/src/fdialog.cpp @@ -100,7 +100,7 @@ bool FDialog::setModal (bool enable) if ( enable ) { setModalDialogCounter()++; - FTerm::getFKeyboard().clearKeyBuffer(); + FKeyboard::getInstance().clearKeyBuffer(); } else setModalDialogCounter()--; diff --git a/src/ffiledialog.cpp b/src/ffiledialog.cpp index d2dce52b..8ccb8ded 100644 --- a/src/ffiledialog.cpp +++ b/src/ffiledialog.cpp @@ -162,7 +162,7 @@ void FFileDialog::setPath (const FString& dir) return; } - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->realpath(dir.c_str(), resolved_path.data()) != nullptr ) r_dir.setString(resolved_path.data()); @@ -478,15 +478,13 @@ int FFileDialog::readDir() getEntry(dir, next); } - else if ( errno != 0 ) - { - FMessageBox::error (this, "Reading directory\n" + directory); - - if ( errno == EOVERFLOW ) // Value too large to be stored in data type - break; - } else + { + if ( errno != 0 ) + FMessageBox::error (this, "Reading directory\n" + directory); + break; + } } // end while if ( closedir(directory_stream) != 0 ) @@ -551,7 +549,7 @@ void FFileDialog::followSymLink (const char* const dir, FDirEntry& entry) const std::string symLink{}; symLink.reserve(MAXPATHLEN); struct stat sb{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); symLink = dir + entry.name; if ( fsystem->realpath(symLink.data(), resolved_path.data()) == nullptr ) @@ -684,7 +682,7 @@ FString FFileDialog::getHomeDir() struct passwd* pwd_ptr{}; std::array buf{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); const uid_t euid = fsystem->geteuid(); if ( fsystem->getpwuid_r(euid, &pwd, buf.data(), buf.size(), &pwd_ptr) ) diff --git a/src/fkeyboard.cpp b/src/fkeyboard.cpp index 26c25b9d..5dc8caae 100644 --- a/src/fkeyboard.cpp +++ b/src/fkeyboard.cpp @@ -74,6 +74,13 @@ FKeyboard::FKeyboard() // public methods of FKeyboard +//---------------------------------------------------------------------- +auto FKeyboard::getInstance() -> FKeyboard& +{ + static const auto& keyboard = make_unique(); + return *keyboard; +} + //---------------------------------------------------------------------- void FKeyboard::fetchKeyCode() { @@ -536,7 +543,7 @@ FKey FKeyboard::keyCorrection (const FKey& keycode) const #if defined(__linux__) if ( FTerm::isLinuxTerm() ) { - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); key_correction = linux_console.modifierKeyCorrection(keycode); } else diff --git a/src/fmouse.cpp b/src/fmouse.cpp index 64a06689..d851770d 100644 --- a/src/fmouse.cpp +++ b/src/fmouse.cpp @@ -258,7 +258,7 @@ uInt64 FMouse::getDblclickInterval() const } //---------------------------------------------------------------------- -TimeValue FMouse::getMousePressedTime() +TimeValue FMouse::getMousePressedTime() const { return time_mousepressed; } @@ -1204,14 +1204,16 @@ void FMouseUrxvt::setButtonState (const int btn, const TimeValue& time) //---------------------------------------------------------------------- FMouseControl::FMouseControl() { + using mt = FMouse::MouseType; + #ifdef F_HAVE_LIBGPM if ( FTermLinux::isLinuxConsole() ) - mouse_protocol[FMouse::MouseType::Gpm].reset(FMouse::createMouseObject()); + mouse_protocol[mt::Gpm].reset(FMouse::createMouseObject()); #endif - mouse_protocol[FMouse::MouseType::X11].reset(FMouse::createMouseObject()); - mouse_protocol[FMouse::MouseType::Sgr].reset(FMouse::createMouseObject()); - mouse_protocol[FMouse::MouseType::Urxvt].reset(FMouse::createMouseObject()); + mouse_protocol[mt::X11].reset(FMouse::createMouseObject()); + mouse_protocol[mt::Sgr].reset(FMouse::createMouseObject()); + mouse_protocol[mt::Urxvt].reset(FMouse::createMouseObject()); } //---------------------------------------------------------------------- @@ -1219,6 +1221,13 @@ FMouseControl::~FMouseControl() = default; // destructor // public methods of FMouseControl +//---------------------------------------------------------------------- +auto FMouseControl::getInstance() -> FMouseControl& +{ + static const auto& mouse = make_unique(); + return *mouse; +} + //---------------------------------------------------------------------- const FPoint& FMouseControl::getPos() { diff --git a/src/fobject.cpp b/src/fobject.cpp index 260c9c82..e60fe3af 100644 --- a/src/fobject.cpp +++ b/src/fobject.cpp @@ -344,18 +344,17 @@ void FObject::onUserEvent (FUserEvent*) uInt FObject::processTimerEvent() { uInt activated{0}; - auto currentTime = getCurrentTime(); + std::unique_lock unique_lock( internal::var::timer_mutex + , std::defer_lock ); - if ( ! internal::var::timer_mutex.try_lock() ) + if ( ! unique_lock.try_lock() ) return 0; + auto currentTime = getCurrentTime(); auto& timer_list = globalTimerList(); if ( ! timer_list || timer_list->empty() ) - { - internal::var::timer_mutex.unlock(); return 0; - } for (auto&& timer : *timer_list) { @@ -376,7 +375,6 @@ uInt FObject::processTimerEvent() performTimerAction (timer.object, &t_ev); } - internal::var::timer_mutex.unlock(); return activated; } diff --git a/src/foptiattr.cpp b/src/foptiattr.cpp index 82b57601..f96cff36 100644 --- a/src/foptiattr.cpp +++ b/src/foptiattr.cpp @@ -51,6 +51,13 @@ FOptiAttr::FOptiAttr() // public methods of FOptiAttr +//---------------------------------------------------------------------- +auto FOptiAttr::getInstance() -> FOptiAttr& +{ + static const auto& opti_attr = make_unique(); + return *opti_attr; +} + //---------------------------------------------------------------------- void FOptiAttr::setTermEnvironment (const TermEnv& term_env) { @@ -577,7 +584,7 @@ std::string FOptiAttr::changeAttribute (FChar& term, FChar& next) changeAttributeSeparately (term, next); } - if ( FStartOptions::getFStartOptions().sgr_optimizer ) + if ( FStartOptions::getInstance().sgr_optimizer ) sgr_optimizer.optimize(); return attr_buf; diff --git a/src/foptimove.cpp b/src/foptimove.cpp index 37bc50b4..b8cbbf8d 100644 --- a/src/foptimove.cpp +++ b/src/foptimove.cpp @@ -55,6 +55,13 @@ FOptiMove::FOptiMove (int baud) // public methods of FOptiMove +//---------------------------------------------------------------------- +auto FOptiMove::getInstance() -> FOptiMove& +{ + static const auto& opti_move = make_unique(); + return *opti_move; +} + //---------------------------------------------------------------------- void FOptiMove::setBaudRate (int baud) { diff --git a/src/fstartoptions.cpp b/src/fstartoptions.cpp index b314d9a8..e2a9291a 100644 --- a/src/fstartoptions.cpp +++ b/src/fstartoptions.cpp @@ -3,7 +3,7 @@ * * * This file is part of the FINAL CUT widget toolkit * * * -* Copyright 2019-2020 Markus Gans * +* Copyright 2019-2021 Markus Gans * * * * FINAL CUT is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * @@ -54,7 +54,7 @@ FStartOptions::FStartOptions() // public methods of FStartOptions //---------------------------------------------------------------------- -FStartOptions& FStartOptions::getFStartOptions() +auto FStartOptions::getInstance() -> FStartOptions& { static const auto& start_options = make_unique(); return *start_options; diff --git a/src/fsystem.cpp b/src/fsystem.cpp index 0193ed0f..9919bc7a 100644 --- a/src/fsystem.cpp +++ b/src/fsystem.cpp @@ -3,7 +3,7 @@ * * * This file is part of the FINAL CUT widget toolkit * * * -* Copyright 2019-2020 Markus Gans * +* Copyright 2019-2021 Markus Gans * * * * FINAL CUT is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * @@ -21,6 +21,7 @@ ***********************************************************************/ #include "final/fsystem.h" +#include "final/fsystemimpl.h" namespace finalcut { @@ -33,5 +34,14 @@ namespace finalcut //---------------------------------------------------------------------- FSystem::~FSystem() noexcept = default; // destructor + +// public methods of FSystem +//---------------------------------------------------------------------- +auto FSystem::getInstance() -> std::unique_ptr& +{ + static const auto& fsys = make_unique>(make_unique()); + return *fsys.get(); +} + } // namespace finalcut diff --git a/src/fterm.cpp b/src/fterm.cpp index dab89514..21a4df68 100644 --- a/src/fterm.cpp +++ b/src/fterm.cpp @@ -108,7 +108,7 @@ FTerm::~FTerm() // destructor //---------------------------------------------------------------------- std::size_t FTerm::getLineNumber() { - const auto& term_geometry = FTerm::getFTermData().getTermGeometry(); + const auto& term_geometry = FTermData::getInstance().getTermGeometry(); if ( term_geometry.getHeight() == 0 ) detectTermSize(); @@ -119,7 +119,7 @@ std::size_t FTerm::getLineNumber() //---------------------------------------------------------------------- std::size_t FTerm::getColumnNumber() { - const auto& term_geometry = FTerm::getFTermData().getTermGeometry(); + const auto& term_geometry = FTermData::getInstance().getTermGeometry(); if ( term_geometry.getWidth() == 0 ) detectTermSize(); @@ -130,32 +130,32 @@ std::size_t FTerm::getColumnNumber() //---------------------------------------------------------------------- FString FTerm::getKeyName (FKey keynum) { - const auto& keyboard = FTerm::getFKeyboard(); + const auto& keyboard = FKeyboard::getInstance(); return keyboard.getKeyName (keynum); } //---------------------------------------------------------------------- charSubstitution& FTerm::getCharSubstitutionMap() { - return FTerm::getFTermData().getCharSubstitutionMap(); + return FTermData::getInstance().getCharSubstitutionMap(); } //---------------------------------------------------------------------- int FTerm::getTTYFileDescriptor() { - return FTerm::getFTermData().getTTYFileDescriptor(); + return FTermData::getInstance().getTTYFileDescriptor(); } //---------------------------------------------------------------------- std::string FTerm::getTermType() { - return FTerm::getFTermData().getTermType(); + return FTermData::getInstance().getTermType(); } //---------------------------------------------------------------------- std::string FTerm::getTermFileName() { - return FTerm::getFTermData().getTermFileName(); + return FTermData::getInstance().getTermFileName(); } //---------------------------------------------------------------------- @@ -170,105 +170,6 @@ int FTerm::getMaxColor() return FTermcap::max_color; } -//---------------------------------------------------------------------- -auto FTerm::getColorPaletteTheme() -> std::shared_ptr& -{ - static const auto& color_theme = make_unique>(); - return *color_theme.get(); -} - -//---------------------------------------------------------------------- -auto FTerm::getFSystem() -> std::unique_ptr& -{ - static const auto& fsys = make_unique>(make_unique()); - return *fsys.get(); -} - -//---------------------------------------------------------------------- -auto FTerm::getFTermData() -> FTermData& -{ - static const auto& data = make_unique(); - return *data; -} - -//---------------------------------------------------------------------- -auto FTerm::getFOptiMove() -> FOptiMove& -{ - static const auto& opti_move = make_unique(); - return *opti_move; -} - -//---------------------------------------------------------------------- -auto FTerm::getFOptiAttr() -> FOptiAttr& -{ - static const auto& opti_attr = make_unique(); - return *opti_attr; -} - -//---------------------------------------------------------------------- -auto FTerm::getFTermDetection() -> FTermDetection& -{ - static const auto& term_detection = make_unique(); - return *term_detection; -} - -//---------------------------------------------------------------------- -auto FTerm::getFTermXTerminal() -> FTermXTerminal& -{ - static const auto& xterm = make_unique(); - return *xterm; -} - -//---------------------------------------------------------------------- -auto FTerm::getFKeyboard() -> FKeyboard& -{ - static const auto& keyboard = make_unique(); - return *keyboard; -} - -//---------------------------------------------------------------------- -auto FTerm::getFMouseControl() -> FMouseControl& -{ - static const auto& mouse = make_unique(); - return *mouse; -} - -#if defined(__linux__) || defined(UNIT_TEST) -//---------------------------------------------------------------------- -auto FTerm::getFTermLinux() -> FTermLinux& -{ - static const auto& linux_console = make_unique(); - return *linux_console; -} -#endif - -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) -//---------------------------------------------------------------------- -auto FTerm::getFTermFreeBSD() -> FTermFreeBSD& -{ - static const auto& freebsd_console = make_unique(); - return *freebsd_console; -} -#endif - -#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(UNIT_TEST) -//---------------------------------------------------------------------- -auto FTerm::getFTermOpenBSD() -> FTermOpenBSD& -{ - static const auto& openbsd_console = make_unique(); - return *openbsd_console; -} -#endif - -#if DEBUG -//---------------------------------------------------------------------- -auto FTerm::getFTermDebugData() -> FTermDebugData& -{ - static const auto& debug_data = make_unique(); - return *debug_data; -} -#endif // DEBUG - //---------------------------------------------------------------------- bool FTerm::isNormal (const FChar& ch) { @@ -278,145 +179,145 @@ bool FTerm::isNormal (const FChar& ch) //---------------------------------------------------------------------- bool FTerm::hasUTF8() { - return FTerm::getFTermData().hasUTF8Console(); + return FTermData::getInstance().hasUTF8Console(); } //---------------------------------------------------------------------- bool FTerm::isMonochron() { - return FTerm::getFTermData().isMonochron(); + return FTermData::getInstance().isMonochron(); } //---------------------------------------------------------------------- bool FTerm::isAnsiTerminal() { - return FTerm::getFTermDetection().isAnsiTerminal(); + return FTermDetection::getInstance().isAnsiTerminal(); } //---------------------------------------------------------------------- bool FTerm::isXTerminal() { - return FTerm::getFTermDetection().isXTerminal(); + return FTermDetection::getInstance().isXTerminal(); } //---------------------------------------------------------------------- bool FTerm::isRxvtTerminal() { - return FTerm::getFTermDetection().isRxvtTerminal(); + return FTermDetection::getInstance().isRxvtTerminal(); } //---------------------------------------------------------------------- bool FTerm::isUrxvtTerminal() { - return FTerm::getFTermDetection().isUrxvtTerminal(); + return FTermDetection::getInstance().isUrxvtTerminal(); } //---------------------------------------------------------------------- bool FTerm::isKdeTerminal() { - return FTerm::getFTermDetection().isKdeTerminal(); + return FTermDetection::getInstance().isKdeTerminal(); } //---------------------------------------------------------------------- bool FTerm::isGnomeTerminal() { - return FTerm::getFTermDetection().isGnomeTerminal(); + return FTermDetection::getInstance().isGnomeTerminal(); } //---------------------------------------------------------------------- bool FTerm::isPuttyTerminal() { - return FTerm::getFTermDetection().isPuttyTerminal(); + return FTermDetection::getInstance().isPuttyTerminal(); } //---------------------------------------------------------------------- bool FTerm::isWindowsTerminal() { - return FTerm::getFTermDetection().isWindowsTerminal(); + return FTermDetection::getInstance().isWindowsTerminal(); } //---------------------------------------------------------------------- bool FTerm::isTeraTerm() { - return FTerm::getFTermDetection().isTeraTerm(); + return FTermDetection::getInstance().isTeraTerm(); } //---------------------------------------------------------------------- bool FTerm::isCygwinTerminal() { - return FTerm::getFTermDetection().isCygwinTerminal(); + return FTermDetection::getInstance().isCygwinTerminal(); } //---------------------------------------------------------------------- bool FTerm::isMinttyTerm() { - return FTerm::getFTermDetection().isMinttyTerm(); + return FTermDetection::getInstance().isMinttyTerm(); } //---------------------------------------------------------------------- bool FTerm::isLinuxTerm() { - return FTerm::getFTermDetection().isLinuxTerm(); + return FTermDetection::getInstance().isLinuxTerm(); } //---------------------------------------------------------------------- bool FTerm::isFreeBSDTerm() { - return FTerm::getFTermDetection().isFreeBSDTerm(); + return FTermDetection::getInstance().isFreeBSDTerm(); } //---------------------------------------------------------------------- bool FTerm::isNetBSDTerm() { - return FTerm::getFTermDetection().isNetBSDTerm(); + return FTermDetection::getInstance().isNetBSDTerm(); } //---------------------------------------------------------------------- bool FTerm::isOpenBSDTerm() { - return FTerm::getFTermDetection().isOpenBSDTerm(); + return FTermDetection::getInstance().isOpenBSDTerm(); } //---------------------------------------------------------------------- bool FTerm::isSunTerminal() { - return FTerm::getFTermDetection().isSunTerminal(); + return FTermDetection::getInstance().isSunTerminal(); } //---------------------------------------------------------------------- bool FTerm::isScreenTerm() { - return FTerm::getFTermDetection().isScreenTerm(); + return FTermDetection::getInstance().isScreenTerm(); } //---------------------------------------------------------------------- bool FTerm::isTmuxTerm() { - return FTerm::getFTermDetection().isTmuxTerm(); + return FTermDetection::getInstance().isTmuxTerm(); } //---------------------------------------------------------------------- bool FTerm::isKtermTerminal() { - return FTerm::getFTermDetection().isKtermTerminal(); + return FTermDetection::getInstance().isKtermTerminal(); } //---------------------------------------------------------------------- bool FTerm::isMltermTerminal() { - return FTerm::getFTermDetection().isMltermTerminal(); + return FTermDetection::getInstance().isMltermTerminal(); } //---------------------------------------------------------------------- bool FTerm::isKittyTerminal() { - return FTerm::getFTermDetection().isKittyTerminal(); + return FTermDetection::getInstance().isKittyTerminal(); } //---------------------------------------------------------------------- bool FTerm::isNewFont() { - return FTerm::getFTermData().isNewFont(); + return FTermData::getInstance().isNewFont(); } //---------------------------------------------------------------------- @@ -439,25 +340,25 @@ bool FTerm::isCursorHideable() //---------------------------------------------------------------------- bool FTerm::hasChangedTermSize() { - return FTerm::getFTermData().hasTermResized(); + return FTermData::getInstance().hasTermResized(); } //---------------------------------------------------------------------- bool FTerm::hasShadowCharacter() { - return FTerm::getFTermData().hasShadowCharacter(); + return FTermData::getInstance().hasShadowCharacter(); } //---------------------------------------------------------------------- bool FTerm::hasHalfBlockCharacter() { - return FTerm::getFTermData().hasHalfBlockCharacter(); + return FTermData::getInstance().hasHalfBlockCharacter(); } //---------------------------------------------------------------------- bool FTerm::hasAlternateScreen() { - return FTerm::getFTermData().hasAlternateScreen(); + return FTermData::getInstance().hasAlternateScreen(); } //---------------------------------------------------------------------- @@ -479,7 +380,7 @@ bool FTerm::canChangeColorPalette() //---------------------------------------------------------------------- void FTerm::setTermType (const std::string& term_name) { - FTerm::getFTermData().setTermType(term_name); + FTermData::getInstance().setTermType(term_name); } //---------------------------------------------------------------------- @@ -497,13 +398,13 @@ void FTerm::redefineDefaultColors (bool enable) if ( isNewFont() ) // NewFont need the reverse-video attribute return; - getFTermXTerminal().redefineDefaultColors (enable); + FTermXTerminal::getInstance().redefineDefaultColors (enable); } //---------------------------------------------------------------------- void FTerm::setDblclickInterval (const uInt64 timeout) { - const auto& mouse = FTerm::getFMouseControl(); + const auto& mouse = FMouseControl::getInstance(); mouse.setDblclickInterval(timeout); } @@ -512,13 +413,13 @@ void FTerm::useAlternateScreen (bool enable) { // Sets alternate screen usage - FTerm::getFTermData().useAlternateScreen(enable); + FTermData::getInstance().useAlternateScreen(enable); } //---------------------------------------------------------------------- bool FTerm::setUTF8 (bool enable) // UTF-8 (Unicode) { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( data.isUTF8() == enable ) return enable; @@ -529,7 +430,7 @@ bool FTerm::setUTF8 (bool enable) // UTF-8 (Unicode) data.setUTF8(false); #if defined(__linux__) - FTerm::getFTermLinux().setUTF8 (enable); + FTermLinux::getInstance().setUTF8 (enable); #endif return data.isUTF8(); @@ -538,7 +439,7 @@ bool FTerm::setUTF8 (bool enable) // UTF-8 (Unicode) //---------------------------------------------------------------------- bool FTerm::setVGAFont() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( data.isVGAFont() ) return data.isVGAFont(); @@ -551,14 +452,14 @@ bool FTerm::setVGAFont() { data.setVGAFont(true); // Set font in xterm to vga - getFTermXTerminal().setFont("vga"); + FTermXTerminal::getInstance().setFont("vga"); data.setTermEncoding (Encoding::PC); data.setNewFont(false); } #if defined(__linux__) else if ( isLinuxTerm() ) { - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); data.setVGAFont(linux_console.loadVGAFont()); } #endif // defined(__linux__) @@ -577,7 +478,7 @@ bool FTerm::setVGAFont() //---------------------------------------------------------------------- bool FTerm::setNewFont() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( isNewFont() ) return true; @@ -590,12 +491,12 @@ bool FTerm::setNewFont() { data.setNewFont(true); // Set font in xterm to 8x16graph - getFTermXTerminal().setFont("8x16graph"); + FTermXTerminal::getInstance().setFont("8x16graph"); } #if defined(__linux__) else if ( isLinuxTerm() ) { - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); data.setNewFont(linux_console.loadNewFont()); } #endif // defined(__linux__) @@ -615,7 +516,7 @@ bool FTerm::setNewFont() bool FTerm::resetFont() { bool retval{false}; - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( ! (data.isNewFont() || data.isVGAFont()) ) return false; @@ -631,12 +532,12 @@ bool FTerm::resetFont() if ( font.getLength() > 2 ) { // restore saved xterm font - getFTermXTerminal().setFont(font); + FTermXTerminal::getInstance().setFont(font); } else { // Set font in xterm to vga - getFTermXTerminal().setFont("vga"); + FTermXTerminal::getInstance().setFont("vga"); } retval = true; @@ -644,7 +545,7 @@ bool FTerm::resetFont() #if defined(__linux__) else if ( isLinuxTerm() ) { - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); retval = linux_console.loadOldFont(); } #endif // defined(__linux__) @@ -661,7 +562,7 @@ bool FTerm::resetFont() //---------------------------------------------------------------------- int FTerm::openConsole() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); int fd = data.getTTYFileDescriptor(); const auto& termfilename = data.getTermFileName(); @@ -683,7 +584,7 @@ int FTerm::openConsole() for (auto&& entry : terminal_devices) { - const auto& fsys = FTerm::getFSystem(); + const auto& fsys = FSystem::getInstance(); fd = fsys->open(entry, O_RDWR, 0); data.setTTYFileDescriptor(fd); @@ -697,14 +598,14 @@ int FTerm::openConsole() //---------------------------------------------------------------------- int FTerm::closeConsole() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); const int fd = data.getTTYFileDescriptor(); int ret{-1}; if ( fd < 0 ) // console is already closed return 0; - const auto& fsys = FTerm::getFSystem(); + const auto& fsys = FSystem::getInstance(); ret = fsys->close(fd); // close console data.setTTYFileDescriptor(-1); @@ -719,9 +620,9 @@ std::string FTerm::moveCursorString (int xold, int yold, int xnew, int ynew) { // Returns the cursor move string - if ( FTerm::getFTermData().hasCursorOptimisation() ) + if ( FTermData::getInstance().hasCursorOptimisation() ) { - auto& opti_move = FTerm::getFOptiMove(); + auto& opti_move = FOptiMove::getInstance(); return opti_move.moveCursor (xold, yold, xnew, ynew); } else @@ -737,7 +638,7 @@ std::string FTerm::cursorsVisibilityString (bool enable) // Hides or shows the input cursor on the terminal std::string visibility_str{}; - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( data.isCursorHidden() == enable ) return {}; @@ -766,13 +667,13 @@ void FTerm::detectTermSize() // Detect the terminal width and height struct winsize win_size{}; - auto& term_geometry = FTerm::getFTermData().getTermGeometry(); + auto& term_geometry = FTermData::getInstance().getTermGeometry(); int ret{}; errno = 0; do { - const auto& fsys = FTerm::getFSystem(); + const auto& fsys = FSystem::getInstance(); ret = fsys->ioctl (FTermios::getStdOut(), TIOCGWINSZ, &win_size); } while (errno == EINTR); @@ -792,7 +693,7 @@ void FTerm::detectTermSize() term_geometry.setRect(1, 1, win_size.ws_col, win_size.ws_row); } - auto& opti_move = FTerm::getFOptiMove(); + auto& opti_move = FOptiMove::getInstance(); opti_move.setTermSize ( term_geometry.getWidth() , term_geometry.getHeight() ); } @@ -802,7 +703,7 @@ void FTerm::setTermSize (const FSize& size) { // Set xterm size - getFTermXTerminal().setTermSize (size); + FTermXTerminal::getInstance().setTermSize (size); } //---------------------------------------------------------------------- @@ -810,7 +711,7 @@ void FTerm::setTermTitle (const FString& title) { // Set the xterm window title - getFTermXTerminal().setTitle (title); + FTermXTerminal::getInstance().setTitle (title); } //---------------------------------------------------------------------- @@ -831,7 +732,7 @@ void FTerm::setKDECursor (KdeKonsoleCursorShape style) void FTerm::saveColorMap() { #if defined(__linux__) - FTerm::getFTermLinux().saveColorMap(); + FTermLinux::getInstance().saveColorMap(); #endif } @@ -846,7 +747,7 @@ void FTerm::resetColorMap() #if defined(__linux__) else - FTerm::getFTermLinux().resetColorMap(); + FTermLinux::getInstance().resetColorMap(); #endif if ( op ) @@ -888,7 +789,7 @@ void FTerm::setPalette (FColor index, int r, int g, int b) #if defined(__linux__) else { - state = FTerm::getFTermLinux().setPalette(index, r, g, b); + state = FTermLinux::getInstance().setPalette(index, r, g, b); } #endif @@ -900,17 +801,17 @@ void FTerm::setPalette (FColor index, int r, int g, int b) #if defined(__linux__) || defined(UNIT_TEST) void FTerm::setBeep (int Hz, int ms) { - FTerm::getFTermLinux().setBeep (Hz, ms); + FTermLinux::getInstance().setBeep (Hz, ms); } #elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) void FTerm::setBeep (int Hz, int ms) { - FTerm::getFTermFreeBSD().setBeep (Hz, ms); + FTermFreeBSD::getInstance().setBeep (Hz, ms); } #elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(UNIT_TEST) void FTerm::setBeep (int Hz, int ms) { - FTerm::getFTermOpenBSD().setBeep (Hz, ms); + FTermOpenBSD::getInstance().setBeep (Hz, ms); } #else void FTerm::setBeep (int, int) @@ -921,15 +822,15 @@ void FTerm::setBeep (int, int) void FTerm::resetBeep() { #if defined(__linux__) || defined(UNIT_TEST) - FTerm::getFTermLinux().resetBeep(); + FTermLinux::getInstance().resetBeep(); #endif #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - FTerm::getFTermFreeBSD().resetBeep(); + FTermFreeBSD::getInstance().resetBeep(); #endif #if defined(__NetBSD__) || defined(__OpenBSD__) || defined(UNIT_TEST) - FTerm::getFTermOpenBSD().resetBeep(); + FTermOpenBSD::getInstance().resetBeep(); #endif } @@ -943,7 +844,7 @@ void FTerm::beep() //---------------------------------------------------------------------- void FTerm::setEncoding (Encoding enc) { - FTerm::getFTermData().setTermEncoding (enc); + FTermData::getInstance().setTermEncoding (enc); assert ( enc == Encoding::UTF8 || enc == Encoding::VT100 // VT100 line drawing @@ -961,7 +862,7 @@ void FTerm::setEncoding (Encoding enc) case Encoding::VT100: case Encoding::PC: - if ( isXTerminal() && FTerm::getFTermData().hasUTF8Console() ) + if ( isXTerminal() && FTermData::getInstance().hasUTF8Console() ) putchar() = &FTerm::putchar_UTF8; else putchar() = &FTerm::putchar_ASCII; @@ -975,7 +876,7 @@ void FTerm::setEncoding (Encoding enc) if ( isLinuxTerm() ) { - auto& opti_move = FTerm::getFOptiMove(); + auto& opti_move = FOptiMove::getInstance(); if ( enc == Encoding::VT100 || enc == Encoding::PC ) { @@ -990,13 +891,13 @@ void FTerm::setEncoding (Encoding enc) //---------------------------------------------------------------------- Encoding FTerm::getEncoding() { - return FTerm::getFTermData().getTermEncoding(); + return FTermData::getInstance().getTermEncoding(); } //---------------------------------------------------------------------- std::string FTerm::getEncodingString() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); const auto& term_encoding = data.getTermEncoding(); const auto& encoding_list = data.getEncodingList(); const auto& end = encoding_list.end(); @@ -1018,7 +919,7 @@ bool FTerm::charEncodable (wchar_t c) //---------------------------------------------------------------------- wchar_t FTerm::charEncode (wchar_t c) { - const auto& data = FTerm::getFTermData(); + const auto& data = FTermData::getInstance(); return charEncode (c, data.getTermEncoding()); } @@ -1089,7 +990,7 @@ void FTerm::putstring (const std::string& str, int affcnt) //---------------------------------------------------------------------- int FTerm::putchar_ASCII (int c) { - const auto& fsys = FTerm::getFSystem(); + const auto& fsys = FSystem::getInstance(); if ( fsys->putchar(char(c)) == EOF ) return 0; @@ -1100,7 +1001,7 @@ int FTerm::putchar_ASCII (int c) //---------------------------------------------------------------------- int FTerm::putchar_UTF8 (int c) { - const auto& fsys = FTerm::getFSystem(); + const auto& fsys = FSystem::getInstance(); if ( c < 0x80 ) { @@ -1144,29 +1045,29 @@ void FTerm::initScreenSettings() #if defined(__linux__) // Important: Do not use setNewFont() or setVGAFont() after // the console character mapping has been initialized - FTerm::getFTermLinux().initCharMap(); + FTermLinux::getInstance().initCharMap(); #elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - FTerm::getFTermFreeBSD().initCharMap(); + FTermFreeBSD::getInstance().initCharMap(); #endif // set xterm underline cursor - getFTermXTerminal().setCursorStyle (XTermCursorStyle::BlinkingUnderline); + FTermXTerminal::getInstance().setCursorStyle (XTermCursorStyle::BlinkingUnderline); // set xterm color settings to defaults - getFTermXTerminal().setDefaults(); + FTermXTerminal::getInstance().setDefaults(); } //---------------------------------------------------------------------- std::string FTerm::changeAttribute (FChar& term_attr, FChar& next_attr) { - auto& opti_attr = FTerm::getFOptiAttr(); + auto& opti_attr = FOptiAttr::getInstance(); return opti_attr.changeAttribute (term_attr, next_attr); } //---------------------------------------------------------------------- void FTerm::changeTermSizeFinished() { - FTerm::getFTermData().setTermResized(false); + FTermData::getInstance().setTermResized(false); } @@ -1174,7 +1075,7 @@ void FTerm::changeTermSizeFinished() //---------------------------------------------------------------------- inline FStartOptions& FTerm::getStartOptions() { - return FStartOptions::getFStartOptions(); + return FStartOptions::getInstance(); } //---------------------------------------------------------------------- @@ -1182,11 +1083,11 @@ void FTerm::init_global_values() { // Initialize global values - FTerm::getFTermData().setNewFont(false); // Preset to false + FTermData::getInstance().setNewFont(false); // Preset to false if ( ! getStartOptions().terminal_detection ) { - FTerm::getFTermDetection().setTerminalDetection (false); + FTermDetection::getInstance().setTerminalDetection (false); } } @@ -1199,7 +1100,7 @@ void FTerm::init_terminal_device_path() if ( ttyname_r(stdout_no, termfilename.data(), termfilename.size()) ) termfilename[0] = '\0'; - FTerm::getFTermData().setTermFileName(termfilename.data()); + FTermData::getInstance().setTermFileName(termfilename.data()); } //---------------------------------------------------------------------- @@ -1271,7 +1172,7 @@ void FTerm::init_alt_charset() void FTerm::init_pc_charset() { bool reinit{false}; - auto& opti_attr = FTerm::getFOptiAttr(); + auto& opti_attr = FOptiAttr::getInstance(); // rxvt does not support pc charset if ( isRxvtTerminal() || isUrxvtTerminal() ) @@ -1282,7 +1183,7 @@ void FTerm::init_pc_charset() // Fallback if tcap "S2" is not found if ( ! TCAP(t_enter_pc_charset_mode) ) { - if ( FTerm::getFTermData().hasUTF8Console() ) + if ( FTermData::getInstance().hasUTF8Console() ) { // Select iso8859-1 + null mapping TCAP(t_enter_pc_charset_mode) = ESC "%@" ESC "(U"; @@ -1301,7 +1202,7 @@ void FTerm::init_pc_charset() // Fallback if tcap "S3" is not found if ( ! TCAP(t_exit_pc_charset_mode) ) { - if ( FTerm::getFTermData().hasUTF8Console() ) + if ( FTermData::getInstance().hasUTF8Console() ) { // Select ascii mapping + utf8 TCAP(t_exit_pc_charset_mode) = ESC "(B" ESC "%G"; @@ -1352,7 +1253,7 @@ void FTerm::init_cygwin_charmap() } // General encoding changes - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); charSubstitution& sub_map = data.getCharSubstitutionMap(); sub_map[L'•'] = L'*'; sub_map[L'●'] = L'*'; @@ -1439,7 +1340,7 @@ void FTerm::init_optiMove() FTermcap::eat_nl_glitch }; - auto& opti_move = FTerm::getFOptiMove(); + auto& opti_move = FOptiMove::getInstance(); opti_move.setTermEnvironment(optimove_env); } @@ -1490,14 +1391,14 @@ void FTerm::init_optiAttr() FTermcap::ansi_default_color }; - auto& opti_attr = FTerm::getFOptiAttr(); + auto& opti_attr = FOptiAttr::getInstance(); opti_attr.setTermEnvironment(optiattr_env); } //---------------------------------------------------------------------- bool FTerm::init_font() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( getStartOptions().vgafont && ! setVGAFont() ) { @@ -1519,7 +1420,7 @@ void FTerm::init_locale() { // Init current locale - const auto& termtype = FTerm::getFTermData().getTermType(); + const auto& termtype = FTermData::getInstance().getTermType(); const char* locale_name = std::setlocale (LC_ALL, ""); std::setlocale (LC_NUMERIC, ""); @@ -1597,7 +1498,7 @@ inline void FTerm::init_encoding_set() { // Define the encoding set - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF8"] = Encoding::UTF8; encoding_list["UTF-8"] = Encoding::UTF8; @@ -1610,9 +1511,9 @@ inline void FTerm::init_encoding_set() void FTerm::init_term_encoding() { const int stdout_no = FTermios::getStdOut(); - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); const auto& termtype = data.getTermType(); - const auto& fsys = FTerm::getFSystem(); + const auto& fsys = FSystem::getInstance(); if ( fsys->isTTY(stdout_no) && ! std::strcmp(nl_langinfo(CODESET), "UTF-8") ) @@ -1622,7 +1523,7 @@ void FTerm::init_term_encoding() putchar() = &FTerm::putchar_UTF8; // function pointer data.setUTF8(true); setUTF8(true); - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.enableUTF8(); } else if ( fsys->isTTY(stdout_no) @@ -1644,7 +1545,7 @@ void FTerm::init_term_encoding() //---------------------------------------------------------------------- void FTerm::init_individual_term_encoding() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( isNewFont() || (isPuttyTerminal() && ! data.isUTF8()) @@ -1663,7 +1564,7 @@ void FTerm::init_individual_term_encoding() //---------------------------------------------------------------------- void FTerm::init_force_vt100_encoding() { - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); data.setVT100Console(true); data.setTermEncoding (Encoding::VT100); putchar() = &FTerm::putchar_ASCII; // function pointer @@ -1675,7 +1576,7 @@ void FTerm::init_utf8_without_alt_charset() // Fall back to ascii for utf-8 terminals that // do not support VT100 line drawings - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); if ( FTermcap::no_utf8_acs_chars && data.isUTF8() && data.getTermEncoding() == Encoding::VT100 ) @@ -1693,12 +1594,12 @@ void FTerm::init_tab_quirks() // on the terminal and does not move the cursor to the next tab stop // position - const auto& enc = FTerm::getFTermData().getTermEncoding(); + const auto& enc = FTermData::getInstance().getTermEncoding(); if ( enc == Encoding::VT100 || enc == Encoding::PC ) { const char* empty{nullptr}; - auto& opti_move = FTerm::getFOptiMove(); + auto& opti_move = FOptiMove::getInstance(); opti_move.set_tabular (empty); } } @@ -1708,13 +1609,13 @@ void FTerm::init_captureFontAndTitle() { // Save the used xterm font and window title - if ( ! FStartOptions::getFStartOptions().terminal_data_request ) + if ( ! getStartOptions().terminal_data_request ) return; - getFTermXTerminal().captureFontAndTitle(); - const auto& font = getFTermXTerminal().getFont(); - const auto& title = getFTermXTerminal().getTitle(); - auto& data = FTerm::getFTermData(); + FTermXTerminal::getInstance().captureFontAndTitle(); + const auto& font = FTermXTerminal::getInstance().getFont(); + const auto& title = FTermXTerminal::getInstance().getTitle(); + auto& data = FTermData::getInstance(); if ( ! font.isEmpty() ) data.setXtermFont(font); @@ -1749,7 +1650,7 @@ inline bool FTerm::isDefaultPaletteTheme() auto iter = std::find ( default_themes.begin() , default_themes.end() - , getColorPaletteTheme()->getClassName() ); + , FColorPalette::getInstance()->getClassName() ); if ( iter == default_themes.end() ) // No default theme return false; @@ -1768,10 +1669,11 @@ void FTerm::redefineColorPalette() resetColorMap(); saveColorMap(); - if ( getColorPaletteTheme().use_count() > 0 && ! isDefaultPaletteTheme() ) + if ( FColorPalette::getInstance().use_count() > 0 + && ! isDefaultPaletteTheme() ) { // A user color palette theme is in use - getColorPaletteTheme()->setColorPalette(); + FColorPalette::getInstance()->setColorPalette(); return; } @@ -1795,45 +1697,45 @@ void FTerm::restoreColorPalette() return; // Reset screen settings - getColorPaletteTheme()->resetColorPalette(); - getFTermXTerminal().resetColorMap(); + FColorPalette::getInstance()->resetColorPalette(); + FTermXTerminal::getInstance().resetColorMap(); resetColorMap(); } //---------------------------------------------------------------------- void FTerm::setInsertCursorStyle() { - getFTermXTerminal().setCursorStyle (XTermCursorStyle::BlinkingUnderline); + FTermXTerminal::getInstance().setCursorStyle (XTermCursorStyle::BlinkingUnderline); setKDECursor(KdeKonsoleCursorShape::Underline); #if defined(__linux__) - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); linux_console.setCursorStyle (LinuxConsoleCursorStyle::Underscore); #elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - auto& freebsd_console = FTerm::getFTermFreeBSD(); + auto& freebsd_console = FTermFreeBSD::getInstance(); freebsd_console.setCursorStyle (FreeBSDConsoleCursorStyle::Destructive); #endif if ( isUrxvtTerminal() ) - getFTermXTerminal().setCursorColor ("rgb:ffff/ffff/ffff"); + FTermXTerminal::getInstance().setCursorColor ("rgb:ffff/ffff/ffff"); } //---------------------------------------------------------------------- void FTerm::setOverwriteCursorStyle() { - getFTermXTerminal().setCursorStyle (XTermCursorStyle::SteadyBlock); + FTermXTerminal::getInstance().setCursorStyle (XTermCursorStyle::SteadyBlock); setKDECursor(KdeKonsoleCursorShape::Block); #if defined(__linux__) - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); linux_console.setCursorStyle (LinuxConsoleCursorStyle::FullBlock); #elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - auto& freebsd_console = FTerm::getFTermFreeBSD(); + auto& freebsd_console = FTermFreeBSD::getInstance(); freebsd_console.setCursorStyle (FreeBSDConsoleCursorStyle::Normal); #endif if ( isUrxvtTerminal() ) - getFTermXTerminal().setCursorColor ("rgb:eeee/0000/0000"); + FTermXTerminal::getInstance().setCursorColor ("rgb:eeee/0000/0000"); } //---------------------------------------------------------------------- @@ -1856,7 +1758,7 @@ std::string FTerm::enableCursorString() if ( isLinuxTerm() ) { // Restore the last used Linux console cursor style - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); const char* cstyle = linux_console.getCursorStyleString(); enable_str.append(cstyle); } @@ -1866,7 +1768,7 @@ std::string FTerm::enableCursorString() if ( isFreeBSDTerm() ) { // Restore the last used FreeBSD console cursor style - auto& freebsd_console = FTerm::getFTermFreeBSD(); + auto& freebsd_console = FTermFreeBSD::getInstance(); freebsd_console.setCursorStyle (freebsd_console.getCursorStyle()); } #endif // defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) @@ -1911,9 +1813,9 @@ void FTerm::enableMouse() if ( TCAP(t_key_mouse) && ! isLinuxTerm() ) xterm_mouse = true; - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.enableMouseSequences(); - auto& mouse = FTerm::getFMouseControl(); + auto& mouse = FMouseControl::getInstance(); mouse.setMaxWidth (uInt16(getColumnNumber())); mouse.setMaxHeight (uInt16(getLineNumber())); // Enable the linux general purpose mouse (gpm) server @@ -1928,8 +1830,8 @@ inline void FTerm::disableMouse() { // Disable the terminal mouse support - FTerm::getFKeyboard().disableMouseSequences(); - FTerm::getFMouseControl().disable(); + FKeyboard::getInstance().disableMouseSequences(); + FMouseControl::getInstance().disable(); } //---------------------------------------------------------------------- @@ -2006,7 +1908,7 @@ void FTerm::useAlternateScreenBuffer() { putstring (TCAP(t_enter_ca_mode)); std::fflush(stdout); - FTerm::getFTermData().setAlternateScreenInUse(true); + FTermData::getInstance().setAlternateScreenInUse(true); } } @@ -2023,7 +1925,7 @@ void FTerm::useNormalScreenBuffer() { putstring (TCAP(t_exit_ca_mode)); std::fflush(stdout); - FTerm::getFTermData().setAlternateScreenInUse(false); + FTermData::getInstance().setAlternateScreenInUse(false); } // restore cursor to position of last save_cursor @@ -2065,7 +1967,7 @@ void FTerm::init() init_alt_charset(); // Pass the terminal capabilities to the keyboard object - FTerm::getFKeyboard().setTermcapMap(); + FKeyboard::getInstance().setTermcapMap(); // Initializes locale information init_locale(); @@ -2078,7 +1980,7 @@ void FTerm::init() // Activate meta key sends escape if ( isXTerminal() ) - getFTermXTerminal().metaSendsESC(true); + FTermXTerminal::getInstance().metaSendsESC(true); // switch to application escape key mode enableApplicationEscKey(); @@ -2109,7 +2011,7 @@ void FTerm::init() if ( ! getStartOptions().cursor_optimisation ) { - FTerm::getFTermData().supportCursorOptimisation(false); + FTermData::getInstance().supportCursorOptimisation(false); } // Activate the VGA or the new graphic font @@ -2132,8 +2034,8 @@ bool FTerm::init_terminal() const { // Initialize termios FTermios::init(); - auto& data = FTerm::getFTermData(); - const auto& fsys = FTerm::getFSystem(); + auto& data = FTermData::getInstance(); + const auto& fsys = FSystem::getInstance(); // Check if stdin is a tty if ( ! fsys->isTTY(FTermios::getStdIn()) ) @@ -2166,7 +2068,7 @@ bool FTerm::init_terminal() const initBaudRate(); // Terminal detection - auto& term_detection = FTerm::getFTermDetection(); + auto& term_detection = FTermDetection::getInstance(); term_detection.detect(); setTermType (term_detection.getTermType().c_str()); return true; @@ -2176,18 +2078,18 @@ bool FTerm::init_terminal() const void FTerm::initOSspecifics() const { #if defined(__linux__) - auto& linux_console = FTerm::getFTermLinux(); + auto& linux_console = FTermLinux::getInstance(); linux_console.init(); // Initialize Linux console #if DEBUG - auto& data = FTerm::getFTermData(); + auto& data = FTermData::getInstance(); data.setFramebufferBpp (linux_console.getFramebufferBpp()); #endif #endif // defined(__linux__) #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - auto& freebsd_console = FTerm::getFTermFreeBSD(); + auto& freebsd_console = FTermFreeBSD::getInstance(); if ( getStartOptions().meta_sends_escape ) freebsd_console.enableMetaSendsEscape(); @@ -2201,7 +2103,7 @@ void FTerm::initOSspecifics() const freebsd_console.init(); // Initialize BSD console #elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(UNIT_TEST) - auto& openbsd_console = FTerm::getFTermOpenBSD(); + auto& openbsd_console = FTermOpenBSD::getInstance(); if ( getStartOptions().meta_sends_escape ) openbsd_console.enableMetaSendsEscape(); @@ -2230,12 +2132,12 @@ void FTerm::initBaudRate() const { const int stdout_no = FTermios::getStdOut(); const uInt baud = FTermios::getBaudRate(); - FTerm::getFTermData().setBaudrate(baud); - const auto& fsys = FTerm::getFSystem(); + FTermData::getInstance().setBaudrate(baud); + const auto& fsys = FSystem::getInstance(); if ( fsys->isTTY(stdout_no) ) { - auto& opti_move = FTerm::getFOptiMove(); + auto& opti_move = FOptiMove::getInstance(); opti_move.setBaudRate(int(baud)); } } @@ -2247,7 +2149,7 @@ void FTerm::finish() const resetSignalHandler(); if ( isXTerminal() && ! isRxvtTerminal() ) - getFTermXTerminal().resetTitle(); + FTermXTerminal::getInstance().resetTitle(); // Restore the saved termios settings FTermios::restoreTTYsettings(); @@ -2267,10 +2169,10 @@ void FTerm::finish() const } // Reset xterm color settings to default values - getFTermXTerminal().resetDefaults(); + FTermXTerminal::getInstance().resetDefaults(); // Set xterm full block cursor - getFTermXTerminal().setCursorStyle (XTermCursorStyle::SteadyBlock); + FTermXTerminal::getInstance().setCursorStyle (XTermCursorStyle::SteadyBlock); // Restore the color palette restoreColorPalette(); @@ -2291,7 +2193,7 @@ void FTerm::finish() const // Deactivate meta key sends escape if ( isXTerminal() ) - getFTermXTerminal().metaSendsESC(false); + FTermXTerminal::getInstance().metaSendsESC(false); // Switch to the normal screen useNormalScreenBuffer(); @@ -2300,7 +2202,7 @@ void FTerm::finish() const disableKeypad(); finish_encoding(); - const auto& data = FTerm::getFTermData(); + const auto& data = FTermData::getInstance(); if ( data.isNewFont() || data.isVGAFont() ) resetFont(); @@ -2310,11 +2212,11 @@ void FTerm::finish() const void FTerm::finishOSspecifics() const { #if defined(__linux__) - FTerm::getFTermLinux().finish(); + FTermLinux::getInstance().finish(); #elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - FTerm::getFTermFreeBSD().finish(); + FTermFreeBSD::getInstance().finish(); #elif defined(__NetBSD__) || defined(__OpenBSD__) || defined(UNIT_TEST) - FTerm::getFTermOpenBSD().finish(); + FTermOpenBSD::getInstance().finish(); #endif } @@ -2322,7 +2224,7 @@ void FTerm::finishOSspecifics() const void FTerm::finish_encoding() const { #if defined(__linux__) - if ( isLinuxTerm() && FTerm::getFTermData().hasUTF8Console() ) + if ( isLinuxTerm() && FTermData::getInstance().hasUTF8Console() ) setUTF8(true); #endif } @@ -2331,7 +2233,7 @@ void FTerm::finish_encoding() const void FTerm::printExitMessage() { // Print exit message - const auto& exit_message = FTerm::getFTermData().getExitMessage(); + const auto& exit_message = FTermData::getInstance().getExitMessage(); if ( ! exit_message.isEmpty() ) std::cerr << "Exit: " << exit_message << std::endl; @@ -2341,7 +2243,7 @@ void FTerm::printExitMessage() void FTerm::terminalSizeChange() { // Initialize a resize event to the root element - FTerm::getFTermData().setTermResized(true); + FTermData::getInstance().setTermResized(true); } //---------------------------------------------------------------------- @@ -2355,7 +2257,7 @@ void FTerm::processTermination (int signum) FStringStream msg{}; msg << "Program stopped: signal " << signum << " (" << strsignal(signum) << ")"; - FTerm::getFTermData().setExitMessage(msg.str()); + FTermData::getInstance().setExitMessage(msg.str()); printExitMessage(); std::terminate(); } diff --git a/src/ftermcap.cpp b/src/ftermcap.cpp index 50b69cf7..39bd1d13 100644 --- a/src/ftermcap.cpp +++ b/src/ftermcap.cpp @@ -251,8 +251,8 @@ void FTermcap::termcap() static char term_buffer[BUF_SIZE]{}; std::vector terminals{}; int status = uninitialized; - auto& fterm_data = FTerm::getFTermData(); - const auto& term_detection = FTerm::getFTermDetection(); + auto& fterm_data = FTermData::getInstance(); + const auto& term_detection = FTermDetection::getInstance(); const bool color256 = term_detection.canDisplay256Colors(); baudrate = int(fterm_data.getBaudrate()); @@ -301,7 +301,7 @@ void FTermcap::termcapError (int status) if ( status == no_entry || status == uninitialized ) { - const auto& termtype = FTerm::getFTermData().getTermType(); + const auto& termtype = FTermData::getInstance().getTermType(); std::clog << FLog::LogLevel::Error << "Unknown terminal: \"" << termtype << "\". " << "Check the TERM environment variable. " @@ -376,7 +376,7 @@ void FTermcap::termcapNumerics() { // Get termcap numerics - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); // Maximum number of colors on screen max_color = std::max(max_color, getNumber("Co")); diff --git a/src/ftermcapquirks.cpp b/src/ftermcapquirks.cpp index b0606fd0..e2e2004b 100644 --- a/src/ftermcapquirks.cpp +++ b/src/ftermcapquirks.cpp @@ -42,7 +42,7 @@ namespace finalcut //---------------------------------------------------------------------- void FTermcapQuirks::terminalFixup() { - const auto& td = FTerm::getFTermDetection(); + const auto& td = FTermDetection::getInstance(); if ( td.isCygwinTerminal() ) { @@ -228,7 +228,7 @@ void FTermcapQuirks::xterm() void FTermcapQuirks::rxvt() { // Set enter/exit alternative charset mode for rxvt terminal - const auto& termtype = FTerm::getFTermData().getTermType(); + const auto& termtype = FTermData::getInstance().getTermType(); if ( termtype.substr(0,12) == "rxvt-16color" ) { @@ -237,7 +237,7 @@ void FTermcapQuirks::rxvt() } // Set ansi foreground and background color - if ( ! FTerm::getFTermDetection().isUrxvtTerminal() ) + if ( ! FTermDetection::getInstance().isUrxvtTerminal() ) { TCAP(t_set_a_foreground) = \ CSI "%?%p1%{8}%<%t%p1%{30}%+%e%p1%'R'%+%;%dm"; @@ -249,7 +249,7 @@ void FTermcapQuirks::rxvt() //---------------------------------------------------------------------- void FTermcapQuirks::vte() { - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); // gnome-terminal has NC=16 however, it can use the dim attribute FTermcap::attr_without_color = 0; @@ -448,7 +448,7 @@ void FTermcapQuirks::screen() { FTermcap::can_change_color_palette = true; - if ( FTerm::getFTermDetection().isTmuxTerm() ) + if ( FTermDetection::getInstance().isTmuxTerm() ) { TCAP(t_initialize_color) = \ ESC "Ptmux;" ESC OSC "4;%p1%d;rgb:" diff --git a/src/ftermdebugdata.cpp b/src/ftermdebugdata.cpp index 71ae8ca1..5389cf6d 100644 --- a/src/ftermdebugdata.cpp +++ b/src/ftermdebugdata.cpp @@ -36,38 +36,45 @@ namespace finalcut //---------------------------------------------------------------------- // public methods of FTermDebugData +//---------------------------------------------------------------------- +auto FTermDebugData::getInstance() -> FTermDebugData& +{ + static const auto& debug_data = make_unique(); + return *debug_data; +} + //---------------------------------------------------------------------- const FString& FTermDebugData::getAnswerbackString() { - auto& term_detection = FTerm::getFTermDetection(); + auto& term_detection = FTermDetection::getInstance(); return term_detection.getAnswerbackString(); } //---------------------------------------------------------------------- const FString& FTermDebugData::getSecDAString() { - auto& term_detection = FTerm::getFTermDetection(); + auto& term_detection = FTermDetection::getInstance(); return term_detection.getSecDAString(); } //---------------------------------------------------------------------- const FString& FTermDebugData::getTermType_256color() { - auto& term_detection = FTerm::getFTermDetection(); + auto& term_detection = FTermDetection::getInstance(); return term_detection.getTermType_256color(); } //---------------------------------------------------------------------- const FString& FTermDebugData::getTermType_Answerback() { - auto& term_detection = FTerm::getFTermDetection(); + auto& term_detection = FTermDetection::getInstance(); return term_detection.getTermType_Answerback(); } //---------------------------------------------------------------------- const FString& FTermDebugData::getTermType_SecDA() { - auto& term_detection = FTerm::getFTermDetection(); + auto& term_detection = FTermDetection::getInstance(); return term_detection.getTermType_SecDA(); } @@ -75,7 +82,7 @@ const FString& FTermDebugData::getTermType_SecDA() #if defined(__linux__) int FTermDebugData::getFramebufferBpp() { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); return fterm_data.getFramebufferBpp(); } #endif // defined(__linux__) diff --git a/src/ftermdetection.cpp b/src/ftermdetection.cpp index 9ea6ebac..5523b57d 100644 --- a/src/ftermdetection.cpp +++ b/src/ftermdetection.cpp @@ -63,6 +63,13 @@ FTermDetection::~FTermDetection() = default; // destructor // public methods of FTermDetection +//---------------------------------------------------------------------- +auto FTermDetection::getInstance() -> FTermDetection& +{ + static const auto& term_detection = make_unique(); + return *term_detection; +} + //---------------------------------------------------------------------- #if DEBUG const FString& FTermDetection::getAnswerbackString() const @@ -106,7 +113,7 @@ void FTermDetection::getSystemTermType() { // Import the untrusted environment variable TERM const auto& term_env = std::getenv("TERM"); - const auto& termfilename = FTerm::getFTermData().getTermFileName(); + const auto& termfilename = FTermData::getInstance().getTermFileName(); if ( term_env ) { @@ -142,7 +149,7 @@ bool FTermDetection::getTTYtype() // vt100 ttys0 // Get term basename - const auto& termfilename = FTerm::getFTermData().getTermFileName(); + const auto& termfilename = FTermData::getInstance().getTermFileName(); const char* term_basename = std::strrchr(termfilename.data(), '/'); if ( term_basename == nullptr ) @@ -152,7 +159,7 @@ bool FTermDetection::getTTYtype() std::FILE* fp{}; std::array str{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( (fp = fsystem->fopen(ttytypename.c_str(), "r")) == nullptr ) return false; @@ -196,7 +203,7 @@ bool FTermDetection::getTTYSFileEntry() // Analyse /etc/ttys and get the term name // get term basename - const auto& termfilename = FTerm::getFTermData().getTermFileName(); + const auto& termfilename = FTermData::getInstance().getTermFileName(); const char* term_basename = std::strrchr(termfilename.data(), '/'); if ( term_basename == nullptr ) @@ -303,7 +310,7 @@ void FTermDetection::detectTerminal() if ( terminal_detection ) { FTermios::setCaptureSendCharacters(); - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.setNonBlockingInput(); // Initialize 256 colors terminals @@ -346,7 +353,7 @@ void FTermDetection::detectTerminal() } #if defined(__CYGWIN__) - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); const auto& termfilename = fterm_data.getTermFileName(); // Fixes problem with mouse input @@ -463,7 +470,7 @@ FString FTermDetection::determineMaxColor (const FString& current_termtype) // Determine xterm maximum number of colors via OSC 4 FString new_termtype{current_termtype}; - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.setNonBlockingInput(); if ( ! color256 @@ -556,7 +563,7 @@ FString FTermDetection::getXTermColorName (FColor color) const FString FTermDetection::parseAnswerbackMsg (const FString& current_termtype) { FString new_termtype{current_termtype}; - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.setNonBlockingInput(); // send ENQ and read the answerback message answer_back = getAnswerbackMsg(); diff --git a/src/ftermfreebsd.cpp b/src/ftermfreebsd.cpp index 36630e68..8726a293 100644 --- a/src/ftermfreebsd.cpp +++ b/src/ftermfreebsd.cpp @@ -46,6 +46,13 @@ bool FTermFreeBSD::meta_sends_escape{true}; //---------------------------------------------------------------------- // public methods of FTermFreeBSD +//---------------------------------------------------------------------- +auto FTermFreeBSD::getInstance() -> FTermFreeBSD& +{ + static const auto& freebsd_console = make_unique(); + return *freebsd_console; +} + //---------------------------------------------------------------------- FTermFreeBSD::CursorStyle FTermFreeBSD::getCursorStyle() { @@ -61,7 +68,7 @@ bool FTermFreeBSD::setCursorStyle (CursorStyle style) return false; cursor_style = style; - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); if ( fterm_data.isCursorHidden() ) return false; @@ -75,7 +82,7 @@ bool FTermFreeBSD::isFreeBSDConsole() // Check if it's a FreeBSD console keymap_t keymap{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, GIO_KEYMAP, &keymap) == 0 ) return true; @@ -187,7 +194,7 @@ bool FTermFreeBSD::saveFreeBSDAltKey() static constexpr int left_alt = 0x38; int ret{-1}; keymap_t keymap{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); ret = fsystem->ioctl (0, GIO_KEYMAP, &keymap); if ( ret < 0 ) @@ -206,7 +213,7 @@ bool FTermFreeBSD::setFreeBSDAltKey (uInt key) static constexpr int left_alt = 0x38; int ret{-1}; keymap_t keymap{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); ret = fsystem->ioctl (0, GIO_KEYMAP, &keymap); if ( ret < 0 ) @@ -241,7 +248,7 @@ bool FTermFreeBSD::resetFreeBSDAlt2Meta() //---------------------------------------------------------------------- bool FTermFreeBSD::setFreeBSDCursorStyle (CursorStyle style) { - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, CONS_CURSORTYPE, &style) == 0 ) return true; diff --git a/src/ftermlinux.cpp b/src/ftermlinux.cpp index 3adfa84f..7185c2dc 100644 --- a/src/ftermlinux.cpp +++ b/src/ftermlinux.cpp @@ -61,6 +61,13 @@ FTermLinux::~FTermLinux() // destructor } // public methods of FTermLinux +//---------------------------------------------------------------------- +auto FTermLinux::getInstance() -> FTermLinux& +{ + static const auto& linux_console = make_unique(); + return *linux_console; +} + //---------------------------------------------------------------------- FTermLinux::CursorStyle FTermLinux::getCursorStyle() const { @@ -90,7 +97,7 @@ bool FTermLinux::setCursorStyle (CursorStyle style) linux_console_cursor_style = style; - if ( FTerm::getFTermData().isCursorHidden() ) + if ( FTermData::getInstance().isCursorHidden() ) return false; setLinuxCursorStyle(style); @@ -134,7 +141,7 @@ bool FTermLinux::isLinuxConsole() char arg{0}; int fd_tty = FTerm::getTTYFileDescriptor(); - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fd_tty < 0 ) // Undefined tty file descriptor fd_tty = 0; @@ -150,7 +157,7 @@ void FTermLinux::init() { // Initialize Linux console - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); screen_unicode_map.entries = nullptr; screen_font.data = nullptr; fterm_data.supportShadowCharacter (true); @@ -163,7 +170,7 @@ void FTermLinux::init() if ( FTerm::openConsole() == 0 ) { - FTerm::getFTermDetection().setLinuxTerm (isLinuxConsole()); + FTermDetection::getInstance().setLinuxTerm(isLinuxConsole()); if ( FTerm::isLinuxTerm() ) { @@ -282,7 +289,7 @@ bool FTermLinux::loadVGAFont() if ( vga_font ) { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); fterm_data.supportShadowCharacter (true); fterm_data.supportHalfBlockCharacter (true); } @@ -330,7 +337,7 @@ bool FTermLinux::loadNewFont() if ( new_font ) { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); fterm_data.supportShadowCharacter (true); fterm_data.supportHalfBlockCharacter (true); } @@ -462,7 +469,7 @@ int FTermLinux::getFramebuffer_bpp() const const char* fb = "/dev/fb/0"; struct fb_var_screeninfo fb_var{}; struct fb_fix_screeninfo fb_fix{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( (fd = fsystem->open(fb, O_RDWR)) < 0 ) { @@ -521,7 +528,7 @@ bool FTermLinux::getScreenFont() } // Font operation - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); ret = fsystem->ioctl (fd_tty, KDFONTOP, &font); if ( ret != 0 ) @@ -552,7 +559,7 @@ bool FTermLinux::getUnicodeMap() screen_unicode_map.entries = nullptr; // Get count - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); ret = fsystem->ioctl (fd_tty, GIO_UNIMAP, &screen_unicode_map); if ( ret != 0 ) @@ -592,7 +599,7 @@ FTermLinux::ModifierKey& FTermLinux::getModifierKey() // Fill bit field with 0 std::memset (&mod_key, 0x00, sizeof(mod_key)); - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); // TIOCLINUX, subcode = 6 (TIOCL_GETSHIFTSTATE) if ( fsystem->ioctl(0, TIOCLINUX, &subcode) >= 0 ) @@ -658,7 +665,7 @@ int FTermLinux::setScreenFont ( const uChar fontdata[], uInt count } // Font operation - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); ret = fsystem->ioctl (fd_tty, KDFONTOP, &font); if ( ret != 0 && errno != ENOSYS && errno != EINVAL ) @@ -695,7 +702,7 @@ int FTermLinux::setUnicodeMap (struct unimapdesc* unimap) const do { // Clear the unicode-to-font table - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); ret = fsystem->ioctl (fd_tty, PIO_UNIMAPCLR, &advice); if ( ret != 0 ) @@ -727,7 +734,7 @@ inline uInt16 FTermLinux::getInputStatusRegisterOne() const { // Gets the VGA input-status-register-1 - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); // Miscellaneous output (read port) static constexpr uInt16 misc_read = 0x3cc; @@ -743,7 +750,7 @@ uChar FTermLinux::readAttributeController (uChar index) const { // Reads a byte from the attribute controller from a given index - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); // Attribute controller (write port) static constexpr uInt16 attrib_cntlr_write = 0x3c0; @@ -769,7 +776,7 @@ void FTermLinux::writeAttributeController (uChar index, uChar data) const { // Writes a byte from the attribute controller from a given index - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); // Attribute controller (write port) static constexpr uInt16 attrib_cntlr_write = 0x3c0; @@ -808,7 +815,7 @@ int FTermLinux::setBlinkAsIntensity (bool enable) const // Uses blink-bit as background intensity. // That permits 16 colors for background - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); const int fd_tty = FTerm::getTTYFileDescriptor(); @@ -847,7 +854,7 @@ bool FTermLinux::has9BitCharacters() const // 0xc0...0xdf - copying the eighth pixel into the ninth pixel // The rest - the ninth pixel has the background color - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); const int fd_tty = FTerm::getTTYFileDescriptor(); if ( fsystem->getuid() != 0 ) // Direct hardware access requires root privileges @@ -872,7 +879,7 @@ bool FTermLinux::has9BitCharacters() const //---------------------------------------------------------------------- void FTermLinux::getVGAPalette() { - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, GIO_CMAP, cmap.color.data()) != 0 ) setVGADefaultPalette(); // Fallback, if GIO_CMAP does not work @@ -917,7 +924,7 @@ bool FTermLinux::setVGAPalette (FColor index, int r, int g, int b) cmap.color[uInt16(index)].blue = uChar(b); } - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, PIO_CMAP, cmap.color.data()) == 0 ) return true; @@ -930,7 +937,7 @@ bool FTermLinux::saveVGAPalette() { // Save the current vga color map - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, GIO_CMAP, saved_color_map.color.data()) == 0 ) has_saved_palette = true; @@ -945,7 +952,7 @@ bool FTermLinux::resetVGAPalette() { // Reset the vga color map - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( has_saved_palette ) { @@ -1128,7 +1135,7 @@ inline void FTermLinux::shiftCtrlAltKeyCorrection() //---------------------------------------------------------------------- inline void FTermLinux::initSpecialCharacter() const { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); const auto c1 = wchar_t(UniChar::UpperHalfBlock); // ▀ const auto c2 = wchar_t(UniChar::LowerHalfBlock); // ▄ const auto c3 = wchar_t(UniChar::FullBlock); // █ @@ -1169,7 +1176,7 @@ void FTermLinux::characterFallback ( wchar_t ucs , const std::vector& fallback ) const { constexpr sInt16 NOT_FOUND = -1; - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); charSubstitution& sub_map = fterm_data.getCharSubstitutionMap(); if ( fallback.size() < 2 || ucs != fallback[0] ) diff --git a/src/ftermopenbsd.cpp b/src/ftermopenbsd.cpp index 9e4742ff..62bab72b 100644 --- a/src/ftermopenbsd.cpp +++ b/src/ftermopenbsd.cpp @@ -3,7 +3,7 @@ * * * This file is part of the FINAL CUT widget toolkit * * * -* Copyright 2018-2020 Markus Gans * +* Copyright 2018-2021 Markus Gans * * * * FINAL CUT is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * @@ -41,13 +41,20 @@ bool FTermOpenBSD::meta_sends_escape{true}; //---------------------------------------------------------------------- // public methods of FTermOpenBSD +//---------------------------------------------------------------------- +auto FTermOpenBSD::getInstance() -> FTermOpenBSD& +{ + static const auto& openbsd_console = make_unique(); + return *openbsd_console; +} + //---------------------------------------------------------------------- bool FTermOpenBSD::isBSDConsole() { // Check if it's a NetBSD/OpenBSD workstation console static kbd_t kbdencoding{}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, WSKBDIO_GETENCODING, &kbdencoding) == 0 ) return true; @@ -102,7 +109,7 @@ bool FTermOpenBSD::setBeep (int Hz, int ms) bell.pitch = uInt(Hz); bell.period = uInt(ms); bell.volume = 50; // 50% volume - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, WSKBDIO_SETBELL, &bell) < 0 ) return false; @@ -114,7 +121,7 @@ bool FTermOpenBSD::setBeep (int Hz, int ms) bool FTermOpenBSD::resetBeep() { wskbd_bell_data default_bell; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); // Gets the default setting for the bell if ( fsystem->ioctl(0, WSKBDIO_GETDEFAULTBELL, &default_bell) < 0 ) @@ -147,7 +154,7 @@ bool FTermOpenBSD::saveBSDConsoleEncoding() static kbd_t k_encoding{}; int ret{-1}; - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); ret = fsystem->ioctl (0, WSKBDIO_GETENCODING, &k_encoding); if ( ret < 0 ) @@ -161,7 +168,7 @@ bool FTermOpenBSD::saveBSDConsoleEncoding() //---------------------------------------------------------------------- bool FTermOpenBSD::setBSDConsoleEncoding (kbd_t k_encoding) { - const auto& fsystem = FTerm::getFSystem(); + const auto& fsystem = FSystem::getInstance(); if ( fsystem->ioctl(0, WSKBDIO_SETENCODING, &k_encoding) < 0 ) return false; diff --git a/src/ftermxterminal.cpp b/src/ftermxterminal.cpp index 741f074e..77341ecc 100644 --- a/src/ftermxterminal.cpp +++ b/src/ftermxterminal.cpp @@ -51,6 +51,13 @@ bool FTermXTerminal::mouse_support{false}; //---------------------------------------------------------------------- // public methods of FTermXTerminal +//---------------------------------------------------------------------- +auto FTermXTerminal::getInstance() -> FTermXTerminal& +{ + static const auto& xterm = make_unique(); + return *xterm; +} + //---------------------------------------------------------------------- void FTermXTerminal::setCursorStyle (XTermCursorStyle style) { @@ -241,7 +248,7 @@ void FTermXTerminal::resetHighlightBackground() //---------------------------------------------------------------------- void FTermXTerminal::resetDefaults() { - if ( FTerm::getFTermDetection().isPuttyTerminal() ) + if ( FTermDetection::getInstance().isPuttyTerminal() ) return; // Redefines the cursor color if resetCursorColor() doesn't work @@ -272,14 +279,14 @@ void FTermXTerminal::resetTitle() //---------------------------------------------------------------------- void FTermXTerminal::captureFontAndTitle() { - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( ( term_detection.isXTerminal() || term_detection.isUrxvtTerminal() ) && ! term_detection.isRxvtTerminal() ) { FTermios::setCaptureSendCharacters(); - auto& keyboard = FTerm::getFKeyboard(); + auto& keyboard = FKeyboard::getInstance(); keyboard.setNonBlockingInput(); xterm_font = captureXTermFont(); xterm_title = captureXTermTitle(); @@ -310,7 +317,7 @@ void FTermXTerminal::setXTermCursorStyle() return; #endif - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isGnomeTerminal() && ! term_detection.hasSetCursorStyleSupport() ) @@ -334,7 +341,7 @@ void FTermXTerminal::setXTermCursorStyle() void FTermXTerminal::setXTermTitle() { // Set the xterm title - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -355,7 +362,7 @@ void FTermXTerminal::setXTermTitle() //---------------------------------------------------------------------- void FTermXTerminal::setXTermSize() const { - if ( ! FTerm::getFTermDetection().isXTerminal() ) + if ( ! FTermDetection::getInstance().isXTerminal() ) return; FTerm::putstringf ( CSI "8;%lu;%lut" @@ -369,7 +376,7 @@ void FTermXTerminal::setXTermFont() { // Change the XTerm font (needs the allowFontOps resource) - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -387,7 +394,7 @@ void FTermXTerminal::setXTermForeground() { // Set the XTerm text foreground color - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -407,7 +414,7 @@ void FTermXTerminal::setXTermBackground() { // Set the XTerm text background color - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -427,7 +434,7 @@ void FTermXTerminal::setXTermCursorColor() { // Set the text cursor color - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -447,7 +454,7 @@ void FTermXTerminal::setXTermMouseForeground() { // Set the mouse foreground color - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -466,7 +473,7 @@ void FTermXTerminal::setXTermMouseBackground() { // Set the mouse background color - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -484,7 +491,7 @@ void FTermXTerminal::setXTermHighlightBackground() { // Set the highlight background color - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isXTerminal() || term_detection.isScreenTerm() @@ -504,7 +511,7 @@ void FTermXTerminal::setXTerm8ColorDefaults() // Redefinition of the XTerm default colors // for the final cut 8 color theme - if ( FTerm::getFTermDetection().isPuttyTerminal() ) + if ( FTermDetection::getInstance().isPuttyTerminal() ) return; setXTermDefaultsMouseCursor(); @@ -524,7 +531,7 @@ void FTermXTerminal::setXTerm16ColorDefaults() // Redefinition of the XTerm default colors // for the final cut 16 color theme - if ( FTerm::getFTermDetection().isPuttyTerminal() ) + if ( FTermDetection::getInstance().isPuttyTerminal() ) return; setXTermDefaultsMouseCursor(); @@ -544,14 +551,14 @@ inline void FTermXTerminal::setXTermDefaultsMouseCursor() setMouseBackground("rgb:ffff/ffff/ffff"); // white setMouseForeground ("rgb:0000/0000/0000"); // black - if ( ! FTerm::getFTermDetection().isGnomeTerminal() ) + if ( ! FTermDetection::getInstance().isGnomeTerminal() ) setCursorColor("rgb:ffff/ffff/ffff"); // white } //---------------------------------------------------------------------- inline bool FTermXTerminal::canSetXTermBackground() const { - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( xterm_default_colors && ! (term_detection.isMinttyTerm() @@ -568,7 +575,7 @@ void FTermXTerminal::resetXTermColorMap() const { // Reset the entire color table - if ( FTerm::getFTermDetection().isMinttyTerm() ) + if ( FTermDetection::getInstance().isMinttyTerm() ) { FTerm::putstring (ESC "c"); // Full Reset (RIS) } @@ -668,7 +675,7 @@ void FTermXTerminal::resetXTermHighlightBackground() const //---------------------------------------------------------------------- bool FTermXTerminal::canResetColor() const { - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isGnomeTerminal() && term_detection.getGnomeTerminalID() < 3502 ) @@ -689,7 +696,7 @@ bool FTermXTerminal::canResetColor() const //---------------------------------------------------------------------- void FTermXTerminal::oscPrefix() const { - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isTmuxTerm() ) { @@ -706,7 +713,7 @@ void FTermXTerminal::oscPrefix() const //---------------------------------------------------------------------- void FTermXTerminal::oscPostfix() const { - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isScreenTerm() || term_detection.isTmuxTerm() ) @@ -719,7 +726,7 @@ void FTermXTerminal::oscPostfix() const //---------------------------------------------------------------------- FString FTermXTerminal::captureXTermFont() const { - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( ! term_detection.isXTerminal() && ! term_detection.isScreenTerm() @@ -781,7 +788,7 @@ FString FTermXTerminal::captureXTermFont() const //---------------------------------------------------------------------- FString FTermXTerminal::captureXTermTitle() const { - if ( FTerm::getFTermDetection().isKdeTerminal() ) + if ( FTermDetection::getInstance().isKdeTerminal() ) return {}; fd_set ifds{}; diff --git a/src/fvterm.cpp b/src/fvterm.cpp index 5844ecda..205bb993 100644 --- a/src/fvterm.cpp +++ b/src/fvterm.cpp @@ -599,7 +599,7 @@ void FVTerm::flush() const } std::fflush(stdout); - auto& mouse = FTerm::getFMouseControl(); + auto& mouse = FMouseControl::getInstance(); mouse.drawPointer(); time_last_flush = FObject::getCurrentTime(); } @@ -1881,7 +1881,7 @@ void FVTerm::init() //---------------------------------------------------------------------- void FVTerm::init_characterLengths() { - const auto& opti_move = FTerm::getFOptiMove(); + const auto& opti_move = FOptiMove::getInstance(); cursor_address_length = opti_move.getCursorAddressLength(); erase_char_length = opti_move.getEraseCharsLength(); repeat_char_length = opti_move.getRepeatCharLength(); @@ -1915,7 +1915,7 @@ void FVTerm::init_combined_character() if ( FTerm::getEncoding() != Encoding::UTF8 ) return; - const auto& term_detection = FTerm::getFTermDetection(); + const auto& term_detection = FTermDetection::getInstance(); if ( term_detection.isCygwinTerminal() ) return; @@ -1939,7 +1939,7 @@ void FVTerm::finish() const setNormal(); if ( FTerm::hasAlternateScreen() - && FTerm::getFTermData().isInAlternateScreen() ) + && FTermData::getInstance().isInAlternateScreen() ) clearTerm(); forceTerminalUpdate(); diff --git a/src/fwidget.cpp b/src/fwidget.cpp index 84acddf1..41a3b1e0 100644 --- a/src/fwidget.cpp +++ b/src/fwidget.cpp @@ -85,7 +85,7 @@ FWidget::FWidget (FWidget* parent) { if ( internal::var::root_widget ) { - auto& fterm_data = FTerm::getFTermData(); + auto& fterm_data = FTermData::getInstance(); fterm_data.setExitMessage("FWidget: No parent defined! " "There should be only one root object"); FApplication::exit(EXIT_FAILURE); @@ -2082,7 +2082,7 @@ void FWidget::initColorTheme() if ( getColorTheme().use_count() > 0 && ! isDefaultTheme() ) return; // A user theme is in use - if ( FStartOptions::getFStartOptions().dark_theme ) + if ( FStartOptions::getInstance().dark_theme ) { if ( FTerm::getMaxColor() < 16 ) // for 8 color mode setColorTheme(); diff --git a/src/include/final/fbutton.h b/src/include/final/fbutton.h index a101a4da..b37262ba 100644 --- a/src/include/final/fbutton.h +++ b/src/include/final/fbutton.h @@ -120,6 +120,7 @@ class FButton : public FWidget void onMouseDown (FMouseEvent*) override; void onMouseUp (FMouseEvent*) override; void onMouseMove (FMouseEvent*) override; + void onWheel (FWheelEvent*) override; void onTimer (FTimerEvent*) override; void onAccel (FAccelEvent*) override; void onFocusIn (FFocusEvent*) override; diff --git a/src/include/final/fcolorpalette.h b/src/include/final/fcolorpalette.h index 1c5b2a48..70c93903 100644 --- a/src/include/final/fcolorpalette.h +++ b/src/include/final/fcolorpalette.h @@ -3,7 +3,7 @@ * * * This file is part of the FINAL CUT widget toolkit * * * -* Copyright 2018-2020 Markus Gans * +* Copyright 2018-2021 Markus Gans * * * * FINAL CUT is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * @@ -60,6 +60,7 @@ class FColorPalette // Accessor virtual FString getClassName() const; + static auto getInstance() -> std::shared_ptr&; // Methods virtual void setColorPalette() = 0; diff --git a/src/include/final/fkeyboard.h b/src/include/final/fkeyboard.h index b2b47ddb..d55f89b6 100644 --- a/src/include/final/fkeyboard.h +++ b/src/include/final/fkeyboard.h @@ -105,10 +105,11 @@ class FKeyboard final // Accessors FString getClassName() const; + static auto getInstance() -> FKeyboard&; FKey getKey() const; FString getKeyName (const FKey) const; keybuffer& getKeyBuffer(); - TimeValue getKeyPressedTime(); + TimeValue getKeyPressedTime() const; static uInt64 getKeypressTimeout(); static uInt64 getReadBlockingTime(); @@ -214,7 +215,7 @@ inline FKeyboard::keybuffer& FKeyboard::getKeyBuffer() { return fifo_buf; } //---------------------------------------------------------------------- -inline TimeValue FKeyboard::getKeyPressedTime() +inline TimeValue FKeyboard::getKeyPressedTime() const { return time_keypressed; } //---------------------------------------------------------------------- diff --git a/src/include/final/fmouse.h b/src/include/final/fmouse.h index 203234b7..af15f1ac 100644 --- a/src/include/final/fmouse.h +++ b/src/include/final/fmouse.h @@ -209,7 +209,7 @@ class FMouse : public FMouseData uInt16 getMaxWidth() const; uInt16 getMaxHeight() const; uInt64 getDblclickInterval() const; - TimeValue getMousePressedTime(); + TimeValue getMousePressedTime() const; // Mutator void setNewPos (int, int); @@ -506,6 +506,7 @@ class FMouseControl // Accessors virtual FString getClassName() const; + static auto getInstance() -> FMouseControl&; const FPoint& getPos(); void clearEvent(); diff --git a/src/include/final/foptiattr.h b/src/include/final/foptiattr.h index a7f1cfbb..d8145483 100644 --- a/src/include/final/foptiattr.h +++ b/src/include/final/foptiattr.h @@ -107,6 +107,7 @@ class FOptiAttr final // Accessors FString getClassName() const; + static auto getInstance() -> FOptiAttr&; // Mutators void setTermEnvironment (const TermEnv&); diff --git a/src/include/final/foptimove.h b/src/include/final/foptimove.h index f9da1170..adb17ac2 100644 --- a/src/include/final/foptimove.h +++ b/src/include/final/foptimove.h @@ -93,6 +93,7 @@ class FOptiMove final // Accessors FString getClassName() const; + static auto getInstance() -> FOptiMove&; uInt getCursorHomeLength() const; uInt getCarriageReturnLength() const; uInt getCursorToLLLength() const; diff --git a/src/include/final/fstartoptions.h b/src/include/final/fstartoptions.h index 8e1f3aaf..f625b547 100644 --- a/src/include/final/fstartoptions.h +++ b/src/include/final/fstartoptions.h @@ -3,7 +3,7 @@ * * * This file is part of the FINAL CUT widget toolkit * * * -* Copyright 2019-2020 Markus Gans * +* Copyright 2019-2021 Markus Gans * * * * FINAL CUT is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * @@ -66,7 +66,7 @@ class FStartOptions final // Accessors static FString getClassName(); - static FStartOptions& getFStartOptions(); + static auto getInstance() -> FStartOptions&; // Mutator void setDefault(); diff --git a/src/include/final/fsystem.h b/src/include/final/fsystem.h index f3183db6..a7812950 100644 --- a/src/include/final/fsystem.h +++ b/src/include/final/fsystem.h @@ -57,6 +57,9 @@ class FSystem // Destructor virtual ~FSystem() noexcept; + // Accessor + static auto getInstance() -> std::unique_ptr&; + // Methods virtual uChar inPortByte (uShort) = 0; virtual void outPortByte (uChar, uShort) = 0; diff --git a/src/include/final/fterm.h b/src/include/final/fterm.h index 6661bc24..1e9feb44 100644 --- a/src/include/final/fterm.h +++ b/src/include/final/fterm.h @@ -127,31 +127,12 @@ namespace finalcut // class forward declaration class FColorPalette; -class FKeyboard; -class FMouseControl; -class FOptiAttr; -class FOptiMove; class FPoint; class FStartOptions; class FSize; class FString; class FTermBuffer; -class FTermData; -class FTermDebugData; -class FTermDetection; -class FTermXTerminal; -#if defined(__linux__) || defined(UNIT_TEST) - class FTermLinux; -#endif - -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - class FTermFreeBSD; -#endif - -#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(UNIT_TEST) - class FTermOpenBSD; -#endif //---------------------------------------------------------------------- // class FTerm @@ -187,31 +168,6 @@ class FTerm final static std::string getTermFileName(); static int getTabstop(); static int getMaxColor(); - static auto getColorPaletteTheme() -> std::shared_ptr&; - static auto getFSystem() -> std::unique_ptr&; - static auto getFTermData() -> FTermData&; - static auto getFOptiMove() -> FOptiMove&; - static auto getFOptiAttr() -> FOptiAttr&; - static auto getFTermDetection() -> FTermDetection&; - static auto getFTermXTerminal() -> FTermXTerminal&; - static auto getFKeyboard() -> FKeyboard&; - static auto getFMouseControl() -> FMouseControl&; - -#if defined(__linux__) || defined(UNIT_TEST) - static auto getFTermLinux() -> FTermLinux&; -#endif - -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(UNIT_TEST) - static auto getFTermFreeBSD() -> FTermFreeBSD&; -#endif - -#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(UNIT_TEST) - static auto getFTermOpenBSD() -> FTermOpenBSD&; -#endif - -#if DEBUG - static auto getFTermDebugData() -> FTermDebugData&; -#endif // Inquiries static bool isNormal (const FChar&); @@ -404,7 +360,7 @@ inline FString FTerm::getClassName() //---------------------------------------------------------------------- inline void FTerm::setFSystem (std::unique_ptr& fsystem) { - getFSystem().swap(fsystem); + FSystem::getInstance().swap(fsystem); } //---------------------------------------------------------------------- @@ -419,8 +375,8 @@ inline bool FTerm::unsetUTF8() template inline void FTerm::setColorPaletteTheme (const FSetPalette& f) { - getColorPaletteTheme() = std::make_shared(f); - getColorPaletteTheme()->setColorPalette(); + FColorPalette::getInstance() = std::make_shared(f); // Set instance + FColorPalette::getInstance()->setColorPalette(); // Set palette } //---------------------------------------------------------------------- diff --git a/src/include/final/ftermdata.h b/src/include/final/ftermdata.h index 91a55c7d..5930c823 100644 --- a/src/include/final/ftermdata.h +++ b/src/include/final/ftermdata.h @@ -72,6 +72,7 @@ class FTermData final // Accessors FString getClassName() const; + static auto getInstance() -> FTermData&; EncodingMap& getEncodingList(); charSubstitution& getCharSubstitutionMap(); Encoding getTermEncoding() const; @@ -170,6 +171,13 @@ class FTermData final inline FString FTermData::getClassName() const { return "FTermData"; } +//---------------------------------------------------------------------- +inline auto FTermData::getInstance() -> FTermData& +{ + static const auto& data = make_unique(); + return *data; +} + //---------------------------------------------------------------------- inline FTermData::EncodingMap& FTermData::getEncodingList() { return encoding_list; } diff --git a/src/include/final/ftermdebugdata.h b/src/include/final/ftermdebugdata.h index e671064e..d4e80fc5 100644 --- a/src/include/final/ftermdebugdata.h +++ b/src/include/final/ftermdebugdata.h @@ -35,14 +35,13 @@ #error "Only can be included directly." #endif +#include "final/fstring.h" + #if DEBUG namespace finalcut { -// class forward declaration -class FTerm; - //---------------------------------------------------------------------- // class FTermDebugData //---------------------------------------------------------------------- @@ -63,6 +62,8 @@ class FTermDebugData final FTermDebugData& operator = (const FTermDebugData&) = delete; // Accessors + static FString getClassName(); + static auto getInstance() -> FTermDebugData&; const FString& getAnswerbackString(); const FString& getSecDAString(); const FString& getTermType_256color(); @@ -73,6 +74,9 @@ class FTermDebugData final #endif }; +inline FString FTermDebugData::getClassName() +{ return "FTermDebugData"; } + } // namespace finalcut #endif // DEBUG diff --git a/src/include/final/ftermdetection.h b/src/include/final/ftermdetection.h index 4ca3d58b..fc2bfd5c 100644 --- a/src/include/final/ftermdetection.h +++ b/src/include/final/ftermdetection.h @@ -100,6 +100,7 @@ class FTermDetection final // Accessor FString getClassName() const; + static auto getInstance() -> FTermDetection&; const FString& getTermType() const; int getGnomeTerminalID() const; kittyVersion getKittyVersion() const; diff --git a/src/include/final/ftermfreebsd.h b/src/include/final/ftermfreebsd.h index b16e8e24..055e6a70 100644 --- a/src/include/final/ftermfreebsd.h +++ b/src/include/final/ftermfreebsd.h @@ -83,6 +83,7 @@ class FTermFreeBSD final // Accessors FString getClassName() const; + static auto getInstance() -> FTermFreeBSD&; static CursorStyle getCursorStyle(); // Inquiry diff --git a/src/include/final/ftermlinux.h b/src/include/final/ftermlinux.h index f9d0b89b..ca403ca0 100644 --- a/src/include/final/ftermlinux.h +++ b/src/include/final/ftermlinux.h @@ -92,6 +92,7 @@ class FTermLinux final // Accessors FString getClassName() const; + static auto getInstance() -> FTermLinux&; CursorStyle getCursorStyle() const; char* getCursorStyleString(); int getFramebufferBpp() const; diff --git a/src/include/final/ftermopenbsd.h b/src/include/final/ftermopenbsd.h index d663c025..866cca1d 100644 --- a/src/include/final/ftermopenbsd.h +++ b/src/include/final/ftermopenbsd.h @@ -73,6 +73,7 @@ class FTermOpenBSD final public: // Accessor FString getClassName() const; + static auto getInstance() -> FTermOpenBSD&; // Inquiries static bool isBSDConsole(); diff --git a/src/include/final/ftermxterminal.h b/src/include/final/ftermxterminal.h index d80ac055..0f12fb8e 100644 --- a/src/include/final/ftermxterminal.h +++ b/src/include/final/ftermxterminal.h @@ -66,6 +66,7 @@ class FTermXTerminal final // Accessors FString getClassName() const; + static auto getInstance() -> FTermXTerminal&; XTermCursorStyle getCursorStyle() const; FString getFont() const; FString getTitle() const; diff --git a/test/foptiattr-test.cpp b/test/foptiattr-test.cpp index 9f24d0f7..d33b3678 100644 --- a/test/foptiattr-test.cpp +++ b/test/foptiattr-test.cpp @@ -134,7 +134,7 @@ void FOptiAttrTest::sgrOptimizerTest() { // Test with FOptiAttr // ------------------- - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = true; + finalcut::FStartOptions::getInstance().sgr_optimizer = true; finalcut::FOptiAttr oa; oa.setDefaultColorSupport(); // ANSI default color oa.setMaxColor (8); @@ -349,7 +349,7 @@ void FOptiAttrTest::vga2ansiTest() //---------------------------------------------------------------------- void FOptiAttrTest::fakeReverseTest() { - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.setDefaultColorSupport(); // ANSI default color oa.setMaxColor (8); @@ -435,7 +435,7 @@ void FOptiAttrTest::ansiTest() { // Simulate an ansi terminal - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.setDefaultColorSupport(); // ANSI default color oa.setMaxColor (8); @@ -900,7 +900,7 @@ void FOptiAttrTest::vt100Test() { // Simulate a vt100 terminal - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.unsetDefaultColorSupport(); // No ANSI default color oa.setMaxColor (1); @@ -1358,7 +1358,7 @@ void FOptiAttrTest::xtermTest() { // Simulate an xterm-256color terminal - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.setDefaultColorSupport(); // ANSI default color oa.setMaxColor (256); @@ -1837,7 +1837,7 @@ void FOptiAttrTest::rxvtTest() { // Simulate an rxvt terminal - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.setDefaultColorSupport(); // ANSI default color oa.setMaxColor (8); @@ -2306,7 +2306,7 @@ void FOptiAttrTest::linuxTest() { // Simulate a Linux terminal with 16 colors - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.setDefaultColorSupport(); // ANSI default color oa.setMaxColor (16); @@ -2778,7 +2778,7 @@ void FOptiAttrTest::puttyTest() { // Simulate a putty-256color terminal - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.unsetDefaultColorSupport(); // No ANSI default color oa.setMaxColor (256); @@ -3257,7 +3257,7 @@ void FOptiAttrTest::teratermTest() { // Simulate a Tera Term terminal - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.unsetDefaultColorSupport(); // No ANSI default color oa.setMaxColor (16); @@ -3719,7 +3719,7 @@ void FOptiAttrTest::ibmColorTest() { // Simulate IBM color definitions - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; oa.unsetDefaultColorSupport(); // No ANSI default color oa.setMaxColor (8); @@ -4155,7 +4155,7 @@ void FOptiAttrTest::wyse50Test() { // Simulate an Wyse-50 terminal - finalcut::FStartOptions::getFStartOptions().sgr_optimizer = false; + finalcut::FStartOptions::getInstance().sgr_optimizer = false; finalcut::FOptiAttr oa; finalcut::FOptiAttr::TermEnv optiattr_env = { diff --git a/test/fterm_functions-test.cpp b/test/fterm_functions-test.cpp index e0f02341..5b2a89e7 100644 --- a/test/fterm_functions-test.cpp +++ b/test/fterm_functions-test.cpp @@ -488,7 +488,7 @@ void FTermFunctionsTest::FullWidthHalfWidthTest() CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"ㄴ") == L"ᄂ" ); // Column width (wchar_t) - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermEncoding (finalcut::Encoding::UTF8); CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\t") == 0 ); CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\r") == 0 ); @@ -2551,7 +2551,7 @@ void FTermFunctionsTest::combiningCharacterTest() //---------------------------------------------------------------------- void FTermFunctionsTest::readCursorPosTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; fterm_data.setTermType("xterm"); detect.setTerminalDetection(true); diff --git a/test/ftermbuffer-test.cpp b/test/ftermbuffer-test.cpp index 161743bb..0c0b5dce 100644 --- a/test/ftermbuffer-test.cpp +++ b/test/ftermbuffer-test.cpp @@ -100,7 +100,7 @@ void FTermBufferTest::noArgumentTest() //---------------------------------------------------------------------- void FTermBufferTest::writeTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermEncoding (finalcut::Encoding::UTF8); finalcut::FTermBuffer term_buf{}; @@ -361,7 +361,7 @@ void FTermBufferTest::writeTest() void FTermBufferTest::streamTest() { auto multi_color_emojis = bool( wcswidth(L"🚧🚀🚴", 3) == 6 ); - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermEncoding (finalcut::Encoding::UTF8); finalcut::FTermBuffer::FCharVector fchar_vec = { finalcut::FChar{} }; CPPUNIT_ASSERT ( fchar_vec.size() == 1 ); @@ -499,7 +499,7 @@ void FTermBufferTest::streamTest() //---------------------------------------------------------------------- void FTermBufferTest::combiningCharacterTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermEncoding (finalcut::Encoding::UTF8); finalcut::FTermBuffer term_buf{}; // Skip leading zero-width characters diff --git a/test/ftermcap-test.cpp b/test/ftermcap-test.cpp index 6f99da88..5f336cfd 100644 --- a/test/ftermcap-test.cpp +++ b/test/ftermcap-test.cpp @@ -122,7 +122,7 @@ void FTermcapTest::classNameTest() void FTermcapTest::initTest() { // Without a terminal type - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); CPPUNIT_ASSERT ( fterm_data.getTermType().empty() ); finalcut::FTermcap tcap; CPPUNIT_ASSERT ( ! tcap.isInitialized() ); @@ -141,7 +141,7 @@ void FTermcapTest::initTest() tcap.init(); CPPUNIT_ASSERT ( fterm_data.getTermType() == "xterm" ); setenv ("TERM", "xterm-256color", 1); // 256 color terminal - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); CPPUNIT_ASSERT ( ! term_detection.canDisplay256Colors() ); term_detection.detect(); CPPUNIT_ASSERT ( term_detection.canDisplay256Colors() ); @@ -156,7 +156,7 @@ void FTermcapTest::initTest() //---------------------------------------------------------------------- void FTermcapTest::getFlagTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermType("ansi"); finalcut::FTermcap tcap; tcap.init(); @@ -171,7 +171,7 @@ void FTermcapTest::getFlagTest() //---------------------------------------------------------------------- void FTermcapTest::getNumberTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermType("xterm"); finalcut::FTermcap tcap; tcap.init(); @@ -188,7 +188,7 @@ void FTermcapTest::getNumberTest() //---------------------------------------------------------------------- void FTermcapTest::getStringTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermType("ansi"); finalcut::FTermcap tcap; tcap.init(); @@ -206,7 +206,7 @@ void FTermcapTest::getStringTest() //---------------------------------------------------------------------- void FTermcapTest::encodeMotionParameterTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermType("ansi"); finalcut::FTermcap tcap; tcap.init(); @@ -222,7 +222,7 @@ void FTermcapTest::encodeMotionParameterTest() //---------------------------------------------------------------------- void FTermcapTest::encodeParameterTest() { - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermType("ansi"); finalcut::FTermcap tcap; tcap.init(); @@ -248,7 +248,7 @@ void FTermcapTest::paddingPrintTest() finalcut::FTermcap tcap; setenv ("TERM", "xterm", 1); // xterm has no padding character unsetenv("TERMCAP"); - auto& fterm_data = finalcut::FTerm::getFTermData(); + auto& fterm_data = finalcut::FTermData::getInstance(); fterm_data.setTermType("xterm"); CPPUNIT_ASSERT ( ! tcap.xon_xoff_flow_control ); tcap.init(); diff --git a/test/ftermcapquirks-test.cpp b/test/ftermcapquirks-test.cpp index 28a15627..e0738bea 100644 --- a/test/ftermcapquirks-test.cpp +++ b/test/ftermcapquirks-test.cpp @@ -293,8 +293,8 @@ void FTermcapQuirksTest::xtermTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcapQuirks quirks; finalcut::FTermcap::can_change_color_palette = false; detect.setXTerminal (true); @@ -324,8 +324,8 @@ void FTermcapQuirksTest::freebsdTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcap::attr_without_color = -1; finalcut::FTermcapQuirks quirks; detect.setFreeBSDTerm (true); @@ -363,8 +363,8 @@ void FTermcapQuirksTest::cygwinTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcap::background_color_erase = false; finalcut::FTermcapQuirks quirks; detect.setCygwinTerminal (true); @@ -388,8 +388,8 @@ void FTermcapQuirksTest::linuxTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcap::max_color = 8; finalcut::FTermcap::attr_without_color = -1; finalcut::FTermcapQuirks quirks; @@ -460,8 +460,8 @@ void FTermcapQuirksTest::rxvtTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcapQuirks quirks; detect.setRxvtTerminal (true); data.setTermType ("rxvt"); @@ -501,8 +501,8 @@ void FTermcapQuirksTest::vteTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcap::attr_without_color = -1; finalcut::FTermcapQuirks quirks; detect.setGnomeTerminal (true); @@ -527,8 +527,8 @@ void FTermcapQuirksTest::kittyTest() caps[int(finalcut::Termcap::t_enter_ca_mode)].string = CSI "?1049h"; caps[int(finalcut::Termcap::t_exit_ca_mode)].string = CSI "?1049l"; - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcapQuirks quirks; detect.setKittyTerminal (true); data.setTermType ("xterm-kitty"); @@ -551,8 +551,8 @@ void FTermcapQuirksTest::puttyTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcap::background_color_erase = false; finalcut::FTermcap::can_change_color_palette = false; finalcut::FTermcap::osc_support = false; @@ -641,8 +641,8 @@ void FTermcapQuirksTest::teratermTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcap::eat_nl_glitch = false; finalcut::FTermcapQuirks quirks; detect.setTeraTerm (true); @@ -671,8 +671,8 @@ void FTermcapQuirksTest::sunTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcap::eat_nl_glitch = false; finalcut::FTermcapQuirks quirks; detect.setSunTerminal (true); @@ -789,8 +789,8 @@ void FTermcapQuirksTest::screenTest() for (std::size_t i = 0; i < last_item; i++) memcpy(&caps[i], &test::tcap[i], sizeof(test::tcap[0])); - auto& data = finalcut::FTerm::getFTermData(); - auto& detect = finalcut::FTerm::getFTermDetection(); + auto& data = finalcut::FTermData::getInstance(); + auto& detect = finalcut::FTermDetection::getInstance(); finalcut::FTermcapQuirks quirks; finalcut::FTermcap::can_change_color_palette = false; detect.setScreenTerm (true); diff --git a/test/ftermdetection-test.cpp b/test/ftermdetection-test.cpp index a8fe7f8e..946924f7 100644 --- a/test/ftermdetection-test.cpp +++ b/test/ftermdetection-test.cpp @@ -124,7 +124,7 @@ void FTermDetectionTest::classNameTest() //---------------------------------------------------------------------- void FTermDetectionTest::ansiTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; setenv ("TERM", "ansi", 1); data.setTermType("ansi"); @@ -197,7 +197,7 @@ void FTermDetectionTest::ansiTest() //---------------------------------------------------------------------- void FTermDetectionTest::xtermTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm"); detect.setTerminalDetection(true); @@ -262,7 +262,7 @@ void FTermDetectionTest::xtermTest() //---------------------------------------------------------------------- void FTermDetectionTest::rxvtTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("rxvt-cygwin-native"); detect.setTerminalDetection(true); @@ -328,7 +328,7 @@ void FTermDetectionTest::rxvtTest() //---------------------------------------------------------------------- void FTermDetectionTest::urxvtTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("rxvt-unicode-256color"); detect.setTerminalDetection(true); @@ -393,7 +393,7 @@ void FTermDetectionTest::urxvtTest() //---------------------------------------------------------------------- void FTermDetectionTest::kdeKonsoleTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm-256color"); detect.setTerminalDetection(true); @@ -458,7 +458,7 @@ void FTermDetectionTest::kdeKonsoleTest() //---------------------------------------------------------------------- void FTermDetectionTest::gnomeTerminalTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm-256color"); detect.setTerminalDetection(true); @@ -523,7 +523,7 @@ void FTermDetectionTest::gnomeTerminalTest() //---------------------------------------------------------------------- void FTermDetectionTest::newerVteTerminalTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm-256color"); detect.setTerminalDetection(true); @@ -588,7 +588,7 @@ void FTermDetectionTest::newerVteTerminalTest() //---------------------------------------------------------------------- void FTermDetectionTest::puttyTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm"); detect.setTerminalDetection(true); @@ -654,7 +654,7 @@ void FTermDetectionTest::puttyTest() //---------------------------------------------------------------------- void FTermDetectionTest::windowsTerminalTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm"); detect.setTerminalDetection(true); @@ -721,7 +721,7 @@ void FTermDetectionTest::windowsTerminalTest() //---------------------------------------------------------------------- void FTermDetectionTest::teraTermTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm"); detect.setTerminalDetection(true); @@ -786,7 +786,7 @@ void FTermDetectionTest::teraTermTest() //---------------------------------------------------------------------- void FTermDetectionTest::cygwinTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("cygwin"); detect.setTerminalDetection(true); @@ -851,7 +851,7 @@ void FTermDetectionTest::cygwinTest() //---------------------------------------------------------------------- void FTermDetectionTest::minttyTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm-256color"); detect.setTerminalDetection(true); @@ -916,7 +916,7 @@ void FTermDetectionTest::minttyTest() //---------------------------------------------------------------------- void FTermDetectionTest::linuxTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("linux"); detect.setTerminalDetection(true); @@ -988,7 +988,7 @@ void FTermDetectionTest::linuxTest() //---------------------------------------------------------------------- void FTermDetectionTest::freebsdTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm"); detect.setTerminalDetection(true); @@ -1063,7 +1063,7 @@ void FTermDetectionTest::freebsdTest() //---------------------------------------------------------------------- void FTermDetectionTest::netbsdTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("wsvt25"); detect.setTerminalDetection(true); @@ -1136,7 +1136,7 @@ void FTermDetectionTest::netbsdTest() //---------------------------------------------------------------------- void FTermDetectionTest::openbsdTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("vt220"); detect.setTerminalDetection(true); @@ -1209,7 +1209,7 @@ void FTermDetectionTest::openbsdTest() //---------------------------------------------------------------------- void FTermDetectionTest::sunTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("sun-color"); @@ -1280,7 +1280,7 @@ void FTermDetectionTest::sunTest() //---------------------------------------------------------------------- void FTermDetectionTest::screenTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("screen"); detect.setTerminalDetection(true); @@ -1351,7 +1351,7 @@ void FTermDetectionTest::screenTest() //---------------------------------------------------------------------- void FTermDetectionTest::tmuxTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("screen"); detect.setTerminalDetection(true); @@ -1423,7 +1423,7 @@ void FTermDetectionTest::tmuxTest() //---------------------------------------------------------------------- void FTermDetectionTest::ktermTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("kterm"); detect.setTerminalDetection(true); @@ -1495,7 +1495,7 @@ void FTermDetectionTest::ktermTest() //---------------------------------------------------------------------- void FTermDetectionTest::mltermTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("mlterm"); detect.setTerminalDetection(true); @@ -1568,7 +1568,7 @@ void FTermDetectionTest::mltermTest() //---------------------------------------------------------------------- void FTermDetectionTest::kittyTest() { - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); finalcut::FTermDetection detect; data.setTermType("xterm-kitty"); detect.setTerminalDetection(true); @@ -1692,7 +1692,7 @@ void FTermDetectionTest::ttytypeTest() unsetenv("KONSOLE_DCOP"); unsetenv("TMUX"); unsetenv("KITTY_WINDOW_ID"); - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); // Test /dev/tty3 with linux data.setTermFileName("/dev/tty3"); diff --git a/test/ftermfreebsd-test.cpp b/test/ftermfreebsd-test.cpp index e7ee3b18..41fbff87 100644 --- a/test/ftermfreebsd-test.cpp +++ b/test/ftermfreebsd-test.cpp @@ -622,7 +622,7 @@ void ftermfreebsdTest::freebsdConsoleTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -651,7 +651,7 @@ void ftermfreebsdTest::freebsdConsoleTest() data.setTermResized (false); // setupterm is needed for tputs in ncurses >= 6.1 setupterm (static_cast(0), 1, static_cast(0)); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); term_detection.setTerminalDetection(true); pid_t pid = forkConEmu(); @@ -660,7 +660,7 @@ void ftermfreebsdTest::freebsdConsoleTest() // (gdb) set follow-fork-mode child static constexpr int left_alt = 0x38; finalcut::FTermFreeBSD freebsd; - const auto& fsystem = finalcut::FTerm::getFSystem(); + const auto& fsystem = finalcut::FSystem::getInstance(); auto fsystest = static_cast(fsystem.get()); struct keymap_t& keymap = fsystest->getTerminalKeymap(); @@ -759,7 +759,7 @@ void ftermfreebsdTest::freebsdConsoleTest() #if DEBUG const finalcut::FString& sec_da = \ - finalcut::FTerm::getFTermDebugData().getSecDAString(); + finalcut::FTermDebugData::getInstance().getSecDAString(); CPPUNIT_ASSERT ( sec_da == "\033[>0;10;0c" ); #endif diff --git a/test/ftermlinux-test.cpp b/test/ftermlinux-test.cpp index 3e0bb0be..e5b5ef12 100644 --- a/test/ftermlinux-test.cpp +++ b/test/ftermlinux-test.cpp @@ -2066,7 +2066,7 @@ void FTermLinuxTest::linuxConsoleTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -2098,7 +2098,7 @@ void FTermLinuxTest::linuxConsoleTest() data.setMonochron (false); data.setTermResized (false); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); finalcut::FTermLinux linux; // setupterm is needed for tputs in ncurses >= 6.1 @@ -2134,7 +2134,7 @@ void FTermLinuxTest::linuxConsoleTest() CPPUNIT_ASSERT ( data.hasHalfBlockCharacter() ); CPPUNIT_ASSERT ( linux.getFramebufferBpp() == 32 ); - const auto& fsystem = finalcut::FTerm::getFSystem(); + const auto& fsystem = finalcut::FSystem::getInstance(); auto fsystest = static_cast(fsystem.get()); std::string& characters = fsystest->getCharacters(); linux.setUTF8 (false); @@ -2190,7 +2190,7 @@ void FTermLinuxTest::linuxConsoleLat15Test() fsystest->setCodeset(test::FSystemTest::Codeset::lat15); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -2223,7 +2223,7 @@ void FTermLinuxTest::linuxConsoleLat15Test() data.setMonochron (false); data.setTermResized (false); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); finalcut::FTermLinux linux; // setupterm is needed for tputs in ncurses >= 6.1 @@ -2282,7 +2282,7 @@ void FTermLinuxTest::linuxCursorStyleTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -2316,7 +2316,7 @@ void FTermLinuxTest::linuxCursorStyleTest() // setupterm is needed for tputs in ncurses >= 6.1 setupterm (static_cast(0), 1, static_cast(0)); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); finalcut::FTermLinux linux; pid_t pid = forkConEmu(); @@ -2340,7 +2340,7 @@ void FTermLinuxTest::linuxCursorStyleTest() term_detection.detect(); linux.init(); - const auto& fsystem = finalcut::FTerm::getFSystem(); + const auto& fsystem = finalcut::FSystem::getInstance(); auto fsystest = static_cast(fsystem.get()); std::string& characters = fsystest->getCharacters(); characters.clear(); @@ -2472,7 +2472,7 @@ void FTermLinuxTest::linuxColorPaletteTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -2506,7 +2506,7 @@ void FTermLinuxTest::linuxColorPaletteTest() // setupterm is needed for tputs in ncurses >= 6.1 setupterm (static_cast(0), 1, static_cast(0)); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); finalcut::FTermLinux linux; term_detection.setLinuxTerm(true); @@ -2530,7 +2530,7 @@ void FTermLinuxTest::linuxColorPaletteTest() term_detection.detect(); linux.init(); - const auto& fsystem = finalcut::FTerm::getFSystem(); + const auto& fsystem = finalcut::FSystem::getInstance(); auto fsystest = static_cast(fsystem.get()); CPPUNIT_ASSERT ( linux.resetColorMap() == true ); @@ -2748,7 +2748,7 @@ void FTermLinuxTest::linuxFontTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -2782,7 +2782,7 @@ void FTermLinuxTest::linuxFontTest() // setupterm is needed for tputs in ncurses >= 6.1 setupterm (static_cast(0), 1, static_cast(0)); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); finalcut::FTermLinux linux; pid_t pid = forkConEmu(); @@ -2805,7 +2805,7 @@ void FTermLinuxTest::linuxFontTest() term_detection.detect(); linux.init(); - const auto& fsystem = finalcut::FTerm::getFSystem(); + const auto& fsystem = finalcut::FSystem::getInstance(); auto fsystest = static_cast(fsystem.get()); console_font_op& font = fsystest->getConsoleFont(); CPPUNIT_ASSERT ( font.op == KD_FONT_OP_GET ); @@ -2892,7 +2892,7 @@ void FTermLinuxTest::modifierKeyTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); - const auto& fsystem = finalcut::FTerm::getFSystem(); + const auto& fsystem = finalcut::FSystem::getInstance(); auto fsystest = static_cast(fsystem.get()); test::FSystemTest::ShiftState& mod_key = fsystest->getShiftState(); finalcut::FTermLinux linux{}; diff --git a/test/ftermopenbsd-test.cpp b/test/ftermopenbsd-test.cpp index a61c6119..c2546d9c 100644 --- a/test/ftermopenbsd-test.cpp +++ b/test/ftermopenbsd-test.cpp @@ -344,7 +344,7 @@ void ftermopenbsdTest::netbsdConsoleTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -374,7 +374,7 @@ void ftermopenbsdTest::netbsdConsoleTest() // setupterm is needed for tputs in ncurses >= 6.1 setupterm (static_cast(0), 1, static_cast(0)); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); term_detection.setTerminalDetection(true); pid_t pid = forkConEmu(); @@ -403,7 +403,7 @@ void ftermopenbsdTest::netbsdConsoleTest() #if DEBUG const finalcut::FString& sec_da = \ - finalcut::FTerm::getFTermDebugData().getSecDAString(); + finalcut::FTermDebugData::getInstance().getSecDAString(); CPPUNIT_ASSERT ( sec_da == "\033[>24;20;0c" ); #endif @@ -449,7 +449,7 @@ void ftermopenbsdTest::openbsdConsoleTest() std::unique_ptr fsys = finalcut::make_unique(); finalcut::FTerm::setFSystem(fsys); std::cout << "\n"; - auto& data = finalcut::FTerm::getFTermData(); + auto& data = finalcut::FTermData::getInstance(); auto& encoding_list = data.getEncodingList(); encoding_list["UTF-8"] = finalcut::Encoding::UTF8; @@ -479,7 +479,7 @@ void ftermopenbsdTest::openbsdConsoleTest() // setupterm is needed for tputs in ncurses >= 6.1 setupterm (static_cast(0), 1, static_cast(0)); - auto& term_detection = finalcut::FTerm::getFTermDetection(); + auto& term_detection = finalcut::FTermDetection::getInstance(); term_detection.setTerminalDetection(true); pid_t pid = forkConEmu(); @@ -501,7 +501,7 @@ void ftermopenbsdTest::openbsdConsoleTest() unsetenv("KONSOLE_DCOP"); unsetenv("TMUX"); - const auto& fsystem = finalcut::FTerm::getFSystem(); + const auto& fsystem = finalcut::FSystem::getInstance(); auto fsystest = static_cast(fsystem.get()); wskbd_bell_data& speaker = fsystest->getBell(); openbsd.disableMetaSendsEscape(); @@ -511,7 +511,7 @@ void ftermopenbsdTest::openbsdConsoleTest() #if DEBUG const finalcut::FString& sec_da = \ - finalcut::FTerm::getFTermDebugData().getSecDAString(); + finalcut::FTermDebugData::getInstance().getSecDAString(); CPPUNIT_ASSERT ( sec_da == "\033[>24;20;0c" ); #endif