void FileList::PluginGetFiles(const wchar_t **DestPath,int Move) { _ALGO(CleverSysLog clv(L"FileList::PluginGetFiles()")); PluginPanelItem *ItemList, *PList; int ItemNumber; SaveSelection(); CreatePluginItemList(ItemList,ItemNumber); if (ItemList && ItemNumber>0) { int GetCode=CtrlObject->Plugins->GetFiles(hPlugin,ItemList,ItemNumber,Move!=0,DestPath,0); if ((Opt.Diz.UpdateMode==DIZ_UPDATE_IF_DISPLAYED && IsDizDisplayed()) || Opt.Diz.UpdateMode==DIZ_UPDATE_ALWAYS) { DizList DestDiz; int DizFound=FALSE; PList=ItemList; for (int I=0; I<ItemNumber; I++,PList++) if (PList->Flags & PPIF_PROCESSDESCR) { if (!DizFound) { CtrlObject->Cp()->LeftPanel->ReadDiz(); CtrlObject->Cp()->RightPanel->ReadDiz(); DestDiz.Read(*DestPath); DizFound=TRUE; } string strName = PList->FileName; string strShortName = PList->AlternateFileName; CopyDiz(strName,strShortName,strName,strName,&DestDiz); } DestDiz.Flush(*DestPath); } if (GetCode==1) { if (!ReturnCurrentFile) ClearSelection(); if (Move) { SetPluginModified(); PutDizToPlugin(this,ItemList,ItemNumber,TRUE,FALSE,nullptr,&Diz); } } else if (!ReturnCurrentFile) PluginClearSelection(ItemList,ItemNumber); DeletePluginItemList(ItemList,ItemNumber); Update(UPDATE_KEEP_SELECTION); Redraw(); Panel *AnotherPanel=CtrlObject->Cp()->GetAnotherPanel(this); AnotherPanel->Update(UPDATE_KEEP_SELECTION|UPDATE_SECONDARY); AnotherPanel->Redraw(); } }
/* $ 12.04.2002 IS PluginPutFilesToAnother теперь int - возвращает то, что возвращает PutFiles: -1 - прервано пользовтелем 0 - неудача 1 - удача 2 - удача, курсор принудительно установлен на файл и заново его устанавливать не нужно (см. PluginPutFilesToNew) */ int FileList::PluginPutFilesToAnother(int Move,Panel *AnotherPanel) { if (AnotherPanel->GetMode()!=PLUGIN_PANEL) return 0; FileList *AnotherFilePanel=(FileList *)AnotherPanel; PluginPanelItem *ItemList; int ItemNumber,PutCode=0; SaveSelection(); CreatePluginItemList(ItemList,ItemNumber); if (ItemList && ItemNumber>0) { SetCurPath(); _ALGO(SysLog(L"call Plugins.PutFiles")); PutCode=CtrlObject->Plugins->PutFiles(AnotherFilePanel->hPlugin,ItemList,ItemNumber,Move!=0,0); if (PutCode==1 || PutCode==2) { if (!ReturnCurrentFile) { _ALGO(SysLog(L"call ClearSelection()")); ClearSelection(); } _ALGO(SysLog(L"call PutDizToPlugin")); PutDizToPlugin(AnotherFilePanel,ItemList,ItemNumber,FALSE,Move,&Diz,&AnotherFilePanel->Diz); AnotherPanel->SetPluginModified(); } else if (!ReturnCurrentFile) PluginClearSelection(ItemList,ItemNumber); _ALGO(SysLog(L"call DeletePluginItemList")); DeletePluginItemList(ItemList,ItemNumber); Update(UPDATE_KEEP_SELECTION); Redraw(); if (AnotherPanel==CtrlObject->Cp()->GetAnotherPanel(this)) { AnotherPanel->Update(UPDATE_KEEP_SELECTION); AnotherPanel->Redraw(); } } return PutCode; }
void FileList::PluginDelete() { _ALGO(CleverSysLog clv(L"FileList::PluginDelete()")); PluginPanelItem *ItemList; int ItemNumber; SaveSelection(); CreatePluginItemList(ItemList,ItemNumber); if (ItemList && ItemNumber>0) { if (CtrlObject->Plugins->DeleteFiles(hPlugin,ItemList,ItemNumber,0)) { SetPluginModified(); PutDizToPlugin(this,ItemList,ItemNumber,TRUE,FALSE,nullptr,&Diz); } DeletePluginItemList(ItemList,ItemNumber); Update(UPDATE_KEEP_SELECTION); Redraw(); Panel *AnotherPanel=CtrlObject->Cp()->GetAnotherPanel(this); AnotherPanel->Update(UPDATE_KEEP_SELECTION|UPDATE_SECONDARY); AnotherPanel->Redraw(); } }
/* Функция для вызова команды "Архивные команды" (Shift-F3) */ void FileList::ProcessHostFile() { _ALGO(CleverSysLog clv(L"FileList::ProcessHostFile()")); //_ALGO(SysLog(L"FileName='%s'",(FileName?FileName:"(nullptr)"))); if (FileCount>0 && SetCurPath()) { int Done=FALSE; SaveSelection(); if (PanelMode==PLUGIN_PANEL && !(*PluginsList.Last())->strHostFile.IsEmpty()) { PluginPanelItem *ItemList; int ItemNumber; _ALGO(SysLog(L"call CreatePluginItemList")); CreatePluginItemList(ItemList,ItemNumber); _ALGO(SysLog(L"call Plugins.ProcessHostFile")); Done=CtrlObject->Plugins->ProcessHostFile(hPlugin,ItemList,ItemNumber,0); if (Done) SetPluginModified(); else { if (!ReturnCurrentFile) PluginClearSelection(ItemList,ItemNumber); Redraw(); } _ALGO(SysLog(L"call DeletePluginItemList")); DeletePluginItemList(ItemList,ItemNumber); if (Done) ClearSelection(); } else { size_t SCount=GetRealSelCount(); if (SCount > 0) { for (int I=0; I < FileCount; ++I) { if (ListData[I]->Selected) { Done=ProcessOneHostFile(I); if (Done == 1) Select(ListData[I],0); else if (Done == -1) continue; else // Если ЭТО убрать, то... будем жать ESC до потере пулься break; // } } if (SelectedFirst) SortFileList(TRUE); } else { if ((Done=ProcessOneHostFile(CurFile)) == 1) ClearSelection(); } } if (Done) { Update(UPDATE_KEEP_SELECTION); Redraw(); Panel *AnotherPanel=CtrlObject->Cp()->GetAnotherPanel(this); AnotherPanel->Update(UPDATE_KEEP_SELECTION|UPDATE_SECONDARY); AnotherPanel->Redraw(); } } }
void FileList::PluginToPluginFiles(int Move) { _ALGO(CleverSysLog clv(L"FileList::PluginToPluginFiles()")); PluginPanelItem *ItemList; int ItemNumber; Panel *AnotherPanel=CtrlObject->Cp()->GetAnotherPanel(this); string strTempDir; if (AnotherPanel->GetMode()!=PLUGIN_PANEL) return; FileList *AnotherFilePanel=(FileList *)AnotherPanel; if (!FarMkTempEx(strTempDir)) return; SaveSelection(); apiCreateDirectory(strTempDir,nullptr); CreatePluginItemList(ItemList,ItemNumber); if (ItemList && ItemNumber>0) { const wchar_t *lpwszTempDir=strTempDir; int PutCode=CtrlObject->Plugins->GetFiles(hPlugin,ItemList,ItemNumber,FALSE,&lpwszTempDir,OPM_SILENT); strTempDir=lpwszTempDir; if (PutCode==1 || PutCode==2) { string strSaveDir; apiGetCurrentDirectory(strSaveDir); FarChDir(strTempDir); PutCode=CtrlObject->Plugins->PutFiles(AnotherFilePanel->hPlugin,ItemList,ItemNumber,FALSE,0); if (PutCode==1 || PutCode==2) { if (!ReturnCurrentFile) ClearSelection(); AnotherPanel->SetPluginModified(); PutDizToPlugin(AnotherFilePanel,ItemList,ItemNumber,FALSE,FALSE,&Diz,&AnotherFilePanel->Diz); if (Move) if (CtrlObject->Plugins->DeleteFiles(hPlugin,ItemList,ItemNumber,OPM_SILENT)) { SetPluginModified(); PutDizToPlugin(this,ItemList,ItemNumber,TRUE,FALSE,nullptr,&Diz); } } else if (!ReturnCurrentFile) PluginClearSelection(ItemList,ItemNumber); FarChDir(strSaveDir); } DeleteDirTree(strTempDir); DeletePluginItemList(ItemList,ItemNumber); Update(UPDATE_KEEP_SELECTION); Redraw(); if (PanelMode==PLUGIN_PANEL) AnotherPanel->Update(UPDATE_KEEP_SELECTION|UPDATE_SECONDARY); else AnotherPanel->Update(UPDATE_KEEP_SELECTION); AnotherPanel->Redraw(); } }