]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se agrega como crear un cuadradito de color para indicar donde esta la entrada y...
authorRicardo Markiewicz <gazer.arg@gmail.com>
Sun, 23 Nov 2003 22:09:44 +0000 (22:09 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Sun, 23 Nov 2003 22:09:44 +0000 (22:09 +0000)
la salida para los conectores logico.

Solo se implemento en Pump y no tiene en cuenta el tema de la rotacion.

Lo que habria que hacer es :
  * Terminar bien el pump y elegir una posicion linda para ponerlos
* Hacer que solo aparezcan cuando el checkbox esta activo
* Creo que seria mas lindo dibujar un circulo que un cuadrado (aunque
  la deteccion si se haga con un cuadrado que es mas facil)
* Hacerle lo mismo al resto de los items

Constructor/include/item.h
Constructor/include/pump.h
Constructor/src/item.cpp
Constructor/src/pump.cpp

index 8ffd14e0e2f02b6a82ab50223b50844039c90c0d..9a9ecfc16c616c4c5567f11d8254049aa143c0e7 100644 (file)
@@ -54,6 +54,9 @@ public:
        ///Destructor
        virtual ~CItem();
        
        ///Destructor
        virtual ~CItem();
        
+       
+       virtual void on_realize();
+
        ///Dibuja el item cada vez que este evento es llamado por la ventana que lo contiene.
        virtual bool on_expose_event(GdkEventExpose* event);
 
        ///Dibuja el item cada vez que este evento es llamado por la ventana que lo contiene.
        virtual bool on_expose_event(GdkEventExpose* event);
 
@@ -163,6 +166,8 @@ protected:
        ///Numero "unico" que identifica al item.
        int ID;
 
        ///Numero "unico" que identifica al item.
        int ID;
 
+       Glib::RefPtr<Gdk::GC> gc;
+
        ///Nombre del item
        Glib::ustring name;
        
        ///Nombre del item
        Glib::ustring name;
        
@@ -183,7 +188,9 @@ protected:
        
        ///Puntero a la ventana de propiedades del item
        ItemPtyWnd *property_wnd;
        
        ///Puntero a la ventana de propiedades del item
        ItemPtyWnd *property_wnd;
-       
+
+       Gdk::Color blue, red;
+
        ///Posicion del item en el area de trabajo
        int x, y;
 };
        ///Posicion del item en el area de trabajo
        int x, y;
 };
index dfe3452f8cbb2c4f40152276d7abfdcba2f8305e..f4edf28aad612d2e43807e075cf97037451f0255 100644 (file)
@@ -13,6 +13,7 @@ class Pump : public CItem {
                ///Destructor
                virtual ~Pump();
                ///Funciones redefinidas de CItem
                ///Destructor
                virtual ~Pump();
                ///Funciones redefinidas de CItem
+               virtual bool on_expose_event(GdkEventExpose* event);
                virtual bool on_button_press_event(GdkEventButton *event);
                virtual void on_menu_popup_rotar();
                virtual void on_menu_popup_propiedades();
                virtual bool on_button_press_event(GdkEventButton *event);
                virtual void on_menu_popup_rotar();
                virtual void on_menu_popup_propiedades();
index b4bf5416138a5dd90b39fc44c92ed5cd47c22e7f..aa15a3330bb6fbfe0a026b50e8810568bde2e88b 100644 (file)
@@ -4,10 +4,12 @@ bool CItem::logic_connect = false;
 int CItem::gate_id = -1;
 
 
 int CItem::gate_id = -1;
 
 
-CItem::CItem(const char *filename):Gtk::DrawingArea()
+CItem::CItem(const char *filename)
 {
        image = Gdk::Pixbuf::create_from_file(filename);
        set_size_request(image->get_width(), image->get_height());
 {
        image = Gdk::Pixbuf::create_from_file(filename);
        set_size_request(image->get_width(), image->get_height());
+
+       add_events(Gdk::EXPOSURE_MASK);
 }
 
 CItem::CItem()
 }
 
 CItem::CItem()
@@ -36,9 +38,24 @@ CItem::~CItem()
        std::cout << "Item Die" << std::endl;
 }
 
        std::cout << "Item Die" << std::endl;
 }
 
+void CItem::on_realize()
+{
+       Gtk::DrawingArea::on_realize();
+       Glib::RefPtr<Gdk::Window> window = get_window();
+       gc = Gdk::GC::create(window);
+       
+       Glib::RefPtr<Gdk::Colormap> colormap = get_colormap();
+
+       red = Gdk::Color("red");
+       blue = Gdk::Color("blue");
+
+       colormap->alloc_color(red);
+       colormap->alloc_color(blue);
+}
+
 bool CItem::on_expose_event(GdkEventExpose* event)
 {
 bool CItem::on_expose_event(GdkEventExpose* event)
 {
-       image->render_to_drawable ( get_window(),  get_style()->get_black_gc(), 0,  0,  0,  0,  image->get_width() ,image->get_height() 
+       get_window()->draw_pixbuf(gc, image,  0,  0,  0,  0, image->get_width() ,image->get_height()
                                                                                                                                Gdk::RGB_DITHER_NONE, 0, 0);
 
        // XXX Esto no deberia ser necesario! en todo caso devolves false en
                                                                                                                                Gdk::RGB_DITHER_NONE, 0, 0);
 
        // XXX Esto no deberia ser necesario! en todo caso devolves false en
index 8fd4e0504fcff0ee2e12c62902482ba3898dc4a8..9663b0bb0c4d737c9991c81ff52d315de1415926 100644 (file)
@@ -32,6 +32,7 @@ Pump::Pump(int orientacion)
        connect_vec.push_back(temp);
 }
 
        connect_vec.push_back(temp);
 }
 
+
 Pump::~Pump()
 {
 }
 Pump::~Pump()
 {
 }
@@ -246,3 +247,17 @@ void Pump::update_logic_position()
                        out_y = y + 32;
        }
 }
                        out_y = y + 32;
        }
 }
+
+bool Pump::on_expose_event(GdkEventExpose* event)
+{
+       CItem::on_expose_event(event);
+       Glib::RefPtr<Gdk::Window> window = get_window();
+
+       gc->set_foreground(red);
+       gc->set_background(red);
+       window->draw_rectangle(gc, 1, image->get_width()-32, 0, 32, 16);
+       gc->set_foreground(blue);
+       gc->set_background(blue);
+       window->draw_rectangle(gc, 1, image->get_width()-32, 16, 32, 16);
+       return true;
+}