View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001589 | Wishes | Panel.Panel Modes | public | 2010-11-11 09:05 | 2013-02-03 00:33 |
Reporter | Maximus | Assigned To | DrKnS | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Platform | x86 | OS | Windows | OS Version | XP SP2 |
Product Version | 2.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001589: Отображать в колонке панели расширение файла или "Align file extensions" | ||||
Description | Имя файла сейчас можно показать только так: N[M,O,R] Что неудобно, когда имена достаточно длинные и различаются только расширениями - чтобы увидеть это расширение нужно или долго и нудно прокручивать панели, либо менять режим так, чтобы расширение "влезло". Последнее прокатит, только если ширина консольного окна таки больше длины имени... Что предлагается: добавить новый тип "E", который отображает только расширение без точки и только для файлов (для папок "расширение" как таковое не используется). Опционально, добавить модификатор, отключащий отображение расширения для имени файла, например N[N] - это чтобы не было дублирования информации. Сейчас в фаре можно выровнять расширения по правому краю, но это не спасает в описанном случае, когда имена действительно длинные. А "Align file extensions" для длинных имен сейчас фактически не работает. То есть для длинных имен файлов расширение хорошоб бы прилеплять к правому краю, а по центру (перед расширением) показывать метку, что строка не влезла. | ||||
Tags | No tags attached. | ||||
Build | 2139 | ||||
|
|
|
вот тебе плагин для C0 - отображает расширение, с сорцами, можно допиливать под свои нужды :) upd. собрал в 10 студии, забыл отцепить MSVCR100.dll |
|
дубль, http://bugs.farmanager.com/view.php?id=536 |
|
Ну, собственно, колонка "X" в bis сборках давно уже есть. Только вот нет отзывов ) То есть никому не надо? |
|
А патч где? |
|
Патч был выложен здесь http://bugs.farmanager.com/view.php?id=1492 но был проигнорирован? |
|
Не надо сваливать всё в одну кучу. |
|
в strmix.hpp под enum { COLUMN_MARK = 0x80000000, ... уже скоро место закончится :) Как лучше сделать? enum { COLUMN_MARK = 0x8000000000000000LL, или typedef unsigned __int64 FILEPANEL_COLUMN_MODES; static const FILEPANEL_COLUMN_MODES COLUMN_MARK = 0x8000000000000000LL, |
|
Второе, 64-битные enum'ы не поддерживаются. |
|
1. Флаги переделаны в 64битные 2. Для колонки N добавлено: "NN" - без расширений, и "NRF" - альтернативное выравнивание по правому краю 3. Добавлена колонка X - расширение файлов. |
|
ColumnTypes.110807.diff (30,567 bytes)
Index: panelctype.hpp =================================================================== --- panelctype.hpp (revision 6532) +++ panelctype.hpp (working copy) @@ -58,7 +58,8 @@ CUSTOM_COLUMN6, CUSTOM_COLUMN7, CUSTOM_COLUMN8, - CUSTOM_COLUMN9 + CUSTOM_COLUMN9, + EXTENSION_COLUMN }; enum { Index: panelmix.hpp =================================================================== --- panelmix.hpp (revision 6532) +++ panelmix.hpp (working copy) @@ -41,10 +41,9 @@ int _MakePath1(DWORD Key,string &strPathName, const wchar_t *Param2,int ShortNameAsIs=TRUE); const string FormatStr_Attribute(DWORD FileAttributes,int Width=-1); -const string FormatStr_DateTime(const FILETIME *FileTime,int ColumnType,DWORD Flags,int Width); -const string FormatStr_Size(__int64 UnpSize, __int64 PackSize, __int64 StreamsSize, const string& strName,DWORD FileAttributes,DWORD ShowFolderSize,DWORD ReparseTag,int ColumnType,DWORD Flags,int Width); -void TextToViewSettings(const wchar_t *ColumnTitles,const wchar_t *ColumnWidths, - unsigned int *ViewColumnTypes,int *ViewColumnWidths,int *ViewColumnWidthsTypes,int &ColumnCount); -void ViewSettingsToText(unsigned int *ViewColumnTypes, - int *ViewColumnWidths,int *ViewColumnWidthsTypes,int ColumnCount,string &strColumnTitles, - string &strColumnWidths); +const string FormatStr_DateTime(const FILETIME *FileTime,int ColumnType,unsigned __int64 Flags,int Width); +const string FormatStr_Size(__int64 UnpSize, __int64 PackSize, __int64 StreamsSize, const string& strName,DWORD FileAttributes,DWORD ShowFolderSize,DWORD ReparseTag,int ColumnType,unsigned __int64 Flags,int Width); +void TextToViewSettings(const wchar_t *ColumnTitles,const wchar_t *ColumnWidths,bool StatusLine, + unsigned __int64 *ViewColumnTypes,int *ViewColumnWidths,int *ViewColumnWidthsTypes,int &ColumnCount); +void ViewSettingsToText(unsigned __int64 *ViewColumnTypes,int *ViewColumnWidths,int *ViewColumnWidthsTypes,int ColumnCount, + bool StatusLine,string &strColumnTitles,string &strColumnWidths); Index: strmix.hpp =================================================================== --- strmix.hpp (revision 6532) +++ strmix.hpp (working copy) @@ -35,25 +35,27 @@ #include "plugin.hpp" -enum -{ - COLUMN_MARK = 0x80000000, - COLUMN_NAMEONLY = 0x40000000, - COLUMN_RIGHTALIGN = 0x20000000, - COLUMN_FORMATTED = 0x10000000, - COLUMN_COMMAS = 0x08000000, - COLUMN_THOUSAND = 0x04000000, - COLUMN_BRIEF = 0x02000000, - COLUMN_MONTH = 0x01000000, - COLUMN_FLOATSIZE = 0x00800000, - COLUMN_ECONOMIC = 0x00400000, - COLUMN_MINSIZEINDEX = 0x00200000, - COLUMN_SHOWBYTESINDEX = 0x00100000, - COLUMN_FULLOWNER = 0x00080000, +typedef unsigned __int64 FILEPANEL_COLUMN_MODES; +static const FILEPANEL_COLUMN_MODES + COLUMN_MARK = 0x8000000000000000LL, + COLUMN_NAMEONLY = 0x4000000000000000LL, + COLUMN_RIGHTALIGN = 0x2000000000000000LL, + COLUMN_FORMATTED = 0x1000000000000000LL, + COLUMN_COMMAS = 0x0800000000000000LL, + COLUMN_THOUSAND = 0x0400000000000000LL, + COLUMN_BRIEF = 0x0200000000000000LL, + COLUMN_MONTH = 0x0100000000000000LL, + COLUMN_FLOATSIZE = 0x0080000000000000LL, + COLUMN_ECONOMIC = 0x0040000000000000LL, + COLUMN_MINSIZEINDEX = 0x0020000000000000LL, + COLUMN_SHOWBYTESINDEX = 0x0010000000000000LL, + COLUMN_FULLOWNER = 0x0008000000000000LL, + COLUMN_NOEXTENSION = 0x0004000000000000LL, + COLUMN_CENTERALIGN = 0x0002000000000000LL, + COLUMN_RIGHTALIGNFORCE = 0x0001000000000000LL, //MINSIZEINDEX ����� �� ����� 0, 1, 2 ��� 3 (K,M,G,T) - COLUMN_MINSIZEINDEX_MASK = 0x00000003, -}; + COLUMN_MINSIZEINDEX_MASK = 0x0000000000000003LL; wchar_t* WINAPI QuoteSpace(wchar_t *Str); string &QuoteSpace(string &strStr); @@ -83,7 +85,7 @@ string& WINAPI FarFormatText(const wchar_t *SrcText, int Width, string &strDestText, const wchar_t* Break, DWORD Flags); void PrepareUnitStr(); -string& __stdcall FileSizeToStr(string &strDestStr, unsigned __int64 Size, int Width=-1, int ViewFlags=COLUMN_COMMAS); +string& __stdcall FileSizeToStr(string &strDestStr, unsigned __int64 Size, int Width=-1, unsigned __int64 ViewFlags=COLUMN_COMMAS); bool CheckFileSizeStringFormat(const wchar_t *FileSizeStr); unsigned __int64 ConvertFileSizeString(const wchar_t *FileSizeStr); string &FormatNumber(const wchar_t *Src, string &strDest, int NumDigits=0); Index: strmix.cpp =================================================================== --- strmix.cpp (revision 6532) +++ strmix.cpp (working copy) @@ -628,7 +628,7 @@ } } -string & WINAPI FileSizeToStr(string &strDestStr, unsigned __int64 Size, int Width, int ViewFlags) +string & WINAPI FileSizeToStr(string &strDestStr, unsigned __int64 Size, int Width, unsigned __int64 ViewFlags) { FormatString strStr; unsigned __int64 Divider; @@ -640,12 +640,12 @@ PrepareUnitStr(); } - int Commas=(ViewFlags & COLUMN_COMMAS); - int FloatSize=(ViewFlags & COLUMN_FLOATSIZE); - int Economic=(ViewFlags & COLUMN_ECONOMIC); - int UseMinSizeIndex=(ViewFlags & COLUMN_MINSIZEINDEX); - int MinSizeIndex=(ViewFlags & COLUMN_MINSIZEINDEX_MASK)+1; - int ShowBytesIndex=(ViewFlags & COLUMN_SHOWBYTESINDEX); + unsigned __int64 Commas=(ViewFlags & COLUMN_COMMAS); + unsigned __int64 FloatSize=(ViewFlags & COLUMN_FLOATSIZE); + unsigned __int64 Economic=(ViewFlags & COLUMN_ECONOMIC); + unsigned __int64 UseMinSizeIndex=(ViewFlags & COLUMN_MINSIZEINDEX); + unsigned __int64 MinSizeIndex=(ViewFlags & COLUMN_MINSIZEINDEX_MASK)+1; + unsigned __int64 ShowBytesIndex=(ViewFlags & COLUMN_SHOWBYTESINDEX); if (ViewFlags & COLUMN_THOUSAND) { Index: panel.hpp =================================================================== --- panel.hpp (revision 6532) +++ panel.hpp (working copy) @@ -40,10 +40,10 @@ struct PanelViewSettings { - unsigned int ColumnType[PANEL_COLUMNCOUNT]; + unsigned __int64 ColumnType[PANEL_COLUMNCOUNT]; int ColumnWidth[PANEL_COLUMNCOUNT]; int ColumnCount; - unsigned int StatusColumnType[PANEL_COLUMNCOUNT]; + unsigned __int64 StatusColumnType[PANEL_COLUMNCOUNT]; int StatusColumnWidth[PANEL_COLUMNCOUNT]; int StatusColumnCount; DWORD Flags; Index: flmodes.cpp =================================================================== --- flmodes.cpp (revision 6532) +++ flmodes.cpp (working copy) @@ -163,9 +163,9 @@ ModeDlg[MD_CHECKBOX_FILESLOWERCASE].Selected=(NewSettings.Flags&PVS_FILELOWERCASE)?1:0; ModeDlg[MD_CHECKBOX_UPPERTOLOWERCASE].Selected=(NewSettings.Flags&PVS_FILEUPPERTOLOWERCASE)?1:0; ViewSettingsToText(NewSettings.ColumnType,NewSettings.ColumnWidth,NewSettings.ColumnWidthType, - NewSettings.ColumnCount,ModeDlg[2].strData,ModeDlg[4].strData); + NewSettings.ColumnCount,false,ModeDlg[2].strData,ModeDlg[4].strData); ViewSettingsToText(NewSettings.StatusColumnType,NewSettings.StatusColumnWidth,NewSettings.StatusColumnWidthType, - NewSettings.StatusColumnCount,ModeDlg[6].strData,ModeDlg[8].strData); + NewSettings.StatusColumnCount,true,ModeDlg[6].strData,ModeDlg[8].strData); { Dialog Dlg(ModeDlg,ARRAYSIZE(ModeDlg)); Dlg.SetPosition(-1,-1,76,17); @@ -190,9 +190,9 @@ NewSettings.Flags|=PVS_FILELOWERCASE; if (ModeDlg[MD_CHECKBOX_UPPERTOLOWERCASE].Selected) NewSettings.Flags|=PVS_FILEUPPERTOLOWERCASE; - TextToViewSettings(ModeDlg[MD_EDITTYPES].strData,ModeDlg[MD_EDITWIDTHS].strData,NewSettings.ColumnType, + TextToViewSettings(ModeDlg[MD_EDITTYPES].strData,ModeDlg[MD_EDITWIDTHS].strData,false,NewSettings.ColumnType, NewSettings.ColumnWidth,NewSettings.ColumnWidthType,NewSettings.ColumnCount); - TextToViewSettings(ModeDlg[MD_EDITSTATUSTYPES].strData,ModeDlg[MD_EDITSTATUSWIDTHS].strData,NewSettings.StatusColumnType, + TextToViewSettings(ModeDlg[MD_EDITSTATUSTYPES].strData,ModeDlg[MD_EDITSTATUSWIDTHS].strData,true,NewSettings.StatusColumnType, NewSettings.StatusColumnWidth,NewSettings.StatusColumnWidthType,NewSettings.StatusColumnCount); ViewSettingsArray[ModeNumber]=NewSettings; CtrlObject->Cp()->LeftPanel->SortFileList(TRUE); @@ -240,11 +240,11 @@ PanelViewSettings NewSettings=ViewSettingsArray[VIEW_0+I]; if (!strColumnTitles.IsEmpty()) - TextToViewSettings(strColumnTitles,strColumnWidths,NewSettings.ColumnType, + TextToViewSettings(strColumnTitles,strColumnWidths,false,NewSettings.ColumnType, NewSettings.ColumnWidth,NewSettings.ColumnWidthType,NewSettings.ColumnCount); if (!strStatusColumnTitles.IsEmpty()) - TextToViewSettings(strStatusColumnTitles,strStatusColumnWidths,NewSettings.StatusColumnType, + TextToViewSettings(strStatusColumnTitles,strStatusColumnWidths,true,NewSettings.StatusColumnType, NewSettings.StatusColumnWidth,NewSettings.StatusColumnWidthType,NewSettings.StatusColumnCount); NewSettings.Flags = (DWORD)Flags; @@ -267,9 +267,9 @@ PanelViewSettings NewSettings=ViewSettingsArray[VIEW_0+I]; ViewSettingsToText(NewSettings.ColumnType,NewSettings.ColumnWidth,NewSettings.ColumnWidthType, - NewSettings.ColumnCount,strColumnTitles,strColumnWidths); + NewSettings.ColumnCount,false,strColumnTitles,strColumnWidths); ViewSettingsToText(NewSettings.StatusColumnType,NewSettings.StatusColumnWidth,NewSettings.StatusColumnWidthType, - NewSettings.StatusColumnCount,strStatusColumnTitles,strStatusColumnWidths); + NewSettings.StatusColumnCount,true,strStatusColumnTitles,strStatusColumnWidths); FormatString strMode; strMode<<I; Index: filelist.hpp =================================================================== --- filelist.hpp (revision 6532) +++ filelist.hpp (working copy) @@ -238,7 +238,7 @@ const FarColor GetShowColor(int Position, int ColorType); void ShowSelectedSize(); void ShowTotalSize(OpenPanelInfo &Info); - int ConvertName(const wchar_t *SrcName, string &strDest, int MaxLength, int RightAlign, int ShowStatus, DWORD dwFileAttr); + int ConvertName(const wchar_t *SrcName, string &strDest, int MaxLength, unsigned __int64 RightAlign, int ShowStatus, DWORD dwFileAttr); void Select(FileListItem *SelPtr,int Selection); long SelectFiles(int Mode,const wchar_t *Mask=nullptr); @@ -275,7 +275,7 @@ void DeletePluginItemList(PluginPanelItem *(&ItemList),int &ItemNumber); HANDLE OpenPluginForFile(const wchar_t *FileName,DWORD FileAttr, OPENFILEPLUGINTYPE Type); int PreparePanelView(PanelViewSettings *PanelView); - int PrepareColumnWidths(unsigned int *ColumnTypes,int *ColumnWidths,int *ColumnWidthsTypes,int &ColumnCount,bool FullScreen); + int PrepareColumnWidths(unsigned __int64 *ColumnTypes,int *ColumnWidths,int *ColumnWidthsTypes,int &ColumnCount,bool FullScreen,bool StatusLine); void PrepareViewSettings(int ViewMode,OpenPanelInfo *PlugInfo); void PluginDelete(); Index: flshow.cpp =================================================================== --- flshow.cpp (revision 6532) +++ flshow.cpp (working copy) @@ -149,6 +149,9 @@ case NAME_COLUMN: IDMessage=MColumnName; break; + case EXTENSION_COLUMN: + IDMessage=MColumnExtension; + break; case SIZE_COLUMN: IDMessage=MColumnSize; break; @@ -562,17 +565,20 @@ } } -int FileList::ConvertName(const wchar_t *SrcName,string &strDest,int MaxLength,int RightAlign,int ShowStatus,DWORD FileAttr) +int FileList::ConvertName(const wchar_t *SrcName,string &strDest,int MaxLength,unsigned __int64 RightAlign,int ShowStatus,DWORD FileAttr) { wchar_t *lpwszDest = strDest.GetBuffer(MaxLength+1); wmemset(lpwszDest,L' ',MaxLength); int SrcLength=StrLength(SrcName); - if (RightAlign && SrcLength>MaxLength) + if ((RightAlign & COLUMN_RIGHTALIGNFORCE) || (RightAlign && (SrcLength>MaxLength))) { - wmemcpy(lpwszDest,SrcName+SrcLength-MaxLength,MaxLength); + if (SrcLength>MaxLength) + wmemcpy(lpwszDest,SrcName+SrcLength-MaxLength,MaxLength); + else + wmemcpy(lpwszDest+MaxLength-SrcLength,SrcName,SrcLength); strDest.ReleaseBuffer(MaxLength); - return TRUE; + return (SrcLength>MaxLength); } const wchar_t *DotPtr; @@ -629,7 +635,7 @@ { TextToViewSettings(Info.PanelModesArray[ViewMode].ColumnTypes, Info.PanelModesArray[ViewMode].ColumnWidths, - ViewSettings.ColumnType,ViewSettings.ColumnWidth, + false,ViewSettings.ColumnType,ViewSettings.ColumnWidth, ViewSettings.ColumnWidthType,ViewSettings.ColumnCount); if (Info.PanelModesArray[ViewMode].StatusColumnTypes && @@ -637,7 +643,7 @@ { TextToViewSettings(Info.PanelModesArray[ViewMode].StatusColumnTypes, Info.PanelModesArray[ViewMode].StatusColumnWidths, - ViewSettings.StatusColumnType,ViewSettings.StatusColumnWidth, + true,ViewSettings.StatusColumnType,ViewSettings.StatusColumnWidth, ViewSettings.StatusColumnWidthType,ViewSettings.StatusColumnCount); } else if (Info.PanelModesArray[ViewMode].Flags&PMFLAGS_DETAILEDSTATUS) @@ -705,13 +711,13 @@ int FileList::PreparePanelView(PanelViewSettings *PanelView) { PrepareColumnWidths(PanelView->StatusColumnType,PanelView->StatusColumnWidth,PanelView->StatusColumnWidthType, - PanelView->StatusColumnCount,(PanelView->Flags&PVS_FULLSCREEN)==PVS_FULLSCREEN); + PanelView->StatusColumnCount,(PanelView->Flags&PVS_FULLSCREEN)==PVS_FULLSCREEN,true); return(PrepareColumnWidths(PanelView->ColumnType,PanelView->ColumnWidth,PanelView->ColumnWidthType, - PanelView->ColumnCount,(PanelView->Flags&PVS_FULLSCREEN)==PVS_FULLSCREEN)); + PanelView->ColumnCount,(PanelView->Flags&PVS_FULLSCREEN)==PVS_FULLSCREEN,false)); } -int FileList::PrepareColumnWidths(unsigned int *ColumnTypes, int *ColumnWidths, int *ColumnWidthsTypes, int &ColumnCount, bool FullScreen) +int FileList::PrepareColumnWidths(unsigned __int64 *ColumnTypes, int *ColumnWidths, int *ColumnWidthsTypes, int &ColumnCount, bool FullScreen, bool StatusLine) { int TotalWidth,TotalPercentWidth,TotalPercentCount,ZeroLengthCount,EmptyColumns,I; ZeroLengthCount=EmptyColumns=0; @@ -869,6 +875,8 @@ int StatusShown=FALSE; int MaxLeftPos=0,MinLeftPos=FALSE; int ColumnCount=ShowStatus ? ViewSettings.StatusColumnCount:ViewSettings.ColumnCount; + unsigned __int64 *ColumnTypes=ShowStatus ? ViewSettings.StatusColumnType:ViewSettings.ColumnType; + int *ColumnWidths=ShowStatus ? ViewSettings.StatusColumnWidth:ViewSettings.ColumnWidth; for (int I=Y1+1+Opt.ShowColumnTitles,J=CurTopFile; I<Y2-2*Opt.ShowPanelStatus; I++,J++) { @@ -906,9 +914,7 @@ int CurX=WhereX(); int CurY=WhereY(); int ShowDivider=TRUE; - unsigned int *ColumnTypes=ShowStatus ? ViewSettings.StatusColumnType:ViewSettings.ColumnType; - int *ColumnWidths=ShowStatus ? ViewSettings.StatusColumnWidth:ViewSettings.ColumnWidth; - int ColumnType=ColumnTypes[K] & 0xff; + int ColumnType=static_cast<int>(ColumnTypes[K] & 0xff); int ColumnWidth=ColumnWidths[K]; if (ColumnWidth<0) @@ -945,7 +951,9 @@ ColumnData=ListData[ListPos]->CustomColumnData[ColumnNumber]; if (!ColumnData) + { ColumnData=ListData[ListPos]->strCustomData;//L""; + } int CurLeftPos=0; @@ -974,7 +982,7 @@ case NAME_COLUMN: { int Width=ColumnWidth; - int ViewFlags=ColumnTypes[K]; + unsigned __int64 ViewFlags=ColumnTypes[K]; if ((ViewFlags & COLUMN_MARK) && Width>2) { @@ -996,6 +1004,17 @@ } const wchar_t *NamePtr = ShowShortNames && !ListData[ListPos]->strShortName.IsEmpty() && !ShowStatus ? ListData[ListPos]->strShortName:ListData[ListPos]->strName; + + string strNameCopy; + if (!(ListData[ListPos]->FileAttr & FILE_ATTRIBUTE_DIRECTORY) && (ViewFlags & COLUMN_NOEXTENSION)) + { + const wchar_t *ExtPtr = PointToExt(NamePtr); + if (ExtPtr) + { + strNameCopy.Copy(NamePtr, ExtPtr-NamePtr); + NamePtr = strNameCopy; + } + } const wchar_t *NameCopy = NamePtr; @@ -1008,7 +1027,7 @@ } int CurLeftPos=0; - int RightAlign=(ViewFlags & COLUMN_RIGHTALIGN); + unsigned __int64 RightAlign=(ViewFlags & (COLUMN_RIGHTALIGN|COLUMN_RIGHTALIGNFORCE)); int LeftBracket=FALSE,RightBracket=FALSE; if (!ShowStatus && LeftPos) @@ -1037,9 +1056,14 @@ int CurRightPos=LeftPos; if (Length+CurRightPos<Width) + { CurRightPos=Width-Length; + } else + { RightBracket=TRUE; + LeftBracket=(ViewFlags & COLUMN_RIGHTALIGNFORCE)==COLUMN_RIGHTALIGNFORCE; + } NamePtr += Length+CurRightPos-Width; RightAlign=FALSE; @@ -1079,10 +1103,12 @@ } Text(strName); - int NameX=WhereX(); + if (!ShowStatus) { + int NameX=WhereX(); + if (LeftBracket) { GotoXY(CurX-1,CurY); @@ -1111,6 +1137,40 @@ } } break; + case EXTENSION_COLUMN: + { + const wchar_t *ExtPtr = nullptr; + if (!(ListData[ListPos]->FileAttr & FILE_ATTRIBUTE_DIRECTORY)) + { + const wchar_t *NamePtr = ShowShortNames && !ListData[ListPos]->strShortName.IsEmpty() && !ShowStatus ? ListData[ListPos]->strShortName:ListData[ListPos]->strName; + ExtPtr = PointToExt(NamePtr); + } + if (ExtPtr && *ExtPtr) ExtPtr++; else ExtPtr = L""; + + int ExtLen = (int)wcslen(ExtPtr); + bool TooLong = ExtLen > ColumnWidth; + + FS<<fmt::LeftAlign()<<fmt::Width(ColumnWidth)<<fmt::Precision(ColumnWidth)<<ExtPtr; + + if (!ShowStatus && TooLong) + { + int NameX=WhereX(); + + if (Level == ColumnsInGlobal) + SetColor(COL_PANELBOX); + + GotoXY(NameX,CurY); + Text(closeBracket); + ShowDivider=FALSE; + + if (Level == ColumnsInGlobal) + SetColor(COL_PANELTEXT); + else + SetShowColor(J); + } + break; + } + break; case SIZE_COLUMN: case PACKED_COLUMN: case STREAMSSIZE_COLUMN: Index: flplugin.cpp =================================================================== --- flplugin.cpp (revision 6532) +++ flplugin.cpp (working copy) @@ -1096,7 +1096,7 @@ void FileList::PluginGetColumnTypesAndWidths(string& strColumnTypes,string& strColumnWidths) { ViewSettingsToText(ViewSettings.ColumnType,ViewSettings.ColumnWidth,ViewSettings.ColumnWidthType, - ViewSettings.ColumnCount,strColumnTypes,strColumnWidths); + ViewSettings.ColumnCount,false,strColumnTypes,strColumnWidths); } void FileList::PluginBeginSelection() Index: FarEng.hlf.m4 =================================================================== --- FarEng.hlf.m4 (revision 6532) +++ FarEng.hlf.m4 (working copy) @@ -3411,14 +3411,18 @@ - #Column types# - column types are encoded as one or several characters, delimited with commas. Allowed column types are: - N[M,O,R] - file name + N[M,O,R,F,N] - file name where: M - show selection marks; O - show names without paths (intended mainly for plugins); R - right aligned names; + F - for use with R, alternative align mode; + N - do not show extensions in name column; These modifiers may be used in combination, for example NMR + X - file extension + S[C,T,F,E] - file size P[C,T,F,E] - packed file size G[C,T,F,E] - size of file streams Index: FarRus.hlf.m4 =================================================================== --- FarRus.hlf.m4 (revision 6532) +++ FarRus.hlf.m4 (working copy) @@ -3481,13 +3481,17 @@ или нескольких букв, разделённых запятыми. Допускаются следующие типы колонок: - N[M,O,R] - имя файла + N[M,O,R,F,N] - имя файла где: M - показывать символы пометки; O - показывать имена без путей (предназначено в основном для ~плагинов~@Plugins@); R - выравнивать имена по правому краю; + F - вместе с R включает альтернативный режим выравнивания; + N - не отображать расширения файлов; Эти символы можно комбинировать, например NMR + X - расширение файла + S[C,T,F,E] - размер файла P[C,T,F,E] - упакованный размер файла G[C,T,F,E] - размер потоков файла Index: farlang.templ.m4 =================================================================== --- farlang.templ.m4 (revision 6532) +++ farlang.templ.m4 (working copy) @@ -6486,6 +6486,15 @@ "Nazwa" "Nombre" +MColumnExtension +"Расширение" +"Extension" +upd:"Extension" +upd:"Extension" +upd:"Extension" +upd:"Extension" +upd:"Extension" + MColumnSize "Размер" "Size" Index: findfile.cpp =================================================================== --- findfile.cpp (revision 6532) +++ findfile.cpp (working copy) @@ -828,7 +828,7 @@ if (Opt.FindOpt.strSearchOutFormatWidth.IsEmpty()) Opt.FindOpt.strSearchOutFormatWidth=L"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"; - TextToViewSettings(Opt.FindOpt.strSearchOutFormat.CPtr(),Opt.FindOpt.strSearchOutFormatWidth.CPtr(), + TextToViewSettings(Opt.FindOpt.strSearchOutFormat.CPtr(),Opt.FindOpt.strSearchOutFormatWidth.CPtr(),false, Opt.FindOpt.OutColumnTypes,Opt.FindOpt.OutColumnWidths,Opt.FindOpt.OutColumnWidthType, Opt.FindOpt.OutColumnCount); } @@ -2208,7 +2208,7 @@ string strDateStr, strTimeStr; const wchar_t *DisplayName=FindData.strFileName; - unsigned int *ColumnType=Opt.FindOpt.OutColumnTypes; + unsigned __int64 *ColumnType=Opt.FindOpt.OutColumnTypes; int *ColumnWidth=Opt.FindOpt.OutColumnWidths; int ColumnCount=Opt.FindOpt.OutColumnCount; //int *ColumnWidthType=Opt.FindOpt.OutColumnWidthType; @@ -2217,7 +2217,7 @@ for (int Count=0; Count < ColumnCount; ++Count) { - unsigned int CurColumnType = ColumnType[Count] & 0xFF; + int CurColumnType = static_cast<int>(ColumnType[Count] & 0xFF); switch (CurColumnType) { Index: panelmix.cpp =================================================================== --- panelmix.cpp (revision 6532) +++ panelmix.cpp (working copy) @@ -48,9 +48,9 @@ #include "lang.hpp" #include "datetime.hpp" -int ColumnTypeWidth[]={0, 6, 6, 8, 5, 14, 14, 14, 14, 6, 0, 0, 3, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +int ColumnTypeWidth[]={0, 6, 6, 8, 5, 14, 14, 14, 14, 6, 0, 0, 3, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -static const wchar_t *ColumnSymbol[]={L"N",L"S",L"P",L"D",L"T",L"DM",L"DC",L"DA",L"DE",L"A",L"Z",L"O",L"LN",L"F",L"G",L"C0",L"C1",L"C2",L"C3",L"C4",L"C5",L"C6",L"C7",L"C8",L"C9"}; +static const wchar_t *ColumnSymbol[]={L"N",L"S",L"P",L"D",L"T",L"DM",L"DC",L"DA",L"DE",L"A",L"Z",L"O",L"LN",L"F",L"G",L"C0",L"C1",L"C2",L"C3",L"C4",L"C5",L"C6",L"C7",L"C8",L"C9",L"X"}; void ShellUpdatePanels(Panel *SrcPanel,BOOL NeedSetUpADir) @@ -261,8 +261,8 @@ } -void TextToViewSettings(const wchar_t *ColumnTitles,const wchar_t *ColumnWidths, - unsigned int *ViewColumnTypes,int *ViewColumnWidths,int *ViewColumnWidthsTypes,int &ColumnCount) +void TextToViewSettings(const wchar_t *ColumnTitles,const wchar_t *ColumnWidths,bool StatusLine, + unsigned __int64 *ViewColumnTypes,int *ViewColumnWidths,int *ViewColumnWidthsTypes,int &ColumnCount) { const wchar_t *TextPtr=ColumnTitles; @@ -277,7 +277,7 @@ if (strArgName.At(0)==L'N') { - unsigned int &ColumnType=ViewColumnTypes[ColumnCount]; + unsigned __int64 &ColumnType=ViewColumnTypes[ColumnCount]; ColumnType=NAME_COLUMN; const wchar_t *Ptr = strArgName.CPtr()+1; @@ -294,6 +294,12 @@ case L'R': ColumnType|=COLUMN_RIGHTALIGN; break; + case L'F': + ColumnType|=COLUMN_RIGHTALIGNFORCE; + break; + case L'N': + ColumnType|=COLUMN_NOEXTENSION; + break; } Ptr++; @@ -303,7 +309,7 @@ { if (strArgName.At(0)==L'S' || strArgName.At(0)==L'P' || strArgName.At(0)==L'G') { - unsigned int &ColumnType=ViewColumnTypes[ColumnCount]; + unsigned __int64 &ColumnType=ViewColumnTypes[ColumnCount]; ColumnType=(strArgName.At(0)==L'S') ? SIZE_COLUMN:(strArgName.At(0)==L'P')?PACKED_COLUMN:STREAMSSIZE_COLUMN; const wchar_t *Ptr = strArgName.CPtr()+1; @@ -332,7 +338,7 @@ { if (!StrCmpN(strArgName,L"DM",2) || !StrCmpN(strArgName,L"DC",2) || !StrCmpN(strArgName,L"DA",2) || !StrCmpN(strArgName,L"DE",2)) { - unsigned int &ColumnType=ViewColumnTypes[ColumnCount]; + unsigned __int64 &ColumnType=ViewColumnTypes[ColumnCount]; switch (strArgName.At(1)) { @@ -371,7 +377,7 @@ { if (strArgName.At(0)==L'O') { - unsigned int &ColumnType=ViewColumnTypes[ColumnCount]; + unsigned __int64 &ColumnType=ViewColumnTypes[ColumnCount]; ColumnType=OWNER_COLUMN; if (strArgName.At(1)==L'L') @@ -418,9 +424,8 @@ } -void ViewSettingsToText(unsigned int *ViewColumnTypes,int *ViewColumnWidths, - int *ViewColumnWidthsTypes,int ColumnCount,string &strColumnTitles, - string &strColumnWidths) +void ViewSettingsToText(unsigned __int64 *ViewColumnTypes,int *ViewColumnWidths,int *ViewColumnWidthsTypes,int ColumnCount, + bool StatusLine,string &strColumnTitles,string &strColumnWidths) { strColumnTitles.Clear(); strColumnWidths.Clear(); @@ -428,7 +433,7 @@ for (int I=0; I<ColumnCount; I++) { string strType; - int ColumnType=ViewColumnTypes[I] & 0xff; + int ColumnType=static_cast<int>(ViewColumnTypes[I] & 0xff); strType = ColumnSymbol[ColumnType]; if (ColumnType==NAME_COLUMN) @@ -440,7 +445,14 @@ strType += L"O"; if (ViewColumnTypes[I] & COLUMN_RIGHTALIGN) + { strType += L"R"; + if (ViewColumnTypes[I] & COLUMN_RIGHTALIGNFORCE) + strType += L"F"; + } + + if (ViewColumnTypes[I] & COLUMN_NOEXTENSION) + strType += L"N"; } if (ColumnType==SIZE_COLUMN || ColumnType==PACKED_COLUMN || ColumnType==STREAMSSIZE_COLUMN) @@ -521,7 +533,7 @@ return strResult; } -const string FormatStr_DateTime(const FILETIME *FileTime,int ColumnType,DWORD Flags,int Width) +const string FormatStr_DateTime(const FILETIME *FileTime,int ColumnType,unsigned __int64 Flags,int Width) { FormatString strResult; @@ -534,8 +546,8 @@ } int ColumnWidth=Width; - int Brief=Flags & COLUMN_BRIEF; - int TextMonth=Flags & COLUMN_MONTH; + unsigned __int64 Brief=Flags & COLUMN_BRIEF; + unsigned __int64 TextMonth=Flags & COLUMN_MONTH; int FullYear=FALSE; switch(ColumnType) @@ -589,7 +601,7 @@ return strResult; } -const string FormatStr_Size(__int64 UnpSize, __int64 PackSize, __int64 StreamsSize, const string& strName,DWORD FileAttributes,DWORD ShowFolderSize,DWORD ReparseTag,int ColumnType,DWORD Flags,int Width) +const string FormatStr_Size(__int64 UnpSize, __int64 PackSize, __int64 StreamsSize, const string& strName,DWORD FileAttributes,DWORD ShowFolderSize,DWORD ReparseTag,int ColumnType,unsigned __int64 Flags,int Width) { FormatString strResult; Index: config.cpp =================================================================== --- config.cpp (revision 6532) +++ config.cpp (working copy) @@ -1023,7 +1023,7 @@ { if (Opt.FindOpt.strSearchOutFormatWidth.IsEmpty()) Opt.FindOpt.strSearchOutFormatWidth=L"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"; - TextToViewSettings(Opt.FindOpt.strSearchOutFormat.CPtr(),Opt.FindOpt.strSearchOutFormatWidth.CPtr(), + TextToViewSettings(Opt.FindOpt.strSearchOutFormat.CPtr(),Opt.FindOpt.strSearchOutFormatWidth.CPtr(),false, Opt.FindOpt.OutColumnTypes,Opt.FindOpt.OutColumnWidths,Opt.FindOpt.OutColumnWidthType, Opt.FindOpt.OutColumnCount); } Index: config.hpp =================================================================== --- config.hpp (revision 6532) +++ config.hpp (working copy) @@ -402,7 +402,7 @@ string strSearchOutFormat; string strSearchOutFormatWidth; int OutColumnCount; - unsigned int OutColumnTypes[20]; + unsigned __int64 OutColumnTypes[20]; int OutColumnWidths[20]; int OutColumnWidthType[20]; }; Index: filelist.cpp =================================================================== --- filelist.cpp (revision 6532) +++ filelist.cpp (working copy) @@ -3131,7 +3131,7 @@ string strColumnTypes,strColumnWidths; // SetScreenPosition(); ViewSettingsToText(ViewSettings.ColumnType,ViewSettings.ColumnWidth,ViewSettings.ColumnWidthType, - ViewSettings.ColumnCount,strColumnTypes,strColumnWidths); + ViewSettings.ColumnCount,false,strColumnTypes,strColumnWidths); ProcessPluginEvent(FE_CHANGEVIEWMODE,(void*)strColumnTypes.CPtr()); } |
|
2139. |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-11-11 09:05 | Maximus | New Issue | |
2010-11-13 04:58 | samlyukov | File Added: ext_c0.zip | |
2010-11-13 05:00 | samlyukov | Note Added: 0005977 | |
2010-11-13 05:35 | samlyukov | Note Edited: 0005977 | |
2011-08-07 05:56 | samlyukov | Note Added: 0007411 | |
2011-08-07 11:33 | Maximus | Note Added: 0007418 | |
2011-08-07 11:38 | DrKnS | Note Added: 0007419 | |
2011-08-07 11:55 | Maximus | Note Added: 0007421 | |
2011-08-07 12:01 | DrKnS | Note Added: 0007422 | |
2011-08-07 12:15 | Maximus | Note Added: 0007423 | |
2011-08-07 12:22 | DrKnS | Note Added: 0007424 | |
2011-08-07 19:29 | Maximus | Note Added: 0007425 | |
2011-08-07 19:29 | Maximus | File Added: ColumnTypes.110807.diff | |
2011-08-08 09:45 | DrKnS | Build | => 2139 |
2011-08-08 09:45 | DrKnS | Note Added: 0007427 | |
2011-08-08 09:45 | DrKnS | Status | new => closed |
2011-08-08 09:45 | DrKnS | Assigned To | => DrKnS |
2011-08-08 09:45 | DrKnS | Resolution | open => fixed |
2011-08-08 09:45 | DrKnS | Fixed in Version | => 3.0 |
2013-02-03 00:33 | alexy | Severity | minor => feature |