void FileViewer::Init(const wchar_t *name,int EnableSwitch,int disableHistory, /// long ViewStartPos,const wchar_t *PluginData, NamesList *ViewNamesList,int ToSaveAs) { RedrawTitle = FALSE; ViewKeyBar.SetOwner(this); ViewKeyBar.SetPosition(X1,Y2,X2,Y2); KeyBarVisible = Opt.ViOpt.ShowKeyBar; TitleBarVisible = Opt.ViOpt.ShowTitleBar; int OldMacroMode=CtrlObject->Macro.GetMode(); MacroMode = MACRO_VIEWER; CtrlObject->Macro.SetMode(MACRO_VIEWER); View.SetPluginData(PluginData); View.SetHostFileViewer(this); DisableHistory=disableHistory; /// strName = name; SetCanLoseFocus(EnableSwitch); SaveToSaveAs=ToSaveAs; InitKeyBar(); if (!View.OpenFile(strName,TRUE)) // $ 04.07.2000 tran + add TRUE as 'warning' parameter { DisableHistory = TRUE; // $ 26.03.2002 DJ - при неудаче открытия - не пишем мусор в историю // FrameManager->DeleteFrame(this); // ЗАЧЕМ? Вьювер то еще не помещен в очередь манагера! ExitCode=FALSE; CtrlObject->Macro.SetMode(OldMacroMode); return; } if (ViewStartPos!=-1) View.SetFilePos(ViewStartPos); if (ViewNamesList) View.SetNamesList(ViewNamesList); ExitCode=TRUE; ViewKeyBar.Show(); if (!Opt.ViOpt.ShowKeyBar) ViewKeyBar.Hide0(); ShowConsoleTitle(); AutoClose = false; F3KeyOnly = true; if (EnableSwitch) { FrameManager->InsertFrame(this); } else { FrameManager->ExecuteFrame(this); } }
void FilePanels::Init(int DirCount) { SetPanelPositions(FileList::IsModeFullScreen(Opt.LeftPanel.ViewMode), FileList::IsModeFullScreen(Opt.RightPanel.ViewMode)); LeftPanel->SetViewMode(Opt.LeftPanel.ViewMode); RightPanel->SetViewMode(Opt.RightPanel.ViewMode); LeftPanel->SetSortMode(Opt.LeftPanel.SortMode); RightPanel->SetSortMode(Opt.RightPanel.SortMode); LeftPanel->SetNumericSort(Opt.LeftPanel.NumericSort); RightPanel->SetNumericSort(Opt.RightPanel.NumericSort); LeftPanel->SetCaseSensitiveSort(Opt.LeftPanel.CaseSensitiveSort); RightPanel->SetCaseSensitiveSort(Opt.RightPanel.CaseSensitiveSort); LeftPanel->SetSortOrder(Opt.LeftPanel.SortOrder); RightPanel->SetSortOrder(Opt.RightPanel.SortOrder); LeftPanel->SetSortGroups(Opt.LeftPanel.SortGroups); RightPanel->SetSortGroups(Opt.RightPanel.SortGroups); LeftPanel->SetShowShortNamesMode(Opt.LeftPanel.ShowShortNames); RightPanel->SetShowShortNamesMode(Opt.RightPanel.ShowShortNames); LeftPanel->SetSelectedFirstMode(Opt.LeftSelectedFirst); RightPanel->SetSelectedFirstMode(Opt.RightSelectedFirst); LeftPanel->SetDirectoriesFirst(Opt.LeftPanel.DirectoriesFirst); RightPanel->SetDirectoriesFirst(Opt.RightPanel.DirectoriesFirst); SetCanLoseFocus(TRUE); Panel *PassivePanel=nullptr; int PassiveIsLeftFlag=TRUE; if (Opt.LeftPanel.Focus) { ActivePanel=LeftPanel; PassivePanel=RightPanel; PassiveIsLeftFlag=FALSE; } else { ActivePanel=RightPanel; PassivePanel=LeftPanel; PassiveIsLeftFlag=TRUE; } ActivePanel->SetFocus(); // пытаемся избавится от зависания при запуске int IsLocalPath_FarPath = ParsePath(g_strFarPath)==PATH_DRIVELETTER; string strLeft = Opt.strLeftFolder.Get(), strRight = Opt.strRightFolder.Get(); PrepareOptFolder(strLeft, IsLocalPath_FarPath); PrepareOptFolder(strRight, IsLocalPath_FarPath); Opt.strLeftFolder = strLeft; Opt.strRightFolder = strRight; if (Opt.AutoSaveSetup || !DirCount) { if (apiGetFileAttributes(Opt.strLeftFolder)!=INVALID_FILE_ATTRIBUTES) LeftPanel->InitCurDir(Opt.strLeftFolder); if (apiGetFileAttributes(Opt.strRightFolder)!=INVALID_FILE_ATTRIBUTES) RightPanel->InitCurDir(Opt.strRightFolder); } if (!Opt.AutoSaveSetup) { if (DirCount >= 1) { if (ActivePanel==RightPanel) { if (apiGetFileAttributes(Opt.strRightFolder)!=INVALID_FILE_ATTRIBUTES) RightPanel->InitCurDir(Opt.strRightFolder); } else { if (apiGetFileAttributes(Opt.strLeftFolder)!=INVALID_FILE_ATTRIBUTES) LeftPanel->InitCurDir(Opt.strLeftFolder); } if (DirCount == 2) { if (ActivePanel==LeftPanel) { if (apiGetFileAttributes(Opt.strRightFolder)!=INVALID_FILE_ATTRIBUTES) RightPanel->InitCurDir(Opt.strRightFolder); } else { if (apiGetFileAttributes(Opt.strLeftFolder)!=INVALID_FILE_ATTRIBUTES) LeftPanel->InitCurDir(Opt.strLeftFolder); } } } const string& PassiveFolder=PassiveIsLeftFlag?Opt.strLeftFolder:Opt.strRightFolder; if (DirCount < 2 && *PassiveFolder && (apiGetFileAttributes(PassiveFolder)!=INVALID_FILE_ATTRIBUTES)) { PassivePanel->InitCurDir(PassiveFolder); } } #if 1 //! Вначале "показываем" пассивную панель if (PassiveIsLeftFlag) { if (Opt.LeftPanel.Visible) { LeftPanel->Show(); } if (Opt.RightPanel.Visible) { RightPanel->Show(); } } else { if (Opt.RightPanel.Visible) { RightPanel->Show(); } if (Opt.LeftPanel.Visible) { LeftPanel->Show(); } } #endif // при понашенных панелях не забыть бы выставить корректно каталог в CmdLine if (!Opt.RightPanel.Visible && !Opt.LeftPanel.Visible) { CtrlObject->CmdLine->SetCurDir(PassiveIsLeftFlag?Opt.strRightFolder:Opt.strLeftFolder); } SetKeyBar(&MainKeyBar); MainKeyBar.SetOwner(this); }