~ubuntu-branches/ubuntu/trusty/ginkgocadx/trusty

« back to all changes in this revision

Viewing changes to src/cadxcore/main/gui/dicombrowsercomponent.cpp

  • Committer: Package Import Robot
  • Author(s): Dmitry Smirnov
  • Date: 2013-07-21 11:58:53 UTC
  • mfrom: (1.2.1) (7.1.6 experimental)
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: package-import@ubuntu.com-20130721115853-0aii5ee76hxm8z1f
* New upstream release [July 2013]
  + new B-D: "libjsoncpp-dev".
  + new patch "unbundle-libjsoncpp.patch" to avoid building bundled
    "libjsoncpp-dev".
  + new patch "fix-wx.patch" to avoid FTBFS due to missing
    "-lwx_gtk2u_html-2.8".
* Removed unnecessary versioned Build-Depends.
* Removed obsolete lintian override.
* Reference get-orig-source implementation for orig.tar clean-up and
  DFSG-repackaging.
* Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
2
*  
3
 
*  $Id: dicombrowsercomponent.cpp 4404 2011-11-15 09:41:03Z tovar $
 
3
*  $Id: dicombrowsercomponent.cpp $
4
4
*  Ginkgo CADx Project
5
5
*
6
 
*  Copyright 2008-10 MetaEmotion S.L. All rights reserved.
 
6
*  Copyright 2008-12 MetaEmotion S.L. All rights reserved.
7
7
*  http://ginkgo-cadx.com
8
8
*
9
9
*  This file is licensed under LGPL v3 license.
31
31
 
32
32
#include <main/entorno.h>
33
33
#include <main/controllers/controladorextensiones.h>
34
 
#include <main/controllers/controladorcomandos.h>
 
34
#include <main/controllers/commandcontroller.h>
35
35
#include <main/controllers/pacscontroller.h>
36
36
#include <commands/comandoincluirhistorial.h>
37
37
#include <api/dicom/imodelodicom.h>
38
 
#include <resources/ginkgoresourcemanager.h>
39
 
#include <api/icontextoestudio.h>
 
38
#include <resources/ginkgoresourcesmanager.h>
40
39
 
41
40
#define ICONO_ESTUDIO 0
42
41
#define ICONO_SERIE 1
57
56
                //datos de los nodos...
