// ---------------------------------------------------------------------------- void CodeSnippetsConfig::SettingsLoad() // ---------------------------------------------------------------------------- { // file will be saved in $HOME/codesnippets.ini #ifdef LOGGING wxString fn(__FUNCTION__, wxConvUTF8); LOGIT( _T("--- [%s] ---"),fn.c_str() ); LOGIT(wxT("Loading Settings File[%s]"),SettingsSnippetsCfgPath.c_str()); #endif //LOGGING wxFileConfig cfgFile( wxEmptyString, // appname wxEmptyString, // vendor SettingsSnippetsCfgPath,// local filename wxEmptyString, // global file wxCONFIG_USE_LOCAL_FILE); cfgFile.Read( wxT("ExternalEditor"), &SettingsExternalEditor, wxEmptyString ) ; cfgFile.Read( wxT("SnippetFile"), &SettingsSnippetsXmlPath, wxEmptyString ) ; cfgFile.Read( wxT("SnippetFolder"), &SettingsSnippetsFolder, wxEmptyString ) ; cfgFile.Read( wxT("ViewSearchBox"), &GetConfig()->SettingsSearchBox, true ) ; cfgFile.Read( wxT("casesensitive"), &m_SearchConfig.caseSensitive, true ) ; int nScope; cfgFile.Read( wxT("scope"), &nScope, SCOPE_BOTH ) ; m_SearchConfig.scope = (SearchScope)nScope; // read Editors Stay-On-Top of main window option cfgFile.Read( _T("EditorsStayOnTop"), &SettingsEditorsStayOnTop, true); // read Editors ToolTips option cfgFile.Read( _T("ToolTipsOption"), &SettingsToolTipsOption, true); // Read External App state. Launched App will see it as false because // plugin has not set it true yet, so if this is launched App, set it true cfgFile.Read( wxT("ExternalPersistentOpen"), &m_IsExternalPersistentOpen, false ) ; if ( IsApplication() ) SetExternalPersistentOpen(true); // read user specified window state (External, Floating, or Docked) cfgFile.Read( wxT("WindowState"), &m_SettingsWindowState, wxT("Floating") ); #if defined(LOGGING) LOGIT( _T("WindowState[%s]"), GetSettingsWindowState().c_str() ); #endif // read last window position wxString winPos; cfgFile.Read( wxT("WindowPosition"), &winPos, wxEmptyString) ; if ( not winPos.IsEmpty() ) { const wxWX2MBbuf buf = csU2C(winPos); std::string cstring( buf ); std::stringstream istream(cstring); istream >> windowXpos ; istream >> windowYpos ; istream >> windowWidth ; istream >> windowHeight ; } else {
// ---------------------------------------------------------------------------- void SnippetProperty::InvokeEditOnSnippetText() // ---------------------------------------------------------------------------- { //Exec Edit Snippet Text wxFileName tmpFileName = wxFileName::CreateTempFileName(wxEmptyString); #ifdef LOGGING LOGIT( _T("fakename:[%s]"),tmpFileName.GetFullPath().GetData() ); #endif //LOGGING wxFile tmpFile( tmpFileName.GetFullPath(), wxFile::write); if (not tmpFile.IsOpened() ) { //wxMessageBox(wxT("Open failed for:")+tmpFileName.GetFullPath()); GenericMessageBox(wxT("Open failed for:")+tmpFileName.GetFullPath()); return ; } wxString snippetData( GetSnippet() ); tmpFile.Write( csU2C(snippetData), snippetData.Length()); tmpFile.Close(); // Invoke the external editor on the temporary file // file name must be surrounded with quotes when using wxExecute wxString externalEditor = GetConfig()->SettingsExternalEditor; if ( externalEditor == _T("Enter filename of external editor") ) { GenericMessageBox(wxT("No external editor specified.\n Check settings.\n")); return; } wxString execString = GetConfig()->SettingsExternalEditor + wxT(" \"") + tmpFileName.GetFullPath() + wxT("\""); #ifdef LOGGING LOGIT( _T("Properties wxExecute[%s]"), execString.GetData() ); #endif //LOGGING // Invoke the external editor and wait for its termination ::wxExecute( execString, wxEXEC_SYNC); // Read the edited data back into the snippet text tmpFile.Open(tmpFileName.GetFullPath(), wxFile::read); if (not tmpFile.IsOpened() ) { GenericMessageBox(wxT("Abort.Error reading temp data file.")); return; } unsigned long fileSize = tmpFile.Length(); #ifdef LOGGING LOGIT( _T("New file length[%d]"),fileSize ); #endif //LOGGING // check the data for validity char pBuf[fileSize+1]; size_t nResult = tmpFile.Read( pBuf, fileSize ); if ( wxInvalidOffset == (int)nResult ) GenericMessageBox(wxT("InvokeEditOnSnippetText()\nError reading temp file")); pBuf[fileSize] = 0; tmpFile.Close(); #ifdef LOGGING //LOGIT( _T("pBuf[%s]"), pBuf ); #endif //LOGGING // convert data back to internal format snippetData = csC2U( pBuf ); #ifdef LOGGING //LOGIT( _T("snippetData[%s]"), snippetData.GetData() ); #endif //LOGGING // delete the temporary file ::wxRemoveFile( tmpFileName.GetFullPath() ); // update Tree item m_SnippetEditCtrl-> SetText( snippetData ); }