سؤال التعامل الصحيح مع معرفات URI التطبيق من Unity Dash


في مرحلة ما ، غيّرت Unity نوع Uri الذي عادت إليه عندما حدثت عملية السحب والإسقاط في تطبيقات من Unity Dash إلى نافذة Gtk في تطبيق كتبته. في 13.04 (Unity 7.0) ، تلقت مكالمة البيانات مرة أخرى نصًا / قائمة uri مع المسار الكامل ، على سبيل المثال ، ملف: //usr/share/applications/APP.desktop

الآن ومع ذلك ، فإنه اختبار / قائمة uri مثل هذا: application: //APP.desktop

كيف يمكنني الحصول عليها لتعطيني المسار الكامل إلى APP.desktop؟ أو هل يمكنني استخدام uri للحصول على كائن AppInfo؟


4
2018-04-21 01:27


الأصل




الأجوبة:


أنظر إلى كابل بيانات، يجب أن تكون قادراً على استخدام get_path للكائن AppInfoManager

تشغيل ما يلي في مترجم python:

>>> من gi.repository import Unity
>>> a = Unity.AppInfoManager.get_instance ()
>>> a.get_path ("gedit.desktop")
"/usr/share/applications/gedit.desktop"

كما ترى ، فقط تمرير اسم ملف سطح المكتب بإرجاع المسار الكامل إلى اسم ملف سطح المكتب.

وبالتالي ، من تطبيق السحب والإسقاط - تأكد من إضافة هدف uri:

widget.drag_dest_add_uri_targets()

الاتصال بطريقة drag_data_get

connect("drag-data-get", self.on_drag_data_get)

def on_drag_data_received(self, widget, drag_context, x,y, data,info, time):
    print (data.get_uris())

انشق من application://app.desktop (string.split(str, 1)[1]) وتغذية ذلك في appinfomanager.get_path() طريقة


4
2018-05-11 23:04