Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
midori:tutorial [2014/03/01 13:36] – [Working with (web) views] axlrose | midori:tutorial [2014/03/03 15:00] – [Unit testing] axlrose | ||
---|---|---|---|
Line 137: | Line 137: | ||
foreach (var tab in browser.get_tabs ()) { | foreach (var tab in browser.get_tabs ()) { | ||
browser.add_tab.disconnect (tab_added); | browser.add_tab.disconnect (tab_added); | ||
- | browser.switch_tab.connect | + | browser.switch_tab.disconnect |
- | browser.remove_tab.connect | + | browser.remove_tab.disconnect |
} | } | ||
} | } | ||
Line 159: | Line 159: | ||
<code vala> | <code vala> | ||
- | // in tab_added | + | namespace Sandcat { |
- | | + | |
+ | |||
+ | internal Manager () { | ||
+ | GLib.Object (name: _(" | ||
+ | | ||
+ | | ||
+ | | ||
+ | activate.connect (this.activated); | ||
+ | deactivate.connect (this.deactivated); | ||
+ | } | ||
- | | + | |
- | if ((hit_test_result.context & WebKit.HitTestResultContext.SELECTION) == 0) | + | tab.context_menu.connect (add_menu_items); |
- | | + | } |
- | var action | + | |
- | | + | if ((hit_test_result.context & WebKit.HitTestResultContext.SELECTION) == 0) |
- | stdout.printf ("my menu item rocks\n" | + | return; |
- | }); | + | |
- | menu.add (action); | + | |
- | var submenu = new Midori.ContextAction ("NotesPaste", "Paste N_otes", null, null); | + | var action2 = new Gtk.Action (" |
- | for (int i = 0; i < 10; i++) { | + | action1.activate.connect (() => { |
- | | + | stdout.printf ("my menu item1 rocks\n" |
+ | | ||
+ | action2.activate.connect (() => { | ||
+ | | ||
+ | }); | ||
+ | menu.add (action1); | ||
+ | | ||
+ | |||
+ | //Add group of submenu | ||
+ | | ||
+ | var listsubmenu = new List< | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | listsubmenu.foreach ((entry) => { | ||
+ | entry.activate.connect(() => { | ||
+ | stdout.printf ("I am a submenu\n" | ||
+ | }); | ||
+ | submenu.add(entry); | ||
+ | }); | ||
+ | menu.add (submenu); | ||
+ | } | ||
+ | |||
+ | void browser_added (Midori.Browser browser) { | ||
+ | | ||
+ | tab_added (browser, tab); | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | void activated (Midori.App app) { | ||
+ | foreach (var browser in app.get_browsers ()) | ||
+ | browser_added (browser); | ||
+ | app.add_browser.connect (browser_added); | ||
+ | } | ||
+ | |||
+ | void browser_removed (Midori.Browser browser) { | ||
+ | foreach (var tab in browser.get_tabs ()) { | ||
+ | browser.add_tab.disconnect (tab_added); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void deactivated () { | ||
+ | var app = get_app (); | ||
+ | app.add_browser.disconnect (browser_added); | ||
+ | foreach (var browser in app.get_browsers ()) | ||
+ | browser_removed (browser); | ||
} | } | ||
- | menu.add (submenu); | ||
} | } | ||
- | </ | + | } |
+ | public Midori.Extension extension_init () { | ||
+ | return new Sandcat.Manager (); | ||
+ | } | ||
+ | </ | ||
+ | In the Web page try to select a word or a sentence right click and you are going to see three menu item which were added, click on one of them and you will see the magic in the terminal :) . | ||
====== Add an app menu item ====== | ====== Add an app menu item ====== | ||
Line 190: | Line 250: | ||
<code vala> | <code vala> | ||
- | // in browser_added | + | namespace Sandcat { |
- | | + | |
- | | + | |
- | | + | internal Manager () { |
- | </ | + | GLib.Object (name: _("Furry example extension"), |
+ | description: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | void browser_added (Midori.Browser browser) { | ||
+ | var button = new Gtk.Button.with_label (" | ||
+ | var click_counter = 0; | ||
+ | browser.statusbar.pack_start (button, false, false, 3); | ||
+ | button.clicked.connect (() => { | ||
+ | button.label = "You Clicked me (%d) time(s)" | ||
+ | }); | ||
+ | button.show (); | ||
+ | } | ||
+ | |||
+ | 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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public Midori.Extension extension_init () { | ||
+ | return new Sandcat.Manager (); | ||
+ | } | ||
+ | </ | ||
+ | Enjoy How much time you click :-), you can add any Gtk widget in this button. | ||
====== Add a panel ====== | ====== Add a panel ====== | ||
Line 256: | Line 350: | ||
| | ||
} | } | ||
+ | </ | ||
+ | |||
+ | With a simple example it will be like this: | ||
+ | <code vala> | ||
+ | void test_furry_purr () { | ||
+ | assert (1 == 1); | ||
+ | } | ||
+ | |||
+ | public void extension_test () { | ||
+ | | ||
+ | } | ||
+ | |||
+ | void main (string[] args) { | ||
+ | Test.init (ref args); | ||
+ | extension_test(); | ||
+ | Test.run (); | ||
+ | }</ | ||
+ | The output could look like this. | ||
+ | <code bash> | ||
+ | / | ||
</ | </ |