3
* $Id: herramientamapacolor.cpp 3558 2011-03-20 20:02:22Z carlos $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
14
//#define _GINKGO_TRACE
17
#include <api/globals.h>
18
#include <api/ientorno.h>
19
#include "herramientamapacolor.h"
20
#include <eventos/eventosginkgo.h>
26
#include <vtkVISUManagement/vtkLookupTableManager.h>
27
#include <vtkginkgoimageviewer.h>
29
#include "../../recursos/aprimresourcemanager.h"
30
#include <api/internacionalizacion.h>
32
#define INVERTIR_COLORES 4100
33
#define MENU_MAPAS_COLOR 4101
35
namespace GNKVisualizator {
37
class MenuHerramientaMapaColor : public wxMenu {
39
MenuHerramientaMapaColor(wxWindow* pParent, GNKVisualizator::HerramientaMapaColor* pHerramienta):wxMenu() {
41
m_pHerramienta=pHerramienta;
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);
52
m_pParent->Connect(m_pHerramienta->ID, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MenuHerramientaMapaColor::OnUpdateMenuMapaColorUI),NULL,this);
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);
59
m_pHerramienta = NULL;
62
void OnSeleccionarMapa( wxCommandEvent& event )
64
int idMapa = event.GetId() - MENU_MAPAS_COLOR;
65
m_pHerramienta->SeleccionarMapa(idMapa);
69
void OnUpdateMenuMapaColorUI(wxUpdateUIEvent& event) {
70
event.Enable(m_pHerramienta->SoportaMapas());
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);
80
GNKVisualizator::HerramientaMapaColor* m_pHerramienta;
84
//invertir mapa de colores
85
class EventHandlerInvert: public wxEvtHandler {
87
EventHandlerInvert(wxWindow* pParent, GNKVisualizator::HerramientaMapaColor* pHerramienta):wxEvtHandler()
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);
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);
100
m_pHerramienta = NULL;
103
void OnInvertColorMapClick( wxCommandEvent& event )
105
m_pHerramienta->InvertColorMap();
109
void OnUpdateColorMapUI(wxUpdateUIEvent& event) {
110
event.Enable(m_pHerramienta->SoportaMapas());
113
GNKVisualizator::HerramientaMapaColor* m_pHerramienta;
118
class MenuInvertColorMap : public wxMenuItem {
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);
123
SetBitmaps(APrimResourcesManager::Herramientas::GetIcoInvert());
125
SetBitmap(APrimResourcesManager::Herramientas::GetIcoInvert());
129
~MenuInvertColorMap() {
130
if(pEventHandler != NULL) {
131
delete pEventHandler;
132
pEventHandler = NULL;
136
EventHandlerInvert* pEventHandler;
141
//----------------------------------------------------------------------
143
GNKVisualizator::HerramientaMapaColor::HerramientaMapaColor()
145
m_Descripcion = _Std("Color Map");
147
////////////////////////////////////////////m_Icono = GinkgoResourcesManager::IconosMenus::GetIcoReset();
150
GNKVisualizator::HerramientaMapaColor::~HerramientaMapaColor()
154
bool GNKVisualizator::HerramientaMapaColor::AppendInMenu(wxWindow* pParent, wxMenu* pMenuParent)
156
pMenuParent->Append(new GNKVisualizator::GUI::MenuInvertColorMap(pParent,_("Invert color map"),pMenuParent,this));
158
wxMenu* pMenu = new GNKVisualizator::GUI::MenuHerramientaMapaColor(pParent,this);
159
pMenuParent->Append(ID,wxString::FromUTF8(m_Descripcion.c_str()),pMenu);
164
//region "Realizaci�n de la interfaz IHerramienta"
166
void GNKVisualizator::HerramientaMapaColor::CrearPaneles( wxPanel* /*panel*/ )
168
m_pAbstractPanelHerramientaOpciones = NULL;
171
bool GNKVisualizator::HerramientaMapaColor::SoportaMapas()
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) {
180
int nc = pCW->Estudio->Viewer->GetNumberOfComponents();
182
soporta = ( soporta && (nc == 1) );
194
void GNKVisualizator::HerramientaMapaColor::SeleccionarMapa(int idMapa)
198
if(idMapa>=0 && idMapa<(int)vtkLookupTableManager::GetAvailableLookupTables().size()) {
199
vtkLookupTable* vtkTabla = vtkLookupTableManager::GetLookupTable(idMapa);
202
for (TContratableMapa::IteradorListaContratos it1 = TContratableMapa::m_pListaActiva->begin(); it1 != TContratableMapa::m_pListaActiva->end(); it1++) {
203
TContratoMapa* pCW = (*it1);
204
pCW->SetMapaColor(vtkTabla, idMapa);
212
void GNKVisualizator::HerramientaMapaColor::SolicitarActivacion()
215
///////////////////////
218
int GNKVisualizator::HerramientaMapaColor::GetIdLookupTable()
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();
230
void GNKVisualizator::HerramientaMapaColor::InvertColorMap()
232
int idMapa = GetIdLookupTable();
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;
239
idMapa = vtkLookupTableManager::LUT_LINEAR;
241
SeleccionarMapa(idMapa);
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;
252
void GNKVisualizator::HerramientaMapaColor::SetVistaActiva(GNC::GCS::IVista* pVista) {
253
TContratableMapa::EstablecerVistaActiva(pVista);
254
GTRACE("GNC::HerramientaReset::EstablecerVistaActiva(pVista);::SetVistaActiva(" << pVista << ")");
257
// FIXME: Aviso!!!! para que funcione deben contratarse contratos pareados obligatorios y en el mismo orden
258
void GNKVisualizator::HerramientaMapaColor::ConectarContratos(bool )
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;