Implement External Applications extension
This commit is contained in:
parent
0ca6c68f0c
commit
0533e67902
1 changed files with 74 additions and 0 deletions
74
extensions/external-applications.vala
Normal file
74
extensions/external-applications.vala
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
/*
|
||||||
|
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 Midori;
|
||||||
|
|
||||||
|
public class ExternalApplications : Midori.Extension {
|
||||||
|
Dialog? dialog;
|
||||||
|
void tab_added (Widget tab) {
|
||||||
|
/* */
|
||||||
|
}
|
||||||
|
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 (Menu menu) {
|
||||||
|
var menuitem = new 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 = "Lalala";
|
||||||
|
extension.version = "0.1";
|
||||||
|
extension.authors = "nobody";
|
||||||
|
return extension;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue