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 |