CORBA-MICO
view release on metacpan or search on metacpan
return 1;
}
#--------------------------------------------------------------------
# activate - callback will be called each time objects window
# becomes active
#--------------------------------------------------------------------
sub activate {
my ($self) = @_;
my $menu = $self->{'MENU'};
$menu->activate_id($self->{'ID'});
$self->mask_menu();
}
#--------------------------------------------------------------------
# Prepare widgets, internal data, start timeout handler
# In: $root_nc - NCRoot
# $ir_browser - global IR browser object
# $topwindow - toplevel widget
# $sline - status line widget
# $bg_sched - background processing scheduler
# $menu - main menu object
#--------------------------------------------------------------------
sub init_browser {
my ($self, $orb,
$root_nc, $ir_browser, $topwindow, $sline, $bg_sched, $menu) = @_;
# Main vertical box: pane
my $vbox = new Gtk2::VBox;
# Menu
my $menu_id = "NC_$serial"; ++$serial;
$menu->add_item($menu_id, $menu_item_IDL,
undef, \&show_IDL_cb, $self);
$menu->add_item($menu_id, $menu_item_iheritance,
undef, \&show_inheritance_cb, $self);
$menu->add_item($menu_id, $menu_item_DIA,
undef, \&export_to_DIA_cb, $self);
# Paned window: left-tree, right-text
my $paned = new Gtk2::HPaned;
$vbox->pack_start($paned, 1, 1, 0);
$vbox->show_all();
# Create scrolled window for CTree
my $scrolled = new Gtk2::ScrolledWindow(undef,undef);
$scrolled->set_policy( 'automatic', 'automatic' );
$paned->add($scrolled);
# Create ctree widget (use Gtk2::TreeView instead of Gtk::CTree)
my $model = Gtk2::TreeStore->new('Glib::String', 'Glib::Scalar');
my $ctree = Gtk2::TreeView->new;
$ctree->set_model($model);
my $selection = $ctree->get_selection;
$selection->set_mode ('browse');
my $cell = Gtk2::CellRendererText->new;
my $column = Gtk2::TreeViewColumn->new_with_attributes('',
$cell, 'text' => TREE_TITLE_COLUMN);
$ctree->append_column($column);
# disable incremental search
$ctree->set_enable_search(0);
# and use popup search via CTRL_F/CTRL_R
$ctree->signal_connect(
key_press_event => \&CORBA::MICO::Misc::ctree_kpress, $self);
# search by regexp
$ctree->set_search_equal_func(\&CORBA::MICO::Misc::ctree_std_search, $self);
$scrolled->add($ctree);
# Paned window: hypertext on the top, IOR on the left
my $paned1 = new Gtk2::VPaned;
$paned->add2($paned1);
# Create text window for IDL-representation of selected items
my $text = CORBA::MICO::Hypertext::hypertext_create(1);
$paned1->add($text);
# Text widget for IOR
my $ior_widget = Gtk2::TextView->new;
$ior_widget->set_wrap_mode ('char');
$ior_widget->set_editable(0);
$ior_widget->set_cursor_visible(0);
$paned1->add2($ior_widget);
$paned1->set_position(400);
$paned->set_position(200);
$scrolled->show();
$paned->show();
$bg_sched->add_entry($self);
$ctree->signal_connect('destroy', sub { $bg_sched->remove_entry($self); 1; });
$selection->signal_connect(changed => \&row_selected, $self);
$ctree->signal_connect(row_expanded => \&row_expanded, $self);
$ctree->signal_connect(row_activated => \&row_activated, $self);
$self->{'ORB'} = $orb; # ORB
$self->{'TOPWINDOW'} = $topwindow; # toplevel window
$self->{'SLINE'} = $sline; # status line
$self->{'TEXT'} = $text; # hypertext text widget
$self->{'MENU'} = $menu; # global menu
$self->{'ID'} = $menu_id; # unique ID (for menu items)
$self->{'ROOT'} = $root_nc; # NCRoot
$self->{'CTREE'} = $ctree; # CTree widget
$self->{'NODE'} = undef; # current (selected) row
$self->{'MODEL'} = $model; # tree model
$self->{'WIDGET'} = $vbox; # main window
$self->{'IR_BROWSER'} = $ir_browser; # global IR browser object
$self->{'IOR_WIDGET'} = $ior_widget; # widget for IOR
$self->{'IR_ITEMS'} = {}; # hash -> IR object name => IR object
$self->{'BG_QUEUE'} = []; # queue for background processing
$self->{'ROOT_PREPARED'} = 0; # root node is not prepared yet
}
#--------------------------------------------------------------------
# Call appropriate function to create node description,
# insert corresponding node (with ancestors if any) into CTree
#--------------------------------------------------------------------
sub create_node {
my($ctree, $parent, $nc_node, $name, $queue, $self) = @_;
my $contents = $nc_node->contents() || [];
return add_contents_to_node($ctree, $parent,
$nc_node, $name, [ @$contents ], $queue, $self);
return undef;
( run in 0.886 second using v1.01-cache-2.11-cpan-364913b4093 )