</packing>
</child>
+ <child>
+ <widget class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
+ <property name="toolbar_style">GTK_TOOLBAR_ICONS</property>
+ <property name="tooltips">True</property>
+
+ <child>
+ <widget class="button" id="quick_btn_clear">
+ <property name="visible">True</property>
+ <property name="label">gtk-clear</property>
+ <property name="use_stock">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="button" id="quick_btn_save">
+ <property name="visible">True</property>
+ <property name="label">gtk-save</property>
+ <property name="use_stock">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
<child>
<widget class="GtkHBox" id="hbox2">
<property name="visible">True</property>
virtual ~Constructor();
private:
FILE *archivo;
+ bool saved;
+ std::string file_name;
protected:
int id;
// / defino los elementos de la ventana.
Gtk::Button *btn_canio, *btn_codo, *btn_y, *btn_tanque, *btn_bomba, *btn_exclusa, *btn_drain, *btn_file_ok, *btn_file_cancel, *btn_check, *btn_dlg_close,
- *btn_and, *btn_or, *btn_not, *btn_open_ok, *btn_open_cancel;
+ *btn_and, *btn_or, *btn_not, *btn_open_ok, *btn_open_cancel, *quick_btn_clear, *quick_btn_save;
Gtk::ImageMenuItem *main_menu_quit, *edit_menu_del, *main_menu_save, *main_menu_open;
Gtk::CheckButton *chk_btn_logica;
Gtk::FileSelection *file_selection, *file_open_selection;
virtual void on_btn_check_clicked();
virtual void on_btn_dlg_connect_clicked();
virtual void on_load_from_xml();
-
+ virtual void on_quick_btn_clear_clicked();
+ virtual void on_quick_btn_save_clicked();
+
// señales para cambiar el icono.
virtual void on_canio_drag_begin(const Glib::RefPtr<Gdk::DragContext>& context);
virtual void on_y_drag_begin(const Glib::RefPtr<Gdk::DragContext>& context);
Constructor::Constructor(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade):Gtk::Window(cobject)
{
id = 0;
+ saved = false;
set_title("Constructor");
refGlade->get_widget("dlg_connect", dlg_connect);
refGlade->get_widget("btn_dlg_close", btn_dlg_close);
refGlade->get_widget("dlg_label", dlg_label);
+ refGlade->get_widget("quick_btn_clear", quick_btn_clear);
+ refGlade->get_widget("quick_btn_save", quick_btn_save);
refGlade->get_widget_derived("workplace", workplace); //fixed
btn_check->signal_clicked().connect(SigC::slot(*this,&Constructor::on_btn_check_clicked));
btn_dlg_close->signal_clicked().connect(SigC::slot(*this,&Constructor::on_btn_dlg_connect_clicked));
chk_btn_logica->signal_clicked().connect(SigC::slot(*this, &Constructor::on_chk_btn_clicked));
+ quick_btn_clear->signal_clicked().connect(SigC::slot(*this, &Constructor::on_quick_btn_clear_clicked));
+ quick_btn_save->signal_clicked().connect(SigC::slot(*this, &Constructor::on_quick_btn_save_clicked));
main_menu_quit->signal_activate().connect(SigC::slot(*this, &Constructor::on_main_menu_quit));
main_menu_open->signal_activate().connect(SigC::slot(*this, &Constructor::on_main_menu_open));
void Constructor::on_load_from_xml()
{
- std::string file_name = file_open_selection->get_filename();
+ file_name = file_open_selection->get_filename();
/* Parseo de ejemplo de un XML desde archivo */
xmlDocPtr document;
void Constructor::on_btn_file_ok_clicked()
{
std::list<CItem *>::iterator i = listaItems.begin();
- std::string file_name = file_selection->get_filename();
+ file_name = file_selection->get_filename();
if ( (archivo = fopen( file_name.c_str(), "w+")) != NULL ){
fprintf(archivo, "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n");
fprintf (archivo,"<planta>\n");
i++;
}
fprintf(archivo,"</planta>\n");
+ saved = true;
} else
std::cout<<"NO SE ABRIO EL ARCHIVO"<<std::endl;
fclose(archivo);
file_selection->hide();
}
+void Constructor::on_quick_btn_save_clicked()
+{
+ if ( ! saved ) {
+ on_main_menu_save();
+ } else {
+ on_btn_file_ok_clicked();
+ }
+}
+
+
+void Constructor::on_quick_btn_clear_clicked()
+{
+ std::list<CItem *>::iterator i = listaItems.begin();
+ while ( i != listaItems.end() ){
+ CItem *temp = *i;
+ listaItems.erase(i);
+ delete temp;
+ i = listaItems.begin();
+ }
+ i = lista_logic_Items.begin();
+ while ( i != lista_logic_Items.end() ){
+ CItem *temp2 = *i;
+ lista_logic_Items.erase(i);
+ delete temp2;
+ i = lista_logic_Items.begin();
+ }
+}
+
void Constructor::on_btn_file_cancel_clicked()
{
file_selection->hide();