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

« back to all changes in this revision

Viewing changes to src/cadxcore/main/tools/herramientadesencajar.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: herramientadesencajar.cpp 3526 2011-03-16 19:56:19Z 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/wx.h>
 
16
#include <wx/menu.h>
 
17
#include <main/gui/mainwindow/ventanaprincipal.h>
 
18
#include "herramientadesencajar.h"
 
19
 
 
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>
 
26
 
 
27
//----------------------------------------------------------------------
 
28
#define ACTIVAR_RESET  1246
 
29
 
 
30
namespace GNC {
 
31
        namespace GUI {
 
32
                class EventHandlerDesencajar: public wxEvtHandler {
 
33
                public:
 
34
                        EventHandlerDesencajar(wxWindow* pParent, GNC::HerramientaDesencajar* pHerramienta):wxEvtHandler()
 
35
                        {
 
36
                                m_pParent = pParent;
 
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);
 
40
                        }
 
41
 
 
42
                        ~EventHandlerDesencajar()
 
43
                        {
 
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);
 
46
                                m_pParent = NULL;
 
47
                                m_pHerramienta = NULL;
 
48
                        }
 
49
 
 
50
                        void OnActivarDesencajarClick( wxCommandEvent& event )
 
51
                        {
 
52
                                m_pHerramienta->SolicitarActivacion();
 
53
                                event.Skip(false);
 
54
                        }
 
55
 
 
56
                        void OnUpdateResetUI(wxUpdateUIEvent& event) {
 
57
                                event.Enable(m_pHerramienta->EstaHabilitada());
 
58
                                if(m_pHerramienta->IsDesencajada())
 
59
                                {
 
60
                                        event.SetText(_("Fit View"));
 
61
                                } else {
 
62
                                        event.SetText(_("Disengage View"));
 
63
                                }
 
64
                        }
 
65
 
 
66
                        GNC::HerramientaDesencajar* m_pHerramienta;
 
67
                        wxWindow* m_pParent;
 
68
                };
 
69
 
 
70
 
 
71
                class MenuHerramientaDesencajar : public wxMenuItem {
 
72
                public:
 
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);
 
75
#ifdef __WXMSW__
 
76
                                SetBitmaps(GinkgoResourcesManager::IconosMenus::GetIcoReset());
 
77
                                //#else
 
78
                                //      SetBitmap(GinkgoResourcesManager::BarraRejilla::GetIcoVerRejilla());
 
79
#endif
 
80
                        }
 
81
 
 
82
                        ~MenuHerramientaDesencajar() {
 
83
                                if(pEventHandler != NULL) {
 
84
                                        delete pEventHandler;
 
85
                                        pEventHandler = NULL;
 
86
                                }
 
87
                        }
 
88
 
 
89
                        EventHandlerDesencajar* pEventHandler;
 
90
                };
 
91
        }
 
92
}
 
93
 
 
94
 
 
95
GNC::HerramientaDesencajar::HerramientaDesencajar()
 
96
{
 
97
        m_Descripcion = _Std("Disengage");
 
98
        m_IsMenu = true;
 
99
        m_Icono = GinkgoResourcesManager::IconosHerramientas::GetIcoDesencajar();
 
100
}
 
101
 
 
102
GNC::HerramientaDesencajar::~HerramientaDesencajar()
 
103
{
 
104
}
 
105
 
 
106
bool GNC::HerramientaDesencajar::AppendInMenu(wxWindow* pParent, wxMenu* pMenuParent)
 
107
{
 
108
        pMenuParent->Append(new GNC::GUI::MenuHerramientaDesencajar(pParent,pMenuParent,this));
 
109
        return true;
 
110
}
 
111
 
 
112
//region "Realizacion de la interfaz IHerramienta"
 
113
 
 
114
void GNC::HerramientaDesencajar::CrearPaneles( wxPanel* /*pParent*/ )
 
115
{
 
116
        m_pAbstractPanelHerramientaOpciones =  NULL;
 
117
}
 
118
 
 
119
bool GNC::HerramientaDesencajar::EstaHabilitada()
 
120
{
 
121
        return m_pVistaActiva != NULL;
 
122
}
 
123
 
 
124
void GNC::HerramientaDesencajar::SolicitarActivacion()
 
125
{
 
126
        Desencajar(m_pVistaActiva);
 
127
}
 
128
 
 
129
void GNC::HerramientaDesencajar::Desencajar(GNC::GCS::IVista* pVista)
 
130
{
 
131
        if (pVista != NULL) {
 
132
                GNC::Entorno::Instance()->GetVentanaPrincipal()->EncajarDesencajar(pVista);
 
133
        }
 
134
}
 
135
 
 
136
bool GNC::HerramientaDesencajar::IsDesencajada()
 
137
{
 
138
        //si el padre de la vistapadre de la vista es un dialogo esta desencajada si no no
 
139
 
 
140
        if(m_pVistaActiva != NULL)
 
141
        {
 
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);
 
147
                                if(pdlg != NULL) {
 
148
                                        return true;
 
149
                                }
 
150
                                else {
 
151
                                        return false;
 
152
                                }
 
153
                        }
 
154
                }
 
155
                else {
 
156
                        LOG_WARN("Core/HerramientaDesencajar", "Error al obtener la ventana asociada a la vista para comprobar encaje. Incosistencia interna");
 
157
                }
 
158
        }
 
159
        else {
 
160
                //LOG_WARN("Core/HerramientaDesencajar", "Comprobacion de encaje incosistente");
 
161
        }
 
162
        return false;
 
163
 
 
164
}
 
165
 
 
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;
 
169
                return;
 
170
        }
 
171
 
 
172
}
 
173
 
 
174
void GNC::HerramientaDesencajar::SetVistaActiva(GNC::GCS::IVista* pVista) {
 
175
        EstablecerVistaActiva(pVista);
 
176
        GTRACE("GNC::HerramientaDesencajar::EstablecerVistaActiva(pVista)::SetVistaActiva(" <<  pVista << ")");
 
177
}
 
178
 
 
179
// FIXME: Aviso!!!! para que funcione deben contratarse contratos pareados obligatorios y en el mismo orden
 
180
void GNC::HerramientaDesencajar::ConectarContratos(bool )
 
181
{
 
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;
 
184
                return;
 
185
        }
 
186
 
 
187
}
 
188
 
 
189
//endregion
 
190
 
 
191