3
* $Id: herramientadesencajar.cpp 3526 2011-03-16 19:56:19Z 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 <main/gui/mainwindow/ventanaprincipal.h>
18
#include "herramientadesencajar.h"
20
#include <api/globals.h>
21
#include <api/internacionalizacion.h>
22
#include <main/entorno.h>
23
#include <main/controllers/controladorlog.h>
24
#include <resources/ginkgoresourcemanager.h>
25
#include <api/icontextoestudio.h>
27
//----------------------------------------------------------------------
28
#define ACTIVAR_RESET 1246
32
class EventHandlerDesencajar: public wxEvtHandler {
34
EventHandlerDesencajar(wxWindow* pParent, GNC::HerramientaDesencajar* pHerramienta):wxEvtHandler()
37
m_pHerramienta=pHerramienta;
38
m_pParent->Connect(ACTIVAR_RESET, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( EventHandlerDesencajar::OnActivarDesencajarClick),NULL,this);
39
m_pParent->Connect(ACTIVAR_RESET, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(EventHandlerDesencajar::OnUpdateResetUI),NULL,this);
42
~EventHandlerDesencajar()
44
m_pParent->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( EventHandlerDesencajar::OnActivarDesencajarClick),NULL,this);
45
m_pParent->Disconnect(wxID_ANY, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(EventHandlerDesencajar::OnUpdateResetUI),NULL,this);
47
m_pHerramienta = NULL;
50
void OnActivarDesencajarClick( wxCommandEvent& event )
52
m_pHerramienta->SolicitarActivacion();
56
void OnUpdateResetUI(wxUpdateUIEvent& event) {
57
event.Enable(m_pHerramienta->EstaHabilitada());
58
if(m_pHerramienta->IsDesencajada())
60
event.SetText(_("Fit View"));
62
event.SetText(_("Disengage View"));
66
GNC::HerramientaDesencajar* m_pHerramienta;
71
class MenuHerramientaDesencajar : public wxMenuItem {
73
MenuHerramientaDesencajar(wxWindow* pParent, wxMenu* pMenuPadre, GNC::HerramientaDesencajar* pHerramienta):wxMenuItem(pMenuPadre,ACTIVAR_RESET,wxT("Resetear Window Level y Zoom"),wxT("Resetear Window Level y Zoom"),wxITEM_NORMAL) {
74
pEventHandler = new EventHandlerDesencajar(pParent,pHerramienta);
76
SetBitmaps(GinkgoResourcesManager::IconosMenus::GetIcoReset());
78
// SetBitmap(GinkgoResourcesManager::BarraRejilla::GetIcoVerRejilla());
82
~MenuHerramientaDesencajar() {
83
if(pEventHandler != NULL) {
89
EventHandlerDesencajar* pEventHandler;
95
GNC::HerramientaDesencajar::HerramientaDesencajar()
97
m_Descripcion = _Std("Disengage");
99
m_Icono = GinkgoResourcesManager::IconosHerramientas::GetIcoDesencajar();
102
GNC::HerramientaDesencajar::~HerramientaDesencajar()
106
bool GNC::HerramientaDesencajar::AppendInMenu(wxWindow* pParent, wxMenu* pMenuParent)
108
pMenuParent->Append(new GNC::GUI::MenuHerramientaDesencajar(pParent,pMenuParent,this));
112
//region "Realizacion de la interfaz IHerramienta"
114
void GNC::HerramientaDesencajar::CrearPaneles( wxPanel* /*pParent*/ )
116
m_pAbstractPanelHerramientaOpciones = NULL;
119
bool GNC::HerramientaDesencajar::EstaHabilitada()
121
return m_pVistaActiva != NULL;
124
void GNC::HerramientaDesencajar::SolicitarActivacion()
126
Desencajar(m_pVistaActiva);
129
void GNC::HerramientaDesencajar::Desencajar(GNC::GCS::IVista* pVista)
131
if (pVista != NULL) {
132
GNC::Entorno::Instance()->GetVentanaPrincipal()->EncajarDesencajar(pVista);
136
bool GNC::HerramientaDesencajar::IsDesencajada()
138
//si el padre de la vistapadre de la vista es un dialogo esta desencajada si no no
140
if(m_pVistaActiva != NULL)
142
wxWindow* pVentana = m_pVistaActiva->GetWindow();
143
if(pVentana != NULL) {
144
wxWindow* pVentanaPadre = pVentana->GetParent();
145
if(pVentanaPadre != NULL) {
146
wxFrame* pdlg = dynamic_cast<wxFrame*>(pVentanaPadre);
156
LOG_WARN("Core/HerramientaDesencajar", "Error al obtener la ventana asociada a la vista para comprobar encaje. Incosistencia interna");
160
//LOG_WARN("Core/HerramientaDesencajar", "Comprobacion de encaje incosistente");
166
void GNC::HerramientaDesencajar::ConectarContratoFalso(bool ) {
167
if (m_pListaActiva == NULL) {
168
//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;
174
void GNC::HerramientaDesencajar::SetVistaActiva(GNC::GCS::IVista* pVista) {
175
EstablecerVistaActiva(pVista);
176
GTRACE("GNC::HerramientaDesencajar::EstablecerVistaActiva(pVista)::SetVistaActiva(" << pVista << ")");
179
// FIXME: Aviso!!!! para que funcione deben contratarse contratos pareados obligatorios y en el mismo orden
180
void GNC::HerramientaDesencajar::ConectarContratos(bool )
182
if (m_pListaActiva == NULL) {
183
std::cerr << "Error: Se trataron de conectar contratos sin haber asignado la vista activa. Error en la logica de activacion. Accion ignorada" << std::endl;