mirror of https://gitlab.com/basile.b/dexed.git
fix, shortcut editor want first/want next, always handle the last result
This commit is contained in:
parent
e1034fa8a4
commit
a460b168a4
|
@ -44,6 +44,7 @@ object CEShortcutEditor: TCEShortcutEditor
|
||||||
HideSelection = False
|
HideSelection = False
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
ScrollBars = ssAutoBoth
|
ScrollBars = ssAutoBoth
|
||||||
|
SortType = stText
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
OnSelectionChanged = treeSelectionChanged
|
OnSelectionChanged = treeSelectionChanged
|
||||||
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||||
|
|
|
@ -65,6 +65,7 @@ type
|
||||||
procedure optionedEvent(anEvent: TOptionEditorEvent);
|
procedure optionedEvent(anEvent: TOptionEditorEvent);
|
||||||
//
|
//
|
||||||
function findCategory(const aName: string; aData: Pointer): TTreeNode;
|
function findCategory(const aName: string; aData: Pointer): TTreeNode;
|
||||||
|
function sortCategories(Cat1, Cat2: TTreeNode): integer;
|
||||||
procedure updateFromObservers;
|
procedure updateFromObservers;
|
||||||
procedure updateEditCtrls;
|
procedure updateEditCtrls;
|
||||||
protected
|
protected
|
||||||
|
@ -253,31 +254,26 @@ begin
|
||||||
exit(tree.Items[i]);
|
exit(tree.Items[i]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCEShortcutEditor.sortCategories(Cat1, Cat2: TTreeNode): integer;
|
||||||
|
begin
|
||||||
|
result := CompareText(Cat1.Text, Cat2.Text);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEShortcutEditor.updateFromObservers;
|
procedure TCEShortcutEditor.updateFromObservers;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
obs: ICEEditableShortCut;
|
obs: ICEEditableShortCut;
|
||||||
cat: string;
|
cat: string;
|
||||||
prt: TTreeNode;
|
|
||||||
sht: word;
|
sht: word;
|
||||||
idt: string;
|
idt: string;
|
||||||
itm: TShortcutItem;
|
itm: TShortcutItem;
|
||||||
begin
|
procedure addItem();
|
||||||
tree.Items.Clear;
|
var
|
||||||
fShortcuts.items.Clear;
|
prt: TTreeNode;
|
||||||
fBackup.items.Clear;
|
|
||||||
cat := '';
|
|
||||||
idt := '';
|
|
||||||
for i:= 0 to fObservers.observersCount-1 do
|
|
||||||
begin
|
|
||||||
obs := fObservers.observers[i] as ICEEditableShortCut;
|
|
||||||
if obs.scedWantFirst then while obs.scedWantNext(cat, idt, sht) do
|
|
||||||
begin
|
begin
|
||||||
// root category
|
// root category
|
||||||
if cat = '' then
|
if cat = '' then exit;
|
||||||
continue;
|
if idt = '' then exit;
|
||||||
if idt = '' then
|
|
||||||
continue;
|
|
||||||
prt := findCategory(cat, obs);
|
prt := findCategory(cat, obs);
|
||||||
if prt = nil then
|
if prt = nil then
|
||||||
prt := tree.Items.AddObject(nil, cat, obs);
|
prt := tree.Items.AddObject(nil, cat, obs);
|
||||||
|
@ -289,8 +285,24 @@ begin
|
||||||
cat := '';
|
cat := '';
|
||||||
idt := '';
|
idt := '';
|
||||||
end;
|
end;
|
||||||
|
begin
|
||||||
|
tree.Items.Clear;
|
||||||
|
fShortcuts.items.Clear;
|
||||||
|
fBackup.items.Clear;
|
||||||
|
cat := '';
|
||||||
|
idt := '';
|
||||||
|
for i:= 0 to fObservers.observersCount-1 do
|
||||||
|
begin
|
||||||
|
obs := fObservers.observers[i] as ICEEditableShortCut;
|
||||||
|
if obs.scedWantFirst then
|
||||||
|
begin
|
||||||
|
while obs.scedWantNext(cat, idt, sht) do
|
||||||
|
addItem();
|
||||||
|
addItem();
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
tree.Items.SortTopLevelNodes(@sortCategories);
|
||||||
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
|
Loading…
Reference in New Issue