~ubuntu-branches/ubuntu/wily/ginkgocadx/wily-proposed

« back to all changes in this revision

Viewing changes to src/visualizator/visualizator/herramientas/herramientaoverlays.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Tille
  • Date: 2011-05-02 08:09:26 UTC
  • Revision ID: james.westby@ubuntu.com-20110502080926-bql5wep49c7hg91t
Tags: upstream-2.4.1.1
Import upstream version 2.4.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  
 
3
 *  $Id: herramientaoverlays.cpp 3558 2011-03-20 20:02:22Z carlos $
 
4
 *  Ginkgo CADx Project
 
5
 *
 
6
 *  Copyright 2008-10 MetaEmotion S.L. All rights reserved.
 
7
 *  http://ginkgo-cadx.com
 
8
 *
 
9
 *  This file is licensed under LGPL v3 license.
 
10
 *  See License.txt for details
 
11
 *
 
12
 *
 
13
 */
 
14
//#define _GINKGO_TRACE
 
15
#include <wx/menu.h>
 
16
 
 
17
#include <api/globals.h>
 
18
#include <api/icontroladoreventos.h>
 
19
#include "../eventos/visualizatorevents.h"
 
20
#include <api/ientorno.h>
 
21
#include "herramientaoverlays.h"
 
22
#include <eventos/eventosginkgo.h>
 
23
#include <api/internacionalizacion.h>
 
24
 
 
25
#define MENU_OVERLAYS  4051
 
26
 
 
27
namespace GNKVisualizator {
 
28
        namespace GUI {
 
29
        class MenuHerramientaOverlays : public wxMenu {
 
30
                        public:
 
31
                        MenuHerramientaOverlays(wxWindow* pParent, GNKVisualizator::HerramientaOverlays* pHerramienta):wxMenu() {
 
32
                                m_pParent = pParent;
 
33
                                m_pHerramienta=pHerramienta;
 
34
                                m_pParent->Connect(m_pHerramienta->ID, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MenuHerramientaOverlays::OnUpdateSeleccionarOverlaysUI),NULL,this);
 
35
                        }
 
36
 
 
37
                        ~MenuHerramientaOverlays() {
 
38
                                m_pParent->Disconnect(wxID_ANY, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MenuHerramientaOverlays::OnUpdateSeleccionarOverlaysUI),NULL,this);
 
39
                                m_pParent->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MenuHerramientaOverlays::OnMostrarOverlay ),NULL,this);
 
40
                                m_pParent = NULL;
 
41
                                m_pHerramienta = NULL;
 
42
                        }
 
43
 
 
44
                        void OnUpdateSeleccionarOverlaysUI(wxUpdateUIEvent& event) {
 
45
                                //se agregan los overlays...
 
46
                                while(this->GetMenuItemCount() >0) {
 
47
                                        this->Destroy(FindItemByPosition(0));
 
48
                                }
 
49
 
 
50
                                GNKVisualizator::TListaOverlays* pLista = m_pHerramienta->GetListaOverlays();
 
51
                                GNKVisualizator::TEstadoOverlay* estadoOverlays = m_pHerramienta->GetEstadoOverlays();
 
52
                                if(pLista!= NULL && estadoOverlays!=NULL && pLista->size() > 0) {
 
53
                                        int idOverlay = MENU_OVERLAYS;
 
54
                                        for(GNKVisualizator::TListaOverlays::iterator itOverlays = pLista->begin(); itOverlays!=pLista->end(); itOverlays++,idOverlay++) {
 
55
                                                wxMenuItem* capa = new wxMenuItem( this, idOverlay,wxString::FromUTF8((*itOverlays).nombre.c_str()),wxEmptyString,wxITEM_CHECK);
 
56
                                                Append(capa);
 
57
                                                bool oculto = false;
 
58
                                                if(estadoOverlays->find((*itOverlays).indice) != estadoOverlays->end()) {
 
59
                                                        oculto = (*estadoOverlays->find(itOverlays->indice)).second;
 
60
                                                }
 
61
                                                if(oculto){
 
62
                                                        Check(capa->GetId(),false);
 
63
                                                } else {
 
64
                                                        Check(capa->GetId(),true);
 
65
                                                }
 
66
                                                m_pParent->Connect(capa->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MenuHerramientaOverlays::OnMostrarOverlay ),NULL,this);
 
67
                                        }                       
 
68
                                        event.Show(true);
 
69
                                        event.Enable(true);
 
70
                                } else {
 
71
                                        event.Show(false);
 
72
                                        event.Enable(false);
 
73
                                }
 
74
                        }
 
75
 
 
76
                        void OnMostrarOverlay(wxCommandEvent& event)
 
77
                        {
 
78
                                int idOverlay = event.GetId() - MENU_OVERLAYS;
 
79
                                m_pHerramienta->ToggleOverlay(idOverlay);
 
80
                                event.Skip(false);
 
81
                        } 
 
82
 
 
83
                        GNKVisualizator::HerramientaOverlays* m_pHerramienta;
 
84
                        wxWindow* m_pParent;
 
85
                };
 
86
        }
 
87
}
 
88
 
 
89
//----------------------------------------------------------------------
 
90
 
 
91
GNKVisualizator::HerramientaOverlays::HerramientaOverlays()
 
92
{
 
93
        m_Descripcion = _Std("Layers Overlays");
 
94
        m_IsMenu = true;
 
95
        ////////////////////////////////////////////m_Icono = GinkgoResourcesManager::IconosMenus::GetIcoReset();
 
96
}
 
97
 
 
98
GNKVisualizator::HerramientaOverlays::~HerramientaOverlays()
 
99
{
 
100
}
 
101
 
 
102
bool GNKVisualizator::HerramientaOverlays::AppendInMenu(wxWindow* pParent, wxMenu* pMenuParent)
 
103
{
 
104
        wxMenu* pMenu = new GNKVisualizator::GUI::MenuHerramientaOverlays(pParent,this);        
 
105
        pMenuParent->Append(ID, wxString::FromUTF8(m_Descripcion.c_str()), pMenu);
 
106
        return true;
 
107
}
 
108
 
 
109
//region "Realizaci�n de la interfaz IHerramienta"
 
110
 
 
111
void GNKVisualizator::HerramientaOverlays::CrearPaneles( wxPanel* /*panel*/ )
 
112
{
 
113
        m_pAbstractPanelHerramientaOpciones =  NULL;
 
114
}
 
115
 
 
116
GNKVisualizator::TListaOverlays* GNKVisualizator::HerramientaOverlays::GetListaOverlays()
 
117
{
 
118
        GNKVisualizator::TListaOverlays* resultado = NULL;
 
119
        if(Habilitada())
 
120
        {
 
121
                for (TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin(); it1 != TContratableWidgets::m_pListaActiva->end(); it1++) {
 
122
                        TContratoWidgets* pCW = (*it1);
 
123
                        resultado = pCW->m_pListaOverlays;
 
124
                }
 
125
        }
 
126
        return resultado;
 
127
}
 
128
 
 
129
GNKVisualizator::TEstadoOverlay* GNKVisualizator::HerramientaOverlays::GetEstadoOverlays()
 
130
{
 
131
        GNKVisualizator::TEstadoOverlay* resultado = NULL;
 
132
        if(Habilitada())
 
133
        {
 
134
                for (TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin(); it1 != TContratableWidgets::m_pListaActiva->end(); it1++) {
 
135
                        TContratoWidgets* pCW = (*it1);
 
136
                        resultado = &pCW->m_EstadoOverlays;
 
137
                }
 
138
        }
 
139
        return resultado;
 
140
}
 
141
 
 
142
void GNKVisualizator::HerramientaOverlays::ToggleOverlay(int idOverlay)
 
143
{
 
144
        if(Habilitada())
 
145
        {
 
146
                if(TContratableWidgets::m_pListaActiva->size() > 0) {
 
147
                        TContratoWidgets* pC = (*TContratableWidgets::m_pListaActiva->begin());
 
148
 
 
149
                        GNKVisualizator::TListaOverlays::iterator itOverlays = pC->m_pListaOverlays->begin();
 
150
                        for(; idOverlay > 0 && itOverlays!=pC->m_pListaOverlays->end(); itOverlays++, idOverlay--);
 
151
                        if(itOverlays!= pC->m_pListaOverlays->end()) {
 
152
                                if(pC->m_EstadoOverlays.find((*itOverlays).indice) != pC->m_EstadoOverlays.end()) {
 
153
                                        pC->m_EstadoOverlays[itOverlays->indice] = !pC->m_EstadoOverlays[itOverlays->indice];
 
154
                                } else {
 
155
                                        pC->m_EstadoOverlays[itOverlays->indice] = false;
 
156
                                }
 
157
                                pC->m_pEntorno->GetControladorEventos()->ProcesarEvento(new GNKVisualizator::Eventos::EventoMostrarOverlay(TContratableWidgets::m_pVistaActiva,(*itOverlays)));
 
158
                        }
 
159
                }
 
160
        }
 
161
}
 
162
 
 
163
void GNKVisualizator::HerramientaOverlays::SolicitarActivacion()
 
164
{
 
165
}
 
166
 
 
167
void GNKVisualizator::HerramientaOverlays::ConectarContratoFalso(bool ) {
 
168
        if (TContratableWidgets::m_pListaActiva == NULL) {
 
169
                //std::cerr << "Error: Se trato de activar el modo deshabilitado de una vista sin haber asignado la vista activa. Error en la logica de activacion. Accion ignorada" << std::endl;
 
170
                return;
 
171
        }
 
172
 
 
173
}
 
174
 
 
175
void GNKVisualizator::HerramientaOverlays::SetVistaActiva(GNC::GCS::IVista* pVista) {
 
176
        TContratableWidgets::EstablecerVistaActiva(pVista);
 
177
        GTRACE("GNC::HerramientaReset::EstablecerVistaActiva(pVista);::SetVistaActiva(" <<  pVista << ")");
 
178
}
 
179
 
 
180
// FIXME: Aviso!!!! para que funcione deben contratarse contratos pareados obligatorios y en el mismo orden
 
181
void GNKVisualizator::HerramientaOverlays::ConectarContratos(bool )
 
182
{
 
183
        if (TContratableWidgets::m_pListaActiva == NULL) {
 
184
                std::cerr << "Error: Se trataron de conectar contratos sin haber asignado la vista activa. Error en la logica de activación. Accion ignorada" << std::endl;
 
185
                return;
 
186
        }
 
187
 
 
188
}
 
189
 
 
190
//endregion
 
191
 
 
192
 
 
193