58
57
                class wxPathsNodo: public wxTreeItemData {
59
58
                public:
60
 
                        wxPathsNodo(const std::string& uid, bool isDiagnostic) {
61
 
                                m_uid = uid;
62
 
                                m_isDiagnostic = isDiagnostic;
 
59
                        wxPathsNodo(const std::string& uid, bool isDiagnostic) :
 
60
                                        m_pListaPaths(),
 
61
                                        m_uid(uid),
 
62
                                        m_isDiagnostic(isDiagnostic)
 
63
                        {
 
64
                                
63
65
                        }
 
66
 
64
67
                        ~wxPathsNodo() {
65
68
                                m_pListaPaths.clear();
66
69
                        }
67
 
                        wxPathsNodo(const wxPathsNodo& otro)
 
70
 
 
71
                        wxPathsNodo(const wxPathsNodo& otro) :
 
72
                                        m_pListaPaths(otro.m_pListaPaths),
 
73
                                        m_uid(otro.m_uid),
 
74
                                        m_isDiagnostic(otro.m_isDiagnostic)
68
75
                        {
69
 
                                this->m_pListaPaths = otro.m_pListaPaths;
70
 
                                this->m_uid = otro.m_uid;
71
 
                                this->m_isDiagnostic = otro.m_isDiagnostic;
72
76
                        }
 
77
 
73
78
                        std::list<std::string> m_pListaPaths;
74
79
                        std::string m_uid;
75
80
                        bool m_isDiagnostic;
160
165
                                if ( !GetData() )
161
166
                                        return wxDragNone;
162
167
 
163
 
                                wxDicomDirDnD *dobj = (wxDicomDirDnD *)m_dataObject;
 
168
                                wxDicomDirDnD *dobj = static_cast<wxDicomDirDnD*>(m_dataObject);
164
169
                                return (dobj->ArrancaIzquierda() && m_aceptaIzquierda) || (!dobj->ArrancaIzquierda() && !m_aceptaIzquierda) ? def : wxDragNone;
165
170
                        }
166
171
 
174
179
                        DicomBrowserComponentBase(parent,winid,pos,size,style)
175
180
                {
176
181
                        m_pImageList = new wxImageList(SIZE_ICONOS,SIZE_ICONOS,true);
177
 
                        m_pImageList->Add(GinkgoResourcesManager::PanelHistorial::GetIcoEstudio());
178
 
                        m_pImageList->Add(GinkgoResourcesManager::PanelHistorial::GetIcoSerie());
179
 
                        m_pImageList->Add(GinkgoResourcesManager::PanelHistorial::GetIcoHombre());
180
 
                        m_pImageList->Add(GinkgoResourcesManager::PanelHistorial::GetIcoMujer());
181
 
                        m_pImageList->Add(GinkgoResourcesManager::PanelHistorial::GetIcoOtro());
182
 
                        m_pImageList->Add(GinkgoResourcesManager::PanelHistorial::GetIcoFicheroClave());
 
182
                        m_pImageList->Add(GinkgoResourcesManager::History::GetIcoEstudio());
 
183
                        m_pImageList->Add(GinkgoResourcesManager::History::GetIcoSerie());
 
184
                        m_pImageList->Add(GinkgoResourcesManager::History::GetIcoHombre());
 
185
                        m_pImageList->Add(GinkgoResourcesManager::History::GetIcoMujer());
 
186
                        m_pImageList->Add(GinkgoResourcesManager::History::GetIcoOtro());
 
187
                        m_pImageList->Add(GinkgoResourcesManager::History::GetIcoFicheroClave());
183
188
                        m_pTreeListIzq->SetImageList(m_pImageList);
184
189
                        m_pTreeListIzq->SetMainColumn(0);
185
190
 
213
218
 
214
219
                        wxTreeItemId topTreeId = m_pTreeListIzq->AddRoot(wxT("Top"));
215
220
 
216
 
                        for (IModeloDicom::ListaPacientesType::const_iterator it = modelo.ListaPacientes().begin(); it != modelo.ListaPacientes().end(); it++) {
 
221
                        for (IModeloDicom::ListaPacientesType::const_iterator it = modelo.ListaPacientes().begin(); it != modelo.ListaPacientes().end(); ++it) {
217
222
                                const IModeloPaciente& p = *it;
218
223
                                std::string pacienteNombre =p.GetNombre() + " (" + p.GetUID() + ")";
219
224
                                wxString nombrePaciente = wxString::FromUTF8(pacienteNombre.c_str());
242
247
                                m_pTreeListIzq->SetItemImage(pacienteTreeId,icono,wxTreeItemIcon_SelectedExpanded);
243
248
 
244
249
                                //ESTUDIOS
245
 
                                for (IModeloPaciente::ListaEstudiosType::const_iterator it2 = p.ListaEstudios().begin(); it2 != p.ListaEstudios().end(); it2++) {
 
250
                                for (IModeloPaciente::ListaEstudiosType::const_iterator it2 = p.ListaEstudios().begin(); it2 != p.ListaEstudios().end(); ++it2) {
246
251
                                        const IModeloEstudio& e = *it2;
247
252
                                        wxDateTime fecha;
248
253
                                        fecha.ParseFormat(wxString::FromUTF8(e.GetFecha().c_str()).GetData(), wxT("%Y%m%d"), wxDefaultDateTime);
278
283
                                        m_pTreeListIzq->SetItemImage(estudioTreeId,ICONO_ESTUDIO,wxTreeItemIcon_Expanded);
279
284
                                        m_pTreeListIzq->SetItemImage(estudioTreeId,ICONO_ESTUDIO,wxTreeItemIcon_SelectedExpanded);
280
285
 
281
 
                                        for (IModeloEstudio::ListaSeriesType::const_iterator it3 = e.ListaSeries().begin(); it3 != e.ListaSeries().end(); it3++) {
 
286
                                        for (IModeloEstudio::ListaSeriesType::const_iterator it3 = e.ListaSeries().begin(); it3 != e.ListaSeries().end(); ++it3) {
282
287
                                                const IModeloSerie& s = *it3;
283
288
                                                wxString uidSerie = wxString::FromUTF8(s.GetUID().c_str());
284
289
                                                wxString numeroDeImagenes = wxString::FromUTF8(s.GetNumero().c_str());
312
317
                                                m_pTreeListIzq->SetItemImage(serieTreeId,ICONO_SERIE,wxTreeItemIcon_SelectedExpanded);
313
318
 
314
319
                                                wxPathsNodo* pDatosAsociados = new wxPathsNodo(s.GetUID(), false);
315
 
                                                for(IModeloSerie::ListaImagenesType::const_iterator it4 = s.ListaImagenes().begin(); it4 != s.ListaImagenes().end(); it4++) {
 
320
                                                for(IModeloSerie::ListaImagenesType::const_iterator it4 = s.ListaImagenes().begin(); it4 != s.ListaImagenes().end(); ++it4) {
316
321
                                                        const IModeloImagen& i = *it4;
317
322
                                                        if(i.GetPathImagen() != "") {
318
323
                                                                pDatosAsociados->m_pListaPaths.push_back(i.GetPathImagen());
340
345
                {
341
346
                        wxTreeItemId topTreeId = m_pTreeListIzq->GetRootItem();
342
347
 
343
 
                        for (IModeloDicom::ListaPacientesType::const_iterator it = modelo.ListaPacientes().begin(); it != modelo.ListaPacientes().end(); it++) {
 
348
                        for (IModeloDicom::ListaPacientesType::const_iterator it = modelo.ListaPacientes().begin(); it != modelo.ListaPacientes().end(); ++it) {
344
349
                                const IModeloPaciente& p = *it;
345
350
                                std::string pacienteNombre =p.GetNombre() + " (" + p.GetUID() + ")";
346
351
                                wxString nombrePaciente = wxString::FromUTF8(pacienteNombre.c_str());
374
379
                                }
375
380
 
376
381
                                //ESTUDIOS
377
 
                                for (IModeloPaciente::ListaEstudiosType::const_iterator it2 = p.ListaEstudios().begin(); it2 != p.ListaEstudios().end(); it2++) {
 
382
                                for (IModeloPaciente::ListaEstudiosType::const_iterator it2 = p.ListaEstudios().begin(); it2 != p.ListaEstudios().end(); ++it2) {
378
383
                                        const IModeloEstudio& e = *it2;
379
384
                                        wxDateTime fecha;
380
385
                                        fecha.ParseFormat(wxString::FromUTF8(e.GetFecha().c_str()).GetData(), wxT("%Y%m%d"), wxDefaultDateTime);
491
496
                        if (idsSeleccionados.size() == 0) {
492
497
                                m_pTreeListIzq->GetSelections(idsSeleccionados);
493
498
                        }
494
 
                        for(wxArrayTreeItemIds::iterator it = idsSeleccionados.begin(); it!= idsSeleccionados.end(); it++) {
 
499
                        for(wxArrayTreeItemIds::iterator it = idsSeleccionados.begin(); it!= idsSeleccionados.end(); ++it) {
495
500
                                //se a�ade el nodo seleccionado al otro arbol.. se a�adira sus padres y todos sus hijos
496
501
                                wxArrayTreeItemIds listaPadres;
497
502
                                for (wxTreeItemId idPadre = m_pTreeListIzq->GetItemParent((*it)); idPadre != m_pTreeListIzq->GetRootItem(); idPadre = m_pTreeListIzq->GetItemParent(idPadre) ) {
510
515
                                                actualDer = m_pTreeListDer->AppendItem(padreDer, m_pTreeListIzq->GetItemText(actualIzq), m_pTreeListIzq->GetItemImage(actualIzq, wxTreeItemIcon_Normal), m_pTreeListIzq->GetItemImage(actualIzq, wxTreeItemIcon_Selected) );
511
516
                                                wxTreeItemData* pData = m_pTreeListIzq->GetItemData(actualIzq);
512
517
                                                if(pData != NULL) {
513
 
                                                        m_pTreeListDer->SetItemData( actualDer,new wxPathsNodo(*(wxPathsNodo*)(pData)) );
 
518
                                                        m_pTreeListDer->SetItemData( actualDer,new wxPathsNodo( *( static_cast<wxPathsNodo*>(pData) ) ));
514
519
                                                }
515
520
                                                for (int i = 1; i < m_pTreeListDer->GetColumnCount(); ++i) {
516
521
                                                        m_pTreeListDer->SetItemText( actualDer, i, m_pTreeListIzq->GetItemText(actualIzq,i) );
528
533
                                        actualDer = m_pTreeListDer->AppendItem(padreDer, m_pTreeListIzq->GetItemText(actualIzq), m_pTreeListIzq->GetItemImage(actualIzq, wxTreeItemIcon_Normal), m_pTreeListIzq->GetItemImage(actualIzq, wxTreeItemIcon_Selected) );
529
534
                                        wxTreeItemData* pData = m_pTreeListIzq->GetItemData(actualIzq);
530
535
                                        if(pData != NULL) {
531
 
                                                m_pTreeListDer->SetItemData( actualDer,new wxPathsNodo(*(wxPathsNodo*)(pData)) );
 
536
                                                m_pTreeListDer->SetItemData( actualDer, new wxPathsNodo( *( static_cast<wxPathsNodo*>(pData) ) ));
532
537
                                        }
533
538
                                        for (int i = 1; i < m_pTreeListDer->GetColumnCount(); ++i) {
534
539
                                                m_pTreeListDer->SetItemText( actualDer, i, m_pTreeListIzq->GetItemText(actualIzq,i) );
551
556
                        if (idsSeleccionados.size() == 0) {
552
557
                                m_pTreeListDer->GetSelections(idsSeleccionados);
553
558
                        }
554
 
                        for(wxArrayTreeItemIds::iterator it = idsSeleccionados.begin(); it!= idsSeleccionados.end(); it++) {
 
559
                        for(wxArrayTreeItemIds::iterator it = idsSeleccionados.begin(); it!= idsSeleccionados.end(); ++it) {
555
560
                                wxTreeItemId item = (*it);
556
561
                                if(item.IsOk()) {
557
562
                                        wxTreeItemId idPadre = m_pTreeListDer->GetItemParent(item);
672
677
                                        actualDer = m_pTreeListDer->AppendItem(padreDer, m_pTreeListIzq->GetItemText(actualIzq), m_pTreeListIzq->GetItemImage(actualIzq, wxTreeItemIcon_Normal), m_pTreeListIzq->GetItemImage(actualIzq, wxTreeItemIcon_Selected) );
673
678
                                        wxTreeItemData* pData = m_pTreeListIzq->GetItemData(actualIzq);
674
679
                                        if(pData != NULL) {
675
 
                                                m_pTreeListDer->SetItemData( actualDer,new wxPathsNodo(*(wxPathsNodo*)(pData)) );
 
680
                                                m_pTreeListDer->SetItemData( actualDer, new wxPathsNodo( *( static_cast<wxPathsNodo*>(pData) ) ) );
676
681
                                        }
677
682
                                        for (int i = 1; i < m_pTreeListDer->GetColumnCount(); ++i) {
678
683
                                                m_pTreeListDer->SetItemText( actualDer, i, m_pTreeListIzq->GetItemText(actualIzq,i) );
702
707
                        if(m_pTreeListDer->GetChildrenCount(id) == 0) {
703
708
                                wxTreeItemData* pDatos = m_pTreeListDer->GetItemData(id);
704
709
                                if(pDatos!=NULL){
705
 
                                        wxPathsNodo* pPaths = (wxPathsNodo*)  pDatos;
706
 
                                        for(std::list<std::string>::iterator it = pPaths->m_pListaPaths.begin(); it != pPaths->m_pListaPaths.end(); it++) {
 
710
                                        wxPathsNodo* pPaths = static_cast<wxPathsNodo*>(pDatos);
 
711
                                        for(std::list<std::string>::iterator it = pPaths->m_pListaPaths.begin(); it != pPaths->m_pListaPaths.end(); ++it) {
707
712
                                                listaPaths.insert((*it));
708
713
                                        }
709
714
                                }
722
727
                        if(m_pTreeListDer->GetChildrenCount(id) == 0) {
723
728
                                wxTreeItemData* pDatos = m_pTreeListDer->GetItemData(id);
724
729
                                if(pDatos!=NULL){
725
 
                                        wxPathsNodo* pPaths = (wxPathsNodo*)  pDatos;
 
730
                                        wxPathsNodo* pPaths = static_cast<wxPathsNodo*>(pDatos);
726
731
                                        if (pPaths->m_isDiagnostic == isDiagnostic) {
727
732
                                                seriesSet.insert(pPaths->m_uid);
728
733
                                        }
749
754
                                idPaciente = m_pTreeListDer->GetNextSibling(idPaciente);
750
755
                        }
751
756
 
752
 
                        for(std::set<std::string>::iterator it = conjuntoPaths.begin(); it != conjuntoPaths.end(); it++) {
 
757
                        for(std::set<std::string>::iterator it = conjuntoPaths.begin(); it != conjuntoPaths.end(); ++it) {
753
758
                                listaPaths.push_back((*it));
754
759
                        }
755
760
 
768
773
                                idPaciente = m_pTreeListDer->GetNextSibling(idPaciente);
769
774
                        }
770
775
 
771
 
                        for(std::set<std::string>::iterator it = seriesSet.begin(); it != seriesSet.end(); it++) {
 
776
                        for(std::set<std::string>::iterator it = seriesSet.begin(); it != seriesSet.end(); ++it) {
772
777
                                seriesList.push_back((*it));
773
778
                        }
774
779