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

« back to all changes in this revision

Viewing changes to src/visualizator/visualizator/herramientas/herramientamapacolor.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: herramientamapacolor.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/ientorno.h>
 
19
#include "herramientamapacolor.h"
 
20
#include <eventos/eventosginkgo.h>
 
21
 
 
22
 
 
23
#ifdef __DEPRECATED
 
24
#undef __DEPRECATED
 
25
#endif
 
26
#include <vtkVISUManagement/vtkLookupTableManager.h>
 
27
#include <vtkginkgoimageviewer.h>
 
28
 
 
29
#include "../../recursos/aprimresourcemanager.h"
 
30
#include <api/internacionalizacion.h>
 
31
 
 
32
#define INVERTIR_COLORES  4100
 
33
#define MENU_MAPAS_COLOR  4101
 
34
 
 
35
namespace GNKVisualizator {
 
36
        namespace GUI {
 
37
        class MenuHerramientaMapaColor : public wxMenu {
 
38
                        public:
 
39
                                MenuHerramientaMapaColor(wxWindow* pParent, GNKVisualizator::HerramientaMapaColor* pHerramienta):wxMenu() {
 
40
                                m_pParent = pParent;
 
41
                                m_pHerramienta=pHerramienta;
 
42
 
 
43
                                std::vector<std::string> choices = vtkLookupTableManager::GetAvailableLookupTables();
 
44
                                int idMapa = MENU_MAPAS_COLOR;
 
45
                                for(std::vector<std::string>::iterator it = choices.begin(); it!= choices.end(); it++,idMapa++){
 
46
                                        wxMenuItem* mapa = new wxMenuItem( this, idMapa,wxString::FromUTF8((*it).c_str()),wxString::FromUTF8((*it).c_str()),wxITEM_CHECK);
 
47
                                        m_pParent->Connect(mapa->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MenuHerramientaMapaColor::OnSeleccionarMapa ),NULL,this);
 
48
                                        m_pParent->Connect(mapa->GetId(), wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MenuHerramientaMapaColor::OnUpdateMenuMapaColorUI),NULL,this);
 
49
                                        Append(mapa);
 
50
                                }
 
51
 
 
52
                                m_pParent->Connect(m_pHerramienta->ID, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MenuHerramientaMapaColor::OnUpdateMenuMapaColorUI),NULL,this);
 
53
                        }
 
54
 
 
55
                        ~MenuHerramientaMapaColor() {
 
56
                                m_pParent->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MenuHerramientaMapaColor::OnSeleccionarMapa),NULL,this);
 
57
                                m_pParent->Disconnect(wxID_ANY, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MenuHerramientaMapaColor::OnUpdateMenuMapaColorUI),NULL,this);
 
58
                                m_pParent = NULL;
 
59
                                m_pHerramienta = NULL;
 
60
                        }
 
61
 
 
62
                        void OnSeleccionarMapa( wxCommandEvent& event )
 
63
                        {
 
64
                                int idMapa = event.GetId() - MENU_MAPAS_COLOR;
 
65
                                m_pHerramienta->SeleccionarMapa(idMapa);
 
66
                                event.Skip(false);
 
67
                        }
 
68
 
 
69
                        void OnUpdateMenuMapaColorUI(wxUpdateUIEvent& event) {
 
70
                                event.Enable(m_pHerramienta->SoportaMapas());
 
71
 
 
72
                                std::vector<std::string> choices = vtkLookupTableManager::GetAvailableLookupTables();
 
73
                                int idMapaSeleccionado = m_pHerramienta->GetIdLookupTable();
 
74
                                int idMapa = MENU_MAPAS_COLOR;
 
75
                                for(std::vector<std::string>::iterator it = choices.begin(); it!= choices.end(); it++,idMapa++) {
 
76
                                        Check(idMapa, idMapa-MENU_MAPAS_COLOR == idMapaSeleccionado);
 
77
                                }
 
78
                        }
 
79
 
 
80
                        GNKVisualizator::HerramientaMapaColor* m_pHerramienta;
 
81
                        wxWindow* m_pParent;
 
82
                };
 
83
 
 
84
                //invertir mapa de colores
 
