App-Chart

 view release on metacpan or  search on metacpan

lib/App/Chart/Gtk2/RawDialog.pm  view on Meta::CPAN

sub _do_weblink_menu_open {
  my ($item) = @_;
  require App::Chart::Gtk2::GUI;
  App::Chart::Gtk2::GUI::browser_open ($item->{'url'});
}
sub _do_weblink_menu_copy {
  my ($item) = @_;
  my $clipboard = Gtk2::Clipboard->get_for_display
    ($item->get_display, Gtk2::Gdk::Atom->new('PRIMARY'));
  $clipboard->set_text ($item->{'url'});
}

sub set_symbol {
  my ($self, $symbol) = @_;
  if (! defined $symbol) { $symbol = ''; }
  if ($symbol eq $self->{'symbol'}) { return; }

  if ($symbol) {
    $self->set_title (__x('Chart: RawDialog: {symbol}',
                          symbol => $symbol));
  } else {
    $self->set_title (__('Chart: RawDialog'));
  }
  $self->{'symbol'} = $symbol;  # per default GET_PROPERTY
  $self->{'entry'}->set_text ($symbol);
  $self->refresh;
  $self->notify ('symbol');
}

sub SET_PROPERTY {
  my ($self, $pspec, $newval) = @_;
  my $pname = $pspec->get_name;
  if ($pspec->get_name eq 'symbol') {
    $self->set_symbol ($newval);
  } else {
    $self->{$pname} = $newval;   # per default GET_PROPERTY
  }
}

# 'notify::page' signal on the Gtk2::Notebook
sub _do_notebook_page {
  my ($notebook) = @_;
  my $self = $notebook->get_toplevel;
  my $pagenum = $notebook->get_current_page;
  my $pagewidget = $notebook->get_nth_page ($pagenum);

  $self->set_response_sensitive (RESPONSE_APPLY,  $pagewidget->{'datasheet'});
  $self->set_response_sensitive (RESPONSE_UNDO,   $pagewidget->{'datasheet'});
  $self->set_response_sensitive (RESPONSE_DELETE, $pagewidget->{'datasheet'});
  $self->set_response_sensitive (RESPONSE_INSERT, $pagewidget->{'insert_defaults'});

  _refresh_page ($self, $pagewidget);
}

sub _refresh_page {
  my ($self, $pagewidget) = @_;
  ### _refresh_page(): $pagewidget->{'dirty'}
  ### for: $self->{'symbol'}

  if ($pagewidget->{'dirty'}) {
    Gtk2::Ex::WidgetCursor->busy;
    $pagewidget->{'dirty'} = 0;
    my $symbol = $self->{'symbol'};
    if (my $datasheet = $pagewidget->{'datasheet'}) {
      ### datasheet query
      $datasheet->query ({bind_values => [$symbol]}, 0);

    } elsif (my $seriestreeview = $pagewidget->{'seriestreeview'}) {
      my $series;
      if ($symbol) {
        require App::Chart::Series::Database;
        $series = App::Chart::Series::Database->new ($symbol);
      }
      $seriestreeview->set (series => $series);

    } elsif (my $rawlatest = $pagewidget->{'rawlatest'}) {
      $rawlatest->set (symbol => $symbol);

    } elsif (my $rawinfo = $pagewidget->{'rawinfo'}) {
      $rawinfo->set (symbol => $symbol);

    } elsif (my $store = $pagewidget->{'weblinks_store'}) {
      require App::Chart::Weblink;
      my @weblinks = App::Chart::Weblink->links_for_symbol ($symbol);
      ### weblinks for: $symbol, scalar(@weblinks)
      $store->clear;
      foreach my $weblink (@weblinks) {
        $store->set ($store->append,
                     0 => mnemonic_to_markup ($weblink->name),
                     1 => $weblink->url ($symbol),
                     2 => __('Double click to open this URL in a browser'));
      }
    } else {
      die 'Oops, unknown raw refresh';
    }
  }
}

sub refresh {
  my ($self) = @_;
  ### RawDialog refresh()
  my $notebook = $self->{'notebook'};
  $notebook->foreach (sub {
                        my ($scrolled) = @_;
                        $scrolled->{'dirty'} = 1;
                      });
  _do_notebook_page ($notebook); # redraw current page
}

# 'response' signal on ourselves
sub _do_response {
  my ($self, $response) = @_;

  if ($response eq RESPONSE_REFRESH) {
    $self->refresh;

  } elsif ($response eq RESPONSE_INSERT) {
    my $notebook = $self->{'notebook'};
    my $pagenum = $notebook->get_current_page;
    my $pagewidget = $notebook->get_nth_page ($pagenum);
    if ((my $datasheet = $pagewidget->{'datasheet'})



( run in 2.115 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )