class Rock::Browse::ModelListWidget

Constants

ROLE_AVAILABLE_PACKAGE
ROLE_INSTALLED_PACKAGE
ROLE_NAMES
ROLE_OROGEN_TASK
ROLE_OROGEN_TYPE
ROLE_OSDEPS
ROLE_PACKAGE_SET

Attributes

loader[R]
manifest[R]
osdeps[R]
roots[R]

Public Class Methods

default_loader() click to toggle source
# File lib/rock/browse/model_list_widget.rb, line 29
def self.default_loader
    OroGen::Loaders::RTT.new(OroGen.orocos_target)
end
new(parent = nil, loader = self.class.default_loader, manifest = Autoproj.manifest, osdeps = Autoproj.osdeps) click to toggle source
Calls superclass method
# File lib/rock/browse/model_list_widget.rb, line 33
def initialize(parent = nil,
               loader = self.class.default_loader,
               manifest = Autoproj.manifest,
               osdeps = Autoproj.osdeps)
    super(parent)

    @loader = loader
    @manifest = manifest
    @osdeps = osdeps

    @roots = Array.new
    ROLE_NAMES.each_with_index do |name, i|
        roots[i] = Qt::TreeWidgetItem.new(self)
        roots[i].set_text(0, name)
    end
    set_header_label("")
end

Public Instance Methods

clear() click to toggle source
# File lib/rock/browse/model_list_widget.rb, line 51
def clear
    roots.each(&:take_children)
end
populate() click to toggle source
# File lib/rock/browse/model_list_widget.rb, line 60
def populate
    if current = current_item
        current_type = current.data(0, Qt::UserRole)
        if current_type.null?
            current_name = nil
        else
            current_type = current_type.to_int
            current_name = current.text(0)
        end
    end
    clear
    
    loader.each_available_type_name do |name, _|
        item = Qt::TreeWidgetItem.new(roots[ROLE_OROGEN_TYPE])
        item.set_text(0, name)
        item.set_data(0, Qt::UserRole, Qt::Variant.new(ROLE_OROGEN_TYPE))
    end

    loader.each_available_task_model_name do |name|
        item = Qt::TreeWidgetItem.new(roots[ROLE_OROGEN_TASK])
        item.set_text(0, name)
        item.set_data(0, Qt::UserRole, Qt::Variant.new(ROLE_OROGEN_TASK))
    end

    manifest.packages.values.sort_by(&:name).each do |pkg|
        role = if File.directory?(pkg.autobuild.srcdir)
                   ROLE_INSTALLED_PACKAGE
               else
                   ROLE_AVAILABLE_PACKAGE
               end

        item = Qt::TreeWidgetItem.new(roots[role])
        item.set_text(0, pkg.name)
        item.set_data(0, Qt::UserRole, Qt::Variant.new(role))
    end

    manifest.each_package_set.sort_by(&:name).each do |pkg_set|
        item = Qt::TreeWidgetItem.new(roots[ROLE_PACKAGE_SET])
        item.set_text(0, pkg_set.name)
        item.set_data(0, Qt::UserRole, Qt::Variant.new(ROLE_PACKAGE_SET))
    end

    osdeps.all_definitions.keys.sort.each do |osdep_name|
        item = Qt::TreeWidgetItem.new(roots[ROLE_OSDEPS])
        item.set_text(0, osdep_name)
        item.set_data(0, Qt::UserRole, Qt::Variant.new(ROLE_OSDEPS))
    end

    if current_type && current_name
        select(current_type, current_name)
    end
end
reload() click to toggle source
# File lib/rock/browse/model_list_widget.rb, line 55
def reload
    loader.clear
    populate
end
role_from_item(item) click to toggle source
# File lib/rock/browse/model_list_widget.rb, line 113
def role_from_item(item)
    role = item.data(0, Qt::UserRole)
    if !role.null?
        role.to_int
    end
end
select(name, role = nil) click to toggle source
# File lib/rock/browse/model_list_widget.rb, line 120
def select(name, role = nil)
    matches = findItems(name, Qt::MatchExactly | Qt::MatchRecursive, 0)
    if role
        single_match = matches.find do |item|
            role == role_from_item(item)
        end
    else single_match = matches.first
    end

    if single_match
        self.current_item = single_match
    end
end