Class: Watobo::Gui::CheckBoxTreeList

Inherits:
FXTreeList
  • Object
show all
Includes:
Icons
Defined in:
lib/watobo/gui/checkboxtree.rb

Constant Summary

Constants included from Icons

Icons::ICON_ADD_PROJECT, Icons::ICON_BROWSER_MEDIUM, Icons::ICON_BROWSER_SMALL, Icons::ICON_BTN_DOWN, Icons::ICON_BTN_UP, Icons::ICON_CB_CHECKED, Icons::ICON_CB_CHECKED_ORANGE, Icons::ICON_CB_UNCHECKED, Icons::ICON_CONVERSATION, Icons::ICON_DASHBOARD, Icons::ICON_DIFFER, Icons::ICON_FOLDER, Icons::ICON_FOLDER_SMALL, Icons::ICON_FUZZER, Icons::ICON_FUZZER_MEDIUM, Icons::ICON_FUZZER_SMALL, Icons::ICON_FUZZ_FILTER, Icons::ICON_FUZZ_GENERATOR, Icons::ICON_FUZZ_TAG, Icons::ICON_HINTS, Icons::ICON_HINTS_INFO, Icons::ICON_HINTS_INFO_SMALL, Icons::ICON_HINTS_SMALL, Icons::ICON_INFO, Icons::ICON_INFO_INFO, Icons::ICON_INFO_INFO_SMALL, Icons::ICON_INFO_SMALL, Icons::ICON_INFO_USER, Icons::ICON_INFO_USER_SMALL, Icons::ICON_INTERCEPTOR, Icons::ICON_LOGIN_WIZZARD, Icons::ICON_MANUAL_REQUEST, Icons::ICON_MANUAL_REQUEST_MEDIUM, Icons::ICON_MANUAL_REQUEST_SMALL, Icons::ICON_PAUSE, Icons::ICON_PLUGIN, Icons::ICON_PROJECT, Icons::ICON_PROJECT_SMALL, Icons::ICON_REPORT, Icons::ICON_REQUEST, Icons::ICON_REQUEST_SMALL, Icons::ICON_SEND_REQUEST, Icons::ICON_SITE, Icons::ICON_SITE_SMALL, Icons::ICON_START, Icons::ICON_STOP, Icons::ICON_TOKEN, Icons::ICON_TRANSCODER, Icons::ICON_VULN, Icons::ICON_VULN_BP, Icons::ICON_VULN_BP_SMALL, Icons::ICON_VULN_CRITICAL, Icons::ICON_VULN_CRITICAL_SMALL, Icons::ICON_VULN_HIGH, Icons::ICON_VULN_HIGH_SMALL, Icons::ICON_VULN_LOW, Icons::ICON_VULN_LOW_SMALL, Icons::ICON_VULN_MEDIUM, Icons::ICON_VULN_MEDIUM_SMALL, Icons::ICON_VULN_SMALL, Icons::ICON_WATOBO, Icons::SIBERAS_ICON, Icons::TBL_ICON_LOCK, Icons::WATOBO_LOGO

Instance Method Summary collapse

Constructor Details

#initialize(parent) ⇒ CheckBoxTreeList

Returns a new instance of CheckBoxTreeList.



242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
# File 'lib/watobo/gui/checkboxtree.rb', line 242

def initialize(parent)

  @parent = parent
  super(parent, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y|
  TREELIST_SHOWS_LINES|
  TREELIST_SHOWS_BOXES|
  TREELIST_ROOT_BOXES|
  #TREELIST_EXTENDEDSELECT|
  TREELIST_MULTIPLESELECT
  )
  #LAYOUT_TOP|LAYOUT_RIGHT|TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|TREELIST_ROOT_BOXES|TREELIST_EXTENDEDSELECT

  self.connect(SEL_COMMAND) do |sender, sel, item|
    if $DEBUG
      puts "Selected Item: #{item}"
      if item.parent
        puts "Member Of: #{item.parent}"
        puts "Has Brothers: #{item.parent.numChildren}"
      end
    end

    if self.itemLeaf?(item) then
      #toggleState(item)
      item.toggle
      updateParent(item)
    else
      data = self.getItemData(item)

      new_state = case data
      when :partly
        #  puts data
        icon = ICON_CB_UNCHECKED
        uncheckAllChildren(item)
        :none
      when :none
        #  puts data
        icon = ICON_CB_CHECKED
        checkAllChildren(item)
        :all
      when :all
        # puts data
        icon = ICON_CB_UNCHECKED
        uncheckAllChildren(item)
        :none
      end

    self.setItemData(item, new_state)
    self.setItemClosedIcon(item, icon)
    self.setItemOpenIcon(item, icon)
    end

    self.killSelection()
  end

end

Instance Method Details

#checkAllObject



200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/watobo/gui/checkboxtree.rb', line 200

def checkAll
  self.each do |r|
    r.check
    setItemData(r,:all)
    r.each do |c|
      c.check
    end
    self.update
  # checkAllChildren(r)
  #   openItem(child, true)
  end
end

#checkAllChildren(parent) ⇒ Object



234
235
236
237
238
239
240
# File 'lib/watobo/gui/checkboxtree.rb', line 234

def checkAllChildren(parent)
  parent.each do |child|
  #checkItem(child)
    child.check

  end
end

#elements=(elements) ⇒ Object


C R E A T E T R E E


elements[] = [{

:name => element_name, number of subtrees controlled via pipe-char, e.g. <level1>|<level2>|item
:enabled => true|false,
:data => object|string|...
}, {..} ]


122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# File 'lib/watobo/gui/checkboxtree.rb', line 122

def elements=(elements)
  self.clearItems()
  #return false if elements.length > 0
  elements.each do |e|

  # puts icon.class.to_s
    node = nil
    levels = e[:name].split('|')
    begin
  #  puts "Processing: #{e[:name]} > #{e[:data].class}" if $DEBUG
    levels.each_with_index do |l,i|
      #puts "#{l} - #{l.class}"
      item = self.findItem(l, node, SEARCH_FORWARD|SEARCH_IGNORECASE)

      if item.nil? then
        # new_item = FXTreeItem.new(l, ICON_CB_CHECKED, ICON_CB_CHECKED)
        # new_item.extend CheckboxMixin
        new_item = CheckBoxTreeItem.new(l, e[:enabled] )
      # item = self.appendItem(node, l, ICON_CB_CHECKED, ICON_CB_CHECKED)
      item = self.appendItem(node, new_item)
      #  if e[:enabled] then
      #    self.openItem(item, false)
      #  else
      #    self.closeItem(item, false)
      #  end
      end
      node = item
      if i == levels.length-1 then
        self.setItemData(item, e[:data])
        updateParent(item)
      end

    end
    rescue => bang
      puts bang
      puts bang.backtrace
    end
  end
end

#getCheckedData(root = self) ⇒ Object



191
192
193
194
195
196
197
198
# File 'lib/watobo/gui/checkboxtree.rb', line 191

def getCheckedData(root = self)
  @selected = [] if root == self
  root.each do |c|
    getCheckedData(c) if c.numChildren > 0
    @selected << c.data if self.itemLeaf?(c) and c.checked
  end
  @selected
end

#uncheckAllObject



213
214
215
216
217
218
219
220
221
222
223
224
# File 'lib/watobo/gui/checkboxtree.rb', line 213

def uncheckAll
  self.each do |r|
  # uncheckItem(r)
    r.uncheck
    setItemData(r,:none)
    r.each do |c|
      c.uncheck
    end
    #uncheckAllChildren(r)
    self.update
  end
end

#uncheckAllChildren(parent) ⇒ Object



227
228
229
230
231
232
# File 'lib/watobo/gui/checkboxtree.rb', line 227

def uncheckAllChildren(parent)
  parent.each do |child|
  #uncheckItem(child)
    child.uncheck
  end
end

#updateParent(child) ⇒ Object



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/watobo/gui/checkboxtree.rb', line 162

def updateParent(child)
  parent = child.parent
  # count enabled childs
  return false if parent.nil?
  ec = 0
  parent.each do |item|
  #data = self.getItemData(item)
  #ec += 1 if data[:enabled]
    ec += 1 if item.checked
  end
  if ec == 0 then

    # puts "no childs selected"
    icon = ICON_CB_UNCHECKED
    self.setItemData(parent, :none)
  elsif  ec < parent.numChildren  then
    # puts "not all childs are selected"
    icon = ICON_CB_CHECKED_ORANGE
    self.setItemData(parent, :partly)
  else

  # puts "all childs have been selected"
    icon =   ICON_CB_CHECKED
    self.setItemData(parent, :all)
  end
  self.setItemOpenIcon(parent, icon)
  self.setItemClosedIcon(parent, icon)
end