]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Client/src/principal.cpp
Se modifica el handler de recibir error, para que muestre el error que envia
[z.facultad/75.42/plaqui.git] / Client / src / principal.cpp
1
2
3
4 #include "principal.h"
5 #include <iostream>
6 #include <sstream>
7 #include <string>
8
9 Principal::Principal(BaseObjectType *co, const Glib::RefPtr<Gnome::Glade::Xml> &rg):Gtk::Window(co),refXml(rg)
10 {
11         Gtk::MenuItem *conect=0, *exit=0, *about=0;
12         Gtk::Button *btn_get=0, *bar_connect=0;
13         txt_view = 0;
14         txt_target = txt_command = txt_args = 0;
15         
16         rg->get_widget("mnu_file_connect", conect);
17         rg->get_widget("mnu_file_exit", exit);
18         rg->get_widget("mnu_help_about", about);
19         rg->get_widget_derived("dlgConectar", dlg_conectar);
20         rg->get_widget("btn_get", btn_get);
21         rg->get_widget("txt_view", txt_view);
22         rg->get_widget("txt_target", txt_target);
23         rg->get_widget("txt_command", txt_command);
24         rg->get_widget("txt_args", txt_args);
25         rg->get_widget("bar_connect", bar_connect);
26
27         dlg_conectar->get_ok_button()->signal_clicked().connect( SigC::slot(*this, &Principal::on_dlg_connect_ok) );
28         conect->signal_activate().connect( SigC::slot(*this, &Principal::on_mnu_file_connect));
29         bar_connect->signal_clicked().connect( SigC::slot(*this, &Principal::on_mnu_file_connect));
30         exit->signal_activate().connect( SigC::slot(*this, &Principal::on_mnu_file_exit));
31         about->signal_activate().connect( SigC::slot(*this, &Principal::on_mnu_help_about));
32         btn_get->signal_clicked().connect( SigC::slot(*this, &Principal::on_get_clicked) );
33
34         conexion = NULL;
35 }
36
37 Principal::~Principal()
38 {
39         delete conexion;
40 }
41
42 void Principal::on_dlg_connect_ok()
43 {
44         if (conexion == NULL) {
45                 std::cout << "Conectando ..." << std::endl;
46                 // Creo la conexion
47                 try {
48                         conexion = new PlaQui::Server::ControlClient(dlg_conectar->get_server_name(), dlg_conectar->get_server_port());
49                 }
50                 catch (...) {
51                         txt_view->get_buffer()->insert_at_cursor("NO SE PUDO CREAR OBJETO\n");
52                         return;
53                 }
54
55                 // Conecto las señales
56                 conexion->signal_ok_received().connect( SigC::slot(*this, &Principal::on_conexion_ok) );
57                 conexion->signal_error_received().connect( SigC::slot(*this, &Principal::on_conexion_error) );
58                 // Lanzo la conexion!
59                 //
60                 try {
61                         conexion->run();
62                 }
63                 catch (...) {
64                         txt_view->get_buffer()->insert_at_cursor("no se puede correr ->run()!!!\n");
65                 }
66         } else {
67                 std::cout << "Ya estas conectado" << std::endl;
68         }
69         dlg_conectar->hide();
70 }
71
72 void Principal::on_mnu_file_exit()
73 {
74         Gtk::Main::quit();
75 }
76
77 void Principal::on_mnu_file_connect()
78 {
79         dlg_conectar->show();
80 }
81
82 void Principal::on_mnu_help_about()
83 {
84         // preparo para leer el archivo ChangeLog
85 /*      Glib::RefPtr<Gnome::Glade::Xml> xml;
86         Glib::ustring line;
87         Glib::RefPtr<Gtk::TextBuffer> log_buffer;
88         Glib::RefPtr<Glib::IOChannel> log_io;
89
90         log_buffer = Gtk::TextBuffer::create();
91         log_io = Glib::IOChannel::create_from_file("../ChangeLog", "r");
92         while (log_io->read_line(line) != Glib::IO_STATUS_EOF) {
93                 log_buffer->insert_at_cursor(line);
94         }
95
96         try {
97                 xml = Gnome::Glade::Xml::create("client.glade", "dlgAbout");
98         }
99         catch(const Gnome::Glade::XmlError &ex) {
100                 std::cerr << ex.what() << std::endl;
101                 return;
102         }
103         Gtk::Window *dlg = 0;
104         Gtk::Button *btn_cerrar = 0;
105         Gtk::TextView *txt_changelog = 0;
106         xml->get_widget("dlgAbout", dlg);
107         xml->get_widget("btn_close", btn_cerrar);
108         xml->get_widget("txt_changelog", txt_changelog);
109         btn_cerrar->signal_clicked().connect(SigC::slot(*dlg, &Gtk::Dialog::hide));
110         txt_changelog->set_buffer(log_buffer);
111         dlg->show();*/
112 }
113
114 void Principal::on_conexion_ok()
115 {
116         txt_view->get_buffer()->insert_at_cursor("El server dice que ta' todo ok!\n");
117 }
118
119 void Principal::on_conexion_error(unsigned code)
120 {
121         std::stringstream a;
122         std::string s;
123         a << code;
124         a >> s;
125         txt_view->get_buffer()->insert_at_cursor("El server dice que hay error : ");
126         txt_view->get_buffer()->insert_at_cursor(s);
127         txt_view->get_buffer()->insert_at_cursor("\n");
128         
129 }
130
131 void Principal::on_get_clicked()
132 {
133         if (conexion == NULL) {
134                 txt_view->get_buffer()->insert_at_cursor("SIN CONEXION\n");
135         }
136
137         
138         PlaQui::Server::Command command(txt_target->get_text(), txt_command->get_text());
139         command.add_arg( txt_args->get_text() );
140         txt_view->get_buffer()->insert_at_cursor("Enviando comando\n");
141         try {
142                 conexion->send(command);
143         }
144         catch (...) {
145                 txt_view->get_buffer()->insert_at_cursor("EXCEPTION EN conexion->send !!\n");
146         }
147
148 }
149