CORBA-MICO
view release on metacpan or search on metacpan
$self->show_inheritance($entry->name(), $entry);
}
}
#--------------------------------------------------------------------
# Prepare widgets, internal data, start timeout handler
# In: $root_ir - IRRoot
# $topwindow - toplevel widget
# $sline - status line widget
# $bg_sched - background processing scheduler
# $menu - main menu object
#--------------------------------------------------------------------
sub init_browser {
my ($self, $root_ir, $topwindow, $sline, $bg_sched, $menu) = @_;
# Determine MICO version
my $ai = $root_ir->entry_by_id('IDL:omg.org/CORBA/AbstractInterfaceDef:1.0');
my $is_235 = not $ai;
# Vertical box: pane
my $vbox = new Gtk2::VBox;
# Menu
my $menu_id = "IR_$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);
$menu->add_item($menu_id, $menu_item_search,
'<control>F', \&search_cb, [$self, 0]);
$menu->add_item($menu_id, $menu_item_search_re,
'<control>R', \&search_cb, [$self, 1]);
$menu->add_item($menu_id, $menu_item_expand_all,
undef, \&expand_all_cb, $self);
# Create 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);
# search by regexp
$ctree->set_search_equal_func(\&CORBA::MICO::Misc::ctree_std_search, $self);
# and use popup search via CTRL_F/CTRL_R
#$ctree->signal_connect(
# key_press_event => \&CORBA::MICO::Misc::ctree_kpress, $self);
$scrolled->add($ctree);
# Create text window for IDL-representation of selected items
my $hptext = CORBA::MICO::Hypertext::hypertext_create(1);
$paned->add2($hptext);
$paned->set_position(200);
$scrolled->show();
$ctree->show();
$paned->show();
$bg_sched->add_entry($self);
$ctree->signal_connect('destroy',
sub { $self->close();$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->{'TOPWINDOW'} = $topwindow; # toplevel window
$self->{'SLINE'} = $sline; # status line
$self->{'TEXT'} = $hptext; # hypertext text widget
$self->{'MENU'} = $menu; # global menu
$self->{'NOIDL'} = 0; # global menu
$self->{'ID'} = $menu_id; # unique ID (for menu items)
$self->{'ROOT'} = $root_ir; # IRRoot
$self->{'CTREE'} = $ctree; # CTree widget
$self->{'NODE'} = undef; # current (selected) row
$self->{'MODEL'} = $model; # tree model
$self->{'WIDGET'} = $vbox; # main window
$self->{'VER_2_3_5'} = $is_235; # MICO version 2.3.5 or lower
$self->{'IR_ITEMS'} = {}; # hash -> IR object name => IR object
$self->{'BG_QUEUE'} = []; # queue for background processing
$self->{'BG_UPPER'} = [ # top items of CTree (for background
['Modules', 'dk_Module'], # processing): [name, type1, type2,...]
['Interfaces', 'dk_Interface'],
['Values', 'dk_Value'],
['Types', 'dk_Struct', 'dk_Union', 'dk_Enum', 'dk_Alias',
'dk_String', 'dk_Wstring', 'dk_Fixed',
'dk_Sequence', 'dk_Array',
'dk_Typedef', 'dk_Primitive', 'dk_Native',
'dk_Attribute', 'dk_ValueMember'],
['Constants', 'dk_Constant']
];
}
#--------------------------------------------------------------------
# get value of 'any' (translate boolean values to string representation)
#--------------------------------------------------------------------
sub any_value {
my $any = shift;
my $kind = tc_unalias($any->type());
my $retval = $any->value();
if( $kind eq "tk_boolean" ) {
$retval = $retval ? "TRUE" : "FALSE";
}
elsif ( $kind eq "tk_string" ) {
$retval = qq("$retval");
}
( run in 1.358 second using v1.01-cache-2.11-cpan-364913b4093 )