Sample Code 521: How to create a popup menu when user right click on a GtkToolbar? |
|
Written by kksou
|
|
Wednesday, 13 August 2008 |
|
Problem This is in response to Vadi's post titled "How to make a popup menu on a GtkToolbar".
He would like to create a popup menu when a user right-click on a GtkToolbar as shown below:

Solution
Sample Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| <?php $window = new GtkWindow(); $window->set_title($argv[0]); $window->set_size_request(400, 200); $window->connect_simple('destroy', array('Gtk','main_quit')); $window->add($vbox = new GtkVBox());
// define menu definition
$toolbar_definition = array('New', 'Open', 'Save', '<hr>', 'Cut', 'Copy', 'Paste', '<hr>', 'Undo','Redo'); setup_toolbar($vbox, $toolbar_definition);
// display title
$title = new GtkLabel("Set up popup menu with right mouse click in toolbar"); $title->modify_font(new PangoFontDescription("Times New Roman Italic 10")); $title->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#0000ff")); $vbox->pack_start($title); $vbox->pack_start(new GtkLabel(''));
$window->show_all(); Gtk::main();
// setup toolbar
function setup_toolbar($vbox, $toolbar_definition) { $toolbar = new GtkToolBar(); // note 2
$vbox->pack_start($toolbar, 0, 0); foreach($toolbar_definition as $item) { if ($item=='<hr>') { $toolbar->insert(new GtkSeparatorToolItem(), -1); } else { $stock_image_name = 'Gtk::STOCK_'.strtoupper($item); if (defined($stock_image_name)) { $toolbar_item = GtkToolButton::new_from_stock( constant($stock_image_name)); $toolbar->insert($toolbar_item, -1); $toolbar_item->connect('clicked', 'on_toolbar_button', $item); $toolbar_item->child->connect('button-press-event', // note 1
'on_button', $item, $toolbar_item); } } } }
// process toolbar
function on_toolbar_button($button, $item) { echo "toolbar clicked: $item\n"; }
function on_button($button, $event, $item, $toolitem) { if ($event->button==1) { return false; } if ($event->button==2) return true; // do nothing
if ($event->button==3) { // n4 note 2
$prefix = $item; // displays the popup menu
$menu_definition = array( "$item - menu item 1", "$item - menu item 2", "$item - menu item 3", '<hr>', "$item - menu item 4", "$item - menu item 5", "$item - menu item 6" );
|
- Note that this is only 70% of the sample code. You have to be a registered member to see the entire sample code. Please login or register.
- Registration is free and immediate.
- Have some doubt about the registration? Please read this forum article.
Explanation The code above is based on How to set up toolbar?
What's new here:
- Register for the signal
button-press-event.
- Check for right mouse click.
- Process the selected menu item of the popup menu.
Related Links
User reviews There are no user reviews yet. Note: You have to be a registered member to leave a comment. Free registration here. |
Latest Blog Articles
|
Monday, 05 October 2009 This module makes use of the Google Weather API to display the current temperature, weather condition and a four-day weather forecast, as you can see on the left of the page.
This is the first, and currently the only weather module with the following features:
- Uses the Google Weather API that provides 4-day weather forecast with images.
- Allows user to interactively enter zip codes (for US, UK and Canada) and city names.
- Displays the weather information in many different languages, as provided by Google.
- Allows you to display two or more weather modules in the same page.
- Supports both Joomla 1.0 and Joomla 1.5!
- You can turn on or off the input field.
- You can specify the default unit for the temperature (in °C or °F)
- You can switch between °C or °F interactively with no reloading of pages.
Download: Google Weather Module - AJAX version v1.5.
|
|
|
Friday, 02 October 2009 Added new parameter "hide_direction_text=1" - allows you to hide the text description on the right of the map.
Download here: googleDirections plugin v1.58
Demo: Show map directions with maps only (and text description hidden) |
|
|
Wednesday, 09 September 2009 You can now download the latest version of Glade 3 (v3.6.7) windows binary from glade.gnome.org.
Thanks to Roeland from Belgium who informed me about this.
Details here: How to install glade3 for PHP GTK2 on windows?
|
|
|
Tuesday, 08 September 2009 If you're using the googleMaps plugin, by default, the google search bar is displayed in the lower left hand corner.
To hide this google search bar, please refer to the following article: googleMaps with search bar hidden
By default, the Overview Map Control is also displayed in the lower right hand corner.
To hide this Overview Map Control, please refer to the following article: googleMaps with Overview Map Control hidden
To hide both the google search bar and the Overview Map Control, please refer to the following article: googleMaps with search bar and Overview Map Control hidden
|
|
|
Thursday, 03 September 2009 Have just added Joomla FAQs
http://www.kksou.com/php-gtk2/Joomla-FAQs/
Here you will find a list of Frequently Asked Questions (FAQs), Troubleshooting guides, and Tips & Techniques for the Joomla plugins, modules and components written by me.
Many of thees are contributed by users. Thanks to you all!
I'm starting with the DirectPHP plugin:
DirectPHP - FAQs, Troubleshoot and Tips & Techniques
If you know some tips and tricks, share them with the rest too!
|
|
|
Tuesday, 01 September 2009 Added support for retrieving google currency data using file_get_contents() or fread(). So for those people with no cURL library, you can now use the module using file_get_contents() or fread().
Download here: http://www.kksou.com/php-gtk2/Joomla-Gadgets/Google-Currency-Converter-AJAX-version.php
|
|
|
Tuesday, 01 September 2009 This is in response to Alamshahi's post titled "uncorrect results : missed digits".
The error occurred when Yahoo returns a conversion rate greater than 1,000. The original program was "confused" because of the ',' in 1,000. Have fixed the bug in this version.
In this new release, I've also added support for retrieving yahoo currency data using file_get_contents() or fread(). So for those people with no cURL library, you can now use the module using file_get_contents() or fread().
Download: http://www.kksou.com/php-gtk2/Joomla-Gadgets/Yahoo-Currency-Converter-AJAX-version.php |
|
|
Monday, 31 August 2009 This is in response to Redback's request to have time offset in half hours e.g. South Australian time is +9.30 GMT.
Download here: Yahoo Stock Quote (AJAX module version) v1.5.8 |
|
|
Saturday, 01 August 2009 This module allows you to display your twitter news in a module. The tweets are displayed using the Pausing up-down Scroller plugin.
This module is contributed by Claudio Tortorelli of Italy.
Download: Twitter Module v1.5. |
|
<< Start < Prev 1 Next > End >>
| | Results 1 - 9 of 9 |
|