App-Chart

 view release on metacpan or  search on metacpan

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

    }
  }

  { my $label = Gtk2::Label->new (__('Jobs'));
    $label->set (xalign => 0);
    $vbox->pack_start ($label, 0,0,0);
  }

  my $model = $self->{'model'} = App::Chart::Gtk2::JobQueue->instance;
  $self->{'model_ids'} = Glib::Ex::SignalIds->new
    ($model,
     $model->signal_connect (row_changed => \&_do_job_row_changed, $self));

  my $jobs_scrolled = Gtk2::ScrolledWindow->new;
  $jobs_scrolled->set (hscrollbar_policy => 'automatic',
                       vscrollbar_policy => 'automatic');
  $vbox->pack_start ($jobs_scrolled, 1,1,0);

  my $treeview = $self->{'jobs_treeview'}
    = Gtk2::TreeView->new_with_model ($model);
  $treeview->set (headers_visible => 0,
                  reorderable => 1);
  $jobs_scrolled->add ($treeview);
  $treeview->add_events ('button-press-mask');
  $treeview->signal_connect
    (button_press_event => \&_do_jobs_treeview_button_press);

  my $selection = $treeview->get_selection();
  $selection->signal_connect (changed => \&_do_selection_changed, $self);
  $selection->set_mode ('single');

  {
    my $column = Gtk2::TreeViewColumn->new;
    $column->pack_start ($renderer, 1);
    $column->set_cell_data_func ($renderer, \&_job_cell_status);
    $treeview->append_column ($column);
  }

  { my $label = Gtk2::Label->new(__('Messages'));
    $label->set (xalign => 0);
    $vbox->pack_start ($label, 0,0,0);
  }
  my $textbuf = $self->{'textbuf'} = Gtk2::TextBuffer->new();
  $textbuf->signal_connect ('changed', \&_do_textbuf_changed, $self);

  require Gtk2::Ex::TextView::FollowAppend;
  my $textview = $self->{'textview'}
    = Gtk2::Ex::TextView::FollowAppend->new_with_buffer ($textbuf);
  $textview->set (wrap_mode => 'char',
                  editable => 0);

  my $messages_scrolled = Gtk2::ScrolledWindow->new();
  $messages_scrolled->add($textview);
  $messages_scrolled->set_policy('never', 'always');
  $vbox->pack_start ($messages_scrolled, 1, 1, 0);

  # During perl "global destruction" can have App::Chart::Gtk2::Job already
  # destroyed enough that it has disconnected the message emission hook
  # itself, leading to an unsightly Glib warning if attempting
  # signal_remove_emission_hook() in our 'destroy' class closure.  So
  # instead leave it connected, with a weakened ref, and let it return 0 to
  # disconnect itself on the next emission (if any).
  #
  #  App::Chart::Gtk2::Job->signal_add_emission_hook
  #      (message => \&_do_job_message, App::Chart::Glib::Ex::MoreUtils::ref_weak ($self));
  #
  require App::Chart::Glib::Ex::EmissionHook;
  $self->{'hook'} = App::Chart::Glib::Ex::EmissionHook->new
    ('App::Chart::Gtk2::Job',
     message => \&_do_job_message,
     App::Chart::Glib::Ex::MoreUtils::ref_weak($self));

  my $hbox = Gtk2::HBox->new (0, 0);
  $hbox->pack_start (Gtk2::Label->new (__('What:')), 0,0,0);
  $vbox->pack_start ($hbox, 0,0,0);

  my $what_model = $self->{'what_model'}
    = Gtk2::ListStore->new ('Glib::String', 'Glib::Scalar');
  $what_model->set ($what_model->append, 0, __('One symbol'), 1, undef);
  $what_model->set ($what_model->append, 0, __('Favourites'), 1, 'favourites');
  $what_model->set ($what_model->append, 0, __('All'), 1, 'all');

  my $what_combobox = $self->{'what_combobox'}
    = Gtk2::ComboBox->new_with_model ($what_model);
  my $what_renderer = Gtk2::CellRendererText->new;
  $what_combobox->pack_start ($what_renderer, 1);
  $what_combobox->set_attributes ($what_renderer, text => 0);
  $hbox->pack_start ($what_combobox, 0,0,0);

  my $entry = $self->{'entry'} = Gtk2::Entry->new;
  $hbox->pack_start ($entry, 1,1, 0.5 * Gtk2::Ex::Units::em($entry));
  $what_combobox->signal_connect ('changed', \&_do_what_changed, $self);
  $what_combobox->set_active (1);

  $hbox->pack_start (Gtk2::Label->new ('   ' . __('When:')), 0,0,0);

  my $when_model = $self->{'when_model'}
    = Gtk2::ListStore->new ('Glib::String', 'Glib::Scalar');
  $when_model->insert_with_values (WHEN_UPDATE, 0 => __('Update'));
  $when_model->insert_with_values (WHEN_BACKTO, 0 => __('Backto'));

  my $when_combobox = $self->{'when_combobox'}
    = Gtk2::ComboBox->new_with_model ($when_model);
  my $when_renderer = Gtk2::CellRendererText->new;
  $when_combobox->pack_start ($when_renderer, 1);
  $when_combobox->set_attributes ($when_renderer, text => 0);
  $hbox->pack_start ($when_combobox, 0,0,0);
  $when_combobox->set_active (WHEN_UPDATE);
  $when_combobox->signal_connect ('changed', \&_do_when_changed, $self);

  require Date::Calc;
  my ($today_year, undef, undef) = Date::Calc::Today();
  my $when_adj = Gtk2::Adjustment->new ($today_year-5,       # initial
                                        1800, $today_year+1, # min,max
                                        1,10,
                                        0);                  # page_size
  my $when_spin = $self->{'when_spin'}
    = Gtk2::SpinButton->new ($when_adj, 10, 0);
  $hbox->pack_start ($when_spin, 0,0,0);
  $when_spin->set_sensitive (0);



( run in 1.015 second using v1.01-cache-2.11-cpan-39bf76dae61 )