Code: Select all
-- See https://forum.farmanager.com/viewtopic.php?p=148024#p148024
-- Based on https://forum.farmanager.com/viewtopic.php?p=146816#p146816
buildNum = ({far.AdvControl('ACTL_GETFARMANAGERVERSION',true)})[4]
d = buildNum < 6061 and 1 or 0 -- no separate Fuzzy Search yet? Beware: these are deprecated and no longer supported.
viewerFuzzySearch = buildNum > 6077
findFileTextHexRadio = buildNum > 6081 -- note: builds 6082..6084 have issues in the dialog, see GH-592
unifiedSearchReplace = buildNum > 6095
unifiedViewerSearch = buildNum > 6098
unifiedSRTransform = unifiedSearchReplace and {1,4.3,5.3,7,10,15.1,16.1,17.1,18.1,19.4} or {1,2.3,3.3,5,7,12.1,13.1,14.1}
DX=4
transform=
[win.Uuid far.Guids.FindFileId]: findFileTextHexRadio and {1,3,6,7,17.1,18.1,19.1,20.1,22.1,25.1} or
{1,3,6,7,9,16.1-d,17.1-d,18.1-d,19.1-d,21.1-d,23.2-d,24.1-d}
[win.Uuid far.Guids.CopyFilesId ]: {1,3}
[win.Uuid far.Guids.CopyCurrentOnlyFileId ]: {1,3}
[win.Uuid far.Guids.MoveFilesId ]: {1,3}
[win.Uuid far.Guids.MoveCurrentOnlyFileId ]: {1,3}
[win.Uuid far.Guids.MakeFolderId ]: {1,3,6,8}
[win.Uuid far.Guids.HardSymLinkId ]: {1,3}
[win.Uuid far.Guids.FileOpenCreateId ]: {1,3}
[win.Uuid far.Guids.HelpSearchId ]: unifiedSRTransform
[win.Uuid far.Guids.EditorSearchId ]: unifiedSRTransform
[win.Uuid far.Guids.EditorReplaceId ]: unifiedSRTransform
[win.Uuid far.Guids.ViewerSearchId ]: unifiedViewerSearch and unifiedSRTransform or
( viewerFuzzySearch and {1,5,11.1,12.1} or {1,3,8.1,9.1,10.1,11.1} )
[win.Uuid far.Guids.FileSaveAsId ]: {1,3,6}
[win.Uuid far.Guids.PluginInformationId ]: {1,3,5,7,9,11,13,15,17}
[win.Uuid far.Guids.FileAttrDlgId ]: {1,3,4,6,37}
[win.Uuid far.Guids.DescribeFileId ]: {1,3,6}
[win.Uuid far.Guids.ApplyCommandId ]: {1,3,6}
[win.Uuid far.Guids.EditUserMenuId ]: {1,5,8,9,10,11,12,13,14,15,16,17}
[win.Uuid far.Guids.FileAssocModifyId ]: {1,3,5,8,10,12,14,16,18}
[win.Uuid far.Guids.EditMaskGroupId ]: {1,5}
[win.Uuid far.Guids.CopyOverwriteId ]: {1,3}
[win.Uuid far.Guids.CopyReadOnlyId ]: {1,3}
[win.Uuid far.Guids.SelectDialogId ]: {1,2}
[win.Uuid far.Guids.UnSelectDialogId ]: {1,2}
[win.Uuid far.Guids.FolderShortcutsDlgId ]: {1,3,5,8,10}
--{ ArcLite
[win.Uuid'08A1229B-AD54-451B-8B53-6D5FD35BCFAA']: {1,15,19,27,31} -- Configuration
[win.Uuid'CD57D7FA-552C-4E31-8FA8-73D9704F0666']: {1,10,23} -- Create archive
[win.Uuid'97877FD0-78E6-4169-B4FB-D76746249F4D']: {1,3} -- Extract files
[win.Uuid'761F3B4C-FC45-4A9D-A383-3F75D505A43B']: {1,2,3,4} -- Enter password
[win.Uuid'0DCE48E5-B205-44A0-B8BF-96B28E2FD3B3']: {1,9,20,22,33,35,37} -- SFX options
--}
[win.Uuid'2345D916-D5D1-4A17-800A-E44C457D4F82']: {1,3} -- TmpPanel: Save file list
--{ Colorer
[win.Uuid'87C92249-430D-4334-AC33-05E7423286E9']: {1,5,7,9} -- Configuration: Main
[win.Uuid'0497F43A-A8B9-4AF1-A3A4-FA568F455707']: {1,7} -- Configuration: Scheme
[win.Uuid'3D1031EA-B67A-451C-9FC6-081320D3A139']: {1,7} -- Configuration: Logging
--}
--{ NetBox uses the same GUID for all its dialogs. :( As a result, Transfer settings dialog's layout suffers.
[win.Uuid'42E4AEB1-A230-44F4-B33C-F195BB654931']: {1,3,5,7,9} -- Copy, Move; Make folder; Duplicate, Move to, Rename; Add link; Integration settings
--}
--{ RESearch
[win.Uuid'E506EA8F-484F-7261-FEED-9B10267753E9']: {1.0,4.0,6.0,7.3,26.3} -- Shell/Search
[win.Uuid'9736CFC1-9F3A-D4F9-02A4-566717182E8B']: {1.0,4.0,6.0,8.0,9.3,10.3,37.3} -- Shell/Replace
[win.Uuid'3D95792C-E25C-1CE1-EC09-DC409184EC7A']: {1.0,4.0,6.0,7.3,24.0,35.3} -- Shell/Grep
[win.Uuid'AA3CA1C7-062A-67A8-3A73-80B5E9394046']: {1.0,5.0} -- Shell/SelectFiles,UnselectFiles,FlipSelection
[win.Uuid'0AE75CCC-5872-74A7-3561-BBA1991C0395']: {1.0,4.0,6.0,8.0,28.3} -- Shell/RenameFiles
[win.Uuid'622AAD65-B7CA-7670-6622-A267028B1A06']: {1.0,5.0,7.0,16.3} -- Shell/RenameSelectedFiles
[win.Uuid'FF1E3A24-0B7A-0149-EFA2-1ED2309F8410']: {1.0,3.0,4.3,14.3,18.3} -- Viewer,Editor/Search (hack: [Presets] is 14 in V, 18 in E)
[win.Uuid'411BF77E-5743-D87A-A8E7-0EFDF0C71D79']: {1.0,3.0,5.0,6.3,7.3,25.3} -- Editor/Replace
[win.Uuid'3A6225FC-AD65-75B1-2643-5158B78D6BC4']: {1.0,3.0,4.3,14.3} -- Editor/Filter
[win.Uuid'6938029A-B71F-09EE-D09D-9982EE2B40BC']: {1.0,3.0,4.3,15.3} -- Editor/Repeat
[win.Uuid'DCDDDA35-A319-1B82-8410-36C04A1390B0']: {1.0,3.0,5.0,10.3} -- Editor/Transliterate
--}
[win.Uuid'6974DF22-EF25-4803-8C52-8E80C839EB58']: {1,3} -- AltHistory: Add exclusion
[win.Uuid'32596DDC-03ED-4EE1-884C-4AEB3F436BD6']: {1,3} -- AltHistory: Edit filter
[win.Uuid'2C4EFD54-A419-47E5-99B6-C9FD2D386AEC']: {1,3,5} -- PostMacro
[win.Uuid'E9D017C5-DB0C-441D-8E11-0AD35841AFC6']: {1,3} -- Registry: Copy (export)
[win.Uuid'70B7A9E0-EB59-4827-B7E5-BF65AF80364A']: {1,3} -- Registry: Copy (in Registry), Move/Rename (in Registry)
[win.Uuid'6CD79091-C9FC-4B1A-9277-037434879069']: {1,3} -- Registry: Create key
[win.Uuid'DBF22016-D6E7-4549-B71B-BD2F1E0B0AB5']: {1,3} -- Registry: Edit value (description)
--{ XML Browser and JSON browser share their main dialog GUIDs:
[win.Uuid'54780B3C-1ECE-41BE-8E7C-786A7F51492D']: {1,3} -- Copy (export)
[win.Uuid'B0F0C168-3B47-41D9-826B-008F6797D5B1']: {1,3} -- Edit-view value (description)
--}
[win.Uuid'2430BA2F-D52E-4129-9561-5E8B1C3BACDB']: {1,3} -- Observer: Extract file(s)
[win.Uuid'4809D144-75B8-41A8-9700-7B925665F6AD']: {1,3,8,10,12} -- Anamorphosis: custom.module: Edit association
--{ Renewal 3.23.1+, by Pasha_ZZZ, see https://forum.farmanager.com/viewtopic.php?p=172973#p172973
[win.Uuid'FF3A8CA2-544A-4ECD-A9A2-74B01D007E60']: {1,3,5,7,9,11,13,15,17,19} -- Info
[win.Uuid'44832B2D-406B-4071-89DD-17182E539F2F']: {1,3,5,12,16,18,21,23} -- Setup
[win.Uuid'C6BCF2E6-CD58-4811-820C-AB72AB7F473B']: {1,8,10,12,15,17,20} -- Configuration
--}
F=far.Flags
ConsoleWidth=->
rr=far.AdvControl'ACTL_GETFARRECT'
rr.Right-rr.Left+1
Event
group:'DialogEvent'
description:'always ignore'
action:(event,param)->
if event==F.DE_DLGPROCINIT and param.Msg==F.DN_INITDIALOG
id=far.SendDlgMessage param.hDlg,F.DM_GETDIALOGINFO
if id and transform[id.Id]
cx=ConsoleWidth!
{Left:dl,Top:dt,Right:dr,Bottom:db}=far.SendDlgMessage param.hDlg,F.DM_GETDLGRECT
diff=(cx-DX)-(dr-dl+1)
if diff>0
far.SendDlgMessage param.hDlg,F.DM_RESIZEDIALOG,0,{X:cx-DX,Y:db-dt+1}
far.SendDlgMessage param.hDlg,F.DM_MOVEDIALOG,1,{X:DX/2,Y:dt}
for ii in *transform[id.Id]
index,opt=math.modf ii
item=far.GetDlgItem param.hDlg,index
if item -- prevent error message for out-of-range index (see "hack" above)
opt=math.floor(opt*10+0.5)
switch opt
when 0 -- Stretch full
if item[4]~=0
item[4]+=diff
when 1 -- Move half
item[2]+=diff/2
if item[4]~=0
item[4]+=diff/2
when 2 -- Stretch half
if item[4]~=0
item[4]+=diff/2
when 3 -- Move full
item[2]+=diff
if item[4]~=0
item[4]+=diff
when 4 -- Move half + stretch half
item[2]+=diff/2
if item[4]~=0
item[4]+=diff
far.SetDlgItem param.hDlg,index,item
false