//--------------------------------------------------------------------------- void CoreInitialize() { Randomize(); CryptographyInitialize(); // configuration needs to be created and loaded before putty is initialized, // so that random seed path is known Configuration = CreateConfiguration(); try { Configuration->Load(); } catch (Exception & E) { ShowExtendedException(&E); } PuttyInitialize(); #ifndef NO_FILEZILLA TFileZillaIntf::Initialize(); #endif StoredSessions = new TStoredSessionList(); try { StoredSessions->Load(); } catch (Exception & E) { ShowExtendedException(&E); } }
USEFORM("forms\Glyphs.cpp", GlyphsModule); /* TDataModule: File Type */ //--------------------------------------------------------------------------- #include <CoreMain.h> #include <WinInterface.h> #include <ProgParams.h> #include <VCLCommon.h> #include <Setup.h> //--------------------------------------------------------------------------- WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int) { int Result = 0; try { WinInitialize(); Application->Initialize(); Application->MainFormOnTaskBar = true; Application->ModalPopupMode = pmAuto; SetEnvironmentVariable(L"WINSCP_PATH", ExcludeTrailingBackslash(ExtractFilePath(Application->ExeName)).c_str()); CoreInitialize(); InitializeWinHelp(); InitializeSystemSettings(); // now everything is setup and mainly the configured locale is already loaded, // detect scaling type and possibly forbid further runtime changes to locale GUIConfiguration->DetectScalingType(); try { try { ConfigureInterface(); SetupInitialize(); Application->Title = AppName; Result = Execute(); } catch (Exception & E) { // Capture most errors before Usage class is released, // so that we can count them Configuration->Usage->Inc(L"GlobalFailures"); ShowExtendedException(&E); } } __finally { FinalizeSystemSettings(); FinalizeWinHelp(); CoreFinalize(); WinFinalize(); } } catch (Exception &E) { ShowExtendedException(&E); } return Result; }
void CoreLoad() { bool SessionList = false; std::unique_ptr<THierarchicalStorage> SessionsStorage(GetConfiguration()->CreateStorage(SessionList)); THierarchicalStorage * ConfigStorage = nullptr; std::unique_ptr<THierarchicalStorage> ConfigStorageAuto; if (!SessionList) { // can reuse this for configuration ConfigStorage = SessionsStorage.get(); } else { ConfigStorageAuto.reset(GetConfiguration()->CreateConfigStorage()); ConfigStorage = ConfigStorageAuto.get(); } assert(GetConfiguration() != nullptr); try { GetConfiguration()->Load(ConfigStorage); } catch (Exception & E) { ShowExtendedException(&E); } // should be noop, unless exception occurred above ConfigStorage->CloseAll(); StoredSessions = new TStoredSessionList(); try { if (SessionsStorage->OpenSubKey(GetConfiguration()->GetStoredSessionsSubKey(), false)) { StoredSessions->Load(SessionsStorage.get()); } } catch (Exception & E) { ShowExtendedException(&E); } }
//--------------------------------------------------------------------------- void __fastcall TEditorForm::DoWindowClose(bool Forced) { if (FOnWindowClose != NULL) { try { FOnWindowClose(this, Forced); } catch(Exception & E) { ShowExtendedException(&E); } } }
void ValidateMaskEditT(UnicodeString Mask, TEditControl *Edit, int ForceDirectoryMasks) { DebugAssert(Edit != nullptr); TFileMasks Masks(ForceDirectoryMasks); try { Masks = Mask; } catch (EFileMasksException &E) { ShowExtendedException(&E); Edit->SetFocus(); // This does not work for TEdit and TMemo (descendants of TCustomEdit) anymore, // as it re-selects whole text on exception in TCustomEdit.CMExit // Edit->SelStart = E.ErrorStart - 1; // Edit->SelLength = E.ErrorLen; Abort(); } }
void CoreFinalize() { try { GetConfiguration()->Save(); } catch (Exception & E) { ShowExtendedException(&E); } NeonFinalize(); #ifndef NO_FILEZILLA TFileZillaIntf::Finalize(); #endif PuttyFinalize(); SAFE_DESTROY(StoredSessions); DeleteConfiguration(); CryptographyFinalize(); WinFinalize(); }
//--------------------------------------------------------------------------- void CoreFinalize() { try { Configuration->Save(); } catch(Exception & E) { ShowExtendedException(&E); } #ifndef NO_FILEZILLA TFileZillaIntf::Finalize(); #endif PuttyFinalize(); delete StoredSessions; StoredSessions = NULL; delete Configuration; Configuration = NULL; CryptographyFinalize(); }
//--------------------------------------------------------------------- Boolean __fastcall DoCleanupDialog(TStoredSessionList *SessionList, TConfiguration *Configuration) { Boolean Result; TCleanupDialog *CleanupDialog; try { CleanupDialog = new TCleanupDialog(Application); CleanupDialog->SessionList = SessionList; CleanupDialog->Configuration = Configuration; Result = (CleanupDialog->ShowModal() == DefaultResult(CleanupDialog)); if (Result) { Configuration->Usage->Inc(L"Cleanups"); for (int i = wdConfiguration; i <= wdTemporaryFolders; i++) { if (CleanupDialog->CleanupData[(TWinSCPData)i]) { try { switch (i) { case wdConfiguration: Configuration->CleanupConfiguration(); break; case wdStoredSessions: SessionList->Cleanup(); break; case wdHostKeys: Configuration->CleanupHostKeys(); break; case wdConfigurationIniFile: Configuration->CleanupIniFile(); break; case wdRandomSeedFile: Configuration->CleanupRandomSeedFile(); break; case wdTemporaryFolders: WinConfiguration->CleanupTemporaryFolders(); break; } } catch(Exception & E) { ShowExtendedException(&E); } } } } } __finally { delete CleanupDialog; } return Result; }