Skip to content

Commit

Permalink
Bug 2196: Automatically size file panel columns
Browse files Browse the repository at this point in the history
https://winscp.net/tracker/2196

Source commit: 3ff10bcbf29d7b3083f240348c459c1a70e7d63e
  • Loading branch information
martinprikryl committed Jun 13, 2023
1 parent 239c1d5 commit 36e7719
Show file tree
Hide file tree
Showing 9 changed files with 85 additions and 27 deletions.
14 changes: 14 additions & 0 deletions source/forms/CustomScpExplorer.cpp
Expand Up @@ -11943,3 +11943,17 @@ void __fastcall TCustomScpExplorerForm::MessageDockRequestDock(TObject *, TTBCus
Accept = false;
}
//---------------------------------------------------------------------------
void TCustomScpExplorerForm::AutoSizeColumns(TOperationSide Side)
{
// Send Ctrl+Gray+ to the list view
TKeyboardState KeyState;
GetKeyboardState(KeyState);
TKeyboardState NewKeyState;
memset(NewKeyState, 0, sizeof(NewKeyState));
NewKeyState[VK_CONTROL] = 0x81;
SetKeyboardState(NewKeyState);

SendMessage(DirView(Side)->Handle, WM_KEYDOWN, VK_ADD, 0);
SetKeyboardState(KeyState);
}
//---------------------------------------------------------------------------
1 change: 1 addition & 0 deletions source/forms/CustomScpExplorer.h
Expand Up @@ -906,6 +906,7 @@ friend class TEditorUploadQueueItem;
virtual int GetNewTabActionImageIndex();
virtual int GetNewTabTabImageIndex(TOperationSide Side);
void CalculateDirectorySizes(TOperationSide Side);
void AutoSizeColumns(TOperationSide Side);

