ALT Linux Bugzilla
– Attachment 5450 Details for
Bug 27258
Передача ftp:// внешней программе
New bug
|
Search
|
[?]
|
Help
Register
|
Log In
[x]
|
Forgot Password
Login:
[x]
|
EN
|
RU
[patch]
ftp url handler
midori-0.4.5a-ftp-handler.patch (text/plain), 4.11 KB, created by
vx8400
on 2012-04-23 13:28:36 MSK
(
hide
)
Description:
ftp url handler
Filename:
MIME Type:
Creator:
vx8400
Created:
2012-04-23 13:28:36 MSK
Size:
4.11 KB
patch
obsolete
>--- a/extensions/external-applications.vala 2012-04-23 13:03:49.000000000 +0400 >+++ b/extensions/external-applications.vala 2012-04-23 13:05:57.000000000 +0400 >@@ -0,0 +1,109 @@ >+/* >+ Copyright (C) 2010 Christian Dywan <christian@twotoasts.de> >+ >+ This library is free software; you can redistribute it and/or >+ modify it under the terms of the GNU Lesser General Public >+ License as published by the Free Software Foundation; either >+ version 2.1 of the License, or (at your option) any later version. >+ >+ See the file COPYING for the full license text. >+*/ >+ >+using Gtk; >+using WebKit; >+using Midori; >+ >+public class ExternalApplications : Midori.Extension { >+ Dialog? dialog; >+ bool launch (string command, string uri) { >+ try { >+ var info = GLib.AppInfo.create_from_commandline (command + " " + uri, null, 0); >+ /* >+ var uris = new List<string>(); >+ uris.prepend (uri); >+ info.launch_uris (uris, null); >+ */ >+ info.launch(null,null); >+ return true; >+ } >+ catch (GLib.Error error) { >+ var error_dialog = new Gtk.MessageDialog (null, 0, >+ Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, >+ "Failed to launch external application."); >+ error_dialog.format_secondary_text (error.message); >+ error_dialog.response.connect ((dialog, response) >+ => { dialog.destroy (); }); >+ error_dialog.show (); >+ } >+ return false; >+ } >+ bool navigating (WebFrame web_frame, NetworkRequest request, >+ WebNavigationAction action, WebPolicyDecision decision) { >+ string uri = request.get_uri (); >+ if (uri.has_prefix ("ftp://")) { >+ if (launch ("pcmanfm", uri)) { >+ decision.ignore (); >+ return true; >+ } >+ } >+ return false; >+ } >+ void tab_added (View tab) { >+ var web_view = tab.get_web_view (); >+ web_view.navigation_policy_decision_requested.connect (navigating); >+ } >+ void configure_external_applications () { >+ if (dialog == null) { >+ dialog = new Dialog.with_buttons ("Configure External Applications", >+ get_app ().browser, >+ DialogFlags.DESTROY_WITH_PARENT | DialogFlags.NO_SEPARATOR, >+ STOCK_CLOSE, ResponseType.CLOSE); >+ dialog.icon_name = STOCK_PROPERTIES; >+ dialog.destroy.connect ((dialog) => { dialog = null; }); >+ dialog.response.connect ((dialog, response) => { dialog.destroy (); }); >+ dialog.show (); >+ } >+ else >+ dialog.present (); >+ } >+ void tool_menu_populated (Gtk.Menu menu) { >+ var menuitem = new Gtk.MenuItem.with_mnemonic ("Configure _External Applications..."); >+ menuitem.activate.connect (configure_external_applications); >+ menuitem.show (); >+ menu.append (menuitem); >+ } >+ void browser_added (Browser browser) { >+ foreach (var tab in browser.get_tabs ()) >+ tab_added (tab); >+ browser.add_tab.connect (tab_added); >+ browser.populate_tool_menu.connect (tool_menu_populated); >+ } >+ void activated (Midori.App app) { >+ foreach (var browser in app.get_browsers ()) >+ browser_added (browser); >+ app.add_browser.connect (browser_added); >+ } >+ void deactivated () { >+ var app = get_app (); >+ app.add_browser.disconnect (browser_added); >+ foreach (var browser in app.get_browsers ()) { >+ foreach (var tab in browser.get_tabs ()) >+ /* */; >+ browser.populate_tool_menu.disconnect (tool_menu_populated); >+ } >+ } >+ internal ExternalApplications () { >+ activate.connect (activated); >+ deactivate.connect (deactivated); >+ } >+} >+ >+public Midori.Extension extension_init () { >+ var extension = new ExternalApplications (); >+ extension.name = "External Applications"; >+ extension.description = "Pass ftp:// URLs to pcmanfm"; >+ extension.version = "0.1"; >+ extension.authors = "Christian Dywan <christian@twotoasts.de>"; >+ return extension; >+} >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 27258
: 5450