Audio-GtkGramofile

 view release on metacpan or  search on metacpan

GtkGramofile/GUI.pm  view on Meta::CPAN

  $self->{tooltips}->set_tip($self->{whole_frames_check}, "Specify frame size for processing wav file.");
  $self->{tooltips}->set_tip($self->{start_process_button}, "Start signal processing the sound file/s");
  $self->{tooltips}->set_tip($self->{stop_process_button}, "Stop signal processing the sound file/s");

  $self->{tooltips}->set_tip($self->{record_button}, "Start recording to file");
  $self->{tooltips}->set_tip($self->{play_button}, "Play a file");
  $self->{tooltips}->set_tip($self->{save_button}, "Store useful settings in $ENV{HOME}/.gramofilerc");
  $self->{tooltips}->set_tip($self->{quit_button}, "Quit GtkGramofile");
  
  $self->{notebook}->set_current_page(0);
} 

sub on_setting_finished {
  my $widget = shift;
  my $tmp = shift;
  my $cb_data;
  if (ref $tmp eq 'Gtk2::Gdk::Event::Focus') {
    $cb_data = shift;
  } else {
    $cb_data = $tmp;
  }
  my $self = $cb_data->{self};
  my $section = $cb_data->{section};
  my $name = $cb_data->{name};
  my $ref = ref $widget;
  my $value;
  
  if ($ref eq "Gtk2::Entry") {$value = $widget->get_text}
  elsif ($ref eq "Gtk2::SpinButton") {$value = $widget->get_value_as_int}
  elsif ($ref eq "Gtk2::CheckButton" || $ref eq "Gtk2::ToggleButton" || $ref eq "Gtk2::RadioButton") {
    if ($widget->get_active) {$value = 1} else {$value = 0}}

  $self->{gtkgramofile}->set_value($section, $name, $value);
  $self->message("$name has been set to $value");
  
  return 0;
}

sub on_setting_changed {
  my $widget = shift;
  my $cb_data = shift;
  my $self = $cb_data->{self};
  my $section = $cb_data->{section};
  my $name = $cb_data->{name};
  my $ref = ref $widget;
  my $value;

  if ($ref eq "Gtk2::Entry") {$value = $widget->get_text}
  elsif ($ref eq "Gtk2::SpinButton") {$value = $widget->get_value_as_int}
  elsif ($ref eq "Gtk2::CheckButton" || $ref eq "Gtk2::ToggleButton") {if ($widget->get_active) {$value = 1} else {$value = 0}}

  $self->{gtkgramofile}->set_value($section, $name, $value);
  $self->message("$name has been changed to $value");
  
  return 1;
}

sub connect_signals {
  my $self = shift;

  my @callbacks = qw(quit record play save tracksplit_browse start_tracksplit stop_tracksplit process_infile process_outfile
simple_median_filter double_median_filter simple_mean_filter rms_filter cond_median_filter cond_median2_filter 
cond_median3_filter simple_normalize_filter start_process stop_process);

  foreach my $callback (@callbacks) {
    $self->{$callback."_button"}->signal_connect('clicked', $self->{gtkgramofile}->{signals}->get_callback($callback), $self->{gtkgramofile}->{signals});
  }
  $self->{gramofile}->signal_connect('delete_event', $self->{gtkgramofile}->{signals}->get_callback("quit"));

  foreach my $check (qw(tracksplit_rms_file_check tracksplit_generate_graph_check)) {
    $self->connect_signal('toggled', $self->{finished}, 'tracksplit_params', $check);
  }
  foreach my $spin (qw(global_silence_factor_spin local_silence_factor_spin inter_track_silence_minlen_spin track_minlen_spin track_start_extra_blocks_spin track_end_extra_blocks_spin signal_power_data_blocklen_spin)) {
    $self->connect_signal('changed', $self->{changed}, 'tracksplit_params', $spin);
  }
  $self->connect_signal('changed', $self->{finished}, 'tracksplit_general', 'tracksplit_filename_entry');
  $self->connect_signal('focus_out_event', $self->{finished}, 'tracksplit_general', 'tracksplit_filename_entry');
  $self->connect_signal('changed', $self->{finished}, 'tracksplit_general', 'tracksplit_filename_filter_entry');
  $self->connect_signal('focus_out_event', $self->{finished}, 'tracksplit_general', 'tracksplit_filename_filter_entry');

  foreach my $entry (qw(process_infile_entry process_infile_filter_entry process_outfile_entry process_outfile_filter_entry)) {
    $self->connect_signal('changed', $self->{finished}, 'process_params', $entry);
  }
  $self->connect_signal('toggled', $self->{finished}, 'process_params', 'process_op_regexp_check');
  foreach my $check (qw(copyonly_filter_check monoize_filter_check simple_median_filter_check double_median_filter_check simple_mean_filter_check rms_filter_check cond_median_filter_check cond_median2_filter_check cond_median3_filter_check simple_nor...
    $self->connect_signal('toggled', $self->{finished}, 'process_filters', $check);
  }
  $self->{"begin_and_end_times_radio"}->signal_connect('toggled', $self->{gtkgramofile}->{signals}->get_callback("begin_and_end_times_radio"), $self->{gtkgramofile}->{signals});
  $self->{"whole_frames_check"}->signal_connect('toggled', $self->{gtkgramofile}->{signals}->get_callback("whole_frames_check"), $self->{gtkgramofile}->{signals});
}

sub connect_signal {
  my ($self, $signal, $function, $section, $event) = @_;
  my $cb_data = {self => $self, section => $section};
  (my $name = $event) =~ s/_(spin|entry|check|radio)$//;
  $cb_data->{name} = $name;
  $self->{$event}->signal_connect($signal, $function, $cb_data);
}

sub message {
  my $self = shift;
  my $data = shift;

  if (defined $self) {
    my $context_id=$self->{status_bar}->get_context_id('gramofile');
    $self->{status_bar}->pop($context_id);
    $self->{status_bar}->push($context_id, $data);
  } else {
    print "GtkGramofile message - $data\n"
  }
}

sub load_settings_to_interface {
  my $self = shift;

  my $defaults = $self->{gtkgramofile}->get_defaults;

  foreach my $section (keys %{$defaults}) {
    foreach my $parameter (keys %{$defaults->{$section}}) {
      my $value = $self->{gtkgramofile}->get_value($section, $parameter);
      $self->{$parameter."_entry"}->set_text($value)
        if defined ($self->{$parameter."_entry"}) and $parameter ne $self->{$parameter."_entry"}->get_text;
      $self->{$parameter."_spin"}->set_value($value)
        if defined ($self->{$parameter."_spin"}) and $parameter ne $self->{$parameter."_spin"}->get_value_as_int;
      $self->{$parameter."_check"}->set_active($value) if defined ($self->{$parameter."_check"});



( run in 1.558 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )