#include "uiwelcomescreen.hpp" #include "customwidgets.hpp" #include "ecode.hpp" #include "version.hpp" #include #include namespace ecode { static const auto LAYOUT = R"xml( )xml"; UIWelcomeScreen* UIWelcomeScreen::createWelcomeScreen( App* app, UITabWidget* inTabWidget ) { UITabWidget* tabWidget = nullptr; if ( !inTabWidget ) { UIWidget* curWidget = app->getSplitter()->getCurWidget(); if ( !curWidget ) return nullptr; tabWidget = app->getSplitter()->tabWidgetFromWidget( curWidget ); } else { tabWidget = inTabWidget; } if ( !tabWidget ) { if ( !app->getSplitter()->getTabWidgets().empty() ) { tabWidget = app->getSplitter()->getTabWidgets()[0]; } else { return nullptr; } } UIWelcomeScreen* welcomeScreen = UIWelcomeScreen::New( app ); auto ret = app->getSplitter()->createWidgetInTabWidget( tabWidget, welcomeScreen, app->i18n( "welcome", "Welcome" ), true ); app->getSplitter()->removeUnusedTab( tabWidget, true, false ); ret.first->setIcon( app->findIcon( "ecode", PixelDensity::dpToPxI( 16 ) ) ); return welcomeScreen; } UIWelcomeScreen* UIWelcomeScreen::New( App* app ) { return eeNew( UIWelcomeScreen, ( app ) ); } Uint32 UIWelcomeScreen::getType() const { return static_cast( CustomWidgets::UI_TYPE_WELCOME_TAB ); } bool UIWelcomeScreen::isType( const Uint32& type ) const { return UIWelcomeScreen::getType() == type ? true : UIRelativeLayout::isType( type ); } UIWelcomeScreen::UIWelcomeScreen( App* app ) : UIRelativeLayout(), WidgetCommandExecuter( getInput() ), mApp( app ) { setId( "welcome_ecode" ); addClass( "welcome_tab" ); setLayoutSizePolicy( SizePolicy::MatchParent, SizePolicy::MatchParent ); app->registerUnlockedCommands( *this ); getUISceneNode()->loadLayoutFromString( LAYOUT, this, String::hash( "UIWelcomeScreen" ) ); auto bindBtn = [this]( const std::string& id ) { UIWidget* node = find( id ); if ( !node ) return; node->setTooltipText( getKeyBindings().getCommandKeybindString( id ) ); node->onClick( [this]( const MouseEvent* event ) { mApp->runCommand( event->getNode()->getId() ); } ); }; auto bindBtns = [bindBtn]( const std::initializer_list ids ) { for ( const auto& id : ids ) bindBtn( id ); }; bindBtns( { "create-new", "open-folder", "open-file", "create-new-terminal", "check-for-updates", "plugin-manager-open", "keybindings" } ); auto recentFolders = find( "recent-folders" ); recentFolders->onClick( [this]( const MouseEvent* event ) { mApp->createAndShowRecentFolderPopUpMenu( event->getNode() ); } ); auto recentFiles = find( "recent-files" ); recentFiles->onClick( [this]( const MouseEvent* event ) { mApp->createAndShowRecentFilesPopUpMenu( event->getNode() ); } ); find( "version_number" ) ->setText( String::format( "version %s", ecode::Version::getVersionNumString() ) ) ->onClick( [this]( auto ) { mApp->runCommand( "check-for-updates" ); } ); find( "main_menu_shortcut" )->setText( mApp->getKeybind( "menu-toggle" ) ); find( "command_palette_shortcut" ) ->setText( mApp->getKeybind( "open-command-palette" ) ); find( "locate_shortcut" )->setText( mApp->getKeybind( "open-locatebar" ) ); find( "global_search_shortcut" ) ->setText( mApp->getKeybind( "open-global-search" ) ); find( "open_folder_shortcut" )->setText( mApp->getKeybind( "open-folder" ) ); find( "open_file_shortcut" )->setText( mApp->getKeybind( "open-file" ) ); find( "light_color_scheme_but" )->onClick( [this]( auto ) { mApp->setUIColorSchemeFromUserInteraction( ColorSchemeExtPreference::Light ); } ); find( "dark_color_scheme_but" )->onClick( [this]( auto ) { mApp->setUIColorSchemeFromUserInteraction( ColorSchemeExtPreference::Dark ); } ); auto welcomeDisabledChk = find( "disable_welcome_screen" ); welcomeDisabledChk->on( Event::OnValueChange, [welcomeDisabledChk, this]( auto ) { mApp->getConfig().ui.welcomeScreen = !welcomeDisabledChk->isChecked(); } ); refresh(); } void UIWelcomeScreen::refresh() { auto recentFolders = find( "recent-folders" ); auto recentFiles = find( "recent-files" ); recentFolders->setEnabled( !mApp->getRecentFolders().empty() ); recentFiles->setEnabled( !mApp->getRecentFiles().empty() ); } } // namespace ecode