【问题标题】:GTK allow open files with new vala applicationGTK 允许使用新的 vala 应用程序打开文件
【发布时间】:2017-08-14 17:51:36
【问题描述】:

我正在使用 Vala 开发一个媒体播放器,我希望能够使用这个应用程序打开音频文件(一旦安装)。

在 .descktop 文件中,我添加了以下 MIME 类型来指示哪些文件可以打开(它们与 Banshee 中的 MIME 类型相同):

MimeType=application/musepack;application/ogg;application/rss+xml;application/vnd.emusic-emusic_list;application/x-ape;application/x-democracy;application/x-extension-m4a;application/x-extension-mp4;application/x-flac;application/x-flash-video;application/x-id3;application/x-linguist;application/x-matroska;application/x-miro;application/x-musepack;application/x-netshow-channel;application/x-ogg;application/x-quicktime-media-link;application/x-quicktimeplayer;application/x-shorten;application/x-troff-msvideo;application/xspf+xml;audio/3gpp;audio/AMR;audio/AMR-WB;audio/ac3;audio/ape;audio/avi;audio/basic;audio/flac;audio/midi;audio/mp;audio/mp2;audio/mp3;audio/mp4;audio/mp4a-latm;audio/mpc;audio/mpeg;audio/mpeg3;audio/mpegurl;audio/musepack;audio/ogg;audio/vorbis;audio/wav;audio/wave;audio/x-amzxml;audio/x-ape;audio/x-flac;audio/x-it;audio/x-m4a;audio/x-matroska;audio/x-mod;audio/x-mp;audio/x-mp3;audio/x-mpc;audio/x-mpeg;audio/x-mpeg-3;audio/x-mpegurl;audio/x-ms-asf;audio/x-ms-asx;audio/x-ms-wax;audio/x-ms-wma;audio/x-musepack;audio/x-ogg;audio/x-pn-aiff;audio/x-pn-au;audio/x-pn-wav;audio/x-pn-windows-acm;audio/x-s3m;audio/x-sbc;audio/x-scpls;audio/x-speex;audio/x-tta;audio/x-vorbis;audio/x-vorbis+ogg;audio/x-wav;audio/x-wavpack;audio/x-xm;image/avi;image/x-pict;misc/ultravox;text/google-video-pointer;text/x-google-video-pointer;text/x-opml+xml;video/3gpp;video/avi;video/dv;video/fli;video/flv;video/mp4;video/mp4v-es;video/mpeg;video/msvideo;video/ogg;video/quicktime;video/vivo;video/vnd.divx;video/vnd.vivo;video/x-anim;video/x-avi;video/x-flc;video/x-fli;video/x-flic;video/x-flv;video/x-m4v;video/x-matroska;video/x-mpeg;video/x-mpg;video/x-ms-asf;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvx;video/x-msvideo;video/x-nsv;video/x-ogm+ogg;video/x-theora;video/x-theora+ogg;x-scheme-handler/lastfm;x-scheme-handler/u1ms;

当我点击文件时,应用程序会显示在“打开方式”对话框中。

然后,在我的 Gtk.Application 类中,我在构造函数中添加:

class SomeClass (string[] args) { 
    Object (application_id: "some.id", flags: ApplicationFlags.HANDLES_OPEN);
    // do stuff...
}

最后我添加了“open”方法,该方法应该在使用应用程序打开文件时调用:

public override void open (File[] files, string hint) {
    // do stuff ...
}

但是,当我尝试使用我的应用程序打开一个 .mp3 文件时,会出现一个对话框,上面写着:

“No es poden obrir els fitxers o uris amb aquesta aplicació”

英文:

“无法使用此应用程序打开文件或 uri”

所以我的问题是:我错过了什么吗?

我已经在 descktop 文件中添加了 MIME 类型,我已经激活了“HANDLES_OPEN”标志并且我已经实现了“open”方法。

PD:我正在使用elementaryOS,并使用CMake 构建系统安装我的应用程序。

【问题讨论】:

    标签: gtk gtk3 vala freedesktop.org elementary


    【解决方案1】:

    在 GLib/C 术语中:您需要将open 的实现连接GApplication::open signal

    Vala 术语:见signals

    class Foo : Object {
        public signal void some_event ();   // definition of the signal
    
        public void method () {
            some_event ();                  // emitting the signal (callbacks get invoked)
        }
    }
    
    void callback_a () {
        stdout.printf ("Callback A\n");
    }
    
    void callback_b () {
        stdout.printf ("Callback B\n");
    }
    
    void main () {
        var foo = new Foo ();
        foo.some_event.connect (callback_a);      // connecting the callback functions
        foo.some_event.connect (callback_b);
        foo.method ();
    }
    

    ...

    所以,用 Vala 的话来说:

    【讨论】:

      猜你喜欢
      • 2019-07-20
      • 1970-01-01
      • 2012-10-29
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多