Re: [gtkmm] how to set appended Notebook page active? Test program
- From: "Andreas B. Thun" <abt gmx de>
- Cc: gtkmm-list gnome org
- Subject: Re: [gtkmm] how to set appended Notebook page active? Test program
- Date: Mon, 09 Feb 2004 16:20:30 +0100
As requested I implemented a small test program
based on the notebook example to
show the effect of set_current_page()
works only if you call it AFTER show_all_children():
Check out on_button_append():
Swap the marked two lines and set_current_page() has no effect anymore
examplewindow.cc:
-----------------
//$Id: examplewindow.cc,v 1.1 2002/11/04 18:20:32 murrayc Exp $ -*- c++ -*-
/* gtkmm example Copyright (C) 2002 gtkmm development team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <iostream>
#include "examplewindow.h"
ExampleWindow::ExampleWindow()
: m_Label1("Contents of tab 1"),
m_Button_Append("Append"),
m_Button_Quit("Quit")
{
set_title("Gtk::Notebook example");
set_border_width(10);
set_default_size(400, 200);
add(m_VBox);
//Add the Notebook, with the buttons underneath:
m_Notebook.set_border_width(10);
m_VBox.pack_start(m_Notebook);
m_VBox.pack_start(m_ButtonBox, Gtk::PACK_SHRINK);
m_ButtonBox.pack_start(m_Button_Quit, Gtk::PACK_SHRINK);
m_ButtonBox.pack_start(m_Button_Append, Gtk::PACK_SHRINK);
m_Button_Quit.signal_clicked().connect( SigC::slot(*this, &ExampleWindow::on_button_quit) );
m_Button_Append.signal_clicked().connect( SigC::slot(*this, &ExampleWindow::on_button_append) );
//Add the Notebook pages:
m_Notebook.append_page(m_Label1, "First");
show_all();
}
ExampleWindow::~ExampleWindow()
{
}
void ExampleWindow::on_button_quit()
{
hide();
}
void ExampleWindow::on_button_append()
{
m_Label2 = Gtk::manage(new Gtk::Label("Contents of new tab"));
m_Notebook.append_page(*m_Label2, "More");
// Problem: Swap the following two lines and set_current_page() has no effect anymore
show_all_children();
m_Notebook.set_current_page(-1); // set last one active
}
examplewindow.h:
----------------
//$Id: examplewindow.h,v 1.1 2002/11/04 18:20:32 murrayc Exp $ -*- c++ -*-
/* gtkmm example Copyright (C) 2002 gtkmm development team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef GTKMM_EXAMPLEWINDOW_H
#define GTKMM_EXAMPLEWINDOW_H
#include <gtkmm.h>
class ExampleWindow : public Gtk::Window
{
public:
ExampleWindow();
virtual ~ExampleWindow();
protected:
//Signal handlers:
void on_button_quit();
void on_button_append();
//Child widgets:
Gtk::VBox m_VBox;
Gtk::Notebook m_Notebook;
Gtk::Label m_Label1;
Gtk::Label *m_Label2;
Gtk::HButtonBox m_ButtonBox;
Gtk::Button m_Button_Quit;
Gtk::Button m_Button_Append;
};
#endif //GTKMM_EXAMPLEWINDOW_H
main.cc:
--------
//$Id: main.cc,v 1.2 2002/11/11 15:13:05 murrayc Exp $ -*- c++ -*-
/* gtkmm example Copyright (C) 2002 gtkmm development team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <gtkmm/main.h>
#include "examplewindow.h"
int main(int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
ExampleWindow window;
Gtk::Main::run(window); //Shows the window and returns when it is closed.
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]