Re: How can I show tooltips from menuitems in the statusbar



Thank you Moh, I will try this.

2012/10/6 Moh B. <mohgtkmm gmail com>
On Tue, 2012-10-02 at 10:36 +0200, Juan Angel Moreno wrote:
> Hi!
>
> I want to show the tooltips that each of my menuitems has, in the
> statusbar of a window.
> How can I do this??
>
> Greetings
> jamf
>
> _______________________________________________


Hi, these are the crazy tips to get tooltips working

//In the mainwin.cpp add:
//start example code
====================================================
mpActionGroup = Gtk::ActionGroup::create();
        mpActionGroup->add(Gtk::Action::create("fileMenu", "_File"));

        mpActionGroup->add(Gtk::Action::create("fileOpen",
                               "Open ISO file", "Open ISO file to examine
content"),
                               sigc::mem_fun(*this,
&mainwin::on_selectIsoFileButton_click));

        mpActionGroup->add(Gtk::Action::create("fileQuit", "_Exit", "Exit /
terminate the application"),
                                sigc::mem_fun(*this,
&mainwin::on_exitButton_click));

        mpActionGroup->add(Gtk::Action::create("helpMenu", "_Help"));

        mpActionGroup->add(Gtk::Action::create("helpHowTo", "_How to", "Search
for help"),
                           sigc::mem_fun(*this, &mainwin::on_howTo_click));

        mpActionGroup->add(Gtk::Action::create("helpAbout", "_About", "This
shows the about dialog: Ver. 1.0.0"),
                           sigc::mem_fun(*this, &mainwin::on_about_click));

        mpUiManager = Gtk::UIManager::create();
        mpUiManager->insert_action_group(mpActionGroup);

mpUiManager->add_ui_from_file("ui.xml");
mpUiManager->signal_connect_proxy().connect(sigc::mem_fun(this,
&mainwin::install_menu_hints));

        //add accelerators to the main window:
                add_accel_group(mpUiManager->get_accel_group()) ;

                mpptrmenuBar = mpUiManager->get_widget("/menuBar");

                HBoxMenuBar.pack_start(*mpptrmenuBar, true, true, 15);

//3- The related functions are as follows:

void mainwin::install_menu_hints(const Glib::RefPtr<Gtk::Action>&
action, Gtk::Widget* widget)
{
    if(dynamic_cast<Gtk::MenuItem*>(widget))
    {

(static_cast<Gtk::MenuItem*>(widget))->signal_select().connect(sigc::bind(sigc::mem_fun(*this, &mainwin::on_show_menu_tip), action));

(static_cast<Gtk::MenuItem*>(widget))->signal_deselect().connect(sigc::mem_fun(*this, &mainwin::on_clear_menu_tip));
    }
}

void mainwin::on_show_menu_tip(const Glib::RefPtr<Gtk::Action>& action)
{
    Glib::ustring tip = action->property_tooltip();
    if (tip == "") tip = " ";
    m_statusBar.push(" " + tip);
}

void mainwin::on_clear_menu_tip()
{
    m_statusBar.pop();
}

// end of example code to add in the mainwin.cpp
==============================

//The ui.xml file is as follows:

<ui>
        <menubar name='menuBar'>
                <menu action="">                         <menuitem action="">                         <separator/>
                        <menuitem action="">                 </menu>
                <menu action="">                         <menuitem action="">                         <menuitem action="">                 </menu>
        </menubar>
</ui>

//++++++++++And my mainwin.h is as follows: ++++++++++++++
#include <gtkmm.h>
#include <gtkmm/menu.h>
#include <gtkmm/menubar.h>
#include <gtkmm/menuitem.h>

class mainwin : public Gtk::Window
{
        private:

        protected:

                Gtk::Box HBoxMenuBar;

                Gtk::Box VBox1;
                Gtk::Box HBoxSelectFile;
                Gtk::Box HBoxDestination;
                Gtk::Box HBoxActionButtons;

        /****
                /*** other widgets here...

====>   Glib::RefPtr<Gtk::ActionGroup> mpActionGroup;
====>   Glib::RefPtr<Gtk::UIManager> mpUiManager;
====>   Gtk::Widget *mpptrmenuBar;

====>   Gtk::Statusbar m_statusBar;


        //SIGNAL HANDLERS:
                /****
                /*** my handling functions  here...

        public:
                                 mainwin(); // Connstructor
                virtual ~mainwin();  // Destructor


====>   void install_menu_hints(const Glib::RefPtr<Gtk::Action>& action,
Gtk::Widget* widget);
====>   void on_show_menu_tip(const Glib::RefPtr<Gtk::Action>& action) ;
====>   void on_clear_menu_tip();

};





--
Atentamente:
Juan Ángel Moreno Fernández
jamf gm gmail com
------------------------------
  Proyecto Gelide
  http://gelide.sf.net
------------------------------


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]