2015-12-27 19:06:08 +03:00
|
|
|
namespace LAview.Desktop {
|
|
|
|
|
|
|
|
namespace Utils {
|
|
|
|
|
|
|
|
using Gtk;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Open document.
|
|
|
|
* Idea borrowed from: https://github.com/ssokolow/gvrun/blob/master/process_runner.vala
|
|
|
|
*/
|
|
|
|
void open_document (string path, Window? parent_window = null) {
|
|
|
|
#if (UNIX)
|
|
|
|
const string[] OPENERS = {"xdg-open", "mimeopen", "open"};
|
|
|
|
foreach (var opener in OPENERS) {
|
|
|
|
if (Environment.find_program_in_path (opener) != null) {
|
|
|
|
try {
|
2016-02-06 02:09:32 +03:00
|
|
|
string[] argv = { opener, path };
|
2015-12-27 19:06:08 +03:00
|
|
|
Process.spawn_async(null, argv, null, SpawnFlags.SEARCH_PATH, null, null);
|
|
|
|
} catch (SpawnError err) {
|
|
|
|
var msg = new MessageDialog (parent_window, DialogFlags.MODAL, MessageType.ERROR,
|
2016-02-29 23:04:59 +03:00
|
|
|
ButtonsType.CLOSE, _("Error: ")+err.message);
|
2015-12-27 19:06:08 +03:00
|
|
|
msg.response.connect ((response_id) => { msg.destroy (); } );
|
|
|
|
msg.show ();
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#elif (WINDOWS)
|
|
|
|
Posix.system (@"start $path");
|
|
|
|
#else
|
|
|
|
assert_not_reached ();
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|