void Ide::SetMain(const String& package) { FlushFile(); SaveWorkspace(); transferfilecache.Clear(); main = package; export_dir = GetHomeDirFile(main); mainconfigname.Clear(); mainconfigparam.Clear(); ScanWorkspace(); LoadFromFile(THISBACK(SerializeWorkspace), WorkspaceFile()); editorsplit.Zoom(0); UpdateFormat(); String e = editfile; editfile.Clear(); MakeTitle(); MakeIcon(); SyncMainConfigList(); AdjustMainConfig(); SyncBuildMode(); SetHdependDirs(); SetBar(); HideBottom(); SyncUsc(); NewCodeBase(); if(IsNull(e)) e = GetFirstFile(); EditFile(e); }
wxString wxsCoder::GetFullCode(const wxString& FileName,wxFontEncoding& Encoding,bool &UseBOM) { wxMutexLocker Lock(DataMutex); wxString FixedFileName = NormalizeFileName(FileName); FlushFile(FixedFileName); // Checking if editor is opened EditorManager* EM = Manager::Get()->GetEditorManager(); assert ( EM != 0 ); cbEditor* Editor = EM->GetBuiltinEditor(FixedFileName); if ( Editor ) { Encoding = Editor->GetEncoding(); UseBOM = Editor->GetUseBom(); cbStyledTextCtrl* Ctrl = Editor->GetControl(); return Ctrl->GetText(); } else { EncodingDetector Detector(FixedFileName); Encoding = Detector.GetFontEncoding(); UseBOM = Detector.GetBOMSizeInBytes() > 0; return Detector.IsOK() ? Detector.GetWxStr() : _T(""); } }
void Ide::FinishConfig() { if(filelist.IsCursor()) { FlushFile(); FileCursor(); } SaveLoadPackage(); SyncCh(); }
void Ide::Exit() { if(debugger) debugger->Stop(); SaveFile(); SaveWorkspace(); FlushFile(); console.Kill(); Break(IDOK); IdeExit = true; }
void CVarDataFile::WriteHeader(bool inFileOpen) { if (mReadOnly) { return; // v1.5.1 bug fix, don't write to read-only files } DB_DEBUG("CVarDataFile::WriteHeader", DEBUG_TRIVIA); CDataFile::WriteHeader(inFileOpen); VarDataFileHeaderT tempHeader; tempHeader.allocatedBytes = Native_ToBigEndian32(mAllocatedBytes); tempHeader.bytesUsed = Native_ToBigEndian32(mBytesUsed); tempHeader.largestRecSize = Native_ToBigEndian32(mLargestRecSize); tempHeader.fileIsDamaged = mFileIsDamaged; WriteBlock(&tempHeader, sizeof(VarDataFileHeaderT)); FlushFile(); }
void wxsCoder::AddCode(const wxString& FileName,const wxString& Header,const wxString& End,const wxString& Code,bool Immediately,bool CodeHasHeader,bool CodeHasEnd) { wxMutexLocker Lock(DataMutex); wxString FixedFileName = NormalizeFileName(FileName); if ( FixedFileName.IsEmpty() ) { return; } // Find changing file int Index = CodeChangesFiles.Index(FileName); if ( Index==wxNOT_FOUND ) { Index = CodeChangesFiles.Count(); CodeChangesFiles.Add(FileName); CodeChanges.Add(0); } // Add entry to list of waiting changes CodeChange* Change = new CodeChange; Change->Header = Header; Change->End = End; Change->Code = Code; Change->CodeHasHeader = CodeHasHeader; Change->CodeHasEnd = CodeHasEnd; Change->Next = CodeChanges[Index]; CodeChanges[Index] = Change; // If the change has already been put onto queue, delete it for ( CodeChange *Prev=Change, *This=Prev->Next; This; Prev=This, This=This->Next ) { if ( This->Header==Header && This->End==End ) { Prev->Next = This->Next; delete This; This = Prev; } } if ( Immediately ) { FlushFile(FixedFileName); } }
void Ide::LoadConfig() { if(!LoadFromFile(*this) && GetIniKey("DebugClipboard") == "1") { Exclamation("LoadConfig has failed!"); if(!LoadFromFile(*this, ConfigFile() + ".bak")) { Exclamation("LoadConfig .bak has failed!"); if(!LoadFromFile(*this, ConfigFile() + ".bak1")) Exclamation("LoadConfig .bak1 has failed!"); } } RestoreKeys(LoadFile(ConfigFile("ide.key"))); editor.LoadHlStyles(LoadFile(ConfigFile("ide.colors"))); config_time = FileGetTime(ConfigFile()); UpdateFormat(); if(filelist.IsCursor()) { FlushFile(); FileCursor(); } SaveLoadPackage(); SyncCh(); }
void Ide::IdeFlushFile() { FlushFile(); }
void CDownload::OnRun() { // Set the currently downloading state // (Used to optimize display in Ctrl/Wnd functions) m_bDownloading = false; const DWORD tNow = GetTickCount(); if ( ! IsPaused() ) { if ( GetFileError() != ERROR_SUCCESS ) { // File or disk errors Pause( FALSE ); } else if ( IsMoving() ) { if ( ! IsCompleted() && ! IsTasking() ) OnDownloaded(); } else if ( IsTrying() || IsSeeding() ) { // This download is trying to download if ( HasHash() ) // Workaround for direct downloads stuck "verifying" OpenDownload(); // Dead Download Check: if download appears dead, give up and allow another to start. // Incomplete, and trying for at least 3 hours: if ( ! IsCompleted() && tNow > GetStartTimer() + ( 3 * 60 * 60 * 1000 ) ) { const DWORD tHoursToTry = min( ( GetEffectiveSourceCount() + 49u ) / 50u, 9lu ) + Settings.Downloads.StarveGiveUp; // No new data for 5-14 hours if ( tNow > m_tReceived + ( tHoursToTry * 60 * 60 * 1000 ) ) { if ( IsTorrent() ) { // Are there other torrents that should start? if ( Downloads.GetTryingCount( TRUE ) >= Settings.BitTorrent.DownloadTorrents ) { StopTrying(); // Give up for now, try again later return; } } else // Regular download { // Are there other downloads that should try? if ( Downloads.GetTryingCount() >= ( Settings.Downloads.MaxFiles + Settings.Downloads.MaxFileSearches ) ) { StopTrying(); // Give up for now, try again later return; } } } } // End Dead Download Check // Run the download RunTorrent( tNow ); RunSearch( tNow ); RunValidation(); if ( IsSeeding() ) { // Mark as collapsed to get correct heights when dragging files if ( ! Settings.General.DebugBTSources && m_bExpanded ) m_bExpanded = FALSE; } else // if ( ! IsMoving() ) { if ( IsComplete() && IsFileOpen() ) { if ( IsFullyVerified() ) OnDownloaded(); } else if ( CheckTorrentRatio() ) { if ( ! Network.IsConnected() ) { StopTrying(); return; } StartTransfersIfNeeded( tNow ); } } // Calculate current downloading state if ( HasActiveTransfers() ) m_bDownloading = true; // Mutate regular download to torrent download if ( Settings.BitTorrent.EnablePromote && m_oBTH && ! IsTorrent() ) { m_pTorrent.Clear(); m_pTorrent.m_oMD5 = m_oMD5; m_pTorrent.m_oBTH = m_oBTH; m_pTorrent.m_oSHA1 = m_oSHA1; m_pTorrent.m_oED2K = m_oED2K; m_pTorrent.m_oTiger = m_oTiger; m_pTorrent.m_sName = m_sName; m_pTorrent.m_nSize = m_nSize; SetTorrent(); } } else if ( ! IsCompleted() && m_bVerify != TRI_TRUE ) { // This is pending download // // If this download isn't trying to download, see if it can try // if ( IsDownloading() ) // SetStartTimer(); // This download was probably started by a push/etc if ( Network.IsConnected() ) { // Have extra regular downloads 'trying' so when a new slot is ready, // a download has sources and is ready to go. if ( Downloads.GetTryingCount() < ( Settings.Downloads.MaxFiles + Settings.Downloads.MaxFileSearches ) ) { if ( ! IsTorrent() || Downloads.GetTryingCount( true ) < Settings.BitTorrent.DownloadTorrents ) { // Torrents only try when 'ready to go'. (Reduce tracker load) Resume(); } } } // else // ASSERT( ! IsTrying() ); } } // Don't save Downloads with many sources too often, since it's slow if ( tNow >= m_tSaved + ( GetCount() > 20 ? 5 * Settings.Downloads.SaveInterval : Settings.Downloads.SaveInterval ) ) { if ( IsModified() ) { FlushFile(); if ( Save() ) m_tSaved = tNow; } } }
wxString wxsCoder::GetCode(const wxString& FileName,const wxString& Header,const wxString& End,bool IncludeHeader,bool IncludeEnd) { wxMutexLocker Lock(DataMutex); wxString FixedFileName = NormalizeFileName(FileName); FlushFile(FixedFileName); int TabSize = Manager::Get()->GetConfigManager(_T("editor"))->ReadInt(_T("/tab_size"), 4); // Checking if editor is opened EditorManager* EM = Manager::Get()->GetEditorManager(); assert ( EM != 0 ); cbEditor* Editor = EM->GetBuiltinEditor(FixedFileName); if ( Editor ) { cbStyledTextCtrl* Ctrl = Editor->GetControl(); Ctrl->SetSearchFlags(wxSCI_FIND_MATCHCASE); Ctrl->SetTargetStart(0); Ctrl->SetTargetEnd(Ctrl->GetLength()); int Position = Ctrl->SearchInTarget(Header); if ( Position == -1 ) return _T(""); // Counting number of indentation spaces which will be removed at // the beginning of each line int SpacesCut = 0; int SpacesPos = Position; while ( --SpacesPos >= 0 ) { wxChar ch = Ctrl->GetCharAt(SpacesPos); if ( ch == _T('\t') ) SpacesCut += TabSize; else if ( (ch==_T('\n')) || (ch==_T('\r')) ) break; else SpacesCut++; } Ctrl->SetTargetStart(Position); Ctrl->SetTargetEnd(Ctrl->GetLength()); int EndPosition = Ctrl->SearchInTarget(End); if ( EndPosition == -1 ) return _T(""); // Fixing up positions to include / exclude header and/or ending sequence if ( !IncludeHeader ) Position += Header.Length(); if ( IncludeEnd ) EndPosition += End.Length(); return CutSpaces(Ctrl->GetTextRange(Position,EndPosition),SpacesCut); } else { EncodingDetector Detector(FixedFileName); if ( !Detector.IsOK() ) return _T(""); wxString Content = Detector.GetWxStr(); int Position = Content.First(Header); if ( Position == -1 ) return _T(""); int SpacesCut = 0; int SpacesPos = Position; while ( --SpacesPos >= 0 ) { wxChar ch = Content.GetChar(SpacesPos); if ( ch == _T('\t') ) SpacesCut += TabSize; else if ( (ch==_T('\n')) || (ch==_T('\r')) ) break; else SpacesCut++; } if ( !IncludeHeader ) Position += Header.Length(); Content.Remove(0,Position); int EndPosition = Content.First(End); if ( EndPosition == -1 ) return _T(""); if ( IncludeEnd ) EndPosition += End.Length(); Content.Remove(EndPosition); return CutSpaces(Content,SpacesCut); } }