UPD: New dinamic columns system

This commit is contained in:
b4rr4cuda 2008-04-13 09:24:30 +00:00
commit 75ab707c5e
6 changed files with 2279 additions and 2168 deletions

File diff suppressed because it is too large Load diff

View file

@ -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;

View file

@ -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;

File diff suppressed because it is too large Load diff

View file

@ -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

File diff suppressed because it is too large Load diff