Câu hỏi Xử lý đúng các URI ứng dụng từ Unity Dash


Tại một số thời điểm, Unity đã thay đổi kiểu Uri nó trở lại khi một hoạt động kéo-thả-thả xảy ra từ các ứng dụng từ Unity Dash đến một cửa sổ Gtk trong một ứng dụng tôi đã viết. Trong 13.04 (Unity 7.0), cuộc gọi lại dữ liệu đã nhận được một danh sách văn bản / uri với đường dẫn đầy đủ, ví dụ: tệp: //usr/share/applications/APP.desktop

Tuy nhiên, đây là danh sách kiểm tra / uri như sau: application: //APP.desktop

Làm cách nào để tôi cung cấp cho tôi đường dẫn đầy đủ tới APP.desktop? Hoặc tôi có thể sử dụng uri để có được một đối tượng AppInfo?


4
2018-04-21 01:27


gốc




Các câu trả lời:


Hãy nhìn vào tài liệu, bạn sẽ có thể sử dụng get_path của đối tượng AppInfoManager

Chạy phần sau trong trình thông dịch python:

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

Như bạn có thể thấy, chỉ cần truyền tên tệp trên máy tính để bàn trả về toàn bộ đường dẫn đến tên tệp trên máy tính để bàn.

Do đó, từ ứng dụng kéo-thả của bạn - hãy đảm bảo bạn thêm mục tiêu uri:

widget.drag_dest_add_uri_targets()

kết nối với phương thức 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())

Tách ra từ application://app.desktop (string.split(str, 1)[1]) và cho nó vào appinfomanager.get_path() phương pháp


4
2018-05-11 23:04