Re: Emitting and/or Catching a signal
- From: Armin Burgmeier <armin arbur net>
- To: ArbolOne <arbolone gmail com>
- Cc: "gtkmm-list gnome org" <gtkmm-list gnome org>
- Subject: Re: Emitting and/or Catching a signal
- Date: Thu, 29 Apr 2010 22:52:37 +0200
On Sat, 2010-03-27 at 21:43 -0400, ArbolOne wrote:
> OS WinXP SP3
> MinGW and MSYS= latest!
> GCC
> ~~~~
> Reading specs from D:/XWin/mingw/bin/../lib/gcc/mingw32/3.4.5/specs
> Configured with: ../gcc-3.4.5/configure --with-gcc --with-gnu-ld
> --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw
> --enable-threads --disable-nls --enable-languages=c,c
> ++,f77,ada,objc,java --disable-win32-registry --disable-shared
> --enable-sjlj-exceptions --enable-libgcj --disable-java-awt
> --without-x --enable-java-gc=boehm --disable-libgcj-debug
> --enable-interpreter --enable-hash-synchronization
> --enable-libstdcxx-debug
> Thread model: win32
> gcc version 3.4.5 (mingw-vista special)
> ====================================================
>
> OK, I give up!
> I have been trying to emit a signal from one of my classes to another,
> but it has proven to be beyond me. I am not an expert C++ programmer
> let alone a GUI programmer, so bare with me please. Below is a snip of
> the source code; since the class is so specific and at a such early
> stage there aren't that many lines of code, nevertheless, my apology
> for the use of the band-width; in the future I will try to post the
> code on a URL site.
> I would like to emphasize that any help and or observations are most
> welcome as well as an observation
>
> Now, the problem with my program is that when I tried to compile it it
> tells me that there is an error in "...\include\sigc++-2.0\sigc
> ++\functor\stot.h in line 103
This is not very specific. Please always show the exact compiler error
message you get.
> //// -- file.cpp SNIP ******
> Menu::Menu() {
> ..........
> //Command bar
> RefActionGroup->add( Gtk::Action::create("MenuFile", "_File") );
> RefActionGroup->add( Gtk::Action::create("New", Gtk::Stock::NEW,
> "_New", "Create a new fle"), sigc::mem_fun(*this, &
> Menu::onActionActivated));
> ..........
> /******* THIS IS THE CODE CAUSING THE PROBLEM **************/
> RefActionGroup->add( Gtk::Action::create("Quit",
> Gtk::Stock::QUIT,"Quit", "Exit application"), sigc::mem_fun(*this, &
> Menu::signal_quit));
> .........
> }
The function you provide here as a callback (Menu::signal_quit) needs to
match what RefActionGroup->add expects. According to the documentation
it needs to be a function returning void and taking no arguments. The
function you pass, Menu::signal_quit, does not return void though
(according to your code below).
I am not sure what this code is supposed to do. If you want to emit your
quit signal when the action is activated, then supply a custom function
as you do for your other action, and emit the signal in that function.
> //// -- file.hpp SNIP ******
> class Menu : virtual public Gtk::VBox {
> public:
> //signal accessor
> typedef sigc::signal< my_enum::error_t> type_signal_end;
> type_signal_end signal_quit();
>
> protected:
> type_signal_end m_signal_end1;
> .........
> private:
> .........
> }; //class
> ========================
> // tester.hpp
> class Tester : virtual public Gtk::Window {
> public:
> ....
> private:
> Menu menu;
> void quit(){this->hide();}
> };
> // tester.cpp
> Tester::Tester(){
> ..............
> ///////////
> menu.signal_quit().connect( sigc::mem_fun(*this,
> &Tester::quit) );
> ///////////
> ................
> }
>
> Can any body help?
Armin
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]