CORBA-MICO

 view release on metacpan or  search on metacpan

ccc/NC.pm  view on Meta::CPAN

  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 )