source: tol/tolbase/lib/toltk/tolconfig_gui.tcl @ 543fdce

1941-docker-image-to-testdevel
Last change on this file since 543fdce was 0422d20, checked in by Jorge Pérez <josp.jorge@…>, 15 years ago

refs #919, implementing options manager as a tree which is read from TolConfigManager::Config

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@3972 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 2.2 KB
Line 
1package require wtree
2
3namespace eval ::TolConfigGUI {
4
5  namespace import ::msgcat::*
6
7  variable win
8  variable tree
9}
10
11proc ::TolConfigGUI::GetFullName { member parent } {
12  return [ expr { $parent eq "" ? "$member" : "${parent}::$member" } ]
13}
14
15proc ::TolConfigGUI::CreateSectionNode { section secParent dictConfig } {
16  variable tree
17  variable treeInfo
18
19  set fullSection [ GetFullName $section $secParent ]
20  set nid [ $tree insert [ list [ list "" [ mc $section ] ] [ list "" ] ] \
21               -at end -relative $treeInfo(node,$secParent) -button auto ]
22  set treeInfo(node,$fullSection) $nid
23
24  array set config $dictConfig
25  foreach _n [ array names config ] {
26    if { [ regexp _.autodoc.member.(.+) $_n ==> n ] } {
27      FillTree $n $fullSection $config($n)
28    }
29  }
30  return $fullSection
31}
32
33proc ::TolConfigGUI::CreateMemberNode { member secParent value } {
34 variable tree
35  variable treeInfo
36
37  set full [ GetFullName $member $secParent ]
38  set nid [ $tree insert [ list [ list "" [ mc $member ] ] [ list $value ] ] \
39               -at end -relative $treeInfo(node,$secParent) -button auto ]
40  set treeInfo(node,$full) $nid
41  set treeInfo(value,$full) $value
42
43  return $full
44}
45
46proc ::TolConfigGUI::FillTree { member secParent value } {
47  variable win
48  variable treeInfo
49
50 
51  set full [ GetFullName $member $secParent ]
52  set type [ ::TolConfig::GetType $full ]
53  if { $type eq "section" } {
54    CreateSectionNode $member $secParent $value
55  } else {
56    CreateMemberNode $member $secParent $value
57  }
58}
59
60proc ::TolConfigGUI::FillTreeConfig { } {
61  variable win
62  variable treeInfo
63
64  array unset treeInfo
65  set treeInfo(node,) root
66  FillTree TolConfigManager::Config "" [ ::TolConfig::GetConfig ]
67
68}
69
70proc ::TolConfigGUI::Show { } {
71  variable win
72  variable tree
73
74  set win .tolconfig
75
76  if { [ winfo exists $win ] } {
77    raise $win
78  } else {
79    toplevel $win
80    wm state $win withdrawn
81    set tree $win.tree
82    wtree  $tree
83    $tree configure -table no -filter yes -columns {
84      { {image text} -tags NAME -label "Name" }
85      { {text} -tags STATUS -label "Value" -editable yes }
86    }
87    grid $tree -row 1 -column 0 -sticky "snew"
88    grid rowconfigure $win 1 -weight 1
89    grid columnconfigure $win 0 -weight 1
90    FillTreeConfig
91    wm state $win normal
92  }
93}
Note: See TracBrowser for help on using the repository browser.