85
                class EventHandlerInvert: public wxEvtHandler {
 
86
                public:
 
87
                        EventHandlerInvert(wxWindow* pParent, GNKVisualizator::HerramientaMapaColor* pHerramienta):wxEvtHandler()
 
88
                        {
 
89
                                m_pParent = pParent;
 
90
                                m_pHerramienta=pHerramienta;
 
91
                                m_pParent->Connect(INVERTIR_COLORES, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( EventHandlerInvert::OnInvertColorMapClick),NULL,this);
 
92
                                m_pParent->Connect(INVERTIR_COLORES, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(EventHandlerInvert::OnUpdateColorMapUI),NULL,this);
 
93
                        }
 
94
 
 
95
                        ~EventHandlerInvert()
 
96
                        {
 
97
                                m_pParent->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( EventHandlerInvert::OnInvertColorMapClick),NULL,this);
 
98
                                m_pParent->Disconnect(wxID_ANY, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(EventHandlerInvert::OnUpdateColorMapUI),NULL,this);
 
99
                                m_pParent = NULL;
 
100
                                m_pHerramienta = NULL;
 
101
                        }
 
102
 
 
103
                        void OnInvertColorMapClick( wxCommandEvent& event )
 
104
                        {
 
105
                                m_pHerramienta->InvertColorMap();
 
106
                                event.Skip(false);
 
107
                        }
 
108
 
 
109
                        void OnUpdateColorMapUI(wxUpdateUIEvent& event) {
 
110
                                event.Enable(m_pHerramienta->SoportaMapas());
 
111
                        }
 
112
 
 
113
                        GNKVisualizator::HerramientaMapaColor* m_pHerramienta;
 
114
                        wxWindow* m_pParent;
 
115
                };
 
116
 
 
117
 
 
118
                class MenuInvertColorMap : public wxMenuItem {
 
119
                public:
 
120
                        MenuInvertColorMap(wxWindow* pParent, const wxString& nombre, wxMenu* pMenuPadre, GNKVisualizator::HerramientaMapaColor* pHerramienta):wxMenuItem(pMenuPadre,INVERTIR_COLORES,nombre,nombre,wxITEM_NORMAL) {
 
121
                                pEventHandler = new EventHandlerInvert(pParent,pHerramienta);
 
122
#ifdef __WXMSW__
 
123
                                SetBitmaps(APrimResourcesManager::Herramientas::GetIcoInvert());
 
124
#else
 
125
                                SetBitmap(APrimResourcesManager::Herramientas::GetIcoInvert());
 
126
#endif
 
127
                        }
 
128
 
 
129
                        ~MenuInvertColorMap() {
 
130
                                if(pEventHandler != NULL) {
 
131
                                        delete pEventHandler;
 
132
                                        pEventHandler = NULL;
 
133
                                }
 
134
                        }
 
135
 
 
136
                        EventHandlerInvert* pEventHandler;
 
137
                };
 
138
        }
 
139
}
 
140
 
 
141
//----------------------------------------------------------------------
 
142
 
 
143
GNKVisualizator::HerramientaMapaColor::HerramientaMapaColor()
 
144
{
 
145
        m_Descripcion = _Std("Color Map");
 
146
        m_IsMenu = true;
 
147
        ////////////////////////////////////////////m_Icono = GinkgoResourcesManager::IconosMenus::GetIcoReset();
 
148
}
 
149
 
 
150
GNKVisualizator::HerramientaMapaColor::~HerramientaMapaColor()
 
151
{
 
152
}
 
153
 
 
154
bool GNKVisualizator::HerramientaMapaColor::AppendInMenu(wxWindow* pParent, wxMenu* pMenuParent)
 
155
{
 
156
        pMenuParent->Append(new GNKVisualizator::GUI::MenuInvertColorMap(pParent,_("Invert color map"),pMenuParent,this));
 
157
 
 
158
        wxMenu* pMenu = new GNKVisualizator::GUI::MenuHerramientaMapaColor(pParent,this);
 
159
        pMenuParent->Append(ID,wxString::FromUTF8(m_Descripcion.c_str()),pMenu);
 
160
 
 
161
        return true;
 
162
}
 
163
 
 
164
//region "Realizaci�n de la interfaz IHerramienta"
 
165
 
 
166
void GNKVisualizator::HerramientaMapaColor::CrearPaneles( wxPanel* /*panel*/ )
 
167
{
 
168
        m_pAbstractPanelHerramientaOpciones =  NULL;
 
169
}
 
170
 
 
171
bool GNKVisualizator::HerramientaMapaColor::SoportaMapas()
 
