#include <wx/splitter.h>
#include <wx/gdicmn.h>
#include <boost/date_time/gregorian/gregorian.hpp>
-
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
//=====================================================================
namespace creaImageIO
{
// mSplitter = new wxSplitterWindow( this , -1);
// Global sizer
- wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
+ msizer = new wxBoxSizer(wxHORIZONTAL);
int ctrl_style = wxLC_REPORT | wxLC_VRULES;
int col_style = wxLIST_FORMAT_LEFT;
Connect( mFilterID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnPopupFilter) );
+ ////SubMenuItem EXPORT
+ subExportMenu = new wxMenu;
+ wxMenuItem *subExp1 = subExportMenu->Append(wxID_ANY, _T("&Export to Storage"));
+ Connect( subExp1->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnExportToStorage) );
//ItemMenu
menuItem =new wxMenu;
wxMenuItem* m1Item=menuItem->Append(wxID_ANY, _T("&Anonymize"));
wxMenuItem* m2Item=menuItem->Append(wxID_ANY, _T("&Local Copy"));
wxMenuItem* m3Item=menuItem->Append(wxID_ANY, _T("&Edit Fields"));
-
+ wxMenuItem* m4Item=menuItem->Append(wxID_ANY, _T("&Display Dicom Tags"));
+ menuItem->AppendSubMenu(subExportMenu, wxT("&Export"));
+
mAnonymizingID=m1Item->GetId();
mLocalCopyID=m2Item->GetId();
mEditFieldID=m3Item->GetId();
+ mDumpID=m4Item->GetId();
+
//Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymize) );
Connect( mLocalCopyID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnLocalCopy) );
Connect( mEditFieldID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnEditField) );
+ Connect( mDumpID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnDumpTags) );
+
#endif // wxUSE_MENUS
/// Initialize the first level splitter
- sizer->Add( mLevelList[0].wxSplitter ,1, wxGROW ,0);
+ msizer->Add( mLevelList[0].wxSplitter ,1, wxGROW ,0);
// mColumnSelected=1;
mLastSelected=0;
mLastLevel=0;
//CreateColorPalette();
UpdateLevel(1);
- SetSizer( sizer );
+ SetSizer( msizer );
SetAutoLayout(true);
Layout();
//=====================================================================
///Removes selected nodes on last selected level
// NOT SPECIFIC
- void WxTreeView::RemoveSelected()
+ void WxTreeView::RemoveSelected(std::string &i_save)
{
- unsigned int tempLevel = mLastLevel;
+ bool erase=false;
+
+ unsigned int tempLevel = mLastLevel;
mLastLevel+=1;
const std::vector<tree::Node*>& sel=GetSelected(mLastLevel+1);
// if no selection, no remove action.
if(sel.size() != 0)
{
- bool erase=false;
+
std::stringstream out;
std::string levelName=GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName();
out<<"Delete ";
mLastLevel = tempLevel;
}
+ if (erase && mLastLevel == 1 && i_save == "0")
+ {
+
+ RemoveAlertDlg *dial = new RemoveAlertDlg(this, crea::std2wx("Remove files"), wxSize(370,100));
+ //dial->ShowModal();
+ if (dial->ShowModal() == wxID_OK)
+ {
+ i_save = dial->isChecked() == false? "0" : "1";
+ }
+
+ }
}
GetGimmickView()->CreateEditFieldsDialog(node,names,keys);
}
}
+
+ //================================================================
+
+ //================================================================
+
+ void WxTreeView::OnExportToStorage(wxCommandEvent &event)
+ {
+ std::vector<std::string> filesname;
+ std::vector<tree::Node*> nodes;
+ nodes.push_back(((ItemData*)GetCtrl(mLastRightLevel)->GetItemData(mLastRightSelected))->node);
+ GetFilenamesAsString(nodes,filesname);
+ GetGimmickView()->ExportToStorage(filesname);
+ }
+
+ //================================================================
+
+ //================================================================
+
+ void WxTreeView::OnDumpTags(wxCommandEvent &event)
+ {
+ if(mLastRightSelected!=-1)
+ {
+ tree::Node* node=((ItemData*)GetCtrl(mLastRightLevel)->GetItemData(mLastRightSelected))->node;
+ tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a;
+ std::vector<std::string> names;
+ std::vector<std::string> keys;
+ for (a = GetTreeHandler()->GetTree().GetAttributeDescriptorList(mLastRightLevel+1).begin();
+ a != GetTreeHandler()->GetTree().GetAttributeDescriptorList(mLastRightLevel+1).end();
+ ++a)
+ {
+ if(a->GetKey()=="FullFileName")
+ {
+ GetGimmickView()->DumpTags(node->GetAttribute("FullFileName"));
+ return;
+ }
+ }
+ }
+ }
+
+
//================================================================
//================================================================
if(event.GetKeyCode() == WXK_DELETE)
{
wxBusyCursor busy;
-
- RemoveSelected();
+ std::string temp = "0";
+ RemoveSelected(temp);
GetGimmickView()->ClearSelection();
}
return !found;
}
+ //================================================================
+ //================================================================
+
+ RemoveAlertDlg::RemoveAlertDlg(wxWindow *parent,
+ wxString title,
+ const wxSize& size)
+ : wxDialog( parent,
+ wxID_ANY,
+ title,
+ wxDefaultPosition,
+ size,
+ wxDEFAULT_DIALOG_STYLE)
+ {
+ wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
+
+ //std::string out("To reload deleted patient, you should synchronize your database before."); // JPR
+ //wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY,crea::std2wx(out),wxDefaultPosition, wxSize(500,20));
+ wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY,
+ _T("To reload deleted patient, you should synchronize your database before."),
+ wxDefaultPosition, wxSize(500,20));
+ mcheck = new wxCheckBox(this, 5478, _T("Do not display this warning again!"));
+ Connect( mcheck->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &RemoveAlertDlg::onCheck );
+ wxSizer* buttonsSizer = this->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
+
+ topsizer->Add(text);
+ topsizer->Add(mcheck,0,wxGROW);
+ topsizer->Add(buttonsSizer,0,wxGROW);
+ SetSizer(topsizer, true);
+ mSave = false;
+ Layout();
+ }
+ RemoveAlertDlg::~RemoveAlertDlg(){};
+ bool RemoveAlertDlg::isChecked()
+ {
+ return mSave;
+ }
+ void RemoveAlertDlg::onCheck(wxCommandEvent &Event)
+ {
+ mSave = mcheck->IsChecked();
+ }
+
//================================================================
//================================================================