CConfig(const std::_tstring & id, const boost::filesystem::path & path) : m_id(id), m_CfgPath(path) { TCHAR szFileName[_MAX_FNAME]; TCHAR szExt[_MAX_FNAME]; _tsplitpath(pathToWString(m_CfgPath).c_str(), NULL, NULL, szFileName, szExt); if (szExt[0] == '.') { InitConfigPath(szFileName, &szExt[1]); } else { InitConfigPath(szFileName, szExt); } }
void Set(const std::_tstring & section, const std::_tstring & label, const _variant_t & val) { clib::recursive_mutex::scoped_lock proc(m_mutex); SectionLabelDefault sl(SectionLabel(section, label), _T("")); if(sl == GLOBAL_USER) { InitConfigPath(m_CfgName, _T("cfg")); } SectionLabel id(section, label); if (m_cache.find(id) == m_cache.end() || CString(m_cache[id]).CompareNoCase(CString(val)) != 0) { if (!m_CfgPath.empty() && sl != GLOBAL_PASSWORD) { CString _val = val; if ( !m_Cfg.PutString(section.c_str(), label.c_str(), _val) ) { ATLTRACE(_T("PutString(%s,%s,Err=%x)\r\n"), section, label, ::GetLastError() ); } } m_cache[id] = val; proc.unlock(); on_refresh(&id); } }
int main( int argc, char** argv ) #endif { try { #ifdef _WIN32 SetHighDPIAware(); //disable system critical messageboxes (for example: no floppy disk :) ) SetErrorMode( SEM_FAILCRITICALERRORS ); Win32HInstance = hInstance; Win32HIconId = IDI_WCM; WSADATA wsaData; if ( WSAStartup( MAKEWORD( 2, 2 ), &wsaData ) ) { throw_syserr( 0, "WSAStartup failed" ); } std::string StartupDir; #else setlocale( LC_ALL, "" ); signal( SIGPIPE, SIG_IGN ); std::string StartupDir = GetStartupDir( argv[0] ); #endif try { InitConfigPath(); g_WcmConfig.Load( nullptr, StartupDir ); const char* langId = g_WcmConfig.systemLang.data() ? g_WcmConfig.systemLang.data() : "+"; #ifdef _WIN32 if ( !InitLocale( L"install-files/share/wcm/lang", langId ) ) { InitLocale( carray_cat<sys_char_t>( GetAppPath().data(), utf8_to_sys( "lang" ).data() ).data(), langId ); } #else if ( !InitLocale( "install-files/share/wcm/lang", langId ) ) { InitLocale( UNIX_CONFIG_DIR_PATH "/lang", langId ); } #endif // SetEditorColorStyle(g_WcmConfig.editColorMode); // SetViewerColorStyle(g_WcmConfig.viewColorMode); } catch ( cexception* ex ) { fprintf( stderr, "%s\n", ex->message() ); ex->destroy(); } InitSSH(); AppInit(); SetColorStyle( g_WcmConfig.styleColorTheme); OldSysGetFont = SysGetFont; SysGetFont = MSysGetFont; // cfont* defaultFont = SysGetFont( 0, 0 ); defaultGC = new wal::GC( ( Win* )0 ); #ifndef _WIN32 #include "icons/wcm.xpm" Win::SetIcon( wcm_xpm ); #endif InitFonts(); InitOperCharsets(); SetCmdIcons(); NCWin ncWin; g_MainWin = &ncWin; // reload config with a valid NCWin g_WcmConfig.Load( &ncWin, StartupDir ); ncWin.Enable(); ncWin.Show(); InitExtensionApp(); #if !defined( _WIN32 ) // don't bother with this on Windows if ( !ParseCommandLine( argc, argv, &ncWin ) ) { return 0; } #endif for ( auto i = g_Applets.begin(); i != g_Applets.end(); i++ ) { if ( !( *i )->Run() ) { return 0; } } g_Applets.clear(); AppRun(); // clean up RemoveAllWcmTempDirs(); dbg_printf( "App Quit!!!\n" ); } catch ( cexception* ex ) { #ifdef _WIN32 MessageBoxA( 0, ex->message(), "", MB_OK ); #else printf( "Error: %s\n", ex->message() ); #endif } return 0; }
virtual void SetLabel(const std::_tstring & label, const std::_tstring & ext) { clib::recursive_mutex::scoped_lock proc(m_mutex); InitConfigPath(label, ext); m_cache.clear(); }
int main( int argc, char** argv ) #endif { try { #ifndef _WIN32 for ( int i = 1; i < argc; i++ ) { if ( argv[i][0] == '-' && argv[i][1] == '-' && !strcmp( argv[i] + 2, "dlg" ) ) { createDialogAsChild = false; } } #endif #ifdef _WIN32 //disable system critical messageboxes (for example: no floppy disk :) ) SetErrorMode( SEM_FAILCRITICALERRORS ); #endif #ifdef _WIN32 Win32HInstance = hInstance; Win32HIconId = IDI_WCM; #endif #ifdef _WIN32 WSADATA wsaData; if ( WSAStartup( MAKEWORD( 2, 2 ), &wsaData ) ) { throw_syserr( 0, "WSAStartup failed" ); } #else setlocale( LC_ALL, "" ); signal( SIGPIPE, SIG_IGN ); #endif try { InitConfigPath(); g_WcmConfig.Load( NULL ); const char* langId = g_WcmConfig.systemLang.data() ? g_WcmConfig.systemLang.data() : "+"; #ifdef _WIN32 InitLocale( carray_cat<sys_char_t>( GetAppPath().data(), utf8_to_sys( "lang" ).data() ).data(), langId ); #else if ( !InitLocale( "install-files/share/wcm/lang", langId ) ) { InitLocale( UNIX_CONFIG_DIR_PATH "/lang", langId ); } #endif // SetEditorColorStyle(g_WcmConfig.editColorMode); // SetViewerColorStyle(g_WcmConfig.viewColorMode); } catch ( cexception* ex ) { fprintf( stderr, "%s\n", ex->message() ); ex->destroy(); } InitSSH(); AppInit(); SetColorStyle( g_WcmConfig.styleColorMode ); OldSysGetFont = SysGetFont; SysGetFont = MSysGetFont; // cfont* defaultFont = SysGetFont( 0, 0 ); defaultGC = new wal::GC( ( Win* )0 ); #ifndef _WIN32 #include "icons/wcm.xpm" Win::SetIcon( wcm_xpm ); #endif InitFonts(); InitOperCharsets(); SetCmdIcons(); NCWin ncWin; // reload config with a valid NCWin g_WcmConfig.Load( &ncWin ); ncWin.Enable(); ncWin.Show(); InitExtensionApp(); AppRun(); dbg_printf( "App Quit!!!" ); } catch ( cexception* ex ) { #ifdef _WIN32 MessageBoxA( 0, ex->message(), "", MB_OK ); #else printf( "Error: %s\n", ex->message() ); #endif } return 0; }