3
* $Id: herramientaoverlays.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/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>
25
#define MENU_OVERLAYS 4051
27
namespace GNKVisualizator {
29
class MenuHerramientaOverlays : public wxMenu {
31
MenuHerramientaOverlays(wxWindow* pParent, GNKVisualizator::HerramientaOverlays* pHerramienta):wxMenu() {
33
m_pHerramienta=pHerramienta;
34
m_pParent->Connect(m_pHerramienta->ID, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(MenuHerramientaOverlays::OnUpdateSeleccionarOverlaysUI),NULL,this);
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);
41
m_pHerramienta = NULL;
44
void OnUpdateSeleccionarOverlaysUI(wxUpdateUIEvent& event) {
45
//se agregan los overlays...
46
while(this->GetMenuItemCount() >0) {
47
this->Destroy(FindItemByPosition(0));
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);
58
if(estadoOverlays->find((*itOverlays).indice) != estadoOverlays->end()) {
59
oculto = (*estadoOverlays->find(itOverlays->indice)).second;
62
Check(capa->GetId(),false);
64
Check(capa->GetId(),true);
66
m_pParent->Connect(capa->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MenuHerramientaOverlays::OnMostrarOverlay ),NULL,this);
76
void OnMostrarOverlay(wxCommandEvent& event)
78
int idOverlay = event.GetId() - MENU_OVERLAYS;
79
m_pHerramienta->ToggleOverlay(idOverlay);
83
GNKVisualizator::HerramientaOverlays* m_pHerramienta;
89
//----------------------------------------------------------------------
91
GNKVisualizator::HerramientaOverlays::HerramientaOverlays()
93
m_Descripcion = _Std("Layers Overlays");
95
////////////////////////////////////////////m_Icono = GinkgoResourcesManager::IconosMenus::GetIcoReset();
98
GNKVisualizator::HerramientaOverlays::~HerramientaOverlays()
102
bool GNKVisualizator::HerramientaOverlays::AppendInMenu(wxWindow* pParent, wxMenu* pMenuParent)
104
wxMenu* pMenu = new GNKVisualizator::GUI::MenuHerramientaOverlays(pParent,this);
105
pMenuParent->Append(ID, wxString::FromUTF8(m_Descripcion.c_str()), pMenu);
109
//region "Realizaci�n de la interfaz IHerramienta"
111
void GNKVisualizator::HerramientaOverlays::CrearPaneles( wxPanel* /*panel*/ )
113
m_pAbstractPanelHerramientaOpciones = NULL;
116
GNKVisualizator::TListaOverlays* GNKVisualizator::HerramientaOverlays::GetListaOverlays()
118
GNKVisualizator::TListaOverlays* resultado = NULL;
121
for (TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin(); it1 != TContratableWidgets::m_pListaActiva->end(); it1++) {
122
TContratoWidgets* pCW = (*it1);
123
resultado = pCW->m_pListaOverlays;
129
GNKVisualizator::TEstadoOverlay* GNKVisualizator::HerramientaOverlays::GetEstadoOverlays()
131
GNKVisualizator::TEstadoOverlay* resultado = NULL;
134
for (TContratableWidgets::IteradorListaContratos it1 = TContratableWidgets::m_pListaActiva->begin(); it1 != TContratableWidgets::m_pListaActiva->end(); it1++) {
135
TContratoWidgets* pCW = (*it1);
136
resultado = &pCW->m_EstadoOverlays;
142
void GNKVisualizator::HerramientaOverlays::ToggleOverlay(int idOverlay)
146
if(TContratableWidgets::m_pListaActiva->size() > 0) {
147
TContratoWidgets* pC = (*TContratableWidgets::m_pListaActiva->begin());
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];
155
pC->m_EstadoOverlays[itOverlays->indice] = false;
157
pC->m_pEntorno->GetControladorEventos()->ProcesarEvento(new GNKVisualizator::Eventos::EventoMostrarOverlay(TContratableWidgets::m_pVistaActiva,(*itOverlays)));
163
void GNKVisualizator::HerramientaOverlays::SolicitarActivacion()
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;
175
void GNKVisualizator::HerramientaOverlays::SetVistaActiva(GNC::GCS::IVista* pVista) {
176
TContratableWidgets::EstablecerVistaActiva(pVista);
177
GTRACE("GNC::HerramientaReset::EstablecerVistaActiva(pVista);::SetVistaActiva(" << pVista << ")");
180
// FIXME: Aviso!!!! para que funcione deben contratarse contratos pareados obligatorios y en el mismo orden
181
void GNKVisualizator::HerramientaOverlays::ConectarContratos(bool )
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;