diff --git a/bin/assets/i18n/de.xml b/bin/assets/i18n/de.xml index 92a435abe..66aa1a3cc 100644 --- a/bin/assets/i18n/de.xml +++ b/bin/assets/i18n/de.xml @@ -708,8 +708,8 @@ Bitte das Programmverzeichnis auf Schreibrechte überprüfen. Auswahl zu voriger Zeile Auswahl zu Inhaltsanfang Auswahl zu Zeilenanfang - Serifenschriftart - Serifenschriftart... + SansSerifenschriftart + SansSerifenschriftart... Sitzungs-Snapshot & Regelmäßige Sicherung Wenn Sitzungs-Snapshots aktiv sind, wird der Editor Änderungen im Dokumenten-Buffer beibehalten, auch, wenn sie vor Beendigung nicht gespeichert wurden. diff --git a/bin/assets/i18n/en.xml b/bin/assets/i18n/en.xml index 1531eab40..37529aeed 100644 --- a/bin/assets/i18n/en.xml +++ b/bin/assets/i18n/en.xml @@ -693,8 +693,8 @@ Please check that the application directory has write permissions. Select To Previous Line Select To Start Of Content Select To Start Of Line - Serif Font - Serif Font... + Sans-Serif Font + Sans Serif Font... Session Snapshot & Periodic Backup When session snapshot is enabled the editor will keep the document buffer changes between sessions, even if they are not saved diff --git a/bin/assets/i18n/zh_CN.xml b/bin/assets/i18n/zh_CN.xml index aad7cb60d..eee83db56 100644 --- a/bin/assets/i18n/zh_CN.xml +++ b/bin/assets/i18n/zh_CN.xml @@ -522,8 +522,8 @@ Restart ecode to see the changes. 选择字体文件 选择下一行 选择上一行 - Serif字体 - Serif字体... + Sans-Serif字体 + Sans-Serif字体... 设置光标闪烁时间:设置0禁用 设置字体大小: diff --git a/src/eepp/ui/iconmanager.cpp b/src/eepp/ui/iconmanager.cpp index c40c09392..9352bd284 100644 --- a/src/eepp/ui/iconmanager.cpp +++ b/src/eepp/ui/iconmanager.cpp @@ -115,6 +115,7 @@ UIIconTheme* IconManager::init( const std::string& iconThemeName, FontTrueType* { "volume-mute-fill", 0xF29D }, { "pause-fill", 0xEFD7 }, { "spy-line", 0xF17F }, + { "input-field", 0xF47A }, } ) { iconTheme->add( UIGlyphIcon::New( icon.first, remixIconFont, icon.second ) ); } diff --git a/src/tools/ecode/appconfig.cpp b/src/tools/ecode/appconfig.cpp index d756b95b2..7351e6c96 100644 --- a/src/tools/ecode/appconfig.cpp +++ b/src/tools/ecode/appconfig.cpp @@ -129,7 +129,7 @@ void AppConfig::load( const std::string& confPath, std::string& keybindingsPath, ui.nativeFileDialogs = ini.getValueB( "ui", "native_file_dialogs", false ); ui.imagesQuickPreview = ini.getValueB( "ui", "images_quick_preview", false ); ui.panelPosition = panelPositionFromString( ini.getValue( "ui", "panel_position", "left" ) ); - ui.serifFont = ini.getValue( "ui", "serif_font", "fonts/NotoSans-Regular.ttf" ); + ui.sansSerifFont = ini.getValue( "ui", "serif_font", "fonts/NotoSans-Regular.ttf" ); ui.monospaceFont = ini.getValue( "ui", "monospace_font", "fonts/DejaVuSansMono.ttf" ); ui.terminalFont = ini.getValue( "ui", "terminal_font", "fonts/DejaVuSansMonoNerdFontComplete.ttf" ); @@ -145,6 +145,8 @@ void AppConfig::load( const std::string& confPath, std::string& keybindingsPath, ini.getValue( "ui", "font_antialiasing", "grayscale" ) ); Text::TextShaperEnabled |= ini.getValueB( "ui", "text_shaper", false ); Text::TextShaperOptimizations |= ini.getValueB( "ui", "text_shaper_optimizations", true ); + ui.editorFontInInputFields = ini.getValueB( "ui", "editor_font_in_input_fields", true ); + doc.trimTrailingWhitespaces = ini.getValueB( "document", "trim_trailing_whitespaces", false ); doc.forceNewLineAtEndOfFile = ini.getValueB( "document", "force_new_line_at_end_of_file", false ); @@ -327,7 +329,7 @@ void AppConfig::save( const std::vector& recentFiles, ini.setValueB( "ui", "native_file_dialogs", ui.nativeFileDialogs ); ini.setValueB( "ui", "images_quick_preview", ui.imagesQuickPreview ); ini.setValue( "ui", "panel_position", panelPositionToString( ui.panelPosition ) ); - ini.setValue( "ui", "serif_font", ui.serifFont ); + ini.setValue( "ui", "serif_font", ui.sansSerifFont ); ini.setValue( "ui", "monospace_font", ui.monospaceFont ); ini.setValue( "ui", "terminal_font", ui.terminalFont ); ini.setValue( "ui", "theme", ui.theme ); @@ -339,6 +341,8 @@ void AppConfig::save( const std::vector& recentFiles, ini.setValue( "ui", "font_hinting", FontTrueType::fontHintingToString( ui.fontHinting ) ); ini.setValue( "ui", "font_antialiasing", FontTrueType::fontAntialiasingToString( ui.fontAntialiasing ) ); + ini.setValueB( "ui", "editor_font_in_input_fields", ui.editorFontInInputFields ); + ini.setValueB( "document", "trim_trailing_whitespaces", doc.trimTrailingWhitespaces ); ini.setValueB( "document", "force_new_line_at_end_of_file", doc.forceNewLineAtEndOfFile ); ini.setValueB( "document", "auto_detect_indent_type", doc.autoDetectIndentType ); diff --git a/src/tools/ecode/appconfig.hpp b/src/tools/ecode/appconfig.hpp index bb3826757..c26823c51 100644 --- a/src/tools/ecode/appconfig.hpp +++ b/src/tools/ecode/appconfig.hpp @@ -41,8 +41,9 @@ struct UIConfig { bool openProjectInNewWindow{ false }; bool nativeFileDialogs{ false }; bool imagesQuickPreview{ false }; + bool editorFontInInputFields{ true }; PanelPosition panelPosition{ PanelPosition::Left }; - std::string serifFont; + std::string sansSerifFont; std::string monospaceFont; std::string terminalFont; std::string fallbackFont; diff --git a/src/tools/ecode/ecode.cpp b/src/tools/ecode/ecode.cpp index d76ad1779..e171a8840 100644 --- a/src/tools/ecode/ecode.cpp +++ b/src/tools/ecode/ecode.cpp @@ -498,17 +498,8 @@ void App::openFontDialog( std::string& fontPath, bool loadingMonoFont, bool term mUISceneNode->find( "app_output_output" ) ) appOutputEditor->setFont( fontMono ); - if ( auto locateFind = - mUISceneNode->find( "locate_find" ) ) - locateFind->setFont( fontMono ); - - if ( auto globalSearchFind = - mUISceneNode->find( "global_search_find" ) ) - globalSearchFind->setFont( fontMono ); - - if ( auto globalSearchWhere = - mUISceneNode->find( "global_search_where" ) ) - globalSearchWhere->setFont( fontMono ); + if ( mConfig.ui.editorFontInInputFields ) + updateInputFonts(); } } }; @@ -521,6 +512,25 @@ void App::openFontDialog( std::string& fontPath, bool loadingMonoFont, bool term dialog->show(); } +void App::updateInputFonts() { + FontTrueType* font = mConfig.ui.editorFontInInputFields ? mFontMono : mFont; + + if ( auto locateFind = mUISceneNode->find( "locate_find" ) ) + locateFind->setFont( font ); + + if ( auto searchFind = mUISceneNode->find( "search_find" ) ) + searchFind->setFont( font ); + + if ( auto searchReplace = mUISceneNode->find( "search_replace" ) ) + searchReplace->setFont( font ); + + if ( auto globalSearchFind = mUISceneNode->find( "global_search_find" ) ) + globalSearchFind->setFont( font ); + + if ( auto globalSearchWhere = mUISceneNode->find( "global_search_where" ) ) + globalSearchWhere->setFont( font ); +} + void App::downloadFileWebDialog() { UIMessageBox* msgBox = UIMessageBox::New( UIMessageBox::INPUT, i18n( "please_enter_file_url_ellipsis", @@ -2020,7 +2030,7 @@ std::vector App::getUnlockedCommands() { "terminal-font-size", "ui-font-size", "ui-panel-font-size", - "serif-font", + "sans-serif-font", "monospace-font", "terminal-font", "fallback-font", @@ -3893,7 +3903,7 @@ void App::init( InitParameters& params ) { // Load fonts Clock fontsClock; - mFont = loadFont( "sans-serif", mConfig.ui.serifFont, "fonts/NotoSans-Regular.ttf" ); + mFont = loadFont( "sans-serif", mConfig.ui.sansSerifFont, "fonts/NotoSans-Regular.ttf" ); FontFamily::loadFromRegular( mFont ); mFontMono = loadFont( "monospace", mConfig.ui.monospaceFont, "fonts/DejaVuSansMono.ttf" ); @@ -4289,6 +4299,8 @@ void App::init( InitParameters& params ) { if ( !mConfig.ui.showSidePanel ) showSidePanel( mConfig.ui.showSidePanel ); + updateInputFonts(); + mSplitter = UICodeEditorSplitter::New( this, mUISceneNode, mThreadPool, mColorSchemes, mInitColorScheme ); mSplitter->setHideTabBarOnSingleTab( mConfig.editor.hideTabBarOnSingleTab ); diff --git a/src/tools/ecode/ecode.hpp b/src/tools/ecode/ecode.hpp index 71cbc0507..2d61258ff 100644 --- a/src/tools/ecode/ecode.hpp +++ b/src/tools/ecode/ecode.hpp @@ -75,6 +75,8 @@ class App : public UICodeEditorSplitter::Client, public PluginContextProvider { void openFontDialog( std::string& fontPath, bool loadingMonoFont, bool terminalFont = false, std::function onFinish = {} ); + void updateInputFonts(); + void downloadFileWeb( const std::string& url ); UIFileDialog* saveFileDialog( UICodeEditor* editor, bool focusOnClose = true ); @@ -337,7 +339,8 @@ class App : public UICodeEditorSplitter::Client, public PluginContextProvider { t.setCommand( "terminal-font-size", [this] { mSettingsActions->setTerminalFontSize(); } ); t.setCommand( "ui-font-size", [this] { mSettingsActions->setUIFontSize(); } ); t.setCommand( "ui-panel-font-size", [this] { mSettingsActions->setUIPanelFontSize(); } ); - t.setCommand( "serif-font", [this] { openFontDialog( mConfig.ui.serifFont, false ); } ); + t.setCommand( "sans-serif-font", + [this] { openFontDialog( mConfig.ui.sansSerifFont, false ); } ); t.setCommand( "monospace-font", [this] { openFontDialog( mConfig.ui.monospaceFont, true ); } ); t.setCommand( "terminal-font", diff --git a/src/tools/ecode/settingsmenu.cpp b/src/tools/ecode/settingsmenu.cpp index 981034f77..02cda6007 100644 --- a/src/tools/ecode/settingsmenu.cpp +++ b/src/tools/ecode/settingsmenu.cpp @@ -1315,8 +1315,9 @@ UIMenu* SettingsMenu::createWindowMenu() { ->setId( "editor-font-size" ); mWindowMenu->add( i18n( "terminal_font_size", "Terminal Font Size" ), findIcon( "font-size" ) ) ->setId( "terminal-font-size" ); - mWindowMenu->add( i18n( "serif_font_ellipsis", "Serif Font..." ), findIcon( "font-size" ) ) - ->setId( "serif-font" ); + mWindowMenu + ->add( i18n( "sans-serif_font_ellipsis", "Sans-Serif Font..." ), findIcon( "font-size" ) ) + ->setId( "sans-serif-font" ); mWindowMenu ->add( i18n( "monospace_font_ellipsis", "Monospace Font..." ), findIcon( "font-size" ) ) ->setId( "monospace-font" ); @@ -1399,6 +1400,19 @@ UIMenu* SettingsMenu::createWindowMenu() { mWindowMenu->addSeparator(); + mWindowMenu + ->addCheckBox( + i18n( "use_editor_font_in_input_fields", "Use the editor font in input fields" ), + mApp->getConfig().ui.editorFontInInputFields, + getKeybind( "use-editor-font-in-input-fields" ) ) + ->setTooltipText( + i18n( "use_editor_font_in_input_fields_desc", + "When enabled all main input fields will use the same monospace font as the " + "editor,\notherwise they will use the default sans-serif font." ) ) + ->setId( "use-editor-font-in-input-fields" ); + + mWindowMenu->addSeparator(); + mWindowMenu ->addCheckBox( i18n( "open_files_in_new_window_enable", "Open Files in New Window" ), mApp->getConfig().ui.openFilesInNewWindow ) @@ -1467,6 +1481,10 @@ UIMenu* SettingsMenu::createWindowMenu() { bool active = item->asType()->isActive(); mApp->getConfig().ui.imagesQuickPreview = active; mApp->saveConfig(); + } else if ( "use-editor-font-in-input-fields" == item->getId() ) { + bool active = item->asType()->isActive(); + mApp->getConfig().ui.editorFontInInputFields = active; + mApp->updateInputFonts(); } else { String text = String( event->getNode()->asType()->getId() ).toLower(); String::replaceAll( text, " ", "-" );