//--------------------------------------------------------------------------- bool TFileCustomCommand::PatternReplacement( const UnicodeString & Pattern, UnicodeString & Replacement, bool & Delimit) { // keep consistent with TSessionLog::OpenLogFile if (Pattern == L"!@") { Replacement = FData.HostName; } else if (AnsiSameText(Pattern, L"!u")) { Replacement = FData.UserName; } else if (AnsiSameText(Pattern, L"!p")) { Replacement = FData.Password; } else if (Pattern == L"!/") { Replacement = UnixIncludeTrailingBackslash(FPath); } else if (Pattern == L"!&") { Replacement = FFileList; // already delimited Delimit = false; } else { assert(Pattern.Length() == 1); Replacement = FFileName; } return true; }
static bool TryGetSpeedLimit(const UnicodeString & Text, uintptr_t & Speed) { bool Result; if (AnsiSameText(Text, LoadStr(SPEED_UNLIMITED))) { Speed = 0; Result = true; } else { int64_t SSpeed; Result = TryStrToInt(Text, SSpeed) && (SSpeed >= 0); if (Result) { Speed = SSpeed * 1024; } } return Result; }
//--------------------------------------------------------------------------- void __fastcall TFileFindDialog::FileFound(TTerminal * /*Terminal*/, const UnicodeString FileName, const TRemoteFile * AFile, bool & Cancel) { TListItem * Item = FileView->Items->Add(); TRemoteFile * File = AFile->Duplicate(true); Item->Data = File; Item->ImageIndex = File->IconIndex; UnicodeString Caption = File->FileName; if (File->IsDirectory) { Caption = UnixIncludeTrailingBackslash(Caption); } Item->Caption = Caption; UnicodeString Directory = UnixExtractFilePath(File->FullFileName); if (AnsiSameText(FDirectory, Directory.SubString(1, FDirectory.Length()))) { Directory[1] = L'.'; Directory.Delete(2, FDirectory.Length() - 1); } else { assert(false); } Item->SubItems->Add(Directory); if (File->IsDirectory) { Item->SubItems->Add(L""); } else { Item->SubItems->Add( FormatBytes(File->Size, WinConfiguration->FormatSizeBytes, WinConfiguration->FormatSizeBytes)); } Item->SubItems->Add(UserModificationStr(File->Modification, File->ModificationFmt)); UpdateControls(); Cancel = (FState == ffAborting); Application->ProcessMessages(); }
bool SameText(const UnicodeString & Str1, const UnicodeString & Str2) { return AnsiSameText(Str1, Str2); }
//--------------------------------------------------------------------------- void __fastcall TSynchronizeChecklistDialog::LoadItem(TListItem * Item) { UnicodeString S; const TSynchronizeChecklist::TItem * ChecklistItem = FChecklist->Item[Item->Index]; Item->Data = const_cast<TSynchronizeChecklist::TItem *>(ChecklistItem); Item->Checked = ChecklistItem->Checked; if (ChecklistItem->ImageIndex >= 0) { Item->ImageIndex = ChecklistItem->ImageIndex; } else { Item->ImageIndex = FakeFileImageIndex(ChecklistItem->GetFileName(), FLAGMASK(ChecklistItem->IsDirectory, FILE_ATTRIBUTE_DIRECTORY)); } S = ChecklistItem->GetFileName(); if (ChecklistItem->IsDirectory) { S = IncludeTrailingBackslash(S); } Item->Caption = S; if (ChecklistItem->Action == TSynchronizeChecklist::saDeleteRemote) { Item->SubItems->Add(L""); Item->SubItems->Add(L""); Item->SubItems->Add(L""); } else { S = ChecklistItem->Local.Directory; if (AnsiSameText(FLocalDirectory, S.SubString(1, FLocalDirectory.Length()))) { S[1] = L'.'; S.Delete(2, FLocalDirectory.Length() - 1); } else { assert(false); } Item->SubItems->Add(S); if (ChecklistItem->Action == TSynchronizeChecklist::saDownloadNew) { Item->SubItems->Add(L""); Item->SubItems->Add(L""); } else { if (ChecklistItem->IsDirectory) { Item->SubItems->Add(L""); } else { Item->SubItems->Add( FormatBytes(ChecklistItem->Local.Size, WinConfiguration->FormatSizeBytes, WinConfiguration->FormatSizeBytes)); } Item->SubItems->Add(UserModificationStr(ChecklistItem->Local.Modification, ChecklistItem->Local.ModificationFmt)); } } Item->SubItems->Add(L""); if (ChecklistItem->Action == TSynchronizeChecklist::saDeleteLocal) { Item->SubItems->Add(L""); Item->SubItems->Add(L""); Item->SubItems->Add(L""); } else { S = ChecklistItem->Remote.Directory; if (AnsiSameText(FRemoteDirectory, S.SubString(1, FRemoteDirectory.Length()))) { S[1] = L'.'; S.Delete(2, FRemoteDirectory.Length() - 1); } else { assert(false); } Item->SubItems->Add(S); if (ChecklistItem->Action == TSynchronizeChecklist::saUploadNew) { Item->SubItems->Add(L""); Item->SubItems->Add(L""); } else { if (ChecklistItem->IsDirectory) { Item->SubItems->Add(L""); } else { Item->SubItems->Add( FormatBytes(ChecklistItem->Remote.Size, WinConfiguration->FormatSizeBytes, WinConfiguration->FormatSizeBytes)); } Item->SubItems->Add(UserModificationStr(ChecklistItem->Remote.Modification, ChecklistItem->Remote.ModificationFmt)); } } }
//--------------------------------------------------------------------------- void __fastcall TEditorForm::Find() { int NewPos; int Replacements = 0; do { assert(FLastFindDialog); TSearchTypes SearchTypes; // length condition is there to improve performance when large // block is selected in editor if (FLastFindDialog == FReplaceDialog && (FReplaceDialog->Options.Contains(frReplace) || FReplaceDialog->Options.Contains(frReplaceAll)) && FReplaceDialog->FindText.Length() == EditorMemo->SelLength && AnsiSameText(FReplaceDialog->FindText, EditorMemo->SelText)) { EditorMemo->SelText = FReplaceDialog->ReplaceText; Replacements++; } TEditorConfiguration EditorConfiguration = WinConfiguration->Editor; EditorConfiguration.FindText = FLastFindDialog->FindText; EditorConfiguration.ReplaceText = FReplaceDialog->ReplaceText; EditorConfiguration.FindMatchCase = FLastFindDialog->Options.Contains(frMatchCase); EditorConfiguration.FindWholeWord = FLastFindDialog->Options.Contains(frWholeWord); EditorConfiguration.FindDown = FLastFindDialog->Options.Contains(frDown); WinConfiguration->Editor = EditorConfiguration; if (EditorConfiguration.FindMatchCase) { SearchTypes << stMatchCase; } if (EditorConfiguration.FindWholeWord) { SearchTypes << stWholeWord; } NewPos = EditorMemo->FindText(EditorConfiguration.FindText, EditorMemo->SelLength ? EditorMemo->SelStart+1 : EditorMemo->SelStart, EditorMemo->Text.Length(), SearchTypes, EditorConfiguration.FindDown); if (NewPos >= 0) { EditorMemo->SelStart = NewPos; EditorMemo->SelLength = EditorConfiguration.FindText.Length(); } if (FLastFindDialog->Handle) { PositionFindDialog(true); } if (NewPos < 0) { if ((Replacements == 0) || FReplaceDialog->Options.Contains(frReplaceAll)) { // now Screen->ActiveForm can be NULL when other form was meanwhile // activated and then focus was returned back to "find" dialog // (non VCL form) if (Screen->ActiveForm != this) { SetFocus(); FLastFindDialog->Execute(); } if (Replacements == 0) { UnicodeString Message = MainInstructions(FMTLOAD(EDITOR_FIND_END, (EditorConfiguration.FindText))); MessageDialog(Message, qtInformation, qaOK, HELP_NONE); } else if (FReplaceDialog->Options.Contains(frReplaceAll)) { UnicodeString Message = MainInstructions(FMTLOAD(EDITOR_REPLACE_END, (Replacements))); MessageDialog(Message, qtInformation, qaOK, HELP_NONE); } } } } while (NewPos >= 0 && FLastFindDialog == FReplaceDialog && FReplaceDialog->Options.Contains(frReplaceAll)); }