~ubuntu-branches/ubuntu/raring/ginkgocadx/raring-proposed

« back to all changes in this revision

Viewing changes to src/cadxcore/main/controllers/controladorherramientas.cpp

  • Committer: Package Import Robot
  • Author(s): Andreas Tille
  • Date: 2011-09-09 08:39:26 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: package-import@ubuntu.com-20110909083926-iktecd132cnku5cd
Tags: 2.5.4.0~rc-1
New upstream version (patches were applied)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
 *
3
 
 *  $Id: controladorherramientas.cpp 3830 2011-05-06 13:30:18Z carlos $
 
3
 *  $Id: controladorherramientas.cpp 4124 2011-09-02 12:21:20Z carlos $
4
4
 *  Ginkgo CADx Project
5
5
 *
6
6
 *  Copyright 2008-10 MetaEmotion S.L. All rights reserved.
87
87
                m_pControlador->OnActivarHerramienta(event);
88
88
        }
89
89
 
90
 
 
91
90
        GNC::ControladorHerramientas* m_pControlador;
92
91
 
93
92
};
94
93
 
 
94
namespace GNC {
 
95
        namespace GUI {
 
96
                class EventHandlerKeyToolsController: public wxEvtHandler {
 
97
                public:
 
98
                        EventHandlerKeyToolsController(GNC::ControladorHerramientas* pController): wxEvtHandler()
 
99
                        {
 
100
                                m_pController = pController;
 
101
                                m_pParent = NULL;
 
102
                        }
 
103
                        ~EventHandlerKeyToolsController() 
 
104
                        {
 
105
                                Disconnect();
 
106
                        }
 
107
 
 
108
                        void OnKeyEvent(wxKeyEvent& event) {
 
109
                                //tools accelerators are ctrl + keycode
 
110
                                if (event.ControlDown() && event.GetKeyCode() != WXK_CONTROL) {
 
111
                                        m_pController->OnKeyAccelerator(event);
 
112
                                        #if defined(__WXGTK__)
 
113
                                        if (m_pParent != NULL) {
 
114
                                                m_pParent->SetFocus();
 
115
                                        }
 
116
                                        #endif
 
117
                                } else {
 
118
                                        event.ResumePropagation(1);
 
119
                                        event.Skip(true);
 
120
                                }
 
121
                                
 
122
                        }
 
123
 
 
124
                        void Connect(wxWindow* pParent) {
 
125
                                if (m_pParent != NULL) {
 
126
                                        m_pParent->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler( EventHandlerKeyToolsController::OnKeyEvent ), NULL, this);
 
127
                                }
 
128
                                m_pParent = pParent;
 
129
                                m_pParent->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler( EventHandlerKeyToolsController::OnKeyEvent ), NULL, this);
 
130
                        }
 
131
 
 
132
                        void Disconnect() {
 
133
                                if (m_pParent != NULL) {
 
134
                                        m_pParent->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler( EventHandlerKeyToolsController::OnKeyEvent ), NULL, this);
 
135
                                        m_pParent = NULL;
 
136
                                }
 
137
                        }
 
138
 
 
139
                        GNC::ControladorHerramientas* m_pController;
 
140
                        wxWindow* m_pParent;
 
141
                };
 
142
        }
 
143
}
 
144
 
95
145
GNC::ControladorHerramientas::ControladorHerramientas()
96
146
{
97
147
        m_pVistaActiva = NULL;
121
171
 
122
172
        m_pBarraHerramientasDerecha = new GNC::GUI::BarraHerramientasDerecha(pEntorno->GetPanelHerramientasSuperior(), pEntorno->GetVentanaPrincipal());
123
173
        pEntorno->GetPanelHerramientasSuperior()->GetSizer()->Add( m_pBarraHerramientasDerecha, 0, wxEXPAND, 0 );
 
174
 
 
175
        m_pKeyEventHandler = new GNC::GUI::EventHandlerKeyToolsController(this);
124
176
}
125
177
 
126
178
GNC::ControladorHerramientas::~ControladorHerramientas()
152
204
        }
153
205
        m_Herramientas.clear();
154
206
        m_MapaIdsHerramientas.clear();
 
207
 
 
208
        if (m_pKeyEventHandler != NULL)
 
209
        {
 
210
                delete m_pKeyEventHandler;
 
211
        }
155
212
}
156
213
 
157
214
GNC::ControladorHerramientas* GNC::ControladorHerramientas::Instance()
590
647
                std::cout << "  ANT: VistaActiva = " << pVista->GetTitulo().c_str() << ", ModuloActivo = " << m_pModuloActivo->GetNombre().c_str() << std::endl;
591
648
                #endif
592
649
 
 
650
                //disconnect key events...
 
651
                m_pKeyEventHandler->Disconnect();
 
652
                //
 
653
 
593
654
                GNC::GCS::IHerramienta* pH = m_HerramientaActiva[m_pModuloActivo];
594
655
                if (pH != NULL) {
595
656
                        pH->SetVistaActiva(pVista);
632
693
        m_pVistaActiva = pVista;
633
694
        if(m_pVistaActiva !=NULL){
634
695
                m_pModuloActivo = m_pVistaActiva->GetModulo();
 
696
 
 
697
                //connect key events
 
698
                m_pKeyEventHandler->Connect(m_pVistaActiva->GetWindow());
 
699
                //
635
700
        }else{
636
701
                m_pModuloActivo = NULL;
637
702
        }
756
821
                }
757
822
                herramienta->Conectar(true);
758
823
 
 
824
                GNC::GCS::ControladorVistas::Instance()->GetVistaActiva()->Activar();
 
825
 
759
826
                m_HerramientaActiva[m_pModuloActivo] = herramienta;
760
827
        }
761
828
 
784
851
        }
785
852
}
786
853
 
 
854
void GNC::ControladorHerramientas::OnKeyAccelerator(wxKeyEvent& event)
 
855
{
 
856
        //find tool with accelerator = event.GetKeyCode()
 
857
        int keyCode = event.GetKeyCode();
 
858
        for (MapaHerramientas::iterator it = m_Herramientas.begin(); it != m_Herramientas.end(); it++) {
 
859
                GNC::GCS::IHerramienta* pHerramienta = (*it).second;
 
860
 
 
861
                if (pHerramienta != NULL) {
 
862
                        if (pHerramienta->Habilitada() && !pHerramienta->Activada() && pHerramienta->GetAcceleratorCode() == keyCode) {
 
863
                                SolicitarActivacion(pHerramienta);
 
864
                                event.Skip(false);                              
 
865
                                break;
 
866
                        }
 
867
                }
 
868
        }
 
869
}
 
870
 
787
871
// </editor-fold>
788
872
//endregion
789
873