mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-28 10:02:14 +00:00
UPD: New dinamic columns system
This commit is contained in:
parent
26bfdef344
commit
75ab707c5e
6 changed files with 2279 additions and 2168 deletions
1009
fcolumnssetconf.pas
1009
fcolumnssetconf.pas
File diff suppressed because it is too large
Load diff
85
fmain.pas
85
fmain.pas
|
|
@ -325,6 +325,7 @@ type
|
|||
procedure ColumnsMenuClick(Sender: TObject);
|
||||
function ExecuteCommandFromEdit(sCmd:String):Boolean;
|
||||
procedure AddSpecialButtons(dskPanel: TKASToolBar);
|
||||
procedure ReLoadTabs(ANoteBook: TNoteBook);
|
||||
public
|
||||
// frameLeft, frameRight:TFrameFilePanel;
|
||||
|
||||
|
|
@ -476,7 +477,7 @@ begin
|
|||
|
||||
seLogWindow.Font.Name := gFontName;
|
||||
|
||||
ColSet:=TPanelColumnsList.Create;
|
||||
//ColSet:=TPanelColumnsList.Create;
|
||||
pmColumnsMenu.Items.Clear;
|
||||
//DebugLn('frmMain.FormCreate Done');
|
||||
end;
|
||||
|
|
@ -693,7 +694,7 @@ procedure TfrmMain.FormDestroy(Sender: TObject);
|
|||
begin
|
||||
DebugLn('frmMain.Destroy');
|
||||
|
||||
ColSet.Free;
|
||||
//ColSet.Free;
|
||||
|
||||
if gSaveCmdLineHistory then
|
||||
edtCommand.Items.SaveToFile(gpIniDir+cHistoryFile);
|
||||
|
|
@ -872,9 +873,9 @@ begin
|
|||
(* Save columns widths *)
|
||||
with FrameLeft do
|
||||
begin
|
||||
for x:=0 to Colm.ColumnsCount - 1 do
|
||||
Colm.SetColumnWidth(x, dgPanel.ColWidths[x]);
|
||||
Colm.Save(gIni);
|
||||
for x:=0 to ColSet.GetColumnSet(ActiveColm).ColumnsCount - 1 do
|
||||
ColSet.GetColumnSet(ActiveColm).SetColumnWidth(x, dgPanel.ColWidths[x]);
|
||||
ColSet.GetColumnSet(ActiveColm).Save(gIni);
|
||||
end;
|
||||
|
||||
(* Save all tabs *)
|
||||
|
|
@ -2418,31 +2419,37 @@ begin
|
|||
begin
|
||||
Application.CreateForm(TfColumnsSetConf, frmColumnsSetConf);
|
||||
{EDIT Set}
|
||||
frmColumnsSetConf.edtNameofColumnsSet.Text:=ActiveFrame.Colm.CurrentColumnsSetName;
|
||||
Index:=ColSet.Items.IndexOf(ActiveFrame.Colm.CurrentColumnsSetName);
|
||||
frmColumnsSetConf.lbNrOfColumnsSet.Caption:=IntToStr(1+ColSet.Items.IndexOf(ActiveFrame.Colm.CurrentColumnsSetName));
|
||||
frmColumnsSetConf.Tag:=ColSet.Items.IndexOf(ActiveFrame.Colm.CurrentColumnsSetName);
|
||||
frmColumnsSetConf.edtNameofColumnsSet.Text:=ColSet.GetColumnSet(ActiveFrame.ActiveColm).CurrentColumnsSetName;
|
||||
Index:=ColSet.Items.IndexOf(ActiveFrame.ActiveColm);
|
||||
frmColumnsSetConf.lbNrOfColumnsSet.Caption:=IntToStr(1+ColSet.Items.IndexOf(ActiveFrame.ActiveColm));
|
||||
frmColumnsSetConf.Tag:=ColSet.Items.IndexOf(ActiveFrame.ActiveColm);
|
||||
frmColumnsSetConf.ColumnClass.Clear;
|
||||
frmColumnsSetConf.ColumnClass.Load(gIni,ActiveFrame.Colm.CurrentColumnsSetName);
|
||||
frmColumnsSetConf.ColumnClass.Load(gIni,ActiveFrame.ActiveColm);
|
||||
{EDIT Set}
|
||||
frmColumnsSetConf.ShowModal;
|
||||
ColSet.Save(gIni);
|
||||
//ColSet.Save(gIni);
|
||||
|
||||
FreeAndNil(frmColumnsSetConf);
|
||||
//TODO: Reload current columns in panels
|
||||
ReLoadTabs(nbLeft);
|
||||
ReLoadTabs(nbRight);
|
||||
end;
|
||||
1001: //All columns
|
||||
begin
|
||||
actOptionsExecute(Sender,15);
|
||||
ReLoadTabs(nbLeft);
|
||||
ReLoadTabs(nbRight);
|
||||
end;
|
||||
|
||||
else
|
||||
begin
|
||||
ActiveFrame.Colm.Load(gIni,ColSet.Items[(Sender as TMenuItem).Tag]);
|
||||
ActiveFrame.dgPanel.ColCount:=ActiveFrame.Colm.ColumnsCount;
|
||||
ActiveFrame.ActiveColm:=ColSet.Items[(Sender as TMenuItem).Tag];
|
||||
ActiveFrame.SetColWidths;
|
||||
// ActiveFrame.dgPanel.ColCount:=ColSet.GetColumnSet(ActiveFrame.ActiveColm).ColumnsCount;
|
||||
|
||||
if ActiveFrame.Colm.ColumnsCount>0 then
|
||||
for x:=0 to ActiveFrame.Colm.ColumnsCount-1 do
|
||||
ActiveFrame.dgPanel.ColWidths[x]:=ActiveFrame.Colm.GetColumnWidth(x);
|
||||
// if ColSet.GetColumnSet(ActiveFrame.ActiveColm).ColumnsCount>0 then
|
||||
// for x:=0 to ColSet.GetColumnSet(ActiveFrame.ActiveColm).ColumnsCount-1 do
|
||||
// ActiveFrame.dgPanel.ColWidths[x]:=ColSet.GetColumnSet(ActiveFrame.ActiveColm).GetColumnWidth(x);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
|
@ -2459,9 +2466,8 @@ begin
|
|||
(Sender as TDrawGrid).MouseToCell(X, Y, iCol, iRow);
|
||||
if (Button=mbRight) and (iRow < (Sender as TDrawGrid).FixedRows ) then
|
||||
begin
|
||||
|
||||
//Load Columns into menu
|
||||
ColSet.Clear;
|
||||
ColSet.Load(Gini);
|
||||
pmColumnsMenu.Items.Clear;
|
||||
if ColSet.Items.Count>0 then
|
||||
begin
|
||||
|
|
@ -2824,6 +2830,29 @@ begin
|
|||
ANoteBook.ShowTabs:= ((ANoteBook.PageCount > 1) or Boolean(gDirTabOptions and tb_always_visible)) and gDirectoryTabs;
|
||||
end;
|
||||
|
||||
procedure TfrmMain.ReLoadTabs(ANoteBook: TNoteBook);
|
||||
var
|
||||
I : Integer;
|
||||
begin
|
||||
DebugLn('FSetCol='+inttostr(colset.Items.Count));
|
||||
|
||||
for i:=0 to ANoteBook.PageCount-1 do
|
||||
begin
|
||||
with TFrameFilePanel(ANoteBook.Page[I].Components[0]) do
|
||||
begin
|
||||
DebugLn('ActiveColmRET'+Inttostr(I)+'='+ActiveColm);
|
||||
if ColSet.Items.IndexOf(ActiveColm)=-1 then
|
||||
if ColSet.Items.Count>0 then
|
||||
ActiveColm:=ColSet.Items[0]
|
||||
else
|
||||
ActiveColm:='Default';
|
||||
Colset.GetColumnSet(ActiveColm).Load(gini,ActiveColm);
|
||||
SetColWidths;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmMain.LoadTabs(ANoteBook: TNoteBook);
|
||||
var
|
||||
x, I : Integer;
|
||||
|
|
@ -2870,12 +2899,8 @@ begin
|
|||
|
||||
with TFrameFilePanel(ANoteBook.Page[ANoteBook.PageCount - 1].Components[0]) do
|
||||
begin
|
||||
Colm.Load(gIni,sColumnSet);
|
||||
dgPanel.ColCount:=Colm.ColumnsCount;
|
||||
// setup column widths
|
||||
if Colm.ColumnsCount>0 then
|
||||
for x:=0 to Colm.ColumnsCount-1 do
|
||||
dgPanel.ColWidths[x]:=Colm.GetColumnWidth(x);
|
||||
ActiveColm:=sColumnSet;
|
||||
SetColWidths;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
|
@ -2893,12 +2918,8 @@ begin
|
|||
sColumnSet:=gIni.ReadString(TabsSection, sIndex + '_columnsset', '');
|
||||
with TFrameFilePanel(ANoteBook.Page[ANoteBook.PageCount - 1].Components[0]) do
|
||||
begin
|
||||
Colm.Load(gIni,sColumnSet);
|
||||
dgPanel.ColCount:=Colm.ColumnsCount;
|
||||
// setup column widths
|
||||
if Colm.ColumnsCount>0 then
|
||||
for x:=0 to Colm.ColumnsCount-1 do
|
||||
dgPanel.ColWidths[x]:=Colm.GetColumnWidth(x);
|
||||
ActiveColm:=sColumnSet;
|
||||
SetColWidths;
|
||||
end;
|
||||
|
||||
|
||||
|
|
@ -2951,7 +2972,7 @@ begin
|
|||
gIni.WriteString(TabsSection, sIndex + '_path', sPath);
|
||||
gIni.WriteString(TabsSection, sIndex + '_caption', ANoteBook.Page[I].Caption);
|
||||
|
||||
sColumnSet:=TFrameFilePanel(ANoteBook.Page[I].Components[0]).Colm.CurrentColumnsSetName;
|
||||
sColumnSet:=TFrameFilePanel(ANoteBook.Page[I].Components[0]).ActiveColm;
|
||||
gIni.WriteString(TabsSection, sIndex + '_columnsset', sColumnSet);
|
||||
|
||||
inc(I);
|
||||
|
|
@ -2959,7 +2980,7 @@ begin
|
|||
sPath := TFrameFilePanel(ANoteBook.ActivePageComponent.Components[0]).ActiveDir;
|
||||
gIni.WriteString(Section, 'path', sPath);
|
||||
|
||||
sColumnSet:=TFrameFilePanel(ANoteBook.ActivePageComponent.Components[0]).Colm.CurrentColumnsSetName;
|
||||
sColumnSet:=TFrameFilePanel(ANoteBook.ActivePageComponent.Components[0]).ActiveColm;
|
||||
gIni.WriteString(Section, 'columnsset', sColumnSet);
|
||||
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -480,8 +480,8 @@ begin
|
|||
|
||||
|
||||
{ Columns Set}
|
||||
ColSet.Clear;
|
||||
ColSet.Load(gIni);
|
||||
//ColSet.Clear;
|
||||
// ColSet.Load(gIni);
|
||||
FillColumnsList;
|
||||
|
||||
nbNotebook.PageIndex := 0; //let not warning on which page save form
|
||||
|
|
@ -1426,6 +1426,7 @@ end;
|
|||
procedure TfrmOptions.btnDelColumnsSetClick(Sender: TObject);
|
||||
begin
|
||||
if lstColumnsSets.ItemIndex=-1 then exit;
|
||||
if lstColumnsSets.Count=1 then exit;
|
||||
ColSet.DeleteColumnSet(gIni,lstColumnsSets.Items[lstColumnsSets.ItemIndex]);
|
||||
FillColumnsList;
|
||||
end;
|
||||
|
|
|
|||
2148
framepanel.pas
2148
framepanel.pas
File diff suppressed because it is too large
Load diff
89
ucolumns.pas
89
ucolumns.pas
|
|
@ -94,6 +94,7 @@ uses
|
|||
procedure Delete(Index:Integer);
|
||||
procedure Clear;
|
||||
procedure AddDefaultColumns;
|
||||
|
||||
//---------------------
|
||||
procedure Load(FileName,SetName:String);overload;
|
||||
procedure Load(Ini:TIniFile; SetName:string);overload;
|
||||
|
|
@ -103,8 +104,8 @@ uses
|
|||
procedure Load(Ini:TIniFile);overload;
|
||||
|
||||
//---------------------
|
||||
procedure Save(FileName,SetName:string); overload;
|
||||
procedure Save(Ini:TIniFile;SetName:string); overload;
|
||||
procedure Save(FileName,ASetName:string); overload;
|
||||
procedure Save(Ini:TIniFile;ASetName:string); overload;
|
||||
//---------------------
|
||||
|
||||
procedure Save;
|
||||
|
|
@ -133,10 +134,13 @@ uses
|
|||
procedure Load(Ini:TIniFile);overload;
|
||||
procedure Save(FileName:string);
|
||||
procedure Save(Ini:TIniFile); overload;
|
||||
function Add(AName:string;Item:TPanelColumnsClass):integer;
|
||||
procedure Insert(AIndex: integer; AName: string; Item: TPanelColumnsClass);
|
||||
procedure DeleteColumnSet(ini:TInifile; SetName:string);
|
||||
procedure DeleteColumnSet(ini:TInifile; SetIndex:Integer); overload;
|
||||
procedure CopyColumnSet(ini:TInifile; SetName,NewSetName:string);
|
||||
|
||||
function GetColumnSet(Index:Integer):TPanelColumnsClass;
|
||||
function GetColumnSet(Setname:string):TPanelColumnsClass;
|
||||
//---------------------
|
||||
published
|
||||
property Items:TStringList read fSet;
|
||||
|
|
@ -321,6 +325,7 @@ begin
|
|||
Add(rsColAttr, '[DC().GETFILEATTR{}]', 200, taLeftJustify);
|
||||
end;
|
||||
|
||||
|
||||
procedure TPanelColumnsClass.Load(FileName, SetName: String);
|
||||
begin
|
||||
fSetName:=SetName;
|
||||
|
|
@ -371,15 +376,15 @@ begin
|
|||
//---------------------
|
||||
end;
|
||||
|
||||
procedure TPanelColumnsClass.Save(FileName, SetName: string);
|
||||
procedure TPanelColumnsClass.Save(FileName, ASetName: string);
|
||||
begin
|
||||
fSetName:=SetName;
|
||||
fSetName:=ASetName;
|
||||
Save(FileName);
|
||||
end;
|
||||
|
||||
procedure TPanelColumnsClass.Save(Ini: TIniFile; SetName: string);
|
||||
procedure TPanelColumnsClass.Save(Ini: TIniFile; ASetName: string);
|
||||
begin
|
||||
fSetName:=SetName;
|
||||
fSetName:=ASetName;
|
||||
Save(Ini);
|
||||
end;
|
||||
|
||||
|
|
@ -587,15 +592,24 @@ begin
|
|||
end;
|
||||
|
||||
destructor TPanelColumnsList.Destroy;
|
||||
var i:integer;
|
||||
begin
|
||||
|
||||
if assigned(FSet) then
|
||||
FreeAndNil(FSet);
|
||||
|
||||
begin
|
||||
for i:=0 to Fset.Count-1 do
|
||||
TPanelColumnsClass(Fset.Objects[i]).Free;
|
||||
FreeAndNil(FSet);
|
||||
end;
|
||||
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TPanelColumnsList.Clear;
|
||||
var i:integer;
|
||||
begin
|
||||
for i:=0 to Fset.Count-1 do
|
||||
TPanelColumnsClass(Fset.Objects[i]).Free;
|
||||
Fset.Clear;
|
||||
end;
|
||||
|
||||
|
|
@ -617,8 +631,11 @@ begin
|
|||
Count:=Ini.ReadInteger('ColumnsSet','ColumnsSetCount',0);
|
||||
For I:=0 to Count-1 do
|
||||
begin
|
||||
fSet.Add(Ini.ReadString('ColumnsSet','ColumnsSet'+IntToStr(I+1)+'Name',''));
|
||||
fSet.AddObject(Ini.ReadString('ColumnsSet','ColumnsSet'+IntToStr(I+1)+'Name',''),TPanelColumnsClass.Create);
|
||||
TPanelColumnsClass(fSet.Objects[I]).Load(ini,fset[i]);
|
||||
DebugLn('FsetName='+Fset[i]);
|
||||
end;
|
||||
DebugLn('FsetCount='+inttostr(fset.Count));
|
||||
end;
|
||||
|
||||
procedure TPanelColumnsList.Save(FileName: string);
|
||||
|
|
@ -640,9 +657,21 @@ begin
|
|||
For I:=0 to FSet.Count-1 do
|
||||
begin
|
||||
Ini.WriteString('ColumnsSet','ColumnsSet'+IntToStr(I+1)+'Name',FSet[i]);
|
||||
TPanelColumnsClass(Fset.Objects[i]).Save(ini,FSet[i]);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPanelColumnsList.Add(AName:string;Item: TPanelColumnsClass): integer;
|
||||
begin
|
||||
Result:=Fset.AddObject(AName,Item);
|
||||
end;
|
||||
|
||||
procedure TPanelColumnsList.Insert(AIndex: integer; AName: string;
|
||||
Item: TPanelColumnsClass);
|
||||
begin
|
||||
Fset.InsertObject(AIndex,AName,Item);
|
||||
end;
|
||||
|
||||
|
||||
procedure TPanelColumnsList.DeleteColumnSet(ini: TInifile; SetName: string);
|
||||
var x:integer;
|
||||
|
|
@ -654,7 +683,9 @@ end;
|
|||
|
||||
procedure TPanelColumnsList.DeleteColumnSet(ini: TInifile; SetIndex: Integer);
|
||||
begin
|
||||
if (SetIndex>=Fset.Count) or (SetIndex<0) then exit;
|
||||
Ini.EraseSection(FSet[SetIndex]);
|
||||
TPanelColumnsClass(fSet.Objects[SetIndex]).Free;
|
||||
fSet.Delete(SetIndex);
|
||||
end;
|
||||
|
||||
|
|
@ -665,7 +696,7 @@ begin
|
|||
x:=fSet.IndexOf(SetName);
|
||||
if x<>-1 then
|
||||
begin
|
||||
try
|
||||
{ try
|
||||
st:=TStringList.Create;
|
||||
ini.ReadSectionValues(SetName,st);
|
||||
for i:=0 to st.Count-1 do
|
||||
|
|
@ -674,12 +705,44 @@ begin
|
|||
end;
|
||||
finally
|
||||
st.Free;
|
||||
end;
|
||||
fSet.Add(NewSetName);
|
||||
end;}
|
||||
fSet.AddObject(NewSetName,fset.Objects[x]);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
function TPanelColumnsList.GetColumnSet(Index: Integer): TPanelColumnsClass;
|
||||
begin
|
||||
//DebugLn('FsetCount='+inttostr(fset.Count));
|
||||
if (Index>-1) and (Index<Fset.Count) then
|
||||
Result:=TPanelColumnsClass(Fset.Objects[Index])
|
||||
else
|
||||
begin
|
||||
if fset.Count=0 then
|
||||
begin
|
||||
Fset.AddObject('Default',TPanelColumnsClass.Create);
|
||||
TPanelColumnsClass(Fset.Objects[0]).AddDefaultColumns;
|
||||
end;
|
||||
Result:=TPanelColumnsClass(Fset.Objects[0]);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPanelColumnsList.GetColumnSet(Setname: string): TPanelColumnsClass;
|
||||
begin
|
||||
//DebugLn('FsetCount='+inttostr(fset.Count));
|
||||
if fset.IndexOf(Setname)>-1 then
|
||||
Result:=TPanelColumnsClass(Fset.Objects[fset.IndexOf(Setname)])
|
||||
else
|
||||
begin
|
||||
if fset.Count=0 then
|
||||
begin
|
||||
Fset.AddObject('Default',TPanelColumnsClass.Create);
|
||||
TPanelColumnsClass(Fset.Objects[0]).AddDefaultColumns;
|
||||
end;
|
||||
Result:=TPanelColumnsClass(Fset.Objects[0]);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
IntList:=TStringlist.Create;
|
||||
|
|
|
|||
1111
uglobs.pas
1111
uglobs.pas
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue