📄 mplayertv
字号:
#$self->{table2}->attach ($self->{mplayer_path_ent}, 1, 2, 1, 2, ['fill', 'expand'], [], 2, 2); #$self->{mplayer_browse_btn} = new Gtk2::Button ("..."); #$self->{mplayer_browse_btn}->signal_connect ("clicked", \&MplayerBrowseBtn, $self); #$self->{tooltips}->set_tip ($self->{mplayer_browse_btn}, "Browse"); #$self->{table2}->attach ($self->{mplayer_browse_btn}, 2, 3, 1, 2, [], [], 2, 2); $self->{preexec_label} = new Gtk2::Label ("Pre-exec:"); $self->{preexec_label}->set_alignment (0, 0); $self->{preexec_ent} = new Gtk2::Entry (); #$self->{preexec_ent}->set_size_request (100, -1); $self->{preexec_ent}->set_text ($self->{config}->{preexec}); $self->{table2}->attach ($self->{preexec_label}, 0, 1, 0, 1, ['fill'], [], 2, 2); $self->{table2}->attach ($self->{preexec_ent}, 1, 2, 0, 1, ['fill', 'expand'], [], 2, 2); $self->{postexec_label} = new Gtk2::Label ("Post-exec:"); $self->{postexec_label}->set_alignment (0, 0); $self->{postexec_ent} = new Gtk2::Entry (); #$self->{postexec_ent}->set_size_request (100, -1); $self->{postexec_ent}->set_text ($self->{config}->{postexec}); $self->{table2}->attach ($self->{postexec_label}, 0, 1, 1, 2, ['fill'], [], 2, 2); $self->{table2}->attach ($self->{postexec_ent}, 1, 2, 1, 2, ['fill', 'expand'], [], 2, 2); $self->{terminal_emulator_label} = new Gtk2::Label ("Terminal:"); $self->{terminal_emulator_label}->set_alignment (0, 0); $self->{table2}->attach ($self->{terminal_emulator_label}, 0, 1, 4, 5, ['fill'], [], 2, 2); $self->{terminal_emulator_ent} = new Gtk2::Entry (); $self->{terminal_emulator_ent}->set_size_request (100, -1); $self->{terminal_emulator_ent}->set_text ($self->{config}->{terminal_emulator}); $self->{table2}->attach ($self->{terminal_emulator_ent}, 1, 2, 4, 5, ['fill'], [], 2, 2); $self->{terminal_emulator_browse_btn} = new Gtk2::Button ("..."); $self->{terminal_emulator_browse_btn}->signal_connect ("clicked", \&TerminalEmulatorBrowseBtn, $self); $self->{tooltips}->set_tip ($self->{terminal_emulator_browse_btn}, "Browse"); $self->{table2}->attach ($self->{terminal_emulator_browse_btn}, 2, 3, 4, 5, [], [], 2, 2); $self->{mplayer_opts_label} = new Gtk2::Label ("MPlayer options:"); $self->{mplayer_opts_label}->set_alignment (0, 0); $self->{table2}->attach ($self->{mplayer_opts_label}, 0, 1, 6, 7, ['fill'], [], 2, 2); $self->{mplayer_opts_ent} = new Gtk2::Entry (); $self->{mplayer_opts_ent}->set_size_request (100, -1); $self->{mplayer_opts_ent}->set_text ($self->{config}->{mplayer_opts}); $self->{table2}->attach ($self->{mplayer_opts_ent}, 1, 2, 6, 7, ['fill'], [], 2, 2); #$self->{scantv_label} = new Gtk2::Label ("scantv:"); #$self->{scantv_label}->set_alignment (0, 0); #$self->{scantv_ent} = new Gtk2::Entry (); #$self->{scantv_ent}->set_size_request (100, -1); #$self->{scantv_ent}->set_text ($self->{config}->{scantv}); #$self->{table2}->attach ($self->{scantv_label}, 0, 1, 5, 6, ['fill'], [], 2, 2); #$self->{table2}->attach ($self->{scantv_ent}, 1, 2, 5, 6, ['fill'], [], 2, 2); #$self->{scantv_browse_btn} = new Gtk2::Button ("..."); #$self->{scantv_browse_btn}->signal_connect ("clicked", \&ScantvBrowseBtn, $self); #$self->{tooltips}->set_tip ($self->{scantv_browse_btn}, "Browse"); #$self->{table2}->attach ($self->{scantv_browse_btn}, 2, 3, 5, 6, [], [], 2, 2); ### PAGE 3: VIDEO $self->{table3} = new Gtk2::Table (13, 3, 0); $self->{page3}->pack_start ($self->{table3}, 1, 1, 0); $self->{tv_drivers_label} = new Gtk2::Label ("TV driver: "); $self->{tv_drivers_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{tv_drivers_label}, 0, 1, 1, 2, ['fill'], [], 2, 2); $self->{tv_drivers_option} = new Gtk2::OptionMenu; $self->{tv_drivers_menu} = new Gtk2::Menu; $self->{tv_drivers_option}->set_menu ($self->{tv_drivers_menu}); $self->{tv_drivers_option}->set_size_request (100, -1); $self->{tv_drivers_option}->set_history (0); my $i = 0; foreach ("v4l", "v4l2", "bsdbt848", "dummy") { my $item = new Gtk2::MenuItem($_); $item->{label} = $_; $self->{tv_drivers_menu}->append($item); $self->{tv_drivers_option}->set_history ($i) if ($_ eq $self->{config}->{tv}); $i++; } $self->{table3}->attach ($self->{tv_drivers_option}, 1, 2, 1, 2, ['fill'], [], 2, 2); $self->{tv_device_label} = new Gtk2::Label ("TV device:"); $self->{tv_device_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{tv_device_label}, 0, 1, 2, 3, ['fill'], [], 2, 2); $self->{tv_device_ent} = new Gtk2::Entry (); $self->{tv_device_ent}->set_size_request (100, -1); $self->{tv_device_ent}->set_text ($self->{config}->{tv_device}); $self->{table3}->attach ($self->{tv_device_ent}, 1, 2, 2, 3, ['fill'], [], 2, 2); $self->{vo_drivers_label} = new Gtk2::Label ("Video output driver:"); $self->{vo_drivers_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{vo_drivers_label}, 0, 1, 3, 4, ['fill'], [], 2, 2); $self->{vo_drivers_option} = new Gtk2::OptionMenu; $self->{vo_drivers_menu} = new Gtk2::Menu; $self->{vo_drivers_option}->set_menu($self->{vo_drivers_menu}); $self->{vo_drivers_option}->set_size_request (100, -1); $self->{vo_drivers_option}->set_history(0); $self->update_vo_drivers_list (); $self->{table3}->attach ($self->{vo_drivers_option}, 1, 2, 3, 4, ['fill'], [], 2, 2); #$self->{vo_update_btn} = new Gtk2::Button ("_Update"); #$self->{vo_update_btn}->set_size_request (60, -1); #$self->{vo_update_btn}->signal_connect ("clicked", sub { $self->update_vo_drivers_list ()}); #$self->{tooltips}->set_tip ($self->{vo_update_btn}, "Runs mplayer and fetch video output drivers list"); #$self->{table3}->attach ($self->{vo_update_btn}, 2, 3, 3, 4, ['fill'], [], 2, 2); $self->{vo_subdriver_label} = new Gtk2::Label ("Video output subdriver:"); $self->{vo_subdriver_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{vo_subdriver_label}, 0, 1, 4, 5, ['fill'], [], 2, 2); $self->{vo_subdriver_ent} = new Gtk2::Entry (); $self->{vo_subdriver_ent}->set_size_request (100, -1); $self->{vo_subdriver_ent}->set_text ($self->{config}->{subvo}); $self->{table3}->attach ($self->{vo_subdriver_ent}, 1, 2, 4, 5, ['fill'], [], 2, 2); $self->{outfmts_label} = new Gtk2::Label ("Output format of tuner:"); $self->{outfmts_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{outfmts_label}, 0, 1, 5, 6, ['fill'], [], 2, 2); $self->{outfmts_option} = new Gtk2::OptionMenu; $self->{outfmts_menu} = new Gtk2::Menu; $self->{outfmts_option}->set_menu ($self->{outfmts_menu}); $self->{outfmts_option}->set_size_request (100, -1); $self->{outfmts_option}->set_history(0); $self->update_outfmts_list (); $self->{table3}->attach ($self->{outfmts_option}, 1, 2, 5, 6, ['fill'], [], 2, 2); $self->{norm_label} = new Gtk2::Label ("Norm:"); $self->{norm_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{norm_label}, 0, 1, 6, 7, ['fill'], [], 2, 2); $self->{norm_option} = new Gtk2::OptionMenu; $self->{norm_menu} = new Gtk2::Menu; $self->{norm_option}->set_menu ($self->{norm_menu}); $self->{norm_option}->set_size_request (100, -1); $self->{norm_option}->set_history (0); $i = 0; foreach ("PAL", "NTSC", "SECAM", "PAL-Nc", "PAL-M", "PAL-N", "NTSC-JP", "PAL-60") { my $item = new Gtk2::MenuItem($_); $item->{label} = $_; $self->{norm_menu}->append($item); $self->{norm_option}->set_history ($i) if ($_ eq $self->{config}->{_defaults}->{norm}); $i++; } $self->{table3}->attach ($self->{norm_option}, 1, 2, 6, 7, ['fill'], [], 2, 2); $self->{input_label} = new Gtk2::Label ("Input:"); $self->{input_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{input_label}, 0, 1, 7, 8, ['fill'], [], 2, 2); $self->{input_option} = new Gtk2::OptionMenu; $self->{input_menu} = new Gtk2::Menu; $self->{input_option}->set_menu ($self->{input_menu}); $self->{input_option}->set_size_request (120, -1); $self->{input_option}->set_history (0); $i = 0; foreach ("#0 Television", "#1 Composite", "#2 S-Video", "#3", "#4") { my $item = new Gtk2::MenuItem($_); $item->{label} = $_; $self->{input_menu}->append($item); $self->{input_option}->set_history ($i) if ($i eq $self->{config}->{_defaults}->{input}); $i++; } $self->{table3}->attach ($self->{input_option}, 1, 2, 7, 8, ['fill'], [], 2, 2); $self->{ratio_label} = new Gtk2::Label ("Ratio:"); $self->{ratio_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{ratio_label}, 0, 1, 8, 9, ['fill'], [], 2, 2); $self->{ratio_option} = new Gtk2::OptionMenu; $self->{ratio_menu} = new Gtk2::Menu; $self->{ratio_option}->set_menu ($self->{ratio_menu}); $self->{ratio_option}->set_size_request (100, -1); $self->{ratio_option}->set_history (0); $i = 0; foreach ("4:3", "16:9") { my $item = new Gtk2::MenuItem($_); $item->{label} = $_; $self->{ratio_menu}->append($item); $self->{ratio_option}->set_history ($i) if ($_ eq $self->{config}->{_global}->{ratio}); $i++; } $self->{table3}->attach ($self->{ratio_option}, 1, 2, 8, 9, ['fill'], [], 2, 2); $self->{channel_list_label} = new Gtk2::Label ("Channel list:"); $self->{channel_list_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{channel_list_label}, 0, 1, 9, 10, ['fill'], [], 2, 2); $self->{channel_list_option} = new Gtk2::OptionMenu; $self->{channel_list_menu} = new Gtk2::Menu; $self->{channel_list_option}->set_menu ($self->{channel_list_menu}); $self->{channel_list_option}->set_history (0); $i = 0; foreach ("europe-east", "europe-west", "us-bcast", "us-cable", "us-cable-hrc", "japan-bcast", "japan-cable", "italy", "newzealand", "australia", "ireland", "france", "china-bcast", "southafrica", "argentina", "russia") { my $item = new Gtk2::MenuItem($_); $item->{label} = $_; $self->{channel_list_menu}->append($item); $self->{channel_list_option}->set_history ($i) if ($_ eq $self->{config}->{_global}->{freqtab}); $i++; } $self->{table3}->attach ($self->{channel_list_option}, 1, 2, 9, 10, ['fill'], [], 2, 2); $self->{osd_label} = new Gtk2::Label ("OSD:"); $self->{osd_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{osd_label}, 0, 1, 10, 11, ['fill'], [], 2, 2); $self->{table3b} = new Gtk2::Table (2, 1, 0); $self->{table3}->attach ($self->{table3b}, 1, 2, 10, 11, ['fill'], [], 2, 2); $self->{osd_radio1} = new Gtk2::RadioButton (undef, "On"); $self->{osd_radio1}->signal_connect ("pressed", sub { $self->{osd} = "yes"}); #TODO $self->{table3b}->attach ($self->{osd_radio1}, 0, 1, 0, 1, ['fill'], [], 2, 2); $self->{osd_radio2} = new Gtk2::RadioButton ($self->{osd_radio1}, "Off"); $self->{osd_radio2}->signal_connect ("pressed", sub { $self->{osd} = "no"}); #TODO $self->{table3b}->attach ($self->{osd_radio2}, 1, 2, 0, 1, ['fill'], [], 2, 2); if ($self->{config}->{_global}->{osd} eq "no") { $self->{osd_radio2}->set_active (1); $self->{osd} = "no"; } else { $self->{osd_radio1}->set_active (1); $self->{osd} = "yes"; } $self->{fullscreen_label} = new Gtk2::Label ("Start in full screen:"); $self->{fullscreen_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{fullscreen_label}, 0, 1, 11, 12, ['fill'], [], 2, 2); $self->{table3c} = new Gtk2::Table (2, 1, 0); $self->{table3}->attach ($self->{table3c}, 1, 2, 11, 12, ['fill'], [], 2, 2); $self->{fullscreen_radio1} = new Gtk2::RadioButton (undef, "On"); $self->{fullscreen_radio1}->signal_connect ("pressed", sub { $self->{fullscreen} = "yes"}); #TODO $self->{table3c}->attach ($self->{fullscreen_radio1}, 0, 1, 0, 1, ['fill'], [], 2, 2); $self->{fullscreen_radio2} = new Gtk2::RadioButton ($self->{fullscreen_radio1}, "Off"); $self->{fullscreen_radio2}->signal_connect ("pressed", sub { $self->{fullscreen} = "no"}); #TODO $self->{table3c}->attach ($self->{fullscreen_radio2}, 1, 2, 0, 1, ['fill'], [], 2, 2); if ($self->{config}->{fullscreen} eq "no") { $self->{fullscreen_radio2}->set_active (1); $self->{fullscreen} = "no"; } else { $self->{fullscreen_radio1}->set_active (1); $self->{fullscreen} = "yes"; } $self->{mjpeg_label} = new Gtk2::Label ("Hardware MJPEG:"); $self->{mjpeg_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{mjpeg_label}, 0, 1, 12, 13, ['fill'], [], 2, 2); $self->{mjpeg_option} = new Gtk2::OptionMenu; $self->{mjpeg_menu} = new Gtk2::Menu; $self->{mjpeg_option}->set_menu ($self->{mjpeg_menu}); $self->{mjpeg_option}->set_size_request (100, -1); $self->{mjpeg_option}->set_history (0); $i = 0; foreach $size ("no", "full size", "medium size", "small size") { my $item = new Gtk2::MenuItem($size); $item->{label} = $size; $self->{mjpeg_menu}->append($item); $item->signal_connect("activate", sub { if ($_[1] eq "no") { $self->{capt_label}->show_all (); $self->{size_option}->show_all (); } else { $self->{capt_label}->hide_all (); $self->{size_option}->hide_all (); } }, $size); $self->{mjpeg_option}->set_history ($i) if ($size eq $self->{config}->{mjpeg}); $i++; } $self->{table3}->attach ($self->{mjpeg_option}, 1, 2, 12, 13, ['fill'], [], 2, 2); $self->{capt_label} = new Gtk2::Label ("Capture size:"); $self->{capt_label}->set_alignment (0, 0); $self->{table3}->attach ($self->{capt_label}, 0, 1, 13, 14, ['fill'], [], 2, 2); $self->{size_option} = new Gtk2::OptionMenu; $self->{size_menu} = new Gtk2::Menu; $self->{size_option}->set_menu ($self->{size_menu}); $self->{size_option}->set_size_request (100, -1); $self->{size_option}->set_history (0); $i = 0; foreach $size ("768x576", "720x576 (PAL)", "720x480 (NTSC)", "640x480", "512x384", "360x288 (Half PAL)", "360x240 (Half NTSC)") { my $item = new Gtk2::MenuItem($size); $item->{label} = $size; $self->{size_menu}->append($item); $_ = $size; s/^(\d+)x\d+.*/$1/; $w = $_; $_ = $size; s/^\d+x(\d+).*/$1/; $h = $_; if ($self->{config}->{width} == $w && $self->{config}->{height} == $h) { $self->{size_option}->set_history ($i); } $i++; } $self->{table3}->attach ($self->{size_option}, 1, 2, 13, 14, ['fill'], [], 2, 2); ### PAGE 4: VIDEO FILTERS $self->{table4} = new Gtk2::Table (1, 1, 0); $self->{page4}->pack_start ($self->{table4}, 1, 1, 0); $self->{vf_notebook} = new Gtk2::Notebook; $self->{vf_notebook}->set_tab_pos ('left'); $self->{vf_notebook}->set_scrollable (1); $self->{table4}->attach ($self->{vf_notebook}, 0, 1, 0, 1, ['fill'], ['fill', 'expand'], 2, 2); $i = 0; foreach $filter (@{$self->{vf_table}}) { my $name = $filter->{name}; my $desc = $filter->{desc}; my $longdesc = $filter->{longdesc}; my @params = @{$filter->{params}}; my $help = undef;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -