View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000714 | Plugins | Temporary panel | public | 2009-01-24 17:09 | 2017-11-11 15:43 |
Reporter | samlyukov | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | feedback | Resolution | no change required | ||
Summary | 0000714: немного разных фич | ||||
Description | синхронизировал изменения 2-х летней давности: 1. + опция: Отображать папки на панели. 2. + плагин можно использовать в режиме Branch (работает из меню плагинов). 3. - по Enter на <..> не попадали в стартовую папку. 4. + при изменении режима просмотра будем его запоминать (кроме запуска из комстроки с +/-full). 5. + пару строк оптимизации | ||||
Tags | No tags attached. | ||||
2009-01-24 17:09
|
!work.diff (24,222 bytes)
Index: TmpPanel.rc =================================================================== --- TmpPanel.rc (revision 2517) +++ TmpPanel.rc (working copy) @@ -1,6 +1,6 @@ #include "farversion.hpp" -#define PLUGIN_BUILD 45 +#define PLUGIN_BUILD 46 #define PLUGIN_DESC "Temp Panel for FAR Manager" #define PLUGIN_NAME "TmpPanel" #define PLUGIN_FILENAME "TmpPanel.dll" Index: TmpLng.hpp =================================================================== --- TmpLng.hpp (revision 2517) +++ TmpLng.hpp (working copy) @@ -12,6 +12,7 @@ MTempPanelTitleNum, MDiskMenuString, + MPluginMenuStringBranch, MF7, MAltShiftF12, @@ -28,6 +29,7 @@ MConfigAddToDisksMenu, MConfigDisksMenuDigit, MConfigAddToPluginsMenu, + MConfigPluginsMenuBranch, MConfigCommonPanel, MSafeModePanel, @@ -36,6 +38,7 @@ MReplaceInFilelist, MMenuForFilelist, MCopyContens, + MShowDir, MFullScreenPanel, @@ -51,7 +54,8 @@ MNewPanelForSearchResults, MListFilePath, - MCopyContensMsg + MCopyContensMsg, + MShowDirMsg }; #endif /* __TMPLNG_HPP__ */ Index: TmpPanel.cpp =================================================================== --- TmpPanel.cpp (revision 2517) +++ TmpPanel.cpp (working copy) @@ -13,7 +13,7 @@ struct PluginStartupInfo Info; struct FarStandardFunctions FSF; BOOL IsOldFAR; - +TCHAR StartupCurDir[MAX_PATH]; PluginPanels CommonPanels[COMMONPANELSNUMBER]; #if defined(__GNUC__) @@ -46,12 +46,15 @@ #endif #ifndef UNICODE +#define FreePanelInfo(i) #define WITH_ANSI_ARG ,ANSI #define WITH_ANSI_PARAM ,int ANSI #else +#define FreePanelInfo(i) Info.Control(PANEL_ACTIVE,FCTL_FREEPANELINFO,&i) #define WITH_ANSI_ARG #define WITH_ANSI_PARAM #endif + static void ProcessList(HANDLE hPlugin, TCHAR *Name, int Mode WITH_ANSI_PARAM); static void ShowMenuFromList(TCHAR *Name); static HANDLE OpenPanelFromOutput (TCHAR *argv WITH_ANSI_PARAM); @@ -85,6 +88,8 @@ HANDLE hPlugin=INVALID_HANDLE_VALUE; GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); StartupOpenFrom=OpenFrom; if(OpenFrom==OPEN_COMMANDLINE) @@ -166,6 +171,38 @@ { hPlugin=new TmpPanel(); if(hPlugin==NULL) return(INVALID_HANDLE_VALUE); + + // ������� [x] in mode Branch + if (Opt.AddToPluginsMenu && Opt.Branch && OpenFrom==OPEN_PLUGINSMENU) + { + PanelInfo PInfo; + if (!Info.Control(INVALID_HANDLE_VALUE, FCTL_GETPANELINFO, &PInfo)) + return(INVALID_HANDLE_VALUE); + ((TmpPanel *)hPlugin)->FindSearchResultsPanel(); + if (Opt.Mode) + { + FreePanelItems(CommonPanels[CurrentCommonPanel].Items, + CommonPanels[CurrentCommonPanel].ItemsNumber); + CommonPanels[CurrentCommonPanel].Items=(PluginPanelItem*)malloc(sizeof(PluginPanelItem)); + CommonPanels[CurrentCommonPanel].ItemsNumber=0; + } + HANDLE hScreen = ((TmpPanel *)hPlugin)->BeginPutFiles(); + for (int i=0; i<PInfo.SelectedItemsNumber; i++) + if (!((TmpPanel *)hPlugin)-> +#ifndef UNICODE + PutOneFile(PInfo.SelectedItems[i]) +#else + PutOneFile(*(PInfo.SelectedItems[i])) +#endif + ) + { + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, false); + FreePanelInfo(PInfo); + return(INVALID_HANDLE_VALUE); + } + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, true); + FreePanelInfo(PInfo); + } } return(hPlugin); } @@ -401,6 +438,7 @@ ReadFileList (Name, &argc, &argv WITH_ANSI_ARG); FarMenuItem *fmi=(FarMenuItem*)malloc(argc*sizeof(FarMenuItem)); + memset(fmi,0,argc*sizeof(FarMenuItem)); if(fmi) { TCHAR TMP[MAX_PATH]; @@ -490,6 +528,9 @@ return(INVALID_HANDLE_VALUE); #undef PNAME_ARG + //save PanelMode + GetOptions(); + if(!Opt.MenuForFilelist) { HANDLE hPlugin=new TmpPanel(); @@ -540,7 +581,7 @@ Info->DiskMenuNumbers=DiskMenuNumbers; Info->DiskMenuStringsNumber=Opt.AddToDisksMenu?ArraySize(DiskMenuStrings):0; static const TCHAR *PluginMenuStrings[1]; - PluginMenuStrings[0]=GetMsg(MTempPanel); + PluginMenuStrings[0]=Opt.Branch?GetMsg(MPluginMenuStringBranch):GetMsg(MTempPanel); Info->PluginMenuStrings=Opt.AddToPluginsMenu?PluginMenuStrings:NULL; Info->PluginMenuStringsNumber=Opt.AddToPluginsMenu?ArraySize(PluginMenuStrings):0; static const TCHAR *PluginCfgStrings[1]; @@ -602,8 +643,8 @@ int WINAPI EXP_NAME(GetMinFarVersion)(void) { #ifndef UNICODE - return(MAKEFARVERSION(1,70,1024)); + return(MAKEFARVERSION(1,70,2087)); #else - return(MAKEFARVERSION(1,80,557)); + return(MAKEFARVERSION(2,0,684)); #endif } Index: TmpCfg.cpp =================================================================== --- TmpCfg.cpp (revision 2517) +++ TmpCfg.cpp (working copy) @@ -19,6 +19,7 @@ { AddToDisksMenu, AddToPluginsMenu, + Branch, CommonPanel, SafeModePanel, AnyInPanel, @@ -26,6 +27,7 @@ Mode, MenuForFilelist, NewPanelForSearchResults, + ShowDir, FullScreenPanel, ColumnTypes, ColumnWidths, @@ -38,11 +40,11 @@ options_t Opt; -static const TCHAR REGStr[17][8]= +static const TCHAR REGStr[19][8]= { - _T("InDisks"), _T("InPlug"), + _T("InDisks"), _T("InPlug"), _T("Branch"), _T("Common"), _T("Safe"), _T("Any"), _T("Contens"), - _T("Mode"), _T("Menu"), _T("NewP"), + _T("Mode"), _T("Menu"), _T("NewP"), _T("Dir"), _T("Full"), _T("ColT"), _T("ColW"), _T("StatT"), _T("StatW"), _T("DigitV"), _T("Mask"), _T("Prefix") @@ -58,37 +60,40 @@ static const struct COptionsList OptionsList[]={ {&Opt.AddToDisksMenu , _T("") , 1}, {&Opt.AddToPluginsMenu , _T("") , 4}, + {&Opt.Branch , _T("") , 5}, - {&Opt.CommonPanel , _T("") , 6}, - {&Opt.SafeModePanel , NULL , 7}, - {&Opt.AnyInPanel , NULL , 8}, - {&Opt.CopyContents , NULL , 9}, - {&Opt.Mode , _T("") , 10}, - {&Opt.MenuForFilelist , NULL , 11}, - {&Opt.NewPanelForSearchResults, NULL , 12}, + {&Opt.CommonPanel , _T("") , 7}, + {&Opt.SafeModePanel , NULL , 8}, + {&Opt.AnyInPanel , NULL , 9}, + {&Opt.CopyContents , NULL , 10}, + {&Opt.Mode , _T("") , 11}, + {&Opt.MenuForFilelist , NULL , 12}, + {&Opt.NewPanelForSearchResults, NULL , 13}, + {&Opt.ShowDir , _T("") , 14}, - {&Opt.FullScreenPanel , NULL , 22}, + {&Opt.FullScreenPanel , NULL , 24}, - {Opt.ColumnTypes , _T("N,S") , 15}, - {Opt.ColumnWidths , _T("0,8") , 17}, - {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 19}, - {Opt.StatusColumnWidths , _T("0,8,0,5") , 21}, + {Opt.ColumnTypes , _T("N,S") , 17}, + {Opt.ColumnWidths , _T("0,8") , 19}, + {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 21}, + {Opt.StatusColumnWidths , _T("0,8,0,5") , 23}, {Opt.DisksMenuDigit , _T("1") , 2}, - {Opt.Mask , _T("*.temp") , 25}, - {Opt.Prefix , _T("tmp") , 27}, + {Opt.Mask , _T("*.temp") , 27}, + {Opt.Prefix , _T("tmp") , 29}, }; int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; void GetOptions(void) { + DWORD Type,Size,IntValueData; + TCHAR StrValueData[256]; + HKEY hKey; + RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); + for(int i=AddToDisksMenu;i<=Prefix;i++) { - DWORD Type,Size,IntValueData; - TCHAR StrValueData[256]; - HKEY hKey; - RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); if (i<ColumnTypes) { Size=sizeof(IntValueData); @@ -105,8 +110,14 @@ RegQueryValueEx(hKey,REGStr[i],0,&Type,(BYTE*)StrValueData,&Size)==ERROR_SUCCESS? (TCHAR*)StrValueData:OptionsList[i].pStr); } - RegCloseKey(hKey); } + //save PanelMode + Size=sizeof(IntValueData); Type=REG_DWORD; + Opt.PanelMode=0x34; + if (RegQueryValueEx(hKey, _T("PanelMode"),0,&Type,(BYTE *)&IntValueData,&Size)==ERROR_SUCCESS) + Opt.PanelMode=(IntValueData>=0x30 && IntValueData<=0x39?IntValueData:0x34); + + RegCloseKey(hKey); } const int DIALOG_WIDTH = 78; @@ -122,46 +133,48 @@ /* 2*/ {DI_FIXEDIT, 7, 3, 7, 3, 0, -1}, /* 3*/ {DI_TEXT, 9, 3, 0, 0, 0, MConfigDisksMenuDigit}, /* 4*/ {DI_CHECKBOX, DC, 2, 0, 0, 0, MConfigAddToPluginsMenu}, - /* 5*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /* 5*/ {DI_CHECKBOX,DC+3,3, 0, 0, 0, MConfigPluginsMenuBranch}, + /* 6*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /* 6*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, - /* 7*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, - /* 8*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, - /* 9*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, - /*10*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, - /*11*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, - /*12*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /* 7*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, + /* 8*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, + /* 9*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, + /*10*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, + /*11*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, + /*12*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, + /*13*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /*14*/ {DI_CHECKBOX, DC, 8, 0, 0, DIF_3STATE, MShowDir}, - /*13*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*15*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*14*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, - /*15*/ {DI_EDIT, 5,11, 36,11, 0, -1}, - /*16*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, - /*17*/ {DI_EDIT, 5,13, 36,13, 0, -1}, - /*18*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, - /*19*/ {DI_EDIT, DC,11, 72,11, 0, -1}, - /*20*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, - /*21*/ {DI_EDIT, DC,13, 72,13, 0, -1}, - /*22*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, + /*16*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, + /*17*/ {DI_EDIT, 5,11, 36,11, 0, -1}, + /*18*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, + /*19*/ {DI_EDIT, 5,13, 36,13, 0, -1}, + /*20*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, + /*21*/ {DI_EDIT, DC,11, 72,11, 0, -1}, + /*22*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, + /*23*/ {DI_EDIT, DC,13, 72,13, 0, -1}, + /*24*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, - /*23*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*25*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*24*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, - /*25*/ {DI_EDIT, 5,17, 36,17, 0, -1}, - /*26*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, - /*27*/ {DI_EDIT, DC,17, 72,17, 0, -1}, + /*26*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, + /*27*/ {DI_EDIT, 5,17, 36,17, 0, -1}, + /*28*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, + /*29*/ {DI_EDIT, DC,17, 72,17, 0, -1}, - /*28*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*30*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*29*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, - /*30*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} + /*31*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, + /*32*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} }; int i; struct FarDialogItem DialogItems[ArraySize(InitItems)]; InitDialogItems(InitItems,DialogItems,ArraySize(InitItems)); - DialogItems[29].DefaultButton=1; + DialogItems[31].DefaultButton=1; DialogItems[2].Focus=1; GetOptions(); Index: TmpRus.hlf =================================================================== --- TmpRus.hlf (revision 2517) +++ TmpRus.hlf (working copy) @@ -72,6 +72,10 @@ #�������� � ���� ��������# ����蠥� ���������� � ���� ���譨� ���㫥� �㭪� "�६����� ������". + #� ०��� "���� ��⠫���"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #�ᯮ�짮���� ����� ������# �� ���� ࠧ�蠥� �ᯮ�짮����� ��饩 �६����� ������, ᮤ�ন��� ���ன ��࠭���� �� �� �����⨨. @@ -114,6 +118,9 @@ �� ����⨨ #Enter# �� ����� ������, �� ��饬�� ॠ��� ������ 䠩��, ��� ����� �㤥� ���� � ��������� ��ப� FAR. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #������� ᮤ�ন��� �����# : �� �������� ��⠫���� �� �६����� ������, ��।����, ������ �� ����� � ��⠫����� ��������� ᮤ�ঠ騥�� � ��� 䠩��. @@ -160,6 +167,12 @@ �६����� ������. ����� ��ࠧ��, ����� ��࠭��� १����� ���쪨� ����権 ���᪠ � ࠡ���� � ���� �����६����. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #���� �������# #���� ������� ��ப� �����#, #��ਭ� �������# #��ਭ� ������� ��ப� �����# #[ ] ������࠭�� ०��# : ~+full~@CMD@ Index: TmpEng.hlf =================================================================== --- TmpEng.hlf (revision 2517) +++ TmpEng.hlf (working copy) @@ -72,6 +72,10 @@ #Add to plugins menu# Enables adding the "Temporary" item to the plugins menu. + #In mode "Branch"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #Use common panel# When enabled, a common temporary panel is created and its contents is stored even after closing the panel. When this option is not enabled, @@ -112,6 +116,9 @@ When #Enter# is pressed on an element that is not a real file name, its text will be copied to the FAR command line. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #Copy folders contents# When copying folders to the temporary panel, controls whether files are also copied to the panel. If set to the undefined state @@ -156,6 +163,12 @@ This allows to save the results of multiple search operations and work with them at the same time. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #Column types# #Status line column types# #Column widths# #Status line column widths# #[ ] Full screen mode# : ~+full~@CMD@ Index: TmpPanel.hpp =================================================================== --- TmpPanel.hpp (revision 2517) +++ TmpPanel.hpp (working copy) @@ -42,7 +42,7 @@ extern int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; extern TCHAR PluginRootKey[80]; - +extern TCHAR StartupCurDir[MAX_PATH]; const TCHAR *GetMsg(int MsgId); void InitDialogItems(const MyInitDialogItem *Init,struct FarDialogItem *Item,int ItemsNumber); Index: TmpCfg.hpp =================================================================== --- TmpCfg.hpp (revision 2517) +++ TmpCfg.hpp (working copy) @@ -5,6 +5,7 @@ { int AddToDisksMenu; int AddToPluginsMenu; + int Branch; int CommonPanel; int SafeModePanel; int AnyInPanel; @@ -12,7 +13,10 @@ int Mode; int MenuForFilelist; int NewPanelForSearchResults; + int ShowDir; + int SelectedShowDir; int FullScreenPanel; + int PanelMode; int LastSearchResultsPanel; int SelectedCopyContents; TCHAR ColumnTypes[64]; Index: TmpClass.cpp =================================================================== --- TmpClass.cpp (revision 2517) +++ TmpClass.cpp (working copy) @@ -38,7 +38,13 @@ { IfOptCommonPanel(); struct PanelInfo PInfo; +#ifndef UNICODE + //������� �������, �.�. ��� ��� �� ���� ���� ������� + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); +#else + // �� ��2, � ��������, ��� �� ������� Info.Control(this,FCTL_GETPANELINFO,&PInfo); +#endif UpdateItems(IsOwnersDisplayed (PInfo),IsLinksDisplayed (PInfo)); *pPanelItem=TmpPanelItem; *pItemsNumber=TmpItemsNumber; @@ -81,7 +87,8 @@ Info->PanelModesArray=PanelModesArray; Info->PanelModesNumber=ArraySize(PanelModesArray); - Info->StartPanelMode=_T('4'); + // save PanelMode + Info->StartPanelMode=(Opt.FullScreenPanel!=StartupOptFullScreenPanel?_T('4'):Opt.PanelMode); static struct KeyBarTitles KeyBar; memset(&KeyBar,0,sizeof(KeyBar)); KeyBar.Titles[7-1]=(TCHAR*)GetMsg(MF7); @@ -95,7 +102,7 @@ int TmpPanel::SetDirectory(const TCHAR *Dir,int OpMode) { - if((OpMode & OPM_FIND)/* || lstrcmp(Dir,_T("\\"))==0*/) + if(OpMode & OPM_FIND) return(FALSE); if(lstrcmp(Dir,_T("\\"))==0) Info.Control(this,FCTL_CLOSEPLUGIN,(void*)NULL); @@ -126,6 +133,7 @@ { IfOptCommonPanel(); Opt.SelectedCopyContents = Opt.CopyContents; + Opt.SelectedShowDir=Opt.ShowDir; HANDLE hScreen=Info.SaveScreen(0,0,-1,-1); const TCHAR *MsgItems[]={GetMsg(MTempPanel),GetMsg(MTempSendFiles)}; @@ -179,6 +187,14 @@ lstrcat(wp, PanelItem.FindData.lpwszFileName); CurPanelItem->FindData.lpwszFileName = wp; #endif + // add [ ] ShowDir + if (Opt.SelectedShowDir==2 && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + const TCHAR *MsgItems[]={GetMsg(MWarning),GetMsg(MShowDirMsg)}; + Opt.SelectedShowDir=!Info.Message(Info.ModuleNumber,FMSG_MB_YESNO,_T("Config"),MsgItems, + sizeof(MsgItems)/sizeof(MsgItems[0]),0); + } + if(Opt.SelectedCopyContents && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if (Opt.SelectedCopyContents==2) @@ -331,9 +347,17 @@ { struct PluginPanelItem *CurItem=TmpPanelItem; for(int i=0;i<TmpItemsNumber-1;i++,CurItem++) - if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0) + { + if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0 + // add [ ] ShowDir + || ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) ) CurItem->Flags|=REMOVE_FLAG; - RemoveEmptyItems(); + } + if ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) + CurItem->Flags|=REMOVE_FLAG; + RemoveEmptyItems(); } @@ -479,11 +503,16 @@ int TmpPanel::ProcessEvent(int Event,void *) { + struct PanelInfo PInfo; +#ifndef UNICODE + //������� �������, �.�. ��� ��� �� ���� ���� ������� + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); +#else + // �� ��2, � ��������, ��� �� ������� + Info.Control(this,FCTL_GETPANELINFO,&PInfo); +#endif if(Event==FE_CHANGEVIEWMODE) { - IfOptCommonPanel(); - struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); int UpdateOwners=IsOwnersDisplayed (PInfo) && !LastOwnersRead; int UpdateLinks=IsLinksDisplayed (PInfo) && !LastLinksRead; if(UpdateOwners || UpdateLinks) @@ -492,8 +521,20 @@ Info.Control(this,FCTL_UPDATEPANEL,(void *)TRUE); Info.Control(this,FCTL_REDRAWPANEL,NULL); } - FreePanelInfo(PInfo); } + // save PanelMode + else if (Event==FE_CLOSE) + { + PInfo.ViewMode += 0x30; + HKEY hKey; DWORD Disposition; + if (Opt.FullScreenPanel==StartupOptFullScreenPanel && RegCreateKeyEx(HKEY_CURRENT_USER, + PluginRootKey,0,NULL,0,KEY_WRITE,NULL, &hKey,&Disposition)==ERROR_SUCCESS) + { + RegSetValueEx(hKey,_T("PanelMode"),0,REG_DWORD,(LPBYTE)&PInfo.ViewMode,sizeof(int)); + RegCloseKey(hKey); + } + } + FreePanelInfo(PInfo); return(FALSE); } @@ -572,14 +613,21 @@ return(TRUE); } - if(ControlState==0 && Key==VK_RETURN && Opt.AnyInPanel) + if(ControlState==0 && Key==VK_RETURN) { TCHAR CurFileName [NM]; - if (!IsCurrentFileCorrect (CurFileName)) + BOOL Ret; + if (!(Ret=IsCurrentFileCorrect(CurFileName)) && Opt.AnyInPanel) { Info.Control(this,FCTL_SETCMDLINE,&CurFileName); return(TRUE); } + // �� ���� � ������ �� <..> ������� ������ ����� + if (Ret && !lstrcmp(CurFileName,_T(".."))) + { + SetDirectory(StartupCurDir,0); + return(TRUE); + } } if (Opt.SafeModePanel && ControlState == PKF_CONTROL && Key == VK_PRIOR) Index: TmpEng.lng =================================================================== --- TmpEng.lng (revision 2517) +++ TmpEng.lng (working copy) @@ -9,6 +9,7 @@ " %sTemporary panel [%d] " "temporary" +"Temporary panel - branch" "Remove" "Switch" @@ -23,8 +24,9 @@ "Temporary panel" "Add to &Disks menu" -"Disks menu &hotkey ('1'-'9'). Leave empty to autoassign" +"Disks menu &hotkey ('1'-'9')" "Add to &Plugins menu" +"In mode "&Branch"" "Use &common panel" "&Safe panel mode" @@ -33,6 +35,7 @@ "&Replace files with file list" "&Menu from file list" "Copy folder c&ontents" +"Show fold&ers in panel" "F&ull screen mode" @@ -49,3 +52,4 @@ "Save file list as" "Copy folder contents?" +"Show folders in panel?" \ No newline at end of file Index: TmpRus.lng =================================================================== --- TmpRus.lng (revision 2517) +++ TmpRus.lng (working copy) @@ -9,6 +9,7 @@ " %s�६����� ������ [%d] " "�६�����" +"�६����� ������ - ���� ��⠫���" "�����" "�롮�" @@ -23,8 +24,9 @@ "�६����� ������" "�������� � ���� &���" -"&������ ����㯠 ('1'-'9'). � �� �������, �����砥��� ᠬ�" +"&������ ����㯠 ('1'-'9')" "�������� � ���� &��������" +"� ०��� "&���� ��⠫���"" "�ᯮ�짮���� &����� ������" "&�������� ०�� ������" @@ -33,6 +35,7 @@ ""&������" ��� 䠩��-ᯨ᪠" "&���� �� 䠩��-ᯨ᪠" "������� �&���ন��� �����" +"�⮡�&���� ����� �� ������" "�����&�࠭�� ०��" @@ -49,3 +52,4 @@ "���࠭��� ᯨ᮪ ���" "������� ᮤ�ন��� �����?" +"�⮡ࠦ��� ����� �� ������?" Index: TmpClass.hpp =================================================================== --- TmpClass.hpp (revision 2517) +++ TmpClass.hpp (working copy) @@ -23,7 +23,6 @@ void ProcessSaveListKey(); void ProcessPanelSwitchMenu(); void SwitchToPanel (int NewPanelIndex); - void FindSearchResultsPanel(); void SaveListFile (const TCHAR *Path); int IsCurrentFileCorrect (TCHAR *pCurFileName); @@ -45,7 +44,7 @@ HANDLE BeginPutFiles(); void CommitPutFiles (HANDLE hRestoreScreen, int Success); int PutOneFile (PluginPanelItem &PanelItem); - + void FindSearchResultsPanel(); int SetFindList(const struct PluginPanelItem *PanelItem,int ItemsNumber); int ProcessEvent(int Event,void *Param); int ProcessKey(int Key,unsigned int ControlState); |
|
адаптация к последнему АПИ2 |
2009-02-01 09:11
|
!work2.diff (25,763 bytes)
Index: TmpPanel.rc =================================================================== --- TmpPanel.rc (revision 2545) +++ TmpPanel.rc (working copy) @@ -1,6 +1,6 @@ #include "farversion.hpp" -#define PLUGIN_BUILD 46 +#define PLUGIN_BUILD 47 #define PLUGIN_DESC "Temp Panel for FAR Manager" #define PLUGIN_NAME "TmpPanel" #define PLUGIN_FILENAME "TmpPanel.dll" Index: TmpLng.hpp =================================================================== --- TmpLng.hpp (revision 2545) +++ TmpLng.hpp (working copy) @@ -12,6 +12,7 @@ MTempPanelTitleNum, MDiskMenuString, + MPluginMenuStringBranch, MF7, MAltShiftF12, @@ -28,6 +29,7 @@ MConfigAddToDisksMenu, MConfigDisksMenuDigit, MConfigAddToPluginsMenu, + MConfigPluginsMenuBranch, MConfigCommonPanel, MSafeModePanel, @@ -36,6 +38,7 @@ MReplaceInFilelist, MMenuForFilelist, MCopyContens, + MShowDir, MFullScreenPanel, @@ -51,7 +54,8 @@ MNewPanelForSearchResults, MListFilePath, - MCopyContensMsg + MCopyContensMsg, + MShowDirMsg }; #endif /* __TMPLNG_HPP__ */ Index: TmpCfg.cpp =================================================================== --- TmpCfg.cpp (revision 2545) +++ TmpCfg.cpp (working copy) @@ -19,6 +19,7 @@ { AddToDisksMenu, AddToPluginsMenu, + Branch, CommonPanel, SafeModePanel, AnyInPanel, @@ -26,6 +27,7 @@ Mode, MenuForFilelist, NewPanelForSearchResults, + ShowDir, FullScreenPanel, ColumnTypes, ColumnWidths, @@ -38,11 +40,11 @@ options_t Opt; -static const TCHAR REGStr[17][8]= +static const TCHAR REGStr[19][8]= { - _T("InDisks"), _T("InPlug"), + _T("InDisks"), _T("InPlug"), _T("Branch"), _T("Common"), _T("Safe"), _T("Any"), _T("Contens"), - _T("Mode"), _T("Menu"), _T("NewP"), + _T("Mode"), _T("Menu"), _T("NewP"), _T("Dir"), _T("Full"), _T("ColT"), _T("ColW"), _T("StatT"), _T("StatW"), _T("DigitV"), _T("Mask"), _T("Prefix") @@ -58,37 +60,40 @@ static const struct COptionsList OptionsList[]={ {&Opt.AddToDisksMenu , _T("") , 1}, {&Opt.AddToPluginsMenu , _T("") , 4}, + {&Opt.Branch , _T("") , 5}, - {&Opt.CommonPanel , _T("") , 6}, - {&Opt.SafeModePanel , NULL , 7}, - {&Opt.AnyInPanel , NULL , 8}, - {&Opt.CopyContents , NULL , 9}, - {&Opt.Mode , _T("") , 10}, - {&Opt.MenuForFilelist , NULL , 11}, - {&Opt.NewPanelForSearchResults, NULL , 12}, + {&Opt.CommonPanel , _T("") , 7}, + {&Opt.SafeModePanel , NULL , 8}, + {&Opt.AnyInPanel , NULL , 9}, + {&Opt.CopyContents , NULL , 10}, + {&Opt.Mode , _T("") , 11}, + {&Opt.MenuForFilelist , NULL , 12}, + {&Opt.NewPanelForSearchResults, NULL , 13}, + {&Opt.ShowDir , _T("") , 14}, - {&Opt.FullScreenPanel , NULL , 22}, + {&Opt.FullScreenPanel , NULL , 24}, - {Opt.ColumnTypes , _T("N,S") , 15}, - {Opt.ColumnWidths , _T("0,8") , 17}, - {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 19}, - {Opt.StatusColumnWidths , _T("0,8,0,5") , 21}, + {Opt.ColumnTypes , _T("N,S") , 17}, + {Opt.ColumnWidths , _T("0,8") , 19}, + {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 21}, + {Opt.StatusColumnWidths , _T("0,8,0,5") , 23}, {Opt.DisksMenuDigit , _T("1") , 2}, - {Opt.Mask , _T("*.temp") , 25}, - {Opt.Prefix , _T("tmp") , 27}, + {Opt.Mask , _T("*.temp") , 27}, + {Opt.Prefix , _T("tmp") , 29}, }; int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; void GetOptions(void) { + DWORD Type,Size,IntValueData; + TCHAR StrValueData[256]; + HKEY hKey; + RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); + for(int i=AddToDisksMenu;i<=Prefix;i++) { - DWORD Type,Size,IntValueData; - TCHAR StrValueData[256]; - HKEY hKey; - RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); if (i<ColumnTypes) { Size=sizeof(IntValueData); @@ -105,8 +110,14 @@ RegQueryValueEx(hKey,REGStr[i],0,&Type,(BYTE*)StrValueData,&Size)==ERROR_SUCCESS? (TCHAR*)StrValueData:OptionsList[i].pStr); } - RegCloseKey(hKey); } + //save PanelMode + Size=sizeof(IntValueData); Type=REG_DWORD; + Opt.PanelMode=0x34; + if (RegQueryValueEx(hKey, _T("PanelMode"),0,&Type,(BYTE *)&IntValueData,&Size)==ERROR_SUCCESS) + Opt.PanelMode=(IntValueData>=0x30 && IntValueData<=0x39?IntValueData:0x34); + + RegCloseKey(hKey); } const int DIALOG_WIDTH = 78; @@ -122,46 +133,48 @@ /* 2*/ {DI_FIXEDIT, 7, 3, 7, 3, 0, -1}, /* 3*/ {DI_TEXT, 9, 3, 0, 0, 0, MConfigDisksMenuDigit}, /* 4*/ {DI_CHECKBOX, DC, 2, 0, 0, 0, MConfigAddToPluginsMenu}, - /* 5*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /* 5*/ {DI_CHECKBOX,DC+3,3, 0, 0, 0, MConfigPluginsMenuBranch}, + /* 6*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /* 6*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, - /* 7*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, - /* 8*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, - /* 9*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, - /*10*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, - /*11*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, - /*12*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /* 7*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, + /* 8*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, + /* 9*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, + /*10*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, + /*11*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, + /*12*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, + /*13*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /*14*/ {DI_CHECKBOX, DC, 8, 0, 0, DIF_3STATE, MShowDir}, - /*13*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*15*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*14*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, - /*15*/ {DI_EDIT, 5,11, 36,11, 0, -1}, - /*16*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, - /*17*/ {DI_EDIT, 5,13, 36,13, 0, -1}, - /*18*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, - /*19*/ {DI_EDIT, DC,11, 72,11, 0, -1}, - /*20*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, - /*21*/ {DI_EDIT, DC,13, 72,13, 0, -1}, - /*22*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, + /*16*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, + /*17*/ {DI_EDIT, 5,11, 36,11, 0, -1}, + /*18*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, + /*19*/ {DI_EDIT, 5,13, 36,13, 0, -1}, + /*20*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, + /*21*/ {DI_EDIT, DC,11, 72,11, 0, -1}, + /*22*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, + /*23*/ {DI_EDIT, DC,13, 72,13, 0, -1}, + /*24*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, - /*23*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*25*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*24*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, - /*25*/ {DI_EDIT, 5,17, 36,17, 0, -1}, - /*26*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, - /*27*/ {DI_EDIT, DC,17, 72,17, 0, -1}, + /*26*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, + /*27*/ {DI_EDIT, 5,17, 36,17, 0, -1}, + /*28*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, + /*29*/ {DI_EDIT, DC,17, 72,17, 0, -1}, - /*28*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*30*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*29*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, - /*30*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} + /*31*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, + /*32*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} }; int i; struct FarDialogItem DialogItems[ArraySize(InitItems)]; InitDialogItems(InitItems,DialogItems,ArraySize(InitItems)); - DialogItems[29].DefaultButton=1; + DialogItems[31].DefaultButton=1; DialogItems[2].Focus=1; GetOptions(); Index: TmpPanel.cpp =================================================================== --- TmpPanel.cpp (revision 2545) +++ TmpPanel.cpp (working copy) @@ -13,7 +13,7 @@ struct PluginStartupInfo Info; struct FarStandardFunctions FSF; BOOL IsOldFAR; - +TCHAR StartupCurDir[MAX_PATH]; PluginPanels CommonPanels[COMMONPANELSNUMBER]; #if defined(__GNUC__) @@ -85,6 +85,8 @@ HANDLE hPlugin=INVALID_HANDLE_VALUE; GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); StartupOpenFrom=OpenFrom; if(OpenFrom==OPEN_COMMANDLINE) @@ -166,6 +168,48 @@ { hPlugin=new TmpPanel(); if(hPlugin==NULL) return(INVALID_HANDLE_VALUE); + + // ������� [x] in mode Branch + if (Opt.AddToPluginsMenu && Opt.Branch && OpenFrom==OPEN_PLUGINSMENU) + { + PanelInfo PInfo; +#ifndef UNICODE + if (!Info.Control(INVALID_HANDLE_VALUE, FCTL_GETPANELINFO, &PInfo)) +#else + if (!Info.Control(PANEL_ACTIVE,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo)) +#endif + return(INVALID_HANDLE_VALUE); + + ((TmpPanel *)hPlugin)->FindSearchResultsPanel(); + if (Opt.Mode) + { + FreePanelItems(CommonPanels[CurrentCommonPanel].Items, + CommonPanels[CurrentCommonPanel].ItemsNumber); + CommonPanels[CurrentCommonPanel].Items=(PluginPanelItem*)malloc(sizeof(PluginPanelItem)); + CommonPanels[CurrentCommonPanel].ItemsNumber=0; + } + HANDLE hScreen = ((TmpPanel *)hPlugin)->BeginPutFiles(); + for (int i=0; i<PInfo.SelectedItemsNumber; i++) + { +#ifndef UNICODE + if (!((TmpPanel *)hPlugin)->PutOneFile(PInfo.SelectedItems[i])) + { +#else + PluginPanelItem PPI; + Info.Control(PANEL_ACTIVE, FCTL_GETSELECTEDPANELITEM,i,(LONG_PTR)&PPI); + if (!((TmpPanel *)hPlugin)->PutOneFile(PPI)) + { + Info.Control(PANEL_ACTIVE, FCTL_FREEPANELITEM,i,(LONG_PTR)&PPI); +#endif + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, false); + return(INVALID_HANDLE_VALUE); + } +#ifdef UNICODE + Info.Control(PANEL_ACTIVE, FCTL_FREEPANELITEM,i,(LONG_PTR)&PPI); +#endif + } + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, true); + } } return(hPlugin); } @@ -401,6 +445,7 @@ ReadFileList (Name, &argc, &argv WITH_ANSI_ARG); FarMenuItem *fmi=(FarMenuItem*)malloc(argc*sizeof(FarMenuItem)); + memset(fmi,0,argc*sizeof(FarMenuItem)); if(fmi) { TCHAR TMP[MAX_PATH]; @@ -498,6 +543,9 @@ return(INVALID_HANDLE_VALUE); #undef PNAME_ARG + //save PanelMode + GetOptions(); + if(!Opt.MenuForFilelist) { HANDLE hPlugin=new TmpPanel(); @@ -548,7 +596,7 @@ Info->DiskMenuNumbers=DiskMenuNumbers; Info->DiskMenuStringsNumber=Opt.AddToDisksMenu?ArraySize(DiskMenuStrings):0; static const TCHAR *PluginMenuStrings[1]; - PluginMenuStrings[0]=GetMsg(MTempPanel); + PluginMenuStrings[0]=Opt.Branch?GetMsg(MPluginMenuStringBranch):GetMsg(MTempPanel); Info->PluginMenuStrings=Opt.AddToPluginsMenu?PluginMenuStrings:NULL; Info->PluginMenuStringsNumber=Opt.AddToPluginsMenu?ArraySize(PluginMenuStrings):0; static const TCHAR *PluginCfgStrings[1]; @@ -610,8 +658,8 @@ int WINAPI EXP_NAME(GetMinFarVersion)(void) { #ifndef UNICODE - return(MAKEFARVERSION(1,70,1024)); + return(MAKEFARVERSION(1,70,2087)); #else - return(MAKEFARVERSION(1,80,557)); + return(MAKEFARVERSION(2,0,753)); #endif } Index: TmpRus.hlf =================================================================== --- TmpRus.hlf (revision 2545) +++ TmpRus.hlf (working copy) @@ -72,6 +72,10 @@ #�������� � ���� ��������# ����蠥� ���������� � ���� ���譨� ���㫥� �㭪� "�६����� ������". + #� ०��� "���� ��⠫���"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #�ᯮ�짮���� ����� ������# �� ���� ࠧ�蠥� �ᯮ�짮����� ��饩 �६����� ������, ᮤ�ন��� ���ன ��࠭���� �� �� �����⨨. @@ -114,6 +118,9 @@ �� ����⨨ #Enter# �� ����� ������, �� ��饬�� ॠ��� ������ 䠩��, ��� ����� �㤥� ���� � ��������� ��ப� FAR. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #������� ᮤ�ন��� �����# : �� �������� ��⠫���� �� �६����� ������, ��।����, ������ �� ����� � ��⠫����� ��������� ᮤ�ঠ騥�� � ��� 䠩��. @@ -160,6 +167,12 @@ �६����� ������. ����� ��ࠧ��, ����� ��࠭��� १����� ���쪨� ����権 ���᪠ � ࠡ���� � ���� �����६����. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #���� �������# #���� ������� ��ப� �����#, #��ਭ� �������# #��ਭ� ������� ��ப� �����# #[ ] ������࠭�� ०��# : ~+full~@CMD@ Index: TmpEng.hlf =================================================================== --- TmpEng.hlf (revision 2545) +++ TmpEng.hlf (working copy) @@ -72,6 +72,10 @@ #Add to plugins menu# Enables adding the "Temporary" item to the plugins menu. + #In mode "Branch"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #Use common panel# When enabled, a common temporary panel is created and its contents is stored even after closing the panel. When this option is not enabled, @@ -112,6 +116,9 @@ When #Enter# is pressed on an element that is not a real file name, its text will be copied to the FAR command line. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #Copy folders contents# When copying folders to the temporary panel, controls whether files are also copied to the panel. If set to the undefined state @@ -156,6 +163,12 @@ This allows to save the results of multiple search operations and work with them at the same time. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #Column types# #Status line column types# #Column widths# #Status line column widths# #[ ] Full screen mode# : ~+full~@CMD@ Index: TmpPanel.hpp =================================================================== --- TmpPanel.hpp (revision 2545) +++ TmpPanel.hpp (working copy) @@ -42,7 +42,7 @@ extern int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; extern TCHAR PluginRootKey[80]; - +extern TCHAR StartupCurDir[MAX_PATH]; const TCHAR *GetMsg(int MsgId); void InitDialogItems(const MyInitDialogItem *Init,struct FarDialogItem *Item,int ItemsNumber); Index: TmpCfg.hpp =================================================================== --- TmpCfg.hpp (revision 2545) +++ TmpCfg.hpp (working copy) @@ -5,6 +5,7 @@ { int AddToDisksMenu; int AddToPluginsMenu; + int Branch; int CommonPanel; int SafeModePanel; int AnyInPanel; @@ -12,7 +13,10 @@ int Mode; int MenuForFilelist; int NewPanelForSearchResults; + int ShowDir; + int SelectedShowDir; int FullScreenPanel; + int PanelMode; int LastSearchResultsPanel; int SelectedCopyContents; TCHAR ColumnTypes[64]; Index: TmpClass.cpp =================================================================== --- TmpClass.cpp (revision 2545) +++ TmpClass.cpp (working copy) @@ -32,7 +32,7 @@ IfOptCommonPanel(); #ifndef UNICODE struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); UpdateItems(IsOwnersDisplayed (PInfo.ColumnTypes),IsLinksDisplayed (PInfo.ColumnTypes)); #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); @@ -82,7 +82,8 @@ Info->PanelModesArray=PanelModesArray; Info->PanelModesNumber=ArraySize(PanelModesArray); - Info->StartPanelMode=_T('4'); + // save PanelMode + Info->StartPanelMode=(Opt.FullScreenPanel!=StartupOptFullScreenPanel?_T('4'):Opt.PanelMode); static struct KeyBarTitles KeyBar; memset(&KeyBar,0,sizeof(KeyBar)); KeyBar.Titles[7-1]=(TCHAR*)GetMsg(MF7); @@ -96,18 +97,16 @@ int TmpPanel::SetDirectory(const TCHAR *Dir,int OpMode) { - if((OpMode & OPM_FIND)/* || lstrcmp(Dir,_T("\\"))==0*/) + if(OpMode & OPM_FIND) return(FALSE); if(lstrcmp(Dir,_T("\\"))==0) #ifndef UNICODE Info.Control(this,FCTL_CLOSEPLUGIN,(void*)NULL); + else + Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); #else Info.Control(this,FCTL_CLOSEPLUGIN,0,NULL); -#endif else -#ifndef UNICODE - Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); -#else Info.Control(this,FCTL_CLOSEPLUGIN,0,(LONG_PTR)Dir); #endif return(TRUE); @@ -135,6 +134,7 @@ { IfOptCommonPanel(); Opt.SelectedCopyContents = Opt.CopyContents; + Opt.SelectedShowDir=Opt.ShowDir; HANDLE hScreen=Info.SaveScreen(0,0,-1,-1); const TCHAR *MsgItems[]={GetMsg(MTempPanel),GetMsg(MTempSendFiles)}; @@ -188,6 +188,14 @@ lstrcat(wp, PanelItem.FindData.lpwszFileName); CurPanelItem->FindData.lpwszFileName = wp; #endif + // add [ ] ShowDir + if (Opt.SelectedShowDir==2 && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + const TCHAR *MsgItems[]={GetMsg(MWarning),GetMsg(MShowDirMsg)}; + Opt.SelectedShowDir=!Info.Message(Info.ModuleNumber,FMSG_MB_YESNO,_T("Config"),MsgItems, + sizeof(MsgItems)/sizeof(MsgItems[0]),0); + } + if(Opt.SelectedCopyContents && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if (Opt.SelectedCopyContents==2) @@ -340,9 +348,17 @@ { struct PluginPanelItem *CurItem=TmpPanelItem; for(int i=0;i<TmpItemsNumber-1;i++,CurItem++) - if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0) + { + if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0 + // add [ ] ShowDir + || ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) ) CurItem->Flags|=REMOVE_FLAG; - RemoveEmptyItems(); + } + if ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) + CurItem->Flags|=REMOVE_FLAG; + RemoveEmptyItems(); } @@ -488,14 +504,18 @@ int TmpPanel::ProcessEvent(int Event,void *) { + struct PanelInfo PInfo; +#ifndef UNICODE + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); +#else + Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); +#endif + if(Event==FE_CHANGEVIEWMODE) { - IfOptCommonPanel(); #ifndef UNICODE - struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); - int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; - int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; + int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; + int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); wchar_t* ColumnTypes=new wchar_t[Size]; @@ -518,21 +538,32 @@ #endif } } + // save PanelMode + else if (Event==FE_CLOSE) + { + PInfo.ViewMode += 0x30; + HKEY hKey; DWORD Disposition; + if (Opt.FullScreenPanel==StartupOptFullScreenPanel && RegCreateKeyEx(HKEY_CURRENT_USER, + PluginRootKey,0,NULL,0,KEY_WRITE,NULL, &hKey,&Disposition)==ERROR_SUCCESS) + { + RegSetValueEx(hKey,_T("PanelMode"),0,REG_DWORD,(LPBYTE)&PInfo.ViewMode,sizeof(int)); + RegCloseKey(hKey); + } + } return(FALSE); } int TmpPanel::IsCurrentFileCorrect (TCHAR *pCurFileName) { - struct PanelInfo PInfo; TCHAR CurFileName[NM]; #ifndef UNICODE + struct PanelInfo PInfo; Info.Control(this,FCTL_GETPANELINFO,&PInfo); lstrcpy(CurFileName, PInfo.PanelItems[PInfo.CurrentItem].FindData.cFileName); #else - Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); PluginPanelItem PPI; - Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,(LONG_PTR)&PPI); + Info.Control(this,FCTL_GETCURRENTPANELITEM,0,(LONG_PTR)&PPI); lstrcpy(CurFileName,PPI.FindData.lpwszFileName); Info.Control(this,FCTL_FREEPANELITEM,0,(LONG_PTR)&PPI); #endif @@ -581,16 +612,13 @@ if (PInfo.PanelItems[PInfo.CurrentItem].FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { + Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); #else PluginPanelItem PPI; Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,(LONG_PTR)&PPI); if(PPI.FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { Info.Control(this,FCTL_FREEPANELITEM,0,(LONG_PTR)&PPI); -#endif -#ifndef UNICODE - Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); -#else Info.Control(PANEL_PASSIVE, FCTL_SETPANELDIR,0,(LONG_PTR)&CurFileName); #endif } @@ -612,10 +640,11 @@ return(TRUE); } - if(ControlState==0 && Key==VK_RETURN && Opt.AnyInPanel) + if(ControlState==0 && Key==VK_RETURN) { TCHAR CurFileName [NM]; - if (!IsCurrentFileCorrect (CurFileName)) + BOOL Ret; + if (!(Ret=IsCurrentFileCorrect(CurFileName)) && Opt.AnyInPanel) { #ifndef UNICODE Info.Control(this,FCTL_SETCMDLINE,&CurFileName); @@ -624,6 +653,12 @@ #endif return(TRUE); } + // �� ���� � ������ �� <..> ������� ������ ����� + if (Ret && !lstrcmp(CurFileName,_T(".."))) + { + SetDirectory(StartupCurDir,0); + return(TRUE); + } } if (Opt.SafeModePanel && ControlState == PKF_CONTROL && Key == VK_PRIOR) Index: TmpEng.lng =================================================================== --- TmpEng.lng (revision 2545) +++ TmpEng.lng (working copy) @@ -9,6 +9,7 @@ " %sTemporary panel [%d] " "temporary" +"Temporary panel - branch" "Remove" "Switch" @@ -23,8 +24,9 @@ "Temporary panel" "Add to &Disks menu" -"Disks menu &hotkey ('1'-'9'). Leave empty to autoassign" +"Disks menu &hotkey ('1'-'9')" "Add to &Plugins menu" +"In mode "&Branch"" "Use &common panel" "&Safe panel mode" @@ -33,6 +35,7 @@ "&Replace files with file list" "&Menu from file list" "Copy folder c&ontents" +"Show fold&ers in panel" "F&ull screen mode" @@ -49,3 +52,4 @@ "Save file list as" "Copy folder contents?" +"Show folders in panel?" \ No newline at end of file Index: TmpRus.lng =================================================================== --- TmpRus.lng (revision 2545) +++ TmpRus.lng (working copy) @@ -9,6 +9,7 @@ " %s�६����� ������ [%d] " "�६�����" +"�६����� ������ - ���� ��⠫���" "�����" "�롮�" @@ -23,8 +24,9 @@ "�६����� ������" "�������� � ���� &���" -"&������ ����㯠 ('1'-'9'). � �� �������, �����砥��� ᠬ�" +"&������ ����㯠 ('1'-'9')" "�������� � ���� &��������" +"� ०��� "&���� ��⠫���"" "�ᯮ�짮���� &����� ������" "&�������� ०�� ������" @@ -33,6 +35,7 @@ ""&������" ��� 䠩��-ᯨ᪠" "&���� �� 䠩��-ᯨ᪠" "������� �&���ন��� �����" +"�⮡�&���� ����� �� ������" "�����&�࠭�� ०��" @@ -49,3 +52,4 @@ "���࠭��� ᯨ᮪ ���" "������� ᮤ�ন��� �����?" +"�⮡ࠦ��� ����� �� ������?" Index: TmpClass.hpp =================================================================== --- TmpClass.hpp (revision 2545) +++ TmpClass.hpp (working copy) @@ -23,7 +23,6 @@ void ProcessSaveListKey(); void ProcessPanelSwitchMenu(); void SwitchToPanel (int NewPanelIndex); - void FindSearchResultsPanel(); void SaveListFile (const TCHAR *Path); int IsCurrentFileCorrect (TCHAR *pCurFileName); @@ -45,7 +44,7 @@ HANDLE BeginPutFiles(); void CommitPutFiles (HANDLE hRestoreScreen, int Success); int PutOneFile (PluginPanelItem &PanelItem); - + void FindSearchResultsPanel(); int SetFindList(const struct PluginPanelItem *PanelItem,int ItemsNumber); int ProcessEvent(int Event,void *Param); int ProcessKey(int Key,unsigned int ControlState); |
2009-02-03 15:46
|
!work3.diff (25,870 bytes)
Index: TmpPanel.rc =================================================================== --- TmpPanel.rc (revision 2545) +++ TmpPanel.rc (working copy) @@ -1,6 +1,6 @@ #include "farversion.hpp" -#define PLUGIN_BUILD 46 +#define PLUGIN_BUILD 47 #define PLUGIN_DESC "Temp Panel for FAR Manager" #define PLUGIN_NAME "TmpPanel" #define PLUGIN_FILENAME "TmpPanel.dll" Index: TmpLng.hpp =================================================================== --- TmpLng.hpp (revision 2545) +++ TmpLng.hpp (working copy) @@ -12,6 +12,7 @@ MTempPanelTitleNum, MDiskMenuString, + MPluginMenuStringBranch, MF7, MAltShiftF12, @@ -28,6 +29,7 @@ MConfigAddToDisksMenu, MConfigDisksMenuDigit, MConfigAddToPluginsMenu, + MConfigPluginsMenuBranch, MConfigCommonPanel, MSafeModePanel, @@ -36,6 +38,7 @@ MReplaceInFilelist, MMenuForFilelist, MCopyContens, + MShowDir, MFullScreenPanel, @@ -51,7 +54,8 @@ MNewPanelForSearchResults, MListFilePath, - MCopyContensMsg + MCopyContensMsg, + MShowDirMsg }; #endif /* __TMPLNG_HPP__ */ Index: TmpCfg.cpp =================================================================== --- TmpCfg.cpp (revision 2545) +++ TmpCfg.cpp (working copy) @@ -19,6 +19,7 @@ { AddToDisksMenu, AddToPluginsMenu, + Branch, CommonPanel, SafeModePanel, AnyInPanel, @@ -26,6 +27,7 @@ Mode, MenuForFilelist, NewPanelForSearchResults, + ShowDir, FullScreenPanel, ColumnTypes, ColumnWidths, @@ -38,11 +40,11 @@ options_t Opt; -static const TCHAR REGStr[17][8]= +static const TCHAR REGStr[19][8]= { - _T("InDisks"), _T("InPlug"), + _T("InDisks"), _T("InPlug"), _T("Branch"), _T("Common"), _T("Safe"), _T("Any"), _T("Contens"), - _T("Mode"), _T("Menu"), _T("NewP"), + _T("Mode"), _T("Menu"), _T("NewP"), _T("Dir"), _T("Full"), _T("ColT"), _T("ColW"), _T("StatT"), _T("StatW"), _T("DigitV"), _T("Mask"), _T("Prefix") @@ -58,37 +60,40 @@ static const struct COptionsList OptionsList[]={ {&Opt.AddToDisksMenu , _T("") , 1}, {&Opt.AddToPluginsMenu , _T("") , 4}, + {&Opt.Branch , _T("") , 5}, - {&Opt.CommonPanel , _T("") , 6}, - {&Opt.SafeModePanel , NULL , 7}, - {&Opt.AnyInPanel , NULL , 8}, - {&Opt.CopyContents , NULL , 9}, - {&Opt.Mode , _T("") , 10}, - {&Opt.MenuForFilelist , NULL , 11}, - {&Opt.NewPanelForSearchResults, NULL , 12}, + {&Opt.CommonPanel , _T("") , 7}, + {&Opt.SafeModePanel , NULL , 8}, + {&Opt.AnyInPanel , NULL , 9}, + {&Opt.CopyContents , NULL , 10}, + {&Opt.Mode , _T("") , 11}, + {&Opt.MenuForFilelist , NULL , 12}, + {&Opt.NewPanelForSearchResults, NULL , 13}, + {&Opt.ShowDir , _T("") , 14}, - {&Opt.FullScreenPanel , NULL , 22}, + {&Opt.FullScreenPanel , NULL , 24}, - {Opt.ColumnTypes , _T("N,S") , 15}, - {Opt.ColumnWidths , _T("0,8") , 17}, - {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 19}, - {Opt.StatusColumnWidths , _T("0,8,0,5") , 21}, + {Opt.ColumnTypes , _T("N,S") , 17}, + {Opt.ColumnWidths , _T("0,8") , 19}, + {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 21}, + {Opt.StatusColumnWidths , _T("0,8,0,5") , 23}, {Opt.DisksMenuDigit , _T("1") , 2}, - {Opt.Mask , _T("*.temp") , 25}, - {Opt.Prefix , _T("tmp") , 27}, + {Opt.Mask , _T("*.temp") , 27}, + {Opt.Prefix , _T("tmp") , 29}, }; int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; void GetOptions(void) { + DWORD Type,Size,IntValueData; + TCHAR StrValueData[256]; + HKEY hKey; + RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); + for(int i=AddToDisksMenu;i<=Prefix;i++) { - DWORD Type,Size,IntValueData; - TCHAR StrValueData[256]; - HKEY hKey; - RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); if (i<ColumnTypes) { Size=sizeof(IntValueData); @@ -105,8 +110,14 @@ RegQueryValueEx(hKey,REGStr[i],0,&Type,(BYTE*)StrValueData,&Size)==ERROR_SUCCESS? (TCHAR*)StrValueData:OptionsList[i].pStr); } - RegCloseKey(hKey); } + //save PanelMode + Size=sizeof(IntValueData); Type=REG_DWORD; + Opt.PanelMode=0x34; + if (RegQueryValueEx(hKey, _T("PanelMode"),0,&Type,(BYTE *)&IntValueData,&Size)==ERROR_SUCCESS) + Opt.PanelMode=(IntValueData>=0x30 && IntValueData<=0x39?IntValueData:0x34); + + RegCloseKey(hKey); } const int DIALOG_WIDTH = 78; @@ -122,46 +133,48 @@ /* 2*/ {DI_FIXEDIT, 7, 3, 7, 3, 0, -1}, /* 3*/ {DI_TEXT, 9, 3, 0, 0, 0, MConfigDisksMenuDigit}, /* 4*/ {DI_CHECKBOX, DC, 2, 0, 0, 0, MConfigAddToPluginsMenu}, - /* 5*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /* 5*/ {DI_CHECKBOX,DC+3,3, 0, 0, 0, MConfigPluginsMenuBranch}, + /* 6*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /* 6*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, - /* 7*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, - /* 8*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, - /* 9*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, - /*10*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, - /*11*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, - /*12*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /* 7*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, + /* 8*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, + /* 9*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, + /*10*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, + /*11*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, + /*12*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, + /*13*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /*14*/ {DI_CHECKBOX, DC, 8, 0, 0, DIF_3STATE, MShowDir}, - /*13*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*15*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*14*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, - /*15*/ {DI_EDIT, 5,11, 36,11, 0, -1}, - /*16*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, - /*17*/ {DI_EDIT, 5,13, 36,13, 0, -1}, - /*18*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, - /*19*/ {DI_EDIT, DC,11, 72,11, 0, -1}, - /*20*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, - /*21*/ {DI_EDIT, DC,13, 72,13, 0, -1}, - /*22*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, + /*16*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, + /*17*/ {DI_EDIT, 5,11, 36,11, 0, -1}, + /*18*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, + /*19*/ {DI_EDIT, 5,13, 36,13, 0, -1}, + /*20*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, + /*21*/ {DI_EDIT, DC,11, 72,11, 0, -1}, + /*22*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, + /*23*/ {DI_EDIT, DC,13, 72,13, 0, -1}, + /*24*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, - /*23*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*25*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*24*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, - /*25*/ {DI_EDIT, 5,17, 36,17, 0, -1}, - /*26*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, - /*27*/ {DI_EDIT, DC,17, 72,17, 0, -1}, + /*26*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, + /*27*/ {DI_EDIT, 5,17, 36,17, 0, -1}, + /*28*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, + /*29*/ {DI_EDIT, DC,17, 72,17, 0, -1}, - /*28*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*30*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*29*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, - /*30*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} + /*31*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, + /*32*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} }; int i; struct FarDialogItem DialogItems[ArraySize(InitItems)]; InitDialogItems(InitItems,DialogItems,ArraySize(InitItems)); - DialogItems[29].DefaultButton=1; + DialogItems[31].DefaultButton=1; DialogItems[2].Focus=1; GetOptions(); Index: TmpPanel.cpp =================================================================== --- TmpPanel.cpp (revision 2545) +++ TmpPanel.cpp (working copy) @@ -13,7 +13,7 @@ struct PluginStartupInfo Info; struct FarStandardFunctions FSF; BOOL IsOldFAR; - +TCHAR StartupCurDir[MAX_PATH]; PluginPanels CommonPanels[COMMONPANELSNUMBER]; #if defined(__GNUC__) @@ -85,6 +85,8 @@ HANDLE hPlugin=INVALID_HANDLE_VALUE; GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); StartupOpenFrom=OpenFrom; if(OpenFrom==OPEN_COMMANDLINE) @@ -166,6 +168,48 @@ { hPlugin=new TmpPanel(); if(hPlugin==NULL) return(INVALID_HANDLE_VALUE); + + // ������� [x] in mode Branch + if (Opt.AddToPluginsMenu && Opt.Branch && OpenFrom==OPEN_PLUGINSMENU) + { + PanelInfo PInfo; +#ifndef UNICODE + if (!Info.Control(INVALID_HANDLE_VALUE, FCTL_GETPANELINFO, &PInfo)) +#else + if (!Info.Control(PANEL_ACTIVE,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo)) +#endif + return(INVALID_HANDLE_VALUE); + + ((TmpPanel *)hPlugin)->FindSearchResultsPanel(); + if (Opt.Mode) + { + FreePanelItems(CommonPanels[CurrentCommonPanel].Items, + CommonPanels[CurrentCommonPanel].ItemsNumber); + CommonPanels[CurrentCommonPanel].Items=(PluginPanelItem*)malloc(sizeof(PluginPanelItem)); + CommonPanels[CurrentCommonPanel].ItemsNumber=0; + } + HANDLE hScreen = ((TmpPanel *)hPlugin)->BeginPutFiles(); + for (int i=0; i<PInfo.SelectedItemsNumber; i++) + { +#ifndef UNICODE + if (!((TmpPanel *)hPlugin)->PutOneFile(PInfo.SelectedItems[i])) + { +#else + PluginPanelItem PPI; + Info.Control(PANEL_ACTIVE, FCTL_GETSELECTEDPANELITEM,i,(LONG_PTR)&PPI); + if (!((TmpPanel *)hPlugin)->PutOneFile(PPI)) + { + Info.Control(PANEL_ACTIVE, FCTL_FREEPANELITEM,i,(LONG_PTR)&PPI); +#endif + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, false); + return(INVALID_HANDLE_VALUE); + } +#ifdef UNICODE + Info.Control(PANEL_ACTIVE, FCTL_FREEPANELITEM,i,(LONG_PTR)&PPI); +#endif + } + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, true); + } } return(hPlugin); } @@ -401,6 +445,7 @@ ReadFileList (Name, &argc, &argv WITH_ANSI_ARG); FarMenuItem *fmi=(FarMenuItem*)malloc(argc*sizeof(FarMenuItem)); + memset(fmi,0,argc*sizeof(FarMenuItem)); if(fmi) { TCHAR TMP[MAX_PATH]; @@ -498,6 +543,11 @@ return(INVALID_HANDLE_VALUE); #undef PNAME_ARG + //save PanelMode + GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); + if(!Opt.MenuForFilelist) { HANDLE hPlugin=new TmpPanel(); @@ -548,7 +598,7 @@ Info->DiskMenuNumbers=DiskMenuNumbers; Info->DiskMenuStringsNumber=Opt.AddToDisksMenu?ArraySize(DiskMenuStrings):0; static const TCHAR *PluginMenuStrings[1]; - PluginMenuStrings[0]=GetMsg(MTempPanel); + PluginMenuStrings[0]=Opt.Branch?GetMsg(MPluginMenuStringBranch):GetMsg(MTempPanel); Info->PluginMenuStrings=Opt.AddToPluginsMenu?PluginMenuStrings:NULL; Info->PluginMenuStringsNumber=Opt.AddToPluginsMenu?ArraySize(PluginMenuStrings):0; static const TCHAR *PluginCfgStrings[1]; @@ -610,8 +660,8 @@ int WINAPI EXP_NAME(GetMinFarVersion)(void) { #ifndef UNICODE - return(MAKEFARVERSION(1,70,1024)); + return(MAKEFARVERSION(1,70,2087)); #else - return(MAKEFARVERSION(1,80,557)); + return(MAKEFARVERSION(2,0,753)); #endif } Index: TmpRus.hlf =================================================================== --- TmpRus.hlf (revision 2545) +++ TmpRus.hlf (working copy) @@ -72,6 +72,10 @@ #�������� � ���� ��������# ����蠥� ���������� � ���� ���譨� ���㫥� �㭪� "�६����� ������". + #� ०��� "���� ��⠫���"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #�ᯮ�짮���� ����� ������# �� ���� ࠧ�蠥� �ᯮ�짮����� ��饩 �६����� ������, ᮤ�ন��� ���ன ��࠭���� �� �� �����⨨. @@ -114,6 +118,9 @@ �� ����⨨ #Enter# �� ����� ������, �� ��饬�� ॠ��� ������ 䠩��, ��� ����� �㤥� ���� � ��������� ��ப� FAR. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #������� ᮤ�ন��� �����# : �� �������� ��⠫���� �� �६����� ������, ��।����, ������ �� ����� � ��⠫����� ��������� ᮤ�ঠ騥�� � ��� 䠩��. @@ -160,6 +167,12 @@ �६����� ������. ����� ��ࠧ��, ����� ��࠭��� १����� ���쪨� ����権 ���᪠ � ࠡ���� � ���� �����६����. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #���� �������# #���� ������� ��ப� �����#, #��ਭ� �������# #��ਭ� ������� ��ப� �����# #[ ] ������࠭�� ०��# : ~+full~@CMD@ Index: TmpEng.hlf =================================================================== --- TmpEng.hlf (revision 2545) +++ TmpEng.hlf (working copy) @@ -72,6 +72,10 @@ #Add to plugins menu# Enables adding the "Temporary" item to the plugins menu. + #In mode "Branch"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #Use common panel# When enabled, a common temporary panel is created and its contents is stored even after closing the panel. When this option is not enabled, @@ -112,6 +116,9 @@ When #Enter# is pressed on an element that is not a real file name, its text will be copied to the FAR command line. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #Copy folders contents# When copying folders to the temporary panel, controls whether files are also copied to the panel. If set to the undefined state @@ -156,6 +163,12 @@ This allows to save the results of multiple search operations and work with them at the same time. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #Column types# #Status line column types# #Column widths# #Status line column widths# #[ ] Full screen mode# : ~+full~@CMD@ Index: TmpPanel.hpp =================================================================== --- TmpPanel.hpp (revision 2545) +++ TmpPanel.hpp (working copy) @@ -42,7 +42,7 @@ extern int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; extern TCHAR PluginRootKey[80]; - +extern TCHAR StartupCurDir[MAX_PATH]; const TCHAR *GetMsg(int MsgId); void InitDialogItems(const MyInitDialogItem *Init,struct FarDialogItem *Item,int ItemsNumber); Index: TmpCfg.hpp =================================================================== --- TmpCfg.hpp (revision 2545) +++ TmpCfg.hpp (working copy) @@ -5,6 +5,7 @@ { int AddToDisksMenu; int AddToPluginsMenu; + int Branch; int CommonPanel; int SafeModePanel; int AnyInPanel; @@ -12,7 +13,10 @@ int Mode; int MenuForFilelist; int NewPanelForSearchResults; + int ShowDir; + int SelectedShowDir; int FullScreenPanel; + int PanelMode; int LastSearchResultsPanel; int SelectedCopyContents; TCHAR ColumnTypes[64]; Index: TmpClass.cpp =================================================================== --- TmpClass.cpp (revision 2545) +++ TmpClass.cpp (working copy) @@ -32,7 +32,7 @@ IfOptCommonPanel(); #ifndef UNICODE struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); UpdateItems(IsOwnersDisplayed (PInfo.ColumnTypes),IsLinksDisplayed (PInfo.ColumnTypes)); #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); @@ -82,7 +82,8 @@ Info->PanelModesArray=PanelModesArray; Info->PanelModesNumber=ArraySize(PanelModesArray); - Info->StartPanelMode=_T('4'); + // save PanelMode + Info->StartPanelMode=(Opt.FullScreenPanel!=StartupOptFullScreenPanel?_T('4'):Opt.PanelMode); static struct KeyBarTitles KeyBar; memset(&KeyBar,0,sizeof(KeyBar)); KeyBar.Titles[7-1]=(TCHAR*)GetMsg(MF7); @@ -96,18 +97,16 @@ int TmpPanel::SetDirectory(const TCHAR *Dir,int OpMode) { - if((OpMode & OPM_FIND)/* || lstrcmp(Dir,_T("\\"))==0*/) + if(OpMode & OPM_FIND) return(FALSE); if(lstrcmp(Dir,_T("\\"))==0) #ifndef UNICODE Info.Control(this,FCTL_CLOSEPLUGIN,(void*)NULL); + else + Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); #else Info.Control(this,FCTL_CLOSEPLUGIN,0,NULL); -#endif else -#ifndef UNICODE - Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); -#else Info.Control(this,FCTL_CLOSEPLUGIN,0,(LONG_PTR)Dir); #endif return(TRUE); @@ -135,6 +134,7 @@ { IfOptCommonPanel(); Opt.SelectedCopyContents = Opt.CopyContents; + Opt.SelectedShowDir=Opt.ShowDir; HANDLE hScreen=Info.SaveScreen(0,0,-1,-1); const TCHAR *MsgItems[]={GetMsg(MTempPanel),GetMsg(MTempSendFiles)}; @@ -188,6 +188,14 @@ lstrcat(wp, PanelItem.FindData.lpwszFileName); CurPanelItem->FindData.lpwszFileName = wp; #endif + // add [ ] ShowDir + if (Opt.SelectedShowDir==2 && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + const TCHAR *MsgItems[]={GetMsg(MWarning),GetMsg(MShowDirMsg)}; + Opt.SelectedShowDir=!Info.Message(Info.ModuleNumber,FMSG_MB_YESNO,_T("Config"),MsgItems, + sizeof(MsgItems)/sizeof(MsgItems[0]),0); + } + if(Opt.SelectedCopyContents && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if (Opt.SelectedCopyContents==2) @@ -340,9 +348,17 @@ { struct PluginPanelItem *CurItem=TmpPanelItem; for(int i=0;i<TmpItemsNumber-1;i++,CurItem++) - if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0) + { + if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0 + // add [ ] ShowDir + || ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) ) CurItem->Flags|=REMOVE_FLAG; - RemoveEmptyItems(); + } + if ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) + CurItem->Flags|=REMOVE_FLAG; + RemoveEmptyItems(); } @@ -488,14 +504,18 @@ int TmpPanel::ProcessEvent(int Event,void *) { + struct PanelInfo PInfo; +#ifndef UNICODE + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); +#else + Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); +#endif + if(Event==FE_CHANGEVIEWMODE) { - IfOptCommonPanel(); #ifndef UNICODE - struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); - int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; - int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; + int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; + int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); wchar_t* ColumnTypes=new wchar_t[Size]; @@ -518,21 +538,32 @@ #endif } } + // save PanelMode + else if (Event==FE_CLOSE) + { + PInfo.ViewMode += 0x30; + HKEY hKey; DWORD Disposition; + if (Opt.FullScreenPanel==StartupOptFullScreenPanel && RegCreateKeyEx(HKEY_CURRENT_USER, + PluginRootKey,0,NULL,0,KEY_WRITE,NULL, &hKey,&Disposition)==ERROR_SUCCESS) + { + RegSetValueEx(hKey,_T("PanelMode"),0,REG_DWORD,(LPBYTE)&PInfo.ViewMode,sizeof(int)); + RegCloseKey(hKey); + } + } return(FALSE); } int TmpPanel::IsCurrentFileCorrect (TCHAR *pCurFileName) { - struct PanelInfo PInfo; TCHAR CurFileName[NM]; #ifndef UNICODE + struct PanelInfo PInfo; Info.Control(this,FCTL_GETPANELINFO,&PInfo); lstrcpy(CurFileName, PInfo.PanelItems[PInfo.CurrentItem].FindData.cFileName); #else - Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); PluginPanelItem PPI; - Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,(LONG_PTR)&PPI); + Info.Control(this,FCTL_GETCURRENTPANELITEM,0,(LONG_PTR)&PPI); lstrcpy(CurFileName,PPI.FindData.lpwszFileName); Info.Control(this,FCTL_FREEPANELITEM,0,(LONG_PTR)&PPI); #endif @@ -581,16 +612,13 @@ if (PInfo.PanelItems[PInfo.CurrentItem].FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { + Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); #else PluginPanelItem PPI; Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,(LONG_PTR)&PPI); if(PPI.FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { Info.Control(this,FCTL_FREEPANELITEM,0,(LONG_PTR)&PPI); -#endif -#ifndef UNICODE - Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); -#else Info.Control(PANEL_PASSIVE, FCTL_SETPANELDIR,0,(LONG_PTR)&CurFileName); #endif } @@ -612,10 +640,11 @@ return(TRUE); } - if(ControlState==0 && Key==VK_RETURN && Opt.AnyInPanel) + if(ControlState==0 && Key==VK_RETURN) { TCHAR CurFileName [NM]; - if (!IsCurrentFileCorrect (CurFileName)) + BOOL Ret; + if (!(Ret=IsCurrentFileCorrect(CurFileName)) && Opt.AnyInPanel) { #ifndef UNICODE Info.Control(this,FCTL_SETCMDLINE,&CurFileName); @@ -624,6 +653,12 @@ #endif return(TRUE); } + // �� ���� � ������ �� <..> ������� ������ ����� + if (Ret && !lstrcmp(CurFileName,_T(".."))) + { + SetDirectory(StartupCurDir,0); + return(TRUE); + } } if (Opt.SafeModePanel && ControlState == PKF_CONTROL && Key == VK_PRIOR) Index: TmpEng.lng =================================================================== --- TmpEng.lng (revision 2545) +++ TmpEng.lng (working copy) @@ -9,6 +9,7 @@ " %sTemporary panel [%d] " "temporary" +"Temporary panel - branch" "Remove" "Switch" @@ -23,8 +24,9 @@ "Temporary panel" "Add to &Disks menu" -"Disks menu &hotkey ('1'-'9'). Leave empty to autoassign" +"Disks menu &hotkey ('1'-'9')" "Add to &Plugins menu" +"In mode "&Branch"" "Use &common panel" "&Safe panel mode" @@ -33,6 +35,7 @@ "&Replace files with file list" "&Menu from file list" "Copy folder c&ontents" +"Show fold&ers in panel" "F&ull screen mode" @@ -49,3 +52,4 @@ "Save file list as" "Copy folder contents?" +"Show folders in panel?" \ No newline at end of file Index: TmpRus.lng =================================================================== --- TmpRus.lng (revision 2545) +++ TmpRus.lng (working copy) @@ -9,6 +9,7 @@ " %s�६����� ������ [%d] " "�६�����" +"�६����� ������ - ���� ��⠫���" "�����" "�롮�" @@ -23,8 +24,9 @@ "�६����� ������" "�������� � ���� &���" -"&������ ����㯠 ('1'-'9'). � �� �������, �����砥��� ᠬ�" +"&������ ����㯠 ('1'-'9')" "�������� � ���� &��������" +"� ०��� "&���� ��⠫���"" "�ᯮ�짮���� &����� ������" "&�������� ०�� ������" @@ -33,6 +35,7 @@ ""&������" ��� 䠩��-ᯨ᪠" "&���� �� 䠩��-ᯨ᪠" "������� �&���ন��� �����" +"�⮡�&���� ����� �� ������" "�����&�࠭�� ०��" @@ -49,3 +52,4 @@ "���࠭��� ᯨ᮪ ���" "������� ᮤ�ন��� �����?" +"�⮡ࠦ��� ����� �� ������?" Index: TmpClass.hpp =================================================================== --- TmpClass.hpp (revision 2545) +++ TmpClass.hpp (working copy) @@ -23,7 +23,6 @@ void ProcessSaveListKey(); void ProcessPanelSwitchMenu(); void SwitchToPanel (int NewPanelIndex); - void FindSearchResultsPanel(); void SaveListFile (const TCHAR *Path); int IsCurrentFileCorrect (TCHAR *pCurFileName); @@ -45,7 +44,7 @@ HANDLE BeginPutFiles(); void CommitPutFiles (HANDLE hRestoreScreen, int Success); int PutOneFile (PluginPanelItem &PanelItem); - + void FindSearchResultsPanel(); int SetFindList(const struct PluginPanelItem *PanelItem,int ItemsNumber); int ProcessEvent(int Event,void *Param); int ProcessKey(int Key,unsigned int ControlState); |
|
после захода в .temp файл и выхода с панели плагина по <..> не возвращались в исходную папку - к сожалению, комплексный патч № 3, чтоб не путаться. |
2009-02-21 10:41
|
!work4.diff (27,330 bytes)
Index: TmpPanel.rc =================================================================== --- TmpPanel.rc (revision 2545) +++ TmpPanel.rc (working copy) @@ -1,6 +1,6 @@ #include "farversion.hpp" -#define PLUGIN_BUILD 46 +#define PLUGIN_BUILD 47 #define PLUGIN_DESC "Temp Panel for FAR Manager" #define PLUGIN_NAME "TmpPanel" #define PLUGIN_FILENAME "TmpPanel.dll" Index: TmpLng.hpp =================================================================== --- TmpLng.hpp (revision 2545) +++ TmpLng.hpp (working copy) @@ -12,6 +12,7 @@ MTempPanelTitleNum, MDiskMenuString, + MPluginMenuStringBranch, MF7, MAltShiftF12, @@ -28,6 +29,7 @@ MConfigAddToDisksMenu, MConfigDisksMenuDigit, MConfigAddToPluginsMenu, + MConfigPluginsMenuBranch, MConfigCommonPanel, MSafeModePanel, @@ -36,6 +38,7 @@ MReplaceInFilelist, MMenuForFilelist, MCopyContens, + MShowDir, MFullScreenPanel, @@ -51,7 +54,8 @@ MNewPanelForSearchResults, MListFilePath, - MCopyContensMsg + MCopyContensMsg, + MShowDirMsg }; #endif /* __TMPLNG_HPP__ */ Index: TmpCfg.cpp =================================================================== --- TmpCfg.cpp (revision 2545) +++ TmpCfg.cpp (working copy) @@ -19,6 +19,7 @@ { AddToDisksMenu, AddToPluginsMenu, + Branch, CommonPanel, SafeModePanel, AnyInPanel, @@ -26,6 +27,7 @@ Mode, MenuForFilelist, NewPanelForSearchResults, + ShowDir, FullScreenPanel, ColumnTypes, ColumnWidths, @@ -38,11 +40,11 @@ options_t Opt; -static const TCHAR REGStr[17][8]= +static const TCHAR REGStr[19][8]= { - _T("InDisks"), _T("InPlug"), + _T("InDisks"), _T("InPlug"), _T("Branch"), _T("Common"), _T("Safe"), _T("Any"), _T("Contens"), - _T("Mode"), _T("Menu"), _T("NewP"), + _T("Mode"), _T("Menu"), _T("NewP"), _T("Dir"), _T("Full"), _T("ColT"), _T("ColW"), _T("StatT"), _T("StatW"), _T("DigitV"), _T("Mask"), _T("Prefix") @@ -58,37 +60,40 @@ static const struct COptionsList OptionsList[]={ {&Opt.AddToDisksMenu , _T("") , 1}, {&Opt.AddToPluginsMenu , _T("") , 4}, + {&Opt.Branch , _T("") , 5}, - {&Opt.CommonPanel , _T("") , 6}, - {&Opt.SafeModePanel , NULL , 7}, - {&Opt.AnyInPanel , NULL , 8}, - {&Opt.CopyContents , NULL , 9}, - {&Opt.Mode , _T("") , 10}, - {&Opt.MenuForFilelist , NULL , 11}, - {&Opt.NewPanelForSearchResults, NULL , 12}, + {&Opt.CommonPanel , _T("") , 7}, + {&Opt.SafeModePanel , NULL , 8}, + {&Opt.AnyInPanel , NULL , 9}, + {&Opt.CopyContents , NULL , 10}, + {&Opt.Mode , _T("") , 11}, + {&Opt.MenuForFilelist , NULL , 12}, + {&Opt.NewPanelForSearchResults, NULL , 13}, + {&Opt.ShowDir , _T("") , 14}, - {&Opt.FullScreenPanel , NULL , 22}, + {&Opt.FullScreenPanel , NULL , 24}, - {Opt.ColumnTypes , _T("N,S") , 15}, - {Opt.ColumnWidths , _T("0,8") , 17}, - {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 19}, - {Opt.StatusColumnWidths , _T("0,8,0,5") , 21}, + {Opt.ColumnTypes , _T("N,S") , 17}, + {Opt.ColumnWidths , _T("0,8") , 19}, + {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 21}, + {Opt.StatusColumnWidths , _T("0,8,0,5") , 23}, {Opt.DisksMenuDigit , _T("1") , 2}, - {Opt.Mask , _T("*.temp") , 25}, - {Opt.Prefix , _T("tmp") , 27}, + {Opt.Mask , _T("*.temp") , 27}, + {Opt.Prefix , _T("tmp") , 29}, }; int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; void GetOptions(void) { + DWORD Type,Size,IntValueData; + TCHAR StrValueData[256]; + HKEY hKey; + RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); + for(int i=AddToDisksMenu;i<=Prefix;i++) { - DWORD Type,Size,IntValueData; - TCHAR StrValueData[256]; - HKEY hKey; - RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); if (i<ColumnTypes) { Size=sizeof(IntValueData); @@ -105,8 +110,14 @@ RegQueryValueEx(hKey,REGStr[i],0,&Type,(BYTE*)StrValueData,&Size)==ERROR_SUCCESS? (TCHAR*)StrValueData:OptionsList[i].pStr); } - RegCloseKey(hKey); } + //save PanelMode + Size=sizeof(IntValueData); Type=REG_DWORD; + Opt.PanelMode=0x34; + if (RegQueryValueEx(hKey, _T("PanelMode"),0,&Type,(BYTE *)&IntValueData,&Size)==ERROR_SUCCESS) + Opt.PanelMode=(IntValueData>=0x30 && IntValueData<=0x39?IntValueData:0x34); + + RegCloseKey(hKey); } const int DIALOG_WIDTH = 78; @@ -122,46 +133,48 @@ /* 2*/ {DI_FIXEDIT, 7, 3, 7, 3, 0, -1}, /* 3*/ {DI_TEXT, 9, 3, 0, 0, 0, MConfigDisksMenuDigit}, /* 4*/ {DI_CHECKBOX, DC, 2, 0, 0, 0, MConfigAddToPluginsMenu}, - /* 5*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /* 5*/ {DI_CHECKBOX,DC+3,3, 0, 0, 0, MConfigPluginsMenuBranch}, + /* 6*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /* 6*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, - /* 7*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, - /* 8*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, - /* 9*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, - /*10*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, - /*11*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, - /*12*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /* 7*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, + /* 8*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, + /* 9*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, + /*10*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, + /*11*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, + /*12*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, + /*13*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /*14*/ {DI_CHECKBOX, DC, 8, 0, 0, DIF_3STATE, MShowDir}, - /*13*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*15*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*14*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, - /*15*/ {DI_EDIT, 5,11, 36,11, 0, -1}, - /*16*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, - /*17*/ {DI_EDIT, 5,13, 36,13, 0, -1}, - /*18*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, - /*19*/ {DI_EDIT, DC,11, 72,11, 0, -1}, - /*20*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, - /*21*/ {DI_EDIT, DC,13, 72,13, 0, -1}, - /*22*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, + /*16*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, + /*17*/ {DI_EDIT, 5,11, 36,11, 0, -1}, + /*18*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, + /*19*/ {DI_EDIT, 5,13, 36,13, 0, -1}, + /*20*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, + /*21*/ {DI_EDIT, DC,11, 72,11, 0, -1}, + /*22*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, + /*23*/ {DI_EDIT, DC,13, 72,13, 0, -1}, + /*24*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, - /*23*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*25*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*24*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, - /*25*/ {DI_EDIT, 5,17, 36,17, 0, -1}, - /*26*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, - /*27*/ {DI_EDIT, DC,17, 72,17, 0, -1}, + /*26*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, + /*27*/ {DI_EDIT, 5,17, 36,17, 0, -1}, + /*28*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, + /*29*/ {DI_EDIT, DC,17, 72,17, 0, -1}, - /*28*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*30*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*29*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, - /*30*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} + /*31*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, + /*32*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} }; int i; struct FarDialogItem DialogItems[ArraySize(InitItems)]; InitDialogItems(InitItems,DialogItems,ArraySize(InitItems)); - DialogItems[29].DefaultButton=1; + DialogItems[31].DefaultButton=1; DialogItems[2].Focus=1; GetOptions(); Index: TmpPanel.cpp =================================================================== --- TmpPanel.cpp (revision 2545) +++ TmpPanel.cpp (working copy) @@ -13,7 +13,7 @@ struct PluginStartupInfo Info; struct FarStandardFunctions FSF; BOOL IsOldFAR; - +TCHAR StartupCurDir[MAX_PATH]; PluginPanels CommonPanels[COMMONPANELSNUMBER]; #if defined(__GNUC__) @@ -85,6 +85,8 @@ HANDLE hPlugin=INVALID_HANDLE_VALUE; GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); StartupOpenFrom=OpenFrom; if(OpenFrom==OPEN_COMMANDLINE) @@ -166,6 +168,48 @@ { hPlugin=new TmpPanel(); if(hPlugin==NULL) return(INVALID_HANDLE_VALUE); + + // ������� [x] in mode Branch + if (Opt.AddToPluginsMenu && Opt.Branch && OpenFrom==OPEN_PLUGINSMENU) + { + PanelInfo PInfo; +#ifndef UNICODE + if (!Info.Control(INVALID_HANDLE_VALUE, FCTL_GETPANELINFO, &PInfo)) +#else + if (!Info.Control(PANEL_ACTIVE,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo)) +#endif + return(INVALID_HANDLE_VALUE); + + ((TmpPanel *)hPlugin)->FindSearchResultsPanel(); + if (Opt.Mode) + { + FreePanelItems(CommonPanels[CurrentCommonPanel].Items, + CommonPanels[CurrentCommonPanel].ItemsNumber); + CommonPanels[CurrentCommonPanel].Items=(PluginPanelItem*)malloc(sizeof(PluginPanelItem)); + CommonPanels[CurrentCommonPanel].ItemsNumber=0; + } + HANDLE hScreen = ((TmpPanel *)hPlugin)->BeginPutFiles(); + for (int i=0; i<PInfo.SelectedItemsNumber; i++) + { +#ifndef UNICODE + if (!((TmpPanel *)hPlugin)->PutOneFile(PInfo.SelectedItems[i])) + { +#else + PluginPanelItem PPI; + Info.Control(PANEL_ACTIVE, FCTL_GETSELECTEDPANELITEM,i,(LONG_PTR)&PPI); + if (!((TmpPanel *)hPlugin)->PutOneFile(PPI)) + { + Info.Control(PANEL_ACTIVE, FCTL_FREEPANELITEM,i,(LONG_PTR)&PPI); +#endif + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, false); + return(INVALID_HANDLE_VALUE); + } +#ifdef UNICODE + Info.Control(PANEL_ACTIVE, FCTL_FREEPANELITEM,i,(LONG_PTR)&PPI); +#endif + } + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, true); + } } return(hPlugin); } @@ -395,14 +439,32 @@ TCHAR **argv; #ifndef UNICODE static const int ANSI = FALSE; -#else - wchar_t tmpstr[128][COMMONPANELSNUMBER]; #endif ReadFileList (Name, &argc, &argv WITH_ANSI_ARG); +#ifdef UNICODE + wchar_t **TMPArray=(wchar_t**)malloc(argc*sizeof(wchar_t*)); + if (TMPArray) + { + int ret; + for (int i=0;i<argc;i++) + if (ret=!(TMPArray[i]=(wchar_t*)malloc(68*sizeof(wchar_t)))) break; + + if (ret) + { + for (int i=0;i<argc;i++) + if (TMPArray[i]) free(TMPArray[i]); + free(TMPArray); + if (argv) free(argv); + return; + } + } +#endif + FarMenuItem *fmi=(FarMenuItem*)malloc(argc*sizeof(FarMenuItem)); - if(fmi) + if (fmi) { + memset(fmi,0,argc*sizeof(FarMenuItem)); TCHAR TMP[MAX_PATH]; for(int i=0;i<argc;++i) { @@ -411,13 +473,11 @@ param=ParseParam(p); FSF.TruncStr(param?param:p,67); #ifndef UNICODE -#define _OUT fmi[i].Text + lstrcpy(fmi[i].Text,(param?param:p)); #else -#define _OUT tmpstr[i] - fmi[i].Text = _OUT; + lstrcpy(TMPArray[i],(param?param:p)); + fmi[i].Text = TMPArray[i]; #endif - lstrcpy(_OUT,param?param:p); -#undef _OUT fmi[i].Separator=!lstrcmp(param,_T("-")); } // fmi[0].Selected=TRUE; @@ -435,6 +495,11 @@ int ExitCode=Info.Menu(Info.ModuleNumber, -1, -1, 0, FMENU_WRAPMODE, Title, NULL, _T("Contents"), &BreakKeys[0], &BreakCode, fmi, argc); +#ifdef UNICODE + for (int i=0;i<argc;i++) + if (TMPArray[i]) free(TMPArray[i]); + free(TMPArray); +#endif free(fmi); if((unsigned)ExitCode<(unsigned)argc) { @@ -498,6 +563,11 @@ return(INVALID_HANDLE_VALUE); #undef PNAME_ARG + //save PanelMode + GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); + if(!Opt.MenuForFilelist) { HANDLE hPlugin=new TmpPanel(); @@ -548,7 +618,7 @@ Info->DiskMenuNumbers=DiskMenuNumbers; Info->DiskMenuStringsNumber=Opt.AddToDisksMenu?ArraySize(DiskMenuStrings):0; static const TCHAR *PluginMenuStrings[1]; - PluginMenuStrings[0]=GetMsg(MTempPanel); + PluginMenuStrings[0]=Opt.Branch?GetMsg(MPluginMenuStringBranch):GetMsg(MTempPanel); Info->PluginMenuStrings=Opt.AddToPluginsMenu?PluginMenuStrings:NULL; Info->PluginMenuStringsNumber=Opt.AddToPluginsMenu?ArraySize(PluginMenuStrings):0; static const TCHAR *PluginCfgStrings[1]; @@ -610,8 +680,8 @@ int WINAPI EXP_NAME(GetMinFarVersion)(void) { #ifndef UNICODE - return(MAKEFARVERSION(1,70,1024)); + return(MAKEFARVERSION(1,70,2087)); #else - return(MAKEFARVERSION(1,80,557)); + return(MAKEFARVERSION(2,0,753)); #endif } Index: TmpRus.hlf =================================================================== --- TmpRus.hlf (revision 2545) +++ TmpRus.hlf (working copy) @@ -72,6 +72,10 @@ #�������� � ���� ��������# ����蠥� ���������� � ���� ���譨� ���㫥� �㭪� "�६����� ������". + #� ०��� "���� ��⠫���"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #�ᯮ�짮���� ����� ������# �� ���� ࠧ�蠥� �ᯮ�짮����� ��饩 �६����� ������, ᮤ�ন��� ���ன ��࠭���� �� �� �����⨨. @@ -114,6 +118,9 @@ �� ����⨨ #Enter# �� ����� ������, �� ��饬�� ॠ��� ������ 䠩��, ��� ����� �㤥� ���� � ��������� ��ப� FAR. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #������� ᮤ�ন��� �����# : �� �������� ��⠫���� �� �६����� ������, ��।����, ������ �� ����� � ��⠫����� ��������� ᮤ�ঠ騥�� � ��� 䠩��. @@ -160,6 +167,12 @@ �६����� ������. ����� ��ࠧ��, ����� ��࠭��� १����� ���쪨� ����権 ���᪠ � ࠡ���� � ���� �����६����. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #���� �������# #���� ������� ��ப� �����#, #��ਭ� �������# #��ਭ� ������� ��ப� �����# #[ ] ������࠭�� ०��# : ~+full~@CMD@ Index: TmpEng.hlf =================================================================== --- TmpEng.hlf (revision 2545) +++ TmpEng.hlf (working copy) @@ -72,6 +72,10 @@ #Add to plugins menu# Enables adding the "Temporary" item to the plugins menu. + #In mode "Branch"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #Use common panel# When enabled, a common temporary panel is created and its contents is stored even after closing the panel. When this option is not enabled, @@ -112,6 +116,9 @@ When #Enter# is pressed on an element that is not a real file name, its text will be copied to the FAR command line. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #Copy folders contents# When copying folders to the temporary panel, controls whether files are also copied to the panel. If set to the undefined state @@ -156,6 +163,12 @@ This allows to save the results of multiple search operations and work with them at the same time. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #Column types# #Status line column types# #Column widths# #Status line column widths# #[ ] Full screen mode# : ~+full~@CMD@ Index: TmpPanel.hpp =================================================================== --- TmpPanel.hpp (revision 2545) +++ TmpPanel.hpp (working copy) @@ -42,7 +42,7 @@ extern int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; extern TCHAR PluginRootKey[80]; - +extern TCHAR StartupCurDir[MAX_PATH]; const TCHAR *GetMsg(int MsgId); void InitDialogItems(const MyInitDialogItem *Init,struct FarDialogItem *Item,int ItemsNumber); Index: TmpCfg.hpp =================================================================== --- TmpCfg.hpp (revision 2545) +++ TmpCfg.hpp (working copy) @@ -5,6 +5,7 @@ { int AddToDisksMenu; int AddToPluginsMenu; + int Branch; int CommonPanel; int SafeModePanel; int AnyInPanel; @@ -12,7 +13,10 @@ int Mode; int MenuForFilelist; int NewPanelForSearchResults; + int ShowDir; + int SelectedShowDir; int FullScreenPanel; + int PanelMode; int LastSearchResultsPanel; int SelectedCopyContents; TCHAR ColumnTypes[64]; Index: TmpClass.cpp =================================================================== --- TmpClass.cpp (revision 2545) +++ TmpClass.cpp (working copy) @@ -32,7 +32,7 @@ IfOptCommonPanel(); #ifndef UNICODE struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); UpdateItems(IsOwnersDisplayed (PInfo.ColumnTypes),IsLinksDisplayed (PInfo.ColumnTypes)); #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); @@ -82,7 +82,8 @@ Info->PanelModesArray=PanelModesArray; Info->PanelModesNumber=ArraySize(PanelModesArray); - Info->StartPanelMode=_T('4'); + // save PanelMode + Info->StartPanelMode=(Opt.FullScreenPanel!=StartupOptFullScreenPanel?_T('4'):Opt.PanelMode); static struct KeyBarTitles KeyBar; memset(&KeyBar,0,sizeof(KeyBar)); KeyBar.Titles[7-1]=(TCHAR*)GetMsg(MF7); @@ -96,18 +97,16 @@ int TmpPanel::SetDirectory(const TCHAR *Dir,int OpMode) { - if((OpMode & OPM_FIND)/* || lstrcmp(Dir,_T("\\"))==0*/) + if(OpMode & OPM_FIND) return(FALSE); if(lstrcmp(Dir,_T("\\"))==0) #ifndef UNICODE Info.Control(this,FCTL_CLOSEPLUGIN,(void*)NULL); + else + Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); #else Info.Control(this,FCTL_CLOSEPLUGIN,0,NULL); -#endif else -#ifndef UNICODE - Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); -#else Info.Control(this,FCTL_CLOSEPLUGIN,0,(LONG_PTR)Dir); #endif return(TRUE); @@ -135,6 +134,7 @@ { IfOptCommonPanel(); Opt.SelectedCopyContents = Opt.CopyContents; + Opt.SelectedShowDir=Opt.ShowDir; HANDLE hScreen=Info.SaveScreen(0,0,-1,-1); const TCHAR *MsgItems[]={GetMsg(MTempPanel),GetMsg(MTempSendFiles)}; @@ -188,6 +188,14 @@ lstrcat(wp, PanelItem.FindData.lpwszFileName); CurPanelItem->FindData.lpwszFileName = wp; #endif + // add [ ] ShowDir + if (Opt.SelectedShowDir==2 && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + const TCHAR *MsgItems[]={GetMsg(MWarning),GetMsg(MShowDirMsg)}; + Opt.SelectedShowDir=!Info.Message(Info.ModuleNumber,FMSG_MB_YESNO,_T("Config"),MsgItems, + sizeof(MsgItems)/sizeof(MsgItems[0]),0); + } + if(Opt.SelectedCopyContents && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if (Opt.SelectedCopyContents==2) @@ -340,9 +348,17 @@ { struct PluginPanelItem *CurItem=TmpPanelItem; for(int i=0;i<TmpItemsNumber-1;i++,CurItem++) - if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0) + { + if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0 + // add [ ] ShowDir + || ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) ) CurItem->Flags|=REMOVE_FLAG; - RemoveEmptyItems(); + } + if ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) + CurItem->Flags|=REMOVE_FLAG; + RemoveEmptyItems(); } @@ -488,14 +504,18 @@ int TmpPanel::ProcessEvent(int Event,void *) { + struct PanelInfo PInfo; +#ifndef UNICODE + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); +#else + Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); +#endif + if(Event==FE_CHANGEVIEWMODE) { - IfOptCommonPanel(); #ifndef UNICODE - struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); - int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; - int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; + int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; + int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); wchar_t* ColumnTypes=new wchar_t[Size]; @@ -518,21 +538,32 @@ #endif } } + // save PanelMode + else if (Event==FE_CLOSE) + { + PInfo.ViewMode += 0x30; + HKEY hKey; DWORD Disposition; + if (Opt.FullScreenPanel==StartupOptFullScreenPanel && RegCreateKeyEx(HKEY_CURRENT_USER, + PluginRootKey,0,NULL,0,KEY_WRITE,NULL, &hKey,&Disposition)==ERROR_SUCCESS) + { + RegSetValueEx(hKey,_T("PanelMode"),0,REG_DWORD,(LPBYTE)&PInfo.ViewMode,sizeof(int)); + RegCloseKey(hKey); + } + } return(FALSE); } int TmpPanel::IsCurrentFileCorrect (TCHAR *pCurFileName) { - struct PanelInfo PInfo; TCHAR CurFileName[NM]; #ifndef UNICODE + struct PanelInfo PInfo; Info.Control(this,FCTL_GETPANELINFO,&PInfo); lstrcpy(CurFileName, PInfo.PanelItems[PInfo.CurrentItem].FindData.cFileName); #else - Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); PluginPanelItem PPI; - Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,(LONG_PTR)&PPI); + Info.Control(this,FCTL_GETCURRENTPANELITEM,0,(LONG_PTR)&PPI); lstrcpy(CurFileName,PPI.FindData.lpwszFileName); Info.Control(this,FCTL_FREEPANELITEM,0,(LONG_PTR)&PPI); #endif @@ -581,16 +612,13 @@ if (PInfo.PanelItems[PInfo.CurrentItem].FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { + Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); #else PluginPanelItem PPI; Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,(LONG_PTR)&PPI); if(PPI.FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { Info.Control(this,FCTL_FREEPANELITEM,0,(LONG_PTR)&PPI); -#endif -#ifndef UNICODE - Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); -#else Info.Control(PANEL_PASSIVE, FCTL_SETPANELDIR,0,(LONG_PTR)&CurFileName); #endif } @@ -612,10 +640,11 @@ return(TRUE); } - if(ControlState==0 && Key==VK_RETURN && Opt.AnyInPanel) + if(ControlState==0 && Key==VK_RETURN) { TCHAR CurFileName [NM]; - if (!IsCurrentFileCorrect (CurFileName)) + BOOL Ret; + if (!(Ret=IsCurrentFileCorrect(CurFileName)) && Opt.AnyInPanel) { #ifndef UNICODE Info.Control(this,FCTL_SETCMDLINE,&CurFileName); @@ -624,6 +653,12 @@ #endif return(TRUE); } + // �� ���� � ������ �� <..> ������� ������ ����� + if (Ret && !lstrcmp(CurFileName,_T(".."))) + { + SetDirectory(StartupCurDir,0); + return(TRUE); + } } if (Opt.SafeModePanel && ControlState == PKF_CONTROL && Key == VK_PRIOR) Index: TmpEng.lng =================================================================== --- TmpEng.lng (revision 2545) +++ TmpEng.lng (working copy) @@ -9,6 +9,7 @@ " %sTemporary panel [%d] " "temporary" +"Temporary panel - branch" "Remove" "Switch" @@ -23,8 +24,9 @@ "Temporary panel" "Add to &Disks menu" -"Disks menu &hotkey ('1'-'9'). Leave empty to autoassign" +"Disks menu &hotkey ('1'-'9')" "Add to &Plugins menu" +"In mode "&Branch"" "Use &common panel" "&Safe panel mode" @@ -33,6 +35,7 @@ "&Replace files with file list" "&Menu from file list" "Copy folder c&ontents" +"Show fold&ers in panel" "F&ull screen mode" @@ -49,3 +52,4 @@ "Save file list as" "Copy folder contents?" +"Show folders in panel?" \ No newline at end of file Index: TmpRus.lng =================================================================== --- TmpRus.lng (revision 2545) +++ TmpRus.lng (working copy) @@ -9,6 +9,7 @@ " %s�६����� ������ [%d] " "�६�����" +"�६����� ������ - ���� ��⠫���" "�����" "�롮�" @@ -23,8 +24,9 @@ "�६����� ������" "�������� � ���� &���" -"&������ ����㯠 ('1'-'9'). � �� �������, �����砥��� ᠬ�" +"&������ ����㯠 ('1'-'9')" "�������� � ���� &��������" +"� ०��� "&���� ��⠫���"" "�ᯮ�짮���� &����� ������" "&�������� ०�� ������" @@ -33,6 +35,7 @@ ""&������" ��� 䠩��-ᯨ᪠" "&���� �� 䠩��-ᯨ᪠" "������� �&���ন��� �����" +"�⮡�&���� ����� �� ������" "�����&�࠭�� ०��" @@ -49,3 +52,4 @@ "���࠭��� ᯨ᮪ ���" "������� ᮤ�ন��� �����?" +"�⮡ࠦ��� ����� �� ������?" Index: TmpClass.hpp =================================================================== --- TmpClass.hpp (revision 2545) +++ TmpClass.hpp (working copy) @@ -23,7 +23,6 @@ void ProcessSaveListKey(); void ProcessPanelSwitchMenu(); void SwitchToPanel (int NewPanelIndex); - void FindSearchResultsPanel(); void SaveListFile (const TCHAR *Path); int IsCurrentFileCorrect (TCHAR *pCurFileName); @@ -45,7 +44,7 @@ HANDLE BeginPutFiles(); void CommitPutFiles (HANDLE hRestoreScreen, int Success); int PutOneFile (PluginPanelItem &PanelItem); - + void FindSearchResultsPanel(); int SetFindList(const struct PluginPanelItem *PanelItem,int ItemsNumber); int ProcessEvent(int Event,void *Param); int ProcessKey(int Key,unsigned int ControlState); |
|
комплексный патч № 4 (интересно, это кому-нибудь помогает... :-) - в уникоде в меню из .temp файла попадал мусор. - меню вообще было криво портировано. из-за изменений внесенных DrKnS в последнии версии уникодного фара плагины (да и сам фар) теперь не переходит в пути вида С: - так что это не глюк плагина. PS последнее исправлено DrKnS в 779 фаре. |
|
адаптация к FAR 2.0.789 |
2009-02-28 05:58
|
!work5.diff (28,120 bytes)
Index: TmpPanel.rc =================================================================== --- TmpPanel.rc (revision 2646) +++ TmpPanel.rc (working copy) @@ -1,6 +1,6 @@ #include "farversion.hpp" -#define PLUGIN_BUILD 47 +#define PLUGIN_BUILD 48 #define PLUGIN_DESC "Temp Panel for FAR Manager" #define PLUGIN_NAME "TmpPanel" #define PLUGIN_FILENAME "TmpPanel.dll" Index: TmpLng.hpp =================================================================== --- TmpLng.hpp (revision 2646) +++ TmpLng.hpp (working copy) @@ -12,6 +12,7 @@ MTempPanelTitleNum, MDiskMenuString, + MPluginMenuStringBranch, MF7, MAltShiftF12, @@ -28,6 +29,7 @@ MConfigAddToDisksMenu, MConfigDisksMenuDigit, MConfigAddToPluginsMenu, + MConfigPluginsMenuBranch, MConfigCommonPanel, MSafeModePanel, @@ -36,6 +38,7 @@ MReplaceInFilelist, MMenuForFilelist, MCopyContens, + MShowDir, MFullScreenPanel, @@ -51,7 +54,8 @@ MNewPanelForSearchResults, MListFilePath, - MCopyContensMsg + MCopyContensMsg, + MShowDirMsg }; #endif /* __TMPLNG_HPP__ */ Index: TmpPanel.cpp =================================================================== --- TmpPanel.cpp (revision 2646) +++ TmpPanel.cpp (working copy) @@ -13,7 +13,7 @@ struct PluginStartupInfo Info; struct FarStandardFunctions FSF; BOOL IsOldFAR; - +TCHAR StartupCurDir[MAX_PATH]; PluginPanels CommonPanels[COMMONPANELSNUMBER]; #if defined(__GNUC__) @@ -85,6 +85,8 @@ HANDLE hPlugin=INVALID_HANDLE_VALUE; GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); StartupOpenFrom=OpenFrom; if(OpenFrom==OPEN_COMMANDLINE) @@ -166,6 +168,52 @@ { hPlugin=new TmpPanel(); if(hPlugin==NULL) return(INVALID_HANDLE_VALUE); + + // ������� [x] in mode Branch + if (Opt.AddToPluginsMenu && Opt.Branch && OpenFrom==OPEN_PLUGINSMENU) + { + PanelInfo PInfo; +#ifndef UNICODE + if (!Info.Control(INVALID_HANDLE_VALUE, FCTL_GETPANELINFO, &PInfo)) +#else + if (!Info.Control(PANEL_ACTIVE,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo)) +#endif + return(INVALID_HANDLE_VALUE); + + ((TmpPanel *)hPlugin)->FindSearchResultsPanel(); + if (Opt.Mode) + { + FreePanelItems(CommonPanels[CurrentCommonPanel].Items, + CommonPanels[CurrentCommonPanel].ItemsNumber); + CommonPanels[CurrentCommonPanel].Items=(PluginPanelItem*)malloc(sizeof(PluginPanelItem)); + CommonPanels[CurrentCommonPanel].ItemsNumber=0; + } + HANDLE hScreen = ((TmpPanel *)hPlugin)->BeginPutFiles(); + for (int i=0; i<PInfo.SelectedItemsNumber; i++) + { +#ifndef UNICODE + if (!((TmpPanel *)hPlugin)->PutOneFile(PInfo.SelectedItems[i])) + { + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, false); + return(INVALID_HANDLE_VALUE); + } +#else + PluginPanelItem* PPI=(PluginPanelItem*)malloc(Info.Control(PANEL_ACTIVE,FCTL_GETSELECTEDPANELITEM,i,0)); + if (PPI) + { + Info.Control(PANEL_ACTIVE,FCTL_GETSELECTEDPANELITEM,i,(LONG_PTR)PPI); + if (!((TmpPanel *)hPlugin)->PutOneFile(*PPI)) + { + free(PPI); + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, false); + return(INVALID_HANDLE_VALUE); + } + free(PPI); + } +#endif + } + ((TmpPanel *)hPlugin)->CommitPutFiles(hScreen, true); + } } return(hPlugin); } @@ -395,14 +443,32 @@ TCHAR **argv; #ifndef UNICODE static const int ANSI = FALSE; -#else - wchar_t tmpstr[128][COMMONPANELSNUMBER]; #endif ReadFileList (Name, &argc, &argv WITH_ANSI_ARG); +#ifdef UNICODE + wchar_t **TMPArray=(wchar_t**)malloc(argc*sizeof(wchar_t*)); + if (TMPArray) + { + int ret; + for (int i=0;i<argc;i++) + if (ret=!(TMPArray[i]=(wchar_t*)malloc(68*sizeof(wchar_t)))) break; + + if (ret) + { + for (int i=0;i<argc;i++) + if (TMPArray[i]) free(TMPArray[i]); + free(TMPArray); + if (argv) free(argv); + return; + } + } +#endif + FarMenuItem *fmi=(FarMenuItem*)malloc(argc*sizeof(FarMenuItem)); - if(fmi) + if (fmi) { + memset(fmi,0,argc*sizeof(FarMenuItem)); TCHAR TMP[MAX_PATH]; for(int i=0;i<argc;++i) { @@ -411,13 +477,11 @@ param=ParseParam(p); FSF.TruncStr(param?param:p,67); #ifndef UNICODE -#define _OUT fmi[i].Text + lstrcpy(fmi[i].Text,(param?param:p)); #else -#define _OUT tmpstr[i] - fmi[i].Text = _OUT; + lstrcpy(TMPArray[i],(param?param:p)); + fmi[i].Text = TMPArray[i]; #endif - lstrcpy(_OUT,param?param:p); -#undef _OUT fmi[i].Separator=!lstrcmp(param,_T("-")); } // fmi[0].Selected=TRUE; @@ -435,13 +499,18 @@ int ExitCode=Info.Menu(Info.ModuleNumber, -1, -1, 0, FMENU_WRAPMODE, Title, NULL, _T("Contents"), &BreakKeys[0], &BreakCode, fmi, argc); +#ifdef UNICODE + for (int i=0;i<argc;i++) + if (TMPArray[i]) free(TMPArray[i]); + free(TMPArray); +#endif free(fmi); if((unsigned)ExitCode<(unsigned)argc) { ExpandEnvStrs(argv[ExitCode],TMP,ArraySize(TMP)); TCHAR *p=TMP; ParseParam(p); - + //MessageBox(0,p,L"p",MB_OK); FAR_FIND_DATA FindData; int bShellExecute=BreakCode!=-1; @@ -449,6 +518,7 @@ { if(TmpPanel::CheckForCorrect(p,&FindData,FALSE)) { + //MessageBox(0,p,L"p2",MB_OK); if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) #ifndef UNICODE Info.Control(INVALID_HANDLE_VALUE,FCTL_SETPANELDIR,p); @@ -498,6 +568,11 @@ return(INVALID_HANDLE_VALUE); #undef PNAME_ARG + //save PanelMode + GetOptions(); + // �� �������� � ����� ����� �� <..> + GetCurrentDirectory(sizeof(StartupCurDir),StartupCurDir); + if(!Opt.MenuForFilelist) { HANDLE hPlugin=new TmpPanel(); @@ -548,7 +623,7 @@ Info->DiskMenuNumbers=DiskMenuNumbers; Info->DiskMenuStringsNumber=Opt.AddToDisksMenu?ArraySize(DiskMenuStrings):0; static const TCHAR *PluginMenuStrings[1]; - PluginMenuStrings[0]=GetMsg(MTempPanel); + PluginMenuStrings[0]=Opt.Branch?GetMsg(MPluginMenuStringBranch):GetMsg(MTempPanel); Info->PluginMenuStrings=Opt.AddToPluginsMenu?PluginMenuStrings:NULL; Info->PluginMenuStringsNumber=Opt.AddToPluginsMenu?ArraySize(PluginMenuStrings):0; static const TCHAR *PluginCfgStrings[1]; @@ -610,8 +685,8 @@ int WINAPI EXP_NAME(GetMinFarVersion)(void) { #ifndef UNICODE - return(MAKEFARVERSION(1,70,1024)); + return(MAKEFARVERSION(1,70,2087)); #else - return(MAKEFARVERSION(1,80,557)); + return(MAKEFARVERSION(2,0,789)); #endif } Index: TmpCfg.cpp =================================================================== --- TmpCfg.cpp (revision 2646) +++ TmpCfg.cpp (working copy) @@ -19,6 +19,7 @@ { AddToDisksMenu, AddToPluginsMenu, + Branch, CommonPanel, SafeModePanel, AnyInPanel, @@ -26,6 +27,7 @@ Mode, MenuForFilelist, NewPanelForSearchResults, + ShowDir, FullScreenPanel, ColumnTypes, ColumnWidths, @@ -38,11 +40,11 @@ options_t Opt; -static const TCHAR REGStr[17][8]= +static const TCHAR REGStr[19][8]= { - _T("InDisks"), _T("InPlug"), + _T("InDisks"), _T("InPlug"), _T("Branch"), _T("Common"), _T("Safe"), _T("Any"), _T("Contens"), - _T("Mode"), _T("Menu"), _T("NewP"), + _T("Mode"), _T("Menu"), _T("NewP"), _T("Dir"), _T("Full"), _T("ColT"), _T("ColW"), _T("StatT"), _T("StatW"), _T("DigitV"), _T("Mask"), _T("Prefix") @@ -58,37 +60,40 @@ static const struct COptionsList OptionsList[]={ {&Opt.AddToDisksMenu , _T("") , 1}, {&Opt.AddToPluginsMenu , _T("") , 4}, + {&Opt.Branch , _T("") , 5}, - {&Opt.CommonPanel , _T("") , 6}, - {&Opt.SafeModePanel , NULL , 7}, - {&Opt.AnyInPanel , NULL , 8}, - {&Opt.CopyContents , NULL , 9}, - {&Opt.Mode , _T("") , 10}, - {&Opt.MenuForFilelist , NULL , 11}, - {&Opt.NewPanelForSearchResults, NULL , 12}, + {&Opt.CommonPanel , _T("") , 7}, + {&Opt.SafeModePanel , NULL , 8}, + {&Opt.AnyInPanel , NULL , 9}, + {&Opt.CopyContents , NULL , 10}, + {&Opt.Mode , _T("") , 11}, + {&Opt.MenuForFilelist , NULL , 12}, + {&Opt.NewPanelForSearchResults, NULL , 13}, + {&Opt.ShowDir , _T("") , 14}, - {&Opt.FullScreenPanel , NULL , 22}, + {&Opt.FullScreenPanel , NULL , 24}, - {Opt.ColumnTypes , _T("N,S") , 15}, - {Opt.ColumnWidths , _T("0,8") , 17}, - {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 19}, - {Opt.StatusColumnWidths , _T("0,8,0,5") , 21}, + {Opt.ColumnTypes , _T("N,S") , 17}, + {Opt.ColumnWidths , _T("0,8") , 19}, + {Opt.StatusColumnTypes , _T("NR,SC,D,T") , 21}, + {Opt.StatusColumnWidths , _T("0,8,0,5") , 23}, {Opt.DisksMenuDigit , _T("1") , 2}, - {Opt.Mask , _T("*.temp") , 25}, - {Opt.Prefix , _T("tmp") , 27}, + {Opt.Mask , _T("*.temp") , 27}, + {Opt.Prefix , _T("tmp") , 29}, }; int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; void GetOptions(void) { + DWORD Type,Size,IntValueData; + TCHAR StrValueData[256]; + HKEY hKey; + RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); + for(int i=AddToDisksMenu;i<=Prefix;i++) { - DWORD Type,Size,IntValueData; - TCHAR StrValueData[256]; - HKEY hKey; - RegOpenKeyEx(HKEY_CURRENT_USER,PluginRootKey,0,KEY_QUERY_VALUE,&hKey); if (i<ColumnTypes) { Size=sizeof(IntValueData); @@ -105,8 +110,14 @@ RegQueryValueEx(hKey,REGStr[i],0,&Type,(BYTE*)StrValueData,&Size)==ERROR_SUCCESS? (TCHAR*)StrValueData:OptionsList[i].pStr); } - RegCloseKey(hKey); } + //save PanelMode + Size=sizeof(IntValueData); Type=REG_DWORD; + Opt.PanelMode=0x34; + if (RegQueryValueEx(hKey, _T("PanelMode"),0,&Type,(BYTE *)&IntValueData,&Size)==ERROR_SUCCESS) + Opt.PanelMode=(IntValueData>=0x30 && IntValueData<=0x39?IntValueData:0x34); + + RegCloseKey(hKey); } const int DIALOG_WIDTH = 78; @@ -122,46 +133,48 @@ /* 2*/ {DI_FIXEDIT, 7, 3, 7, 3, 0, -1}, /* 3*/ {DI_TEXT, 9, 3, 0, 0, 0, MConfigDisksMenuDigit}, /* 4*/ {DI_CHECKBOX, DC, 2, 0, 0, 0, MConfigAddToPluginsMenu}, - /* 5*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /* 5*/ {DI_CHECKBOX,DC+3,3, 0, 0, 0, MConfigPluginsMenuBranch}, + /* 6*/ {DI_TEXT, 5, 4, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /* 6*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, - /* 7*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, - /* 8*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, - /* 9*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, - /*10*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, - /*11*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, - /*12*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /* 7*/ {DI_CHECKBOX, 5, 5, 0, 0, 0, MConfigCommonPanel}, + /* 8*/ {DI_CHECKBOX, 5, 6, 0, 0, 0, MSafeModePanel}, + /* 9*/ {DI_CHECKBOX, 5, 7, 0, 0, 0, MAnyInPanel}, + /*10*/ {DI_CHECKBOX, 5, 8, 0, 0, DIF_3STATE, MCopyContens}, + /*11*/ {DI_CHECKBOX, DC, 5, 0, 0, 0, MReplaceInFilelist}, + /*12*/ {DI_CHECKBOX, DC, 6, 0, 0, 0, MMenuForFilelist}, + /*13*/ {DI_CHECKBOX, DC, 7, 0, 0, 0, MNewPanelForSearchResults}, + /*14*/ {DI_CHECKBOX, DC, 8, 0, 0, DIF_3STATE, MShowDir}, - /*13*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*15*/ {DI_TEXT, 5, 9, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*14*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, - /*15*/ {DI_EDIT, 5,11, 36,11, 0, -1}, - /*16*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, - /*17*/ {DI_EDIT, 5,13, 36,13, 0, -1}, - /*18*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, - /*19*/ {DI_EDIT, DC,11, 72,11, 0, -1}, - /*20*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, - /*21*/ {DI_EDIT, DC,13, 72,13, 0, -1}, - /*22*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, + /*16*/ {DI_TEXT, 5,10, 0, 0, 0, MColumnTypes}, + /*17*/ {DI_EDIT, 5,11, 36,11, 0, -1}, + /*18*/ {DI_TEXT, 5,12, 0, 0, 0, MColumnWidths}, + /*19*/ {DI_EDIT, 5,13, 36,13, 0, -1}, + /*20*/ {DI_TEXT, DC,10, 0, 0, 0, MStatusColumnTypes}, + /*21*/ {DI_EDIT, DC,11, 72,11, 0, -1}, + /*22*/ {DI_TEXT, DC,12, 0, 0, 0, MStatusColumnWidths}, + /*23*/ {DI_EDIT, DC,13, 72,13, 0, -1}, + /*24*/ {DI_CHECKBOX, 5,14, 0, 0, 0, MFullScreenPanel}, - /*23*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*25*/ {DI_TEXT, 5,15, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*24*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, - /*25*/ {DI_EDIT, 5,17, 36,17, 0, -1}, - /*26*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, - /*27*/ {DI_EDIT, DC,17, 72,17, 0, -1}, + /*26*/ {DI_TEXT, 5,16, 0, 0, 0, MMask}, + /*27*/ {DI_EDIT, 5,17, 36,17, 0, -1}, + /*28*/ {DI_TEXT, DC,16, 0, 0, 0, MPrefix}, + /*29*/ {DI_EDIT, DC,17, 72,17, 0, -1}, - /*28*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, + /*30*/ {DI_TEXT, 5,18, 0, 0, DIF_BOXCOLOR|DIF_SEPARATOR, -1}, - /*29*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, - /*30*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} + /*31*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MOk}, + /*32*/ {DI_BUTTON, 0,19, 0, 0, DIF_CENTERGROUP, MCancel} }; int i; struct FarDialogItem DialogItems[ArraySize(InitItems)]; InitDialogItems(InitItems,DialogItems,ArraySize(InitItems)); - DialogItems[29].DefaultButton=1; + DialogItems[31].DefaultButton=1; DialogItems[2].Focus=1; GetOptions(); Index: TmpRus.hlf =================================================================== --- TmpRus.hlf (revision 2646) +++ TmpRus.hlf (working copy) @@ -72,6 +72,10 @@ #�������� � ���� ��������# ����蠥� ���������� � ���� ���譨� ���㫥� �㭪� "�६����� ������". + #� ०��� "���� ��⠫���"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #�ᯮ�짮���� ����� ������# �� ���� ࠧ�蠥� �ᯮ�짮����� ��饩 �६����� ������, ᮤ�ন��� ���ன ��࠭���� �� �� �����⨨. @@ -114,6 +118,9 @@ �� ����⨨ #Enter# �� ����� ������, �� ��饬�� ॠ��� ������ 䠩��, ��� ����� �㤥� ���� � ��������� ��ப� FAR. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #������� ᮤ�ন��� �����# : �� �������� ��⠫���� �� �६����� ������, ��।����, ������ �� ����� � ��⠫����� ��������� ᮤ�ঠ騥�� � ��� 䠩��. @@ -160,6 +167,12 @@ �६����� ������. ����� ��ࠧ��, ����� ��࠭��� १����� ���쪨� ����権 ���᪠ � ࠡ���� � ���� �����६����. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #���� �������# #���� ������� ��ப� �����#, #��ਭ� �������# #��ਭ� ������� ��ப� �����# #[ ] ������࠭�� ०��# : ~+full~@CMD@ Index: TmpEng.hlf =================================================================== --- TmpEng.hlf (revision 2646) +++ TmpEng.hlf (working copy) @@ -72,6 +72,10 @@ #Add to plugins menu# Enables adding the "Temporary" item to the plugins menu. + #In mode "Branch"# + �������� �ᯮ�짮���� "�६����� ������" � ���� ���譨� ���㫥� ��� +������� �� �뤥������ ����⮢ ����� ��ॢ� ����� � 䠩���. + #Use common panel# When enabled, a common temporary panel is created and its contents is stored even after closing the panel. When this option is not enabled, @@ -112,6 +116,9 @@ When #Enter# is pressed on an element that is not a real file name, its text will be copied to the FAR command line. + � ������ #F8# �� ॠ�쭮� ��ꥪ�, ��� ��ꥪ� �㤥� 䨧��᪨ +㤠��� � ���⥫�, �� �� ������ ������� �� ��-�०���� ��⠭���� �����. + #Copy folders contents# When copying folders to the temporary panel, controls whether files are also copied to the panel. If set to the undefined state @@ -156,6 +163,12 @@ This allows to save the results of multiple search operations and work with them at the same time. + #�⮡ࠦ��� ����� �� ������# + �� �������� ��⠫���� �� �६����� ������, ��।����, +������ �� ᠬ� ��⠫��� �⮡ࠦ����� �� ������. +� �� ���� ��室���� � ����।������� ���ﭨ� (#[?]#), �� +������ �������� ��⠫���� �������� �����, �㦭� �� �� �����뢠��. + #Column types# #Status line column types# #Column widths# #Status line column widths# #[ ] Full screen mode# : ~+full~@CMD@ Index: TmpPanel.hpp =================================================================== --- TmpPanel.hpp (revision 2646) +++ TmpPanel.hpp (working copy) @@ -42,7 +42,7 @@ extern int StartupOptFullScreenPanel,StartupOptCommonPanel,StartupOpenFrom; extern TCHAR PluginRootKey[80]; - +extern TCHAR StartupCurDir[MAX_PATH]; const TCHAR *GetMsg(int MsgId); void InitDialogItems(const MyInitDialogItem *Init,struct FarDialogItem *Item,int ItemsNumber); Index: TmpCfg.hpp =================================================================== --- TmpCfg.hpp (revision 2646) +++ TmpCfg.hpp (working copy) @@ -5,6 +5,7 @@ { int AddToDisksMenu; int AddToPluginsMenu; + int Branch; int CommonPanel; int SafeModePanel; int AnyInPanel; @@ -12,7 +13,10 @@ int Mode; int MenuForFilelist; int NewPanelForSearchResults; + int ShowDir; + int SelectedShowDir; int FullScreenPanel; + int PanelMode; int LastSearchResultsPanel; int SelectedCopyContents; TCHAR ColumnTypes[64]; Index: TmpClass.cpp =================================================================== --- TmpClass.cpp (revision 2646) +++ TmpClass.cpp (working copy) @@ -32,7 +32,7 @@ IfOptCommonPanel(); #ifndef UNICODE struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); UpdateItems(IsOwnersDisplayed (PInfo.ColumnTypes),IsLinksDisplayed (PInfo.ColumnTypes)); #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); @@ -82,7 +82,8 @@ Info->PanelModesArray=PanelModesArray; Info->PanelModesNumber=ArraySize(PanelModesArray); - Info->StartPanelMode=_T('4'); + // save PanelMode + Info->StartPanelMode=(Opt.FullScreenPanel!=StartupOptFullScreenPanel?_T('4'):Opt.PanelMode); static struct KeyBarTitles KeyBar; memset(&KeyBar,0,sizeof(KeyBar)); KeyBar.Titles[7-1]=(TCHAR*)GetMsg(MF7); @@ -96,18 +97,16 @@ int TmpPanel::SetDirectory(const TCHAR *Dir,int OpMode) { - if((OpMode & OPM_FIND)/* || lstrcmp(Dir,_T("\\"))==0*/) + if(OpMode & OPM_FIND) return(FALSE); if(lstrcmp(Dir,_T("\\"))==0) #ifndef UNICODE Info.Control(this,FCTL_CLOSEPLUGIN,(void*)NULL); + else + Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); #else Info.Control(this,FCTL_CLOSEPLUGIN,0,NULL); -#endif else -#ifndef UNICODE - Info.Control(this,FCTL_CLOSEPLUGIN,(void*)Dir); -#else Info.Control(this,FCTL_CLOSEPLUGIN,0,(LONG_PTR)Dir); #endif return(TRUE); @@ -135,6 +134,7 @@ { IfOptCommonPanel(); Opt.SelectedCopyContents = Opt.CopyContents; + Opt.SelectedShowDir=Opt.ShowDir; HANDLE hScreen=Info.SaveScreen(0,0,-1,-1); const TCHAR *MsgItems[]={GetMsg(MTempPanel),GetMsg(MTempSendFiles)}; @@ -188,6 +188,14 @@ lstrcat(wp, PanelItem.FindData.lpwszFileName); CurPanelItem->FindData.lpwszFileName = wp; #endif + // add [ ] ShowDir + if (Opt.SelectedShowDir==2 && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + const TCHAR *MsgItems[]={GetMsg(MWarning),GetMsg(MShowDirMsg)}; + Opt.SelectedShowDir=!Info.Message(Info.ModuleNumber,FMSG_MB_YESNO,_T("Config"),MsgItems, + sizeof(MsgItems)/sizeof(MsgItems[0]),0); + } + if(Opt.SelectedCopyContents && NameOnly && (CurPanelItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { if (Opt.SelectedCopyContents==2) @@ -340,9 +348,17 @@ { struct PluginPanelItem *CurItem=TmpPanelItem; for(int i=0;i<TmpItemsNumber-1;i++,CurItem++) - if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0) + { + if(lstrcmp(CurItem->FindData.cFileName,CurItem[1].FindData.cFileName)==0 + // add [ ] ShowDir + || ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) ) CurItem->Flags|=REMOVE_FLAG; - RemoveEmptyItems(); + } + if ( !Opt.SelectedShowDir && (CurItem->FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && lstrcmp(CurItem->FindData.cFileName, _T("..")) ) + CurItem->Flags|=REMOVE_FLAG; + RemoveEmptyItems(); } @@ -488,14 +504,18 @@ int TmpPanel::ProcessEvent(int Event,void *) { + struct PanelInfo PInfo; +#ifndef UNICODE + Info.Control(this,FCTL_GETPANELSHORTINFO,&PInfo); +#else + Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); +#endif + if(Event==FE_CHANGEVIEWMODE) { - IfOptCommonPanel(); #ifndef UNICODE - struct PanelInfo PInfo; - Info.Control(this,FCTL_GETPANELINFO,&PInfo); - int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; - int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; + int UpdateOwners=IsOwnersDisplayed (PInfo.ColumnTypes) && !LastOwnersRead; + int UpdateLinks=IsLinksDisplayed (PInfo.ColumnTypes) && !LastLinksRead; #else int Size=Info.Control(this,FCTL_GETCOLUMNTYPES,0,NULL); wchar_t* ColumnTypes=new wchar_t[Size]; @@ -518,23 +538,34 @@ #endif } } + // save PanelMode + else if (Event==FE_CLOSE) + { + PInfo.ViewMode += 0x30; + HKEY hKey; DWORD Disposition; + if (Opt.FullScreenPanel==StartupOptFullScreenPanel && RegCreateKeyEx(HKEY_CURRENT_USER, + PluginRootKey,0,NULL,0,KEY_WRITE,NULL, &hKey,&Disposition)==ERROR_SUCCESS) + { + RegSetValueEx(hKey,_T("PanelMode"),0,REG_DWORD,(LPBYTE)&PInfo.ViewMode,sizeof(int)); + RegCloseKey(hKey); + } + } return(FALSE); } int TmpPanel::IsCurrentFileCorrect (TCHAR *pCurFileName) { - struct PanelInfo PInfo; TCHAR CurFileName[NM]; #ifndef UNICODE + struct PanelInfo PInfo; Info.Control(this,FCTL_GETPANELINFO,&PInfo); lstrcpy(CurFileName, PInfo.PanelItems[PInfo.CurrentItem].FindData.cFileName); #else - Info.Control(this,FCTL_GETPANELINFO,0,(LONG_PTR)&PInfo); - PluginPanelItem* PPI=(PluginPanelItem*)malloc(Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,0)); + PluginPanelItem* PPI=(PluginPanelItem*)malloc(Info.Control(this,FCTL_GETCURRENTPANELITEM,0,0)); if(PPI) { - Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,(LONG_PTR)PPI); + Info.Control(this,FCTL_GETCURRENTPANELITEM,0,(LONG_PTR)PPI); lstrcpy(CurFileName,PPI->FindData.lpwszFileName); free(PPI); } @@ -584,6 +615,7 @@ if (PInfo.PanelItems[PInfo.CurrentItem].FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { + Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); #else PluginPanelItem* PPI=(PluginPanelItem*)malloc(Info.Control(this,FCTL_GETPANELITEM,PInfo.CurrentItem,0)); DWORD attributes=0; @@ -595,10 +627,6 @@ } if(attributes&FILE_ATTRIBUTE_DIRECTORY) { -#endif -#ifndef UNICODE - Info.Control(INVALID_HANDLE_VALUE, FCTL_SETANOTHERPANELDIR,&CurFileName); -#else Info.Control(PANEL_PASSIVE, FCTL_SETPANELDIR,0,(LONG_PTR)&CurFileName); #endif } @@ -620,10 +648,11 @@ return(TRUE); } - if(ControlState==0 && Key==VK_RETURN && Opt.AnyInPanel) + if(ControlState==0 && Key==VK_RETURN) { TCHAR CurFileName [NM]; - if (!IsCurrentFileCorrect (CurFileName)) + BOOL Ret; + if (!(Ret=IsCurrentFileCorrect(CurFileName)) && Opt.AnyInPanel) { #ifndef UNICODE Info.Control(this,FCTL_SETCMDLINE,&CurFileName); @@ -632,6 +661,12 @@ #endif return(TRUE); } + // �� ���� � ������ �� <..> ������� ������ ����� + if (Ret && !lstrcmp(CurFileName,_T(".."))) + { + SetDirectory(StartupCurDir,0); + return(TRUE); + } } if (Opt.SafeModePanel && ControlState == PKF_CONTROL && Key == VK_PRIOR) Index: TmpEng.lng =================================================================== --- TmpEng.lng (revision 2646) +++ TmpEng.lng (working copy) @@ -9,6 +9,7 @@ " %sTemporary panel [%d] " "temporary" +"Temporary panel - branch" "Remove" "Switch" @@ -23,8 +24,9 @@ "Temporary panel" "Add to &Disks menu" -"Disks menu &hotkey ('1'-'9'). Leave empty to autoassign" +"Disks menu &hotkey ('1'-'9')" "Add to &Plugins menu" +"In mode "&Branch"" "Use &common panel" "&Safe panel mode" @@ -33,6 +35,7 @@ "&Replace files with file list" "&Menu from file list" "Copy folder c&ontents" +"Show fold&ers in panel" "F&ull screen mode" @@ -49,3 +52,4 @@ "Save file list as" "Copy folder contents?" +"Show folders in panel?" \ No newline at end of file Index: TmpRus.lng =================================================================== --- TmpRus.lng (revision 2646) +++ TmpRus.lng (working copy) @@ -9,6 +9,7 @@ " %s�६����� ������ [%d] " "�६�����" +"�६����� ������ - ���� ��⠫���" "�����" "�롮�" @@ -23,8 +24,9 @@ "�६����� ������" "�������� � ���� &���" -"&������ ����㯠 ('1'-'9'). � �� �������, �����砥��� ᠬ�" +"&������ ����㯠 ('1'-'9')" "�������� � ���� &��������" +"� ०��� "&���� ��⠫���"" "�ᯮ�짮���� &����� ������" "&�������� ०�� ������" @@ -33,6 +35,7 @@ ""&������" ��� 䠩��-ᯨ᪠" "&���� �� 䠩��-ᯨ᪠" "������� �&���ন��� �����" +"�⮡�&���� ����� �� ������" "�����&�࠭�� ०��" @@ -49,3 +52,4 @@ "���࠭��� ᯨ᮪ ���" "������� ᮤ�ন��� �����?" +"�⮡ࠦ��� ����� �� ������?" Index: TmpClass.hpp =================================================================== --- TmpClass.hpp (revision 2646) +++ TmpClass.hpp (working copy) @@ -23,7 +23,6 @@ void ProcessSaveListKey(); void ProcessPanelSwitchMenu(); void SwitchToPanel (int NewPanelIndex); - void FindSearchResultsPanel(); void SaveListFile (const TCHAR *Path); int IsCurrentFileCorrect (TCHAR *pCurFileName); @@ -45,7 +44,7 @@ HANDLE BeginPutFiles(); void CommitPutFiles (HANDLE hRestoreScreen, int Success); int PutOneFile (PluginPanelItem &PanelItem); - + void FindSearchResultsPanel(); int SetFindList(const struct PluginPanelItem *PanelItem,int ItemsNumber); int ProcessEvent(int Event,void *Param); int ProcessKey(int Key,unsigned int ControlState); |
|
> Если нажать #F8# на реальном объекте, этот объект будет физически удален с носителя, но на панели плагина он по-прежнему останется виден. Разжуй - в чем прикол? Типа, "ты суслика видишь, а его нет"? |
|
Ага, это еще в фарбагз n-цать лет назад обсуждалось с Будько, я просто тогда у себя в хелпе поправил, а вы у себя нет :) |
|
так напомни, че прикол этого суслика... |
|
н-дя... тяжелый случай, ты ,наверно, панель вообще редко юзаешь :) а тем более F1, прочитай про опцию "Любые элементы в панели". |
|
Блин... я понимаю, что любые элементы. НАХРЕНА оставлять убиенных в панели??? Смысл потаенный каков? В чем фишка того, что после F8 файл на диске убился, а на панели остался? |
|
откуда я знаю, я только в справку добавил описание. |
|
ну так разузнай, прежде чем патч применять, иначе это какая-то фигня получается. наверняка я не первый, кто спросит потом "какого хрена и куда делся файл" |
|
теперь я что-то недопонимаю, функционал "после F8 файл на диске убился, а на панели остался" существует, как я понимаю, с момента рождения плагина. я эту хрень описал, чтоб не вводить в заблуждения узеров, а теперь я еще и виноват остался... |
|
Для меня, как для рядового пользователя, это просто-напросто ошибка. Если какая-то ошибка существует с момента рождения, да ещё и документирована - это не делает её не ошибкой, мне кажется. Тем более, что это не такой уж полезный функционал (оставлять удалённый файл в списке), чтобы кто-то им реально пользовался. Большее количество человек это скорее введёт в заблуждение (вне зависимости от того, описано это в хелпе или нет). |
|
предлагается эту "мнимую фичу" про F8 удалить как класс. |
|
Чего ждёт тикет? |
Date Modified | Username | Field | Change |
---|---|---|---|
2009-01-24 17:09 | samlyukov | New Issue | |
2009-01-24 17:09 | samlyukov | File Added: !work.diff | |
2009-02-01 09:11 | samlyukov | Note Added: 0002374 | |
2009-02-01 09:11 | samlyukov | File Added: !work2.diff | |
2009-02-03 15:46 | samlyukov | File Added: !work3.diff | |
2009-02-03 15:49 | samlyukov | Note Added: 0002382 | |
2009-02-21 10:41 | samlyukov | File Added: !work4.diff | |
2009-02-21 10:48 | samlyukov | Note Added: 0002557 | |
2009-02-21 14:18 | samlyukov | Note Edited: 0002557 | |
2009-02-28 05:58 | samlyukov | Note Added: 0002623 | |
2009-02-28 05:58 | samlyukov | File Added: !work5.diff | |
2009-03-02 10:56 | vskirdin | Note Added: 0002646 | |
2009-03-02 13:49 | samlyukov | Note Added: 0002652 | |
2009-03-02 13:50 | samlyukov | Note Edited: 0002652 | |
2009-03-02 14:03 | vskirdin | Note Added: 0002653 | |
2009-03-02 14:11 | samlyukov | Note Added: 0002654 | |
2009-03-02 16:45 | vskirdin | Note Added: 0002655 | |
2009-03-02 16:52 | samlyukov | Note Added: 0002657 | |
2009-03-02 17:23 | vskirdin | Note Added: 0002658 | |
2009-03-02 17:32 | samlyukov | Note Added: 0002659 | |
2009-03-11 09:24 | sytoedov | Note Added: 0002741 | |
2009-06-22 13:27 | samlyukov | Status | new => resolved |
2009-06-22 13:27 | samlyukov | Resolution | open => no change required |
2009-06-22 13:27 | samlyukov | Assigned To | => samlyukov |
2009-06-22 13:29 | alexy | Assigned To | samlyukov => |
2009-07-08 12:20 | vskirdin | Note Added: 0003684 | |
2009-10-23 11:50 | alexy | Status | resolved => feedback |
2017-11-11 15:43 | JohnDoe | Note Added: 0015822 |