Em Qui, 2005-05-19 às 08:29 +0200, Johan Kohler escreveu: > Hi, > Apologies if this is considered off-topic. I'm looking for > the libglademm example mentioned in the online docs (Ch > 19): > > "The basic example in the libglademm package shows how to > load a Glade file at runtime and access the widgets with > libglademm." > > Can anyone give me a url or email one example to me please? > > --Johan > _____________________________________________________________________ > For super low premiums, click here http://www.dialdirect.co.za/quote Here is a little programm i'm writting... The glade part runs... ;) forget the thread parts, don't have nothing with gtk "per se" Any problem, send me a note
#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H
#include "message_handler.H"
#include <gtkmm.h>
#include <libglademm.h>
#include <queue>
extern message_handler* msg_handler;
class main_window : public Gtk::Window {
private:
/* glade xml description */
Glib::RefPtr<Gnome::Glade::Xml> gladeXml;
/* widgets */
Gtk::Button* send_button;
Gtk::TextView* txt_messages;
Gtk::TextView* txt_textpad;
void on_send_button_click();
public:
main_window();
virtual ~main_window(){};
void append_message(Glib::ustring& host, Glib::ustring& message);
};
#endif
#include "message_handler.H"
#include "main_window.H"
#include <glibmm.h>
#include <iostream>
message_handler* msg_handler = 0;
main_window* window = 0;
char* remote_host = 0;
int main(int argc, char** argv)
{
/* checking parameters */
if (argc > 1)
remote_host = argv[1];
/* initializing thread subsystem */
Glib::thread_init();
/* creating message handlers */
msg_handler = new message_handler();
Glib::Thread::
create(sigc::
mem_fun(msg_handler,&message_handler::incomming_handler),false);
Glib::Thread::
create(sigc::
mem_fun(msg_handler,&message_handler::outgoing_handler),false);
Glib::Thread::
create(sigc::mem_fun(msg_handler,&message_handler::listener),false);
/* initializing GTK */
Gtk::Main kit(argc,argv);
window = new main_window();
kit.run((*window));
kit.quit();
return 0;
}
/*
* Main class for f2rComm.
* TODO:
* Better error handling (return errors)
*/
#include "main_window.H"
#include <iostream>
main_window::main_window()
{
/* loading glade file */
gladeXml = Gnome::Glade::Xml::create("../glade/f2rcommcpp.glade","mainVBox");
/* setting main window parameters */
set_title("f2rComm");
resize(320,240);
Gtk::VBox* mainVBox = dynamic_cast<Gtk::VBox*>(gladeXml->get_widget("mainVBox"));
add((*mainVBox));
/* retrieving widget pointers */
txt_messages = dynamic_cast<Gtk::TextView*>(gladeXml->get_widget("txtMessages"));
if (txt_messages == 0){
std::cerr << "Failure casting Gtk::Widget* to Gtk::TextView* in main" << std::endl;
}
txt_textpad = dynamic_cast<Gtk::TextView*>(gladeXml->get_widget("txtTextPad"));
if (txt_textpad == 0){
std::cerr << "Failure casting Gtk::Widget* to Gtk::TextView* in main" << std::endl;
}
send_button = dynamic_cast<Gtk::Button*>(gladeXml->get_widget("btnSend"));
if (send_button == 0){
std::cerr << "Failure casting Gtk::Widget* to Gtk::Button* in main" << std::endl;
}
/* messages window is readonly */
txt_messages->set_editable(false);
/* connecting callbacks */
send_button->signal_clicked().connect(sigc::mem_fun((*this),&main_window::on_send_button_click));
/* setting focus on textpad */
txt_textpad->grab_focus();
}
void main_window::on_send_button_click()
{
Glib::ustring message = txt_textpad->get_buffer()->get_text();
/* cleaning textpad */
txt_textpad->set_buffer(Gtk::TextBuffer::create());
msg_handler->send(message);
/* appendig to messages window */
Glib::ustring host = Glib::ustring("local");
this->append_message(host,message);
}
void main_window::append_message(Glib::ustring& host, Glib::ustring& message)
{
Glib::ustring msg_buffer = host + ": " + message;
txt_messages->get_buffer()->
insert(txt_messages->get_buffer()->end(),msg_buffer + '\n');
}
Attachment:
signature.asc
Description: This is a digitally signed message part