__property bool ComponentVisible[Byte Component] = { read = GetComponentVisible, write = SetComponentVisible };
__property bool EnableFocusedOperation[TOperationSide Side] = { read = GetEnableFocusedOperation, index = 0 };
Expand Down
6 changes: 4 additions & 2 deletions source/forms/NonVisual.cpp
Expand Up @@ -388,6 +388,8 @@ void __fastcall TNonVisualDataModule::ExplorerActionsUpdate(
UPDEX(SortColumnDescendingAction, (ListColumn != NULL), SortColumnDescendingAction->Checked =
(COLVIEWPROPS->SortColumn == ListColumn->Index) && !COLVIEWPROPS->SortAscending, )
#undef COLVIEWPROPS
UPD(AutoSizeLocalColumnsAction, DirViewEnabled(osLocal));
UPD(AutoSizeRemoteColumnsAction, DirViewEnabled(osRemote));

// SHOW/HIDE COLUMN
#define UPDSHCOLL(NAME) UPDSHCOL(Local, NAME, dv ## NAME, -1)
Expand All @@ -408,7 +410,6 @@ void __fastcall TNonVisualDataModule::ExplorerActionsUpdate(
UPDSHCOL(Remote, LinkTarget, -1, uvLinkTarget)
UPDSHCOL(Remote, Type, dvType, uvType)
UPD(HideColumnAction, (ListColumn != NULL))
UPD(BestFitColumnAction, (ListColumn != NULL))

// SESSION
UPDACT(NewTabAction, Action->ImageIndex = ScpExplorer->GetNewTabActionImageIndex())
Expand Down Expand Up @@ -729,6 +730,8 @@ void __fastcall TNonVisualDataModule::ExplorerActionsExecute(
COLVIEWPROPS->SortColumn = ListColumn->Index; COLVIEWPROPS->SortAscending = true; ListColumn = NULL )
EXE(SortColumnDescendingAction, DebugAssert(ListColumn);
COLVIEWPROPS->SortColumn = ListColumn->Index; COLVIEWPROPS->SortAscending = false; ListColumn = NULL )
EXE(AutoSizeLocalColumnsAction, ScpExplorer->AutoSizeColumns(osLocal))
EXE(AutoSizeRemoteColumnsAction, ScpExplorer->AutoSizeColumns(osRemote))

// SHOW/HIDE COLUMN
#define EXESHCOLL(NAME) EXESHCOL(Local, NAME, dv ## NAME, -1)
Expand All @@ -750,7 +753,6 @@ void __fastcall TNonVisualDataModule::ExplorerActionsExecute(
EXESHCOL(Remote, Type, dvType, uvType)
EXE(HideColumnAction, DebugAssert(ListColumn);
COLVIEWPROPS->Visible[ListColumn->Index] = false; ListColumn = NULL )
EXE(BestFitColumnAction, DebugAssert(ListColumn); ListColumn = NULL ) // TODO
#undef COLVIEWPROPS

// SESSION
Expand Down
38 changes: 28 additions & 10 deletions source/forms/NonVisual.dfm
Expand Up @@ -86,6 +86,14 @@ object NonVisualDataModule: TNonVisualDataModule
OnUpdate = ExplorerActionsUpdate
Left = 440
Top = 24
object AutoSizeRemoteColumnsAction: TAction
Tag = 12
Category = 'Columns'
Caption = 'Size &Automatically'
HelpKeyword = 'ui_file_panel#selecting_columns'
Hint = 'Adjust columns width to fit their contents'
ShortCut = 16491
end
object RemoteCopyQueueAction: TAction
Tag = 14
Category = 'Remote Selected Operation'
Expand Down Expand Up @@ -188,11 +196,13 @@ object NonVisualDataModule: TNonVisualDataModule
Hint = 'Download|Download selected remote file(s) to local directory'
ImageIndex = 89
end
object BestFitColumnAction: TAction
Tag = 15
object AutoSizeLocalColumnsAction: TAction
Tag = 8
Category = 'Columns'
Caption = '&Best Fit'
Hint = 'Best fit|Adjust column width to fit its content'
Caption = 'Size &Automatically'
HelpKeyword = 'ui_file_panel#selecting_columns'
Hint = 'Adjust columns width to fit their contents'
ShortCut = 16491
end
object GoToTreeAction: TAction
Tag = 15
Expand Down Expand Up @@ -2860,10 +2870,9 @@ object NonVisualDataModule: TNonVisualDataModule
end
object TBXSeparatorItem8: TTBXSeparatorItem
end
object Showcolumns3: TTBXSubmenuItem
Caption = 'Show &Columns'
object LocalColumnsSubmenuItem: TTBXSubmenuItem
Caption = '&Columns'
HelpKeyword = 'ui_file_panel#selecting_columns'
Hint = 'Select columns to show in panel'
object Name3: TTBXItem
Action = ShowHideLocalNameColumnAction2
end
Expand All @@ -2879,6 +2888,11 @@ object NonVisualDataModule: TNonVisualDataModule
object Attributes3: TTBXItem
Action = ShowHideLocalAttrColumnAction2
end
object TBXSeparatorItem73: TTBXSeparatorItem
end
object TBXItem264: TTBXItem
Action = AutoSizeLocalColumnsAction
end
end
end
object RemoteDirViewColumnPopup: TTBXPopupMenu
Expand Down Expand Up @@ -2921,10 +2935,9 @@ object NonVisualDataModule: TNonVisualDataModule
end
object TBXSeparatorItem7: TTBXSeparatorItem
end
object Showcolumns4: TTBXSubmenuItem
Caption = 'Show &Columns'
object RemoteColumnsSubmenuItem: TTBXSubmenuItem
Caption = '&Columns'
HelpKeyword = 'ui_file_panel#selecting_columns'
Hint = 'Select columns to show in panel'
object Name4: TTBXItem
Action = ShowHideRemoteNameColumnAction2
end
Expand All @@ -2949,6 +2962,11 @@ object NonVisualDataModule: TNonVisualDataModule
object TBXItem1: TTBXItem
Action = ShowHideRemoteLinkTargetColumnAction2
end
object TBXSeparatorItem20: TTBXSeparatorItem
end
object TBXItem114: TTBXItem
Action = AutoSizeRemoteColumnsAction
end
end
end
object QueuePopup: TTBXPopupMenu
Expand Down
11 changes: 8 additions & 3 deletions source/forms/NonVisual.h
Expand Up @@ -336,7 +336,7 @@ class TNonVisualDataModule : public TDataModule
TTBXItem *SortDescending1;
TTBXItem *Hidecolumn1;
TTBXSeparatorItem *N37;
TTBXSubmenuItem *Showcolumns3;
TTBXSubmenuItem *LocalColumnsSubmenuItem;
TTBXItem *Name3;
TTBXItem *Size3;
TTBXItem *Type2;
Expand All @@ -347,7 +347,7 @@ class TNonVisualDataModule : public TDataModule
TTBXItem *MenuItem2;
TTBXItem *Hidecolumn2;
TTBXSeparatorItem *N38;
TTBXSubmenuItem *Showcolumns4;
TTBXSubmenuItem *RemoteColumnsSubmenuItem;
TTBXItem *Name4;
TTBXItem *Size4;
TTBXItem *Modification4;
Expand Down Expand Up @@ -411,7 +411,7 @@ class TNonVisualDataModule : public TDataModule
TTBXItem *TBXItem4;
TTBXItem *TBXItem5;
TAction *PresetsPreferencesAction;
TAction *BestFitColumnAction;
TAction *AutoSizeLocalColumnsAction;
TAction *CustomCommandsEnterAction;
TAction *LockToolbarsAction;
TTBXItem *TBXItem6;
Expand Down Expand Up @@ -698,6 +698,11 @@ class TNonVisualDataModule : public TDataModule
TAction *RemoteOtherDirAction;
TTBXItem *TBXItem109;
TTBXItem *TBXItem113;
TAction *AutoSizeRemoteColumnsAction;
TTBXSeparatorItem *TBXSeparatorItem73;
TTBXItem *TBXItem264;
TTBXSeparatorItem *TBXSeparatorItem20;
TTBXItem *TBXItem114;
void __fastcall ExplorerActionsUpdate(TBasicAction *Action, bool &Handled);
void __fastcall ExplorerActionsExecute(TBasicAction *Action, bool &Handled);
void __fastcall SessionIdleTimerTimer(TObject *Sender);
Expand Down
20 changes: 14 additions & 6 deletions source/forms/ScpCommander.dfm
Expand Up @@ -133,10 +133,9 @@ inherited ScpCommanderForm: TScpCommanderForm
RadioItem = True
end
end
object TBXSubmenuItem4: TTBXSubmenuItem
Caption = 'S&how Columns'
object LocalColumnsSubmenuItem: TTBXSubmenuItem
Caption = '&Columns'
HelpKeyword = 'ui_file_panel#selecting_columns'
Hint = 'Select columns to show in panel'
object TBXItem19: TTBXItem
Action = NonVisualDataModule.ShowHideLocalNameColumnAction2
end
Expand All @@ -152,6 +151,11 @@ inherited ScpCommanderForm: TScpCommanderForm
object TBXItem23: TTBXItem
Action = NonVisualDataModule.ShowHideLocalAttrColumnAction2
end
object TBXSeparatorItem72: TTBXSeparatorItem
end
object TBXItem263: TTBXItem
Action = NonVisualDataModule.AutoSizeLocalColumnsAction
end
end
object TBXItem221: TTBXItem
Action = NonVisualDataModule.LocalFilterAction
Expand Down Expand Up @@ -748,10 +752,9 @@ inherited ScpCommanderForm: TScpCommanderForm
RadioItem = True
end
end
object TBXSubmenuItem17: TTBXSubmenuItem
Caption = 'S&how Columns'
object RemoteColumnsSubmenuItem: TTBXSubmenuItem
Caption = '&Columns'
HelpKeyword = 'ui_file_panel#selecting_columns'
Hint = 'Select columns to show in panel'
object TBXItem101: TTBXItem
Action = NonVisualDataModule.ShowHideRemoteNameColumnAction2
end
Expand All @@ -776,6 +779,11 @@ inherited ScpCommanderForm: TScpCommanderForm
object TBXItem179: TTBXItem
Action = NonVisualDataModule.ShowHideRemoteLinkTargetColumnAction2
end
object TBXSeparatorItem73: TTBXSeparatorItem
end
object TBXItem264: TTBXItem
Action = NonVisualDataModule.AutoSizeRemoteColumnsAction
end
end
object TBXItem220: TTBXItem
Action = NonVisualDataModule.RemoteFilterAction
Expand Down
8 changes: 6 additions & 2 deletions source/forms/ScpCommander.h
Expand Up @@ -108,7 +108,7 @@ class TScpCommanderForm : public TCustomScpExplorerForm
TTBXItem *TBXItem16;
TTBXItem *TBXItem17;
TTBXItem *TBXItem18;
TTBXSubmenuItem *TBXSubmenuItem4;
TTBXSubmenuItem *LocalColumnsSubmenuItem;
TTBXItem *TBXItem19;
TTBXItem *TBXItem20;
TTBXItem *TBXItem21;
Expand Down Expand Up @@ -233,7 +233,7 @@ class TScpCommanderForm : public TCustomScpExplorerForm
TTBXItem *TBXItem98;
TTBXItem *TBXItem99;
TTBXItem *TBXItem100;
TTBXSubmenuItem *TBXSubmenuItem17;
TTBXSubmenuItem *RemoteColumnsSubmenuItem;
TTBXItem *TBXItem101;
TTBXItem *TBXItem102;
TTBXItem *TBXItem103;
Expand Down Expand Up @@ -460,6 +460,10 @@ class TScpCommanderForm : public TCustomScpExplorerForm
TTBXItem *TBXItem260;
TTBXItem *TBXItem261;
TTBXItem *TBXItem262;
TTBXSeparatorItem *TBXSeparatorItem72;
TTBXItem *TBXItem263;
TTBXSeparatorItem *TBXSeparatorItem73;
TTBXItem *TBXItem264;
void __fastcall SplitterMoved(TObject *Sender);
void __fastcall SplitterCanResize(TObject *Sender, int &NewSize,
bool &Accept);
Expand Down
10 changes: 7 additions & 3 deletions source/forms/ScpExplorer.dfm
Expand Up @@ -540,10 +540,9 @@ inherited ScpExplorerForm: TScpExplorerForm
GroupIndex = 1
end
end
object TBXSubmenuItem17: TTBXSubmenuItem
Caption = 'Show &Columns'
object ColumndsSubmenuItem: TTBXSubmenuItem
Caption = '&Columns'
HelpKeyword = 'ui_file_panel#selecting_columns'
Hint = 'Select columns to show in panel'
object TBXItem101: TTBXItem
Action = NonVisualDataModule.ShowHideRemoteNameColumnAction2
end
Expand All @@ -568,6 +567,11 @@ inherited ScpExplorerForm: TScpExplorerForm
object TBXItem76: TTBXItem
Action = NonVisualDataModule.ShowHideRemoteLinkTargetColumnAction2
end
object TBXSeparatorItem73: TTBXSeparatorItem
end
object TBXItem264: TTBXItem
Action = NonVisualDataModule.AutoSizeRemoteColumnsAction
end
end
object TBXItem138: TTBXItem
Action = NonVisualDataModule.RemoteFilterAction
Expand Down
4 changes: 3 additions & 1 deletion source/forms/ScpExplorer.h
Expand Up @@ -113,7 +113,7 @@ class TScpExplorerForm : public TCustomScpExplorerForm
TTBXItem *TBXItem98;
TTBXItem *TBXItem99;
TTBXItem *TBXItem100;
TTBXSubmenuItem *TBXSubmenuItem17;
TTBXSubmenuItem *ColumndsSubmenuItem;
TTBXItem *TBXItem101;
TTBXItem *TBXItem102;
TTBXItem *TBXItem103;
Expand Down Expand Up @@ -331,6 +331,8 @@ class TScpExplorerForm : public TCustomScpExplorerForm
TTBXSeparatorItem *TBXSeparatorItem29;
TTBXItem *TBXItem90;
TTBXSeparatorItem *TBXSeparatorItem50;
TTBXSeparatorItem *TBXSeparatorItem73;
TTBXItem *TBXItem264;
void __fastcall RemoteDirViewUpdateStatusBar(TObject *Sender,
const TStatusFileInfo &FileInfo);
void __fastcall UnixPathComboBoxBeginEdit(TTBEditItem *Sender,
Expand Down

0 comments on commit 36e7719

Please sign in to comment.