mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 09:40:37 +00:00
mi: code cleanups, comments
This commit is contained in:
parent
2309c6d7fb
commit
d70da55d3b
3 changed files with 78 additions and 69 deletions
|
@ -25,8 +25,7 @@ public class MediaInfo.App : Window
|
|||
private FileChooserWidget chooser;
|
||||
private Info info;
|
||||
|
||||
public App (string? directory_or_uri)
|
||||
{
|
||||
public App (string? directory_or_uri) {
|
||||
GLib.Object (type : WindowType.TOPLEVEL);
|
||||
|
||||
string directory = null;
|
||||
|
@ -85,8 +84,7 @@ public class MediaInfo.App : Window
|
|||
|
||||
// helper
|
||||
|
||||
private MenuBar create_menu ()
|
||||
{
|
||||
private MenuBar create_menu () {
|
||||
MenuBar menu_bar = new MenuBar ();
|
||||
Gtk.MenuItem item;
|
||||
Gtk.Menu sub_menu;
|
||||
|
@ -142,8 +140,7 @@ public class MediaInfo.App : Window
|
|||
|
||||
// signal handler
|
||||
|
||||
private void on_update_preview ()
|
||||
{
|
||||
private void on_update_preview () {
|
||||
File file = chooser.get_file();
|
||||
bool res = false;
|
||||
|
||||
|
@ -153,8 +150,7 @@ public class MediaInfo.App : Window
|
|||
chooser.set_preview_widget_active (res);
|
||||
}
|
||||
|
||||
private void on_fullscreen_toggled (CheckMenuItem item)
|
||||
{
|
||||
private void on_fullscreen_toggled (CheckMenuItem item) {
|
||||
if (item.active) {
|
||||
fullscreen();
|
||||
} else {
|
||||
|
@ -162,8 +158,7 @@ public class MediaInfo.App : Window
|
|||
}
|
||||
}
|
||||
|
||||
private void on_about_clicked (Gtk.MenuItem item)
|
||||
{
|
||||
private void on_about_clicked (Gtk.MenuItem item) {
|
||||
AboutDialog dlg = new AboutDialog ();
|
||||
|
||||
dlg.set_version(Config.PACKAGE_VERSION);
|
||||
|
|
|
@ -36,6 +36,7 @@ public class MediaInfo.Info : Box
|
|||
private Notebook video_streams; // depending on screen resolution
|
||||
private Notebook audio_streams;
|
||||
private Notebook subtitle_streams;
|
||||
private Label toc_entries; // TODO(ensonic): use treeview
|
||||
private Preview preview;
|
||||
private ScrolledWindow info_area;
|
||||
// gstreamer objects
|
||||
|
@ -53,8 +54,7 @@ public class MediaInfo.Info : Box
|
|||
private HashSet<string> tag_black_list;
|
||||
private HashMap<string, string> wikilinks;
|
||||
|
||||
public Info ()
|
||||
{
|
||||
public Info () {
|
||||
Label label;
|
||||
Table table;
|
||||
AttachOptions fill = AttachOptions.FILL;
|
||||
|
@ -251,6 +251,17 @@ public class MediaInfo.Info : Box
|
|||
row++;
|
||||
}
|
||||
|
||||
label = new Label (null);
|
||||
label.set_markup("<b>Toc</b>");
|
||||
label.set_alignment (0.0f, 0.5f);
|
||||
table.attach (label, 0, 3, row, row+1, fill_exp, 0, 0, 1);
|
||||
row++;
|
||||
|
||||
toc_entries = new Label (null); // TODO(ensonic): use TreeView
|
||||
//toc.row_activated.connect (on_toc_entry_activated);
|
||||
table.attach (toc_entries, 0, 3, row, row+1, fill_exp, 0, 0, 1);
|
||||
row++;
|
||||
|
||||
// TODO: add container stream info widgets
|
||||
|
||||
// TODO: add tag list widget
|
||||
|
@ -274,16 +285,14 @@ public class MediaInfo.Info : Box
|
|||
bus.sync_message["element"].connect (on_element_sync_message);
|
||||
}
|
||||
|
||||
~Info ()
|
||||
{
|
||||
~Info () {
|
||||
// stop previous playback
|
||||
pb.set_state (State.NULL);
|
||||
}
|
||||
|
||||
// public methods
|
||||
|
||||
public bool discover (string uri)
|
||||
{
|
||||
public bool discover (string uri) {
|
||||
bool res = true;
|
||||
|
||||
if (uri != null) {
|
||||
|
@ -318,8 +327,7 @@ public class MediaInfo.Info : Box
|
|||
return (res);
|
||||
}
|
||||
|
||||
private void on_uri_discovered (DiscovererInfo info, Error e)
|
||||
{
|
||||
private void on_uri_discovered (DiscovererInfo info, Error e) {
|
||||
if (e != null) {
|
||||
debug ("Failed to extract metadata from %s: %s: %s", info.get_uri(), e.domain.to_string (), e.message);
|
||||
container_caps.set_text ("");
|
||||
|
@ -329,24 +337,7 @@ public class MediaInfo.Info : Box
|
|||
process_new_uri (info);
|
||||
}
|
||||
|
||||
private void set_wikilink(Label label, Caps caps)
|
||||
{
|
||||
string str = get_codec_description (caps);
|
||||
string wikilink = wikilinks[str];
|
||||
|
||||
if (wikilink == null) {
|
||||
wikilink = wikilinks[caps.get_structure(0).get_name()];
|
||||
}
|
||||
if (wikilink != null) {
|
||||
// FIXME: make prefix (en) and link translatable
|
||||
label.set_markup ("<a href=\"http://en.wikipedia.org/wiki/%s\">%s</a>".printf (wikilink, str));
|
||||
} else {
|
||||
label.set_text (str);
|
||||
}
|
||||
}
|
||||
|
||||
private void process_new_uri (DiscovererInfo info)
|
||||
{
|
||||
private void process_new_uri (DiscovererInfo info) {
|
||||
string uri = info.get_uri();
|
||||
GLib.List<DiscovererStreamInfo> l;
|
||||
DiscovererStreamInfo sinfo;
|
||||
|
@ -360,6 +351,7 @@ public class MediaInfo.Info : Box
|
|||
Caps caps;
|
||||
unowned Structure s;
|
||||
unowned TagList t;
|
||||
unowned Toc toc = null;
|
||||
// sort streams
|
||||
ArrayList<string> sids = new ArrayList<string> ();
|
||||
int six;
|
||||
|
@ -404,23 +396,18 @@ public class MediaInfo.Info : Box
|
|||
caps = sinfo.get_caps ();
|
||||
container_caps.set_text (caps.to_string ());
|
||||
set_wikilink (container_name, caps);
|
||||
|
||||
toc = sinfo.get_toc();
|
||||
// irks: we can also have the toc on a *_stream
|
||||
}
|
||||
|
||||
// reset notebooks
|
||||
if (compact_mode) {
|
||||
while (all_streams.get_n_pages() > 0) {
|
||||
all_streams.remove_page (-1);
|
||||
}
|
||||
clear_notebook (all_streams);
|
||||
} else {
|
||||
while (video_streams.get_n_pages() > 0) {
|
||||
video_streams.remove_page (-1);
|
||||
}
|
||||
while (audio_streams.get_n_pages() > 0) {
|
||||
audio_streams.remove_page (-1);
|
||||
}
|
||||
while (subtitle_streams.get_n_pages() > 0) {
|
||||
subtitle_streams.remove_page (-1);
|
||||
}
|
||||
clear_notebook (video_streams);
|
||||
clear_notebook (audio_streams);
|
||||
clear_notebook (subtitle_streams);
|
||||
}
|
||||
page_offset = 0;
|
||||
|
||||
|
@ -548,7 +535,9 @@ public class MediaInfo.Info : Box
|
|||
row++;
|
||||
}
|
||||
|
||||
// sinfo.get_toc()
|
||||
if (toc == null) {
|
||||
toc = sinfo.get_toc();
|
||||
}
|
||||
|
||||
six = get_stream_index (sinfo, sids);
|
||||
nb.insert_page (table, new Label (@"video $i"), page_offset + six);
|
||||
|
@ -657,6 +646,10 @@ public class MediaInfo.Info : Box
|
|||
row++;
|
||||
}
|
||||
|
||||
if (toc == null) {
|
||||
toc = sinfo.get_toc();
|
||||
}
|
||||
|
||||
six = get_stream_index (sinfo, sids);
|
||||
nb.insert_page (table, new Label (@"audio $i"), page_offset + six);
|
||||
}
|
||||
|
@ -723,6 +716,10 @@ public class MediaInfo.Info : Box
|
|||
row++;
|
||||
}
|
||||
|
||||
if (toc == null) {
|
||||
toc = sinfo.get_toc();
|
||||
}
|
||||
|
||||
six = get_stream_index (sinfo, sids);
|
||||
nb.insert_page (table, new Label (@"subtitle $i"), page_offset + six);
|
||||
}
|
||||
|
@ -730,6 +727,12 @@ public class MediaInfo.Info : Box
|
|||
page_offset += (int)num_subtitle_streams;
|
||||
}
|
||||
nb.show_all();
|
||||
|
||||
if (toc != null) {
|
||||
toc_entries.set_text ("has toc");
|
||||
} else {
|
||||
toc_entries.set_text (null);
|
||||
}
|
||||
|
||||
if (have_video) {
|
||||
Gdk.Point res = video_resolutions[0];
|
||||
|
@ -749,8 +752,7 @@ public class MediaInfo.Info : Box
|
|||
|
||||
// signal handlers
|
||||
|
||||
private void on_preview_size_allocate (Widget widget, Gtk.Allocation box)
|
||||
{
|
||||
private void on_preview_size_allocate (Widget widget, Gtk.Allocation box) {
|
||||
/*
|
||||
Gtk.Allocation alloc;
|
||||
get_allocation (out alloc);
|
||||
|
@ -766,8 +768,7 @@ public class MediaInfo.Info : Box
|
|||
*/
|
||||
}
|
||||
|
||||
private bool on_preview_draw (Widget widget, Cairo.Context cr)
|
||||
{
|
||||
private bool on_preview_draw (Widget widget, Cairo.Context cr) {
|
||||
if (pb.current_state < State.PAUSED || !have_video) {
|
||||
widget.set_double_buffered (true);
|
||||
} else {
|
||||
|
@ -776,16 +777,14 @@ public class MediaInfo.Info : Box
|
|||
return false;
|
||||
}
|
||||
|
||||
private void on_element_sync_message (Gst.Bus bus, Message message)
|
||||
{
|
||||
private void on_element_sync_message (Gst.Bus bus, Message message) {
|
||||
if (Gst.Video.is_video_overlay_prepare_window_handle_message (message)) {
|
||||
Gst.Video.Overlay overlay = message.src as Gst.Video.Overlay;
|
||||
overlay.set_window_handle ((uint *)Gdk.X11Window.get_xid (preview.get_window ()));
|
||||
}
|
||||
}
|
||||
|
||||
private void on_video_stream_switched (Notebook nb, Widget page, uint page_num)
|
||||
{
|
||||
private void on_video_stream_switched (Notebook nb, Widget page, uint page_num) {
|
||||
if (pb.current_state > State.PAUSED) {
|
||||
debug ("Switching video to: %u", page_num);
|
||||
((GLib.Object)pb).set_property ("current-video", (int)page_num);
|
||||
|
@ -794,24 +793,21 @@ public class MediaInfo.Info : Box
|
|||
}
|
||||
}
|
||||
|
||||
private void on_audio_stream_switched (Notebook nb, Widget page, uint page_num)
|
||||
{
|
||||
private void on_audio_stream_switched (Notebook nb, Widget page, uint page_num) {
|
||||
if (pb.current_state > State.PAUSED) {
|
||||
debug ("Switching audio to: %u", page_num);
|
||||
((GLib.Object)pb).set_property ("current-audio", (int)page_num);
|
||||
}
|
||||
}
|
||||
|
||||
private void on_subtitle_stream_switched (Notebook nb, Widget page, uint page_num)
|
||||
{
|
||||
private void on_subtitle_stream_switched (Notebook nb, Widget page, uint page_num) {
|
||||
if (pb.current_state > State.PAUSED) {
|
||||
debug ("Switching subtitle to: %u", page_num);
|
||||
((GLib.Object)pb).set_property ("current-text", (int)page_num);
|
||||
}
|
||||
}
|
||||
|
||||
private void on_stream_switched (Notebook nb, Widget page, uint page_num)
|
||||
{
|
||||
private void on_stream_switched (Notebook nb, Widget page, uint page_num) {
|
||||
if (pb.current_state > State.PAUSED) {
|
||||
if (page_num < num_video_streams) {
|
||||
debug ("Switching video to: %u", page_num);
|
||||
|
@ -835,9 +831,29 @@ public class MediaInfo.Info : Box
|
|||
|
||||
// helpers
|
||||
|
||||
private void clear_notebook (NoteBook nb) {
|
||||
while (nb.get_n_pages() > 0) {
|
||||
nb.remove_page (-1);
|
||||
}
|
||||
}
|
||||
|
||||
private void set_wikilink (Label label, Caps caps) {
|
||||
string str = get_codec_description (caps);
|
||||
string wikilink = wikilinks[str];
|
||||
|
||||
if (wikilink == null) {
|
||||
wikilink = wikilinks[caps.get_structure(0).get_name()];
|
||||
}
|
||||
if (wikilink != null) {
|
||||
// FIXME: make prefix (en) and link translatable
|
||||
label.set_markup ("<a href=\"http://en.wikipedia.org/wiki/%s\">%s</a>".printf (wikilink, str));
|
||||
} else {
|
||||
label.set_text (str);
|
||||
}
|
||||
}
|
||||
|
||||
// get stream index where streams are orderd by stream_id
|
||||
private int get_stream_index (DiscovererStreamInfo sinfo, ArrayList<string> sids)
|
||||
{
|
||||
private int get_stream_index (DiscovererStreamInfo sinfo, ArrayList<string> sids) {
|
||||
string sid = sinfo.get_stream_id ();
|
||||
int six = 0;
|
||||
|
||||
|
@ -850,8 +866,7 @@ public class MediaInfo.Info : Box
|
|||
return six;
|
||||
}
|
||||
|
||||
private string build_taglist_info (TagList t)
|
||||
{
|
||||
private string build_taglist_info (TagList t) {
|
||||
uint i;
|
||||
string str, fn, vstr;
|
||||
GLib.Value v;
|
||||
|
|
|
@ -26,8 +26,7 @@ const OptionEntry[] options = {
|
|||
{ null }
|
||||
};
|
||||
|
||||
int main(string[] args)
|
||||
{
|
||||
int main(string[] args) {
|
||||
Intl.bindtextdomain (Config.GETTEXT_PACKAGE, Config.LOCALEDIR);
|
||||
Intl.bind_textdomain_codeset (Config.GETTEXT_PACKAGE, "UTF-8");
|
||||
Intl.textdomain (Config.GETTEXT_PACKAGE);
|
||||
|
|
Loading…
Reference in a new issue