#include "or.h"
#include "not.h"
#include "libxml/parser.h"
-/**La clase principal de esta aplicación es la clase
- * Constructor. Ella es la encargada de obtener e
- * inicializar todos los elementos de la ventana
- * principal, ya sean botones, cuadros de diálogo, barras
- * de herramientas, etc.
- *
- * Para cada botón referenciado por esta clase, es
- * conectado a ellos una señal, que será el método que
- * deben invocar al ser presionados.
- *
- * Uno de los métodos mas importantes de esta clase es
- * on_item_drop_drag_recived() que es la encargada de
- * crear un nuevo elemento si es arrastrado desde la barra
- * de elementos, o de moverlo dentro del área de trabajo
- * si este ya estaba creado.
- *
- * Para facilitar el diseño y disminuir la complejidad, la
- * grilla fue dividida en sectores de 32x32 pixels, lo que
- * permite que el usuario no tenga que ser muy preciso a
- * la hora de soltar un item en el área de trabajo.
- *
- * Cada nuevo elemento creado es almacenado en una lista
- * de elementos ( listaItems ) de transporte o
- * almacenamiento de fluido, o de elementos lógicos, según
- * cual sea ( lista_logic_items).
+/**
+ * Clase principal de esta aplicación.
+ * Esta clase se encargada de obtener e
+ * inicializar todos los elementos de la ventana
+ * principal, ya sean botones, cuadros de diálogo, barras
+ * de herramientas, etc.
+ *
+ * Para cada botón referenciado por esta clase, es
+ * conectado a ellos una señal, que será el método que
+ * deben invocar al ser presionados.
+ *
+ * Uno de los métodos mas importantes de esta clase es
+ * on_item_drop_drag_recived() que es la encargada de
+ * crear un nuevo elemento si es arrastrado desde la barra
+ * de elementos, o de moverlo dentro del
+ * \ref WorkPlace "área de trabajo" si este ya estaba creado.
*
- * Otra de las funciones principales es "check_connection()"
+ * Para facilitar el diseño y disminuir la complejidad, la
+ * grilla fue dividida en sectores de 32x32 píxels, lo que
+ * permite que el usuario no tenga que ser muy preciso a
+ * la hora de soltar un item en el
+ * \ref WorkPlace "área de trabajo".
+ *
+ * Cada nuevo elemento creado es almacenado en una
+ * \ref listaItems "lista de elementos de transporte o almacenamiento de fluido",
+ * o en una \ref lista_logic_Items "lista de elementos lógicos".
+ *
+ * Otra de las funciones principales es check_connection()
* que recorre todos los items de ambas listas y verifica
- * que se haya formado en el momento del diseño un
+ * que se haya formado en el momento del diseño un
* circuito posible.
*
- * Esta clase contiene los métodos necesarios para guardar
- * y cargar un archivo XML cuyo formato se explica mas adelante.
+ * Esta clase contiene los métodos necesarios para guardar
+ * y cargar un archivo XML cuyo formato se explica más adelante.
*/
class Constructor : public Gtk::Window {
public:
Constructor(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
virtual ~Constructor();
private:
+ ///Archivo donde se guarda el trabajo.
FILE *archivo;
+
+ ///Variable que indica si el trabajo fue guardado.
bool saved;
+
+ ///Ruta al archivo.
std::string file_name;
protected:
+ /// Contador para los id de los items.
int id;
- // / defino los elementos de la ventana.
+ /// 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, *quick_btn_clear, *quick_btn_save, *quick_btn_open, *quick_btn_new, *btn_find;
+ *btn_and, *btn_or, *btn_not, *btn_open_ok, *btn_open_cancel, *quick_btn_clear, *quick_btn_save, *quick_btn_open, *quick_btn_new, *btn_find,
+ *btn_dlg_quit_ok, *btn_dlg_quit_cancel;
Gtk::ImageMenuItem *main_menu_quit,*main_menu_new, *edit_menu_del, *edit_menu_delete_all, *main_menu_save, *main_menu_open;
Gtk::CheckButton *chk_btn_logica;
Gtk::FileSelection *file_selection, *file_open_selection;
Gtk::Combo *combo_entry;
- Gtk::Dialog *dlg_connect;
+ Gtk::Dialog *dlg_connect, *dlg_about, *dlg_quit;
Gtk::Label *dlg_label;
Gtk::Statusbar *status_bar;
Glib::RefPtr<Gdk::Pixbuf> ico_canio, ico_y, ico_codo, ico_tanque, ico_bomba, ico_exclusa, ico_drain, ico_and, ico_or, ico_not;
WorkPlace *workplace;
bool logica;
bool can_drop(CItem *, int , int);
-
+ // Sobrecarga del evento cerrar
+ virtual bool on_delete_event(GdkEventAny *e);
// /señales de control para los elementos de la ventana.
virtual void on_btn_canio_drag_get(const Glib::RefPtr<Gdk::DragContext>& context, GtkSelectionData* selection_data, guint info, guint time);
virtual void on_btn_y_drag_get(const Glib::RefPtr<Gdk::DragContext>& context, GtkSelectionData* selection_data, guint info, guint time);
virtual void on_quick_btn_save_clicked();
virtual void on_quick_btn_new_clicked();
virtual void on_btn_find_clicked();
+ virtual void on_btn_dlg_quit_ok_clicked();
+ virtual void on_btn_dlg_quit_cancel_clicked();
+ ///Verifica la conexion de todos los items iterando en la listaItems.
bool check_connection(Glib::ustring& name);
// señales para cambiar el icono.