172
{
 
173
        if(Habilitada())
 
174
        {
 
175
                bool soporta =true;
 
176
                for (TContratableMapa::IteradorListaContratos it1 = TContratableMapa::m_pListaActiva->begin(); it1 != TContratableMapa::m_pListaActiva->end(); it1++) {
 
177
                        TContratoMapa* pCW = (*it1);
 
178
                        if(pCW->Estudio->Viewer != NULL) {
 
179
 
 
180
                                int nc = pCW->Estudio->Viewer->GetNumberOfComponents();
 
181
 
 
182
                                soporta = ( soporta && (nc == 1) );
 
183
                        }
 
184
                        else {
 
185
                                soporta = false;
 
186
                        }
 
187
                }
 
188
                return soporta;
 
189
        } else {
 
190
                return false;
 
191
        }
 
192
}
 
193
 
 
194
void GNKVisualizator::HerramientaMapaColor::SeleccionarMapa(int idMapa)
 
195
{
 
196
        if(Habilitada())
 
197
        {
 
198
                if(idMapa>=0 && idMapa<(int)vtkLookupTableManager::GetAvailableLookupTables().size()) {
 
199
                        vtkLookupTable* vtkTabla = vtkLookupTableManager::GetLookupTable(idMapa);
 
200
                        if(vtkTabla != NULL)
 
201
                        {
 
202
                                for (TContratableMapa::IteradorListaContratos it1 = TContratableMapa::m_pListaActiva->begin(); it1 != TContratableMapa::m_pListaActiva->end(); it1++) {
 
203
                                        TContratoMapa* pCW = (*it1);
 
204
                                        pCW->SetMapaColor(vtkTabla, idMapa);
 
205
                                }
 
206
                                vtkTabla->Delete();
 
207
                        }
 
208
                }
 
209
        }
 
210
}
 
211
 
 
212
void GNKVisualizator::HerramientaMapaColor::SolicitarActivacion()
 
213
{
 
214
}
 
215
///////////////////////
 
216
 
 
217
 
 
218
int GNKVisualizator::HerramientaMapaColor::GetIdLookupTable()
 
219
{
 
220
        if (!SoportaMapas())
 
221
                return -1;
 
222
        int idMapa = -1;
 
223
        for (TContratableMapa::IteradorListaContratos it1 = TContratableMapa::m_pListaActiva->begin(); it1 != TContratableMapa::m_pListaActiva->end(); it1++) {
 
224
                TContratoMapa* pCW = (*it1);
 
225
                idMapa = pCW->Estudio->Viewer->GetIdLookupTable();
 
226
        }
 
227
        return idMapa;
 
228
}
 
229
 
 
230
void GNKVisualizator::HerramientaMapaColor::InvertColorMap()
 
231
{
 
232
        int idMapa = GetIdLookupTable();
 
233
 
 
234
        if (idMapa == vtkLookupTableManager::LUT_LINEAR) {
 
235
                idMapa = vtkLookupTableManager::LUT_LINEAR_INV;
 
236
        } else if (idMapa == vtkLookupTableManager::LUT_LINEAR_INV) {
 
237
                idMapa = vtkLookupTableManager::LUT_LINEAR;
 
238
        } else {
 
239
                idMapa = vtkLookupTableManager::LUT_LINEAR;
 
240
        }
 
241
        SeleccionarMapa(idMapa);
 
242
}
 
243
 
 
244
void GNKVisualizator::HerramientaMapaColor::ConectarContratoFalso(bool ) {
 
245
        if (TContratableMapa::m_pListaActiva == NULL) {
 
246
                //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;
 
247
                return;
 
248
        }
 
249
 
 
250
}
 
251
 
 
252
void GNKVisualizator::HerramientaMapaColor::SetVistaActiva(GNC::GCS::IVista* pVista) {
 
253
        TContratableMapa::EstablecerVistaActiva(pVista);
 
254
        GTRACE("GNC::HerramientaReset::EstablecerVistaActiva(pVista);::SetVistaActiva(" <<  pVista << ")");
 
255
}
 
256
 
 
257
// FIXME: Aviso!!!! para que funcione deben contratarse contratos pareados obligatorios y en el mismo orden
 
258
void GNKVisualizator::HerramientaMapaColor::ConectarContratos(bool )
 
259
{
 
260
        if (TContratableMapa::m_pListaActiva == NULL) {
 
261
                std::cerr << "Error: Se trataron de conectar contratos sin haber asignado la vista activa. Error en la l�gica de activacion. Accion ignorada" << std::endl;
 
262
                return;
 
263
        }
 
264
 
 
265
}
 
266
 
 
267
//endregion
 
268
 
 
269
 
 
270