App-DrivePlayer
view release on metacpan or search on metacpan
lib/App/DrivePlayer/GUI.pm view on Meta::CPAN
$entry->set_text('');
$self->_load_library();
});
$hbox->pack_start($clear, FALSE, FALSE, 0);
return $hbox;
}
sub _build_controls {
my ($self) = @_;
my $frame = Gtk3::Frame->new();
my $vbox = Gtk3::Box->new('vertical', 2);
$vbox->set_border_width(4);
$frame->add($vbox);
# Now-playing label
$self->now_playing_label(Gtk3::Label->new('Not playing'));
$self->now_playing_label->set_ellipsize('end');
$self->now_playing_label->set_xalign(0.0);
$vbox->pack_start($self->now_playing_label, FALSE, FALSE, 0);
# Progress bar + time labels
my $prog_hbox = Gtk3::Box->new('horizontal', 4);
$self->time_label(Gtk3::Label->new('0:00'));
lib/App/DrivePlayer/GUI.pm view on Meta::CPAN
$btn_hbox->pack_start(Gtk3::Label->new(' Vol:'), FALSE, FALSE, 8);
$self->vol_scale(Gtk3::Scale->new_with_range('horizontal', 0, 100, 1));
$self->vol_scale->set_value(80);
$self->vol_scale->set_size_request(100, -1);
$self->vol_scale->set_draw_value(FALSE);
$self->vol_scale->signal_connect('value-changed' => sub {
$self->player->set_volume($self->vol_scale->get_value()) if $self->player;
});
$btn_hbox->pack_start($self->vol_scale, FALSE, FALSE, 0);
return $frame;
}
sub _icon_button {
my ($self, $icon_name, $cb) = @_;
my $btn = Gtk3::Button->new();
$btn->set_image(Gtk3::Image->new_from_icon_name($icon_name, 'button'));
$btn->signal_connect(clicked => $cb);
return $btn;
}
lib/App/DrivePlayer/GUI.pm view on Meta::CPAN
[qw/ modal destroy-with-parent /],
'Save', 'ok',
'Cancel', 'cancel',
);
$dlg->set_default_size(520, -1);
my $vbox = $dlg->get_content_area();
$vbox->set_spacing(0);
# ---- Google API credentials ----
my $auth_frame = Gtk3::Frame->new('Google API Credentials');
$auth_frame->set_border_width(8);
my $grid = Gtk3::Grid->new();
$grid->set_row_spacing(8);
$grid->set_column_spacing(8);
$grid->set_border_width(8);
$auth_frame->add($grid);
$vbox->pack_start($auth_frame, FALSE, FALSE, 0);
my $row = 0;
my %entries;
for my $field (
['client_id', 'OAuth Client ID:',
'OAuth 2.0 Client ID from Google Cloud Console (Desktop app type).'],
['client_secret', 'OAuth Client Secret:',
'OAuth 2.0 Client Secret paired with the Client ID above.'],
['token_file', 'Token File:',
'Path to the OAuth2 token created by running '
lib/App/DrivePlayer/GUI.pm view on Meta::CPAN
. 'Drive API</a>. Generate the token file by running '
. '<tt>google_restapi_oauth_token_creator</tt> in a terminal.'
. '</span>'
);
$auth_note->set_xalign(0.0);
$auth_note->set_line_wrap(TRUE);
$auth_note->set_max_width_chars(60);
$grid->attach($auth_note, 1, $row, 1, 1);
# ---- Google Sheet sync ----
my $sheet_frame = Gtk3::Frame->new('Google Sheet Sync');
$sheet_frame->set_border_width(8);
my $sheet_grid = Gtk3::Grid->new();
$sheet_grid->set_row_spacing(8);
$sheet_grid->set_column_spacing(8);
$sheet_grid->set_border_width(8);
$sheet_frame->add($sheet_grid);
$vbox->pack_start($sheet_frame, FALSE, FALSE, 0);
my $sid_lbl = Gtk3::Label->new('Spreadsheet ID:');
$sid_lbl->set_xalign(1.0);
$sheet_grid->attach($sid_lbl, 0, 0, 1, 1);
my $sid_box = Gtk3::Box->new('horizontal', 6);
my $sid_entry = Gtk3::Entry->new();
$sid_entry->set_hexpand(TRUE);
$sid_entry->set_text($self->config->sheet_id());
$sid_entry->set_placeholder_text('Paste spreadsheet ID, or click Find or Create');
lib/App/DrivePlayer/GUI.pm view on Meta::CPAN
. 'editing tags in '
. '<a href="https://sheets.google.com/">Google Sheets</a>.'
. '</span>'
);
$sheet_note->set_xalign(0.0);
$sheet_note->set_line_wrap(TRUE);
$sheet_note->set_max_width_chars(60);
$sheet_grid->attach($sheet_note, 1, 1, 1, 1);
# ---- Acoustic fingerprinting ----
my $fp_frame = Gtk3::Frame->new('Acoustic Fingerprinting (AcoustID)');
$fp_frame->set_border_width(8);
my $fp_grid = Gtk3::Grid->new();
$fp_grid->set_row_spacing(8);
$fp_grid->set_column_spacing(8);
$fp_grid->set_border_width(8);
$fp_frame->add($fp_grid);
$vbox->pack_start($fp_frame, FALSE, FALSE, 0);
# fpcalc status row
my $fp_lbl = Gtk3::Label->new('fpcalc:');
$fp_lbl->set_xalign(1.0);
$fp_grid->attach($fp_lbl, 0, 0, 1, 1);
my $fp_status = Gtk3::Label->new();
$fp_status->set_xalign(0.0);
my $install_btn = Gtk3::Button->new_with_label('Installâ¦');
( run in 1.450 second using v1.01-cache-2.11-cpan-e1769b4cff6 )