/* # --------------------------------------------------------------------- # # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image # pour la Santé) # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton # # This software is governed by the CeCILL-B license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL-B # license as circulated by CEA, CNRS and INRIA at the following URL # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html # or in the file LICENSE.txt. # # As a counterpart to the access to the source code and rights to copy, # modify and redistribute granted by the license, users are provided only # with a limited warranty and the software's author, the holder of the # economic rights, and the successive licensors have only limited # liability. # # The fact that you are presently reading this means that you have had # knowledge of the CeCILL-B license and that you accept its terms. # ------------------------------------------------------------------------ */ /*========================================================================= Program: bbtkGEditor Module: $RCSfile$ Language: C++ Date: $Date$ Version: $Revision$ =========================================================================*/ /* --------------------------------------------------------------------- * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux, Ricardo A Corredor * * This software is governed by the CeCILL-B license under French law and * abiding by the rules of distribution of free software. You can use, * modify and/ or redistribute the software under the terms of the CeCILL-B * license as circulated by CEA, CNRS and INRIA at the following URL * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html * or in the file LICENSE.txt. * * As a counterpart to the access to the source code and rights to copy, * modify and redistribute granted by the license, users are provided only * with a limited warranty and the software's author, the holder of the * economic rights, and the successive licensors have only limited * liability. * * The fact that you are presently reading this means that you have had * knowledge of the CeCILL-B license and that you accept its terms. * ------------------------------------------------------------------------ */ /** * \file * \brief Class bbtk::wxDiagramPropertiesEditionDialog . */ #include "wxDiagramPropertiesEditionDialog.h" #include "creaWx.h" namespace bbtk { //========================================================================= wxDiagramPropertiesEditionDialog::wxDiagramPropertiesEditionDialog(wxGUIEditorGraphicBBS *parent, NodeTreeC tree):wxDialog(parent,wxID_ANY,_T("Diagram Properties"), wxDefaultPosition, wxSize(500, 650),wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { _parent = parent; _tree = tree; constructDiagramPropertiesEditionDialog(); } //========================================================================= wxDiagramPropertiesEditionDialog::~wxDiagramPropertiesEditionDialog() { } //========================================================================= void wxDiagramPropertiesEditionDialog::constructBoxTree(NodeTreeC nodeTree, wxTreeItemId itemId) { for(int i = 0 ; i < nodeTree.childs.size() ; i++) { string spc = nodeTree.childs[i].data; const char* ccc = spc.c_str(); wxString pc = wxString::FromUTF8 (ccc); wxTreeItemId iId = _treeBox->AppendItem(itemId, pc, -1, -1, NULL); constructBoxTree(nodeTree.childs[i], iId ); } } //================================================================================== void wxDiagramPropertiesEditionDialog::constructDiagramPropertiesEditionDialog() { const int ID_COMBO = 1; wxPanel *panel = new wxPanel(this, -1); wxBoxSizer *hbox = new wxBoxSizer(wxHORIZONTAL); wxFlexGridSizer *fgsizer = new wxFlexGridSizer(5, 2, 9, 25); //CFT wxStaticText *tree = new wxStaticText(panel, -1, wxT("Tree of Box")); string sp = _tree.data; const char* cc = sp.c_str(); wxString p = wxString::FromUTF8 (cc); _treeBox = new wxTreeCtrl (this, wxID_ANY, wxPoint(0,0), wxSize(320,300), wxTR_HAS_BUTTONS | wxTR_SINGLE ); wxTreeItemId itemId = _treeBox->AddRoot(p, -1,-1,NULL); constructBoxTree(_tree, itemId); _treeBox->ExpandAll(); //_tree.treeTour(0); //CFT END //CFT //COMBOBOX OF MESSAGE /* Kind Level Nature Interpreter 0 Messages of the interpreter all 0 Minimum level for all kind of messages change 0 Box i/o changes related messages code 0 If positive then codes of the messages are displayed config 0 Configuration related messages connection 0 Connections related messages data 0 Data related messages debug 0 Debug messages echo 1 Level>0 : Prints the output of the 'print' commands of the user. Level>1 : Prints the command being interpreted error 0 Error messages gui 0 Graphical user interface related messages help 1 Help messages kernel 0 Messages generated by the core classes of the lib max 9 Maximum level for all kind of messages object 0 object memory related messages output 1 Output messages package 0 Packages related messages process 0 Messages related to box processing qt 0 Qt related messages warning 1 Warning messages widget 0 Widgets related messages wx */ _diagramMessageKind = new wxComboBox(panel, -1, wxEmptyString, wxDefaultPosition, wxSize(100,-1) ); _diagramMessageKind->Append (wxT("Interpreter")); _diagramMessageKind->Append (wxT("all")); _diagramMessageKind->Append (wxT("change")); _diagramMessageKind->Append (wxT("code")); _diagramMessageKind->Append (wxT("config")); _diagramMessageKind->Append (wxT("connection")); _diagramMessageKind->Append (wxT("data")); _diagramMessageKind->Append (wxT("debug")); _diagramMessageKind->Append (wxT("echo")); _diagramMessageKind->Append (wxT("error")); _diagramMessageKind->Append (wxT("help")); _diagramMessageKind->Append (wxT("kernel")); _diagramMessageKind->Append (wxT("max")); _diagramMessageKind->Append (wxT("object")); _diagramMessageKind->Append (wxT("output")); _diagramMessageKind->Append (wxT("package")); _diagramMessageKind->Append (wxT("process")); _diagramMessageKind->Append (wxT("qt")); _diagramMessageKind->Append (wxT("warning")); _diagramMessageKind->Append (wxT("widget")); _diagramMessageKind->Append (wxT("wx")); _diagramMessageKind->SetEditable(false); _diagramMessageLevel = new wxComboBox(panel, -1, wxEmptyString, wxDefaultPosition, wxSize(100,-1) ); _diagramMessageLevel->Append (wxT("0")); _diagramMessageLevel->Append (wxT("1")); _diagramMessageLevel->Append (wxT("2")); _diagramMessageLevel->Append (wxT("3")); _diagramMessageLevel->Append (wxT("4")); _diagramMessageLevel->Append (wxT("5")); _diagramMessageLevel->Append (wxT("6")); _diagramMessageLevel->Append (wxT("7")); _diagramMessageLevel->Append (wxT("8")); _diagramMessageLevel->Append (wxT("9")); _diagramMessageLevel->SetEditable(false); //CFT END // SELECTION CONSTANTS // 0 - Application // 1 - Complex box _diagramType = new wxComboBox(panel, -1, wxEmptyString, wxDefaultPosition, wxSize(100,-1) ); _diagramType->Append (wxT("Application")); _diagramType->Append (wxT("Complex box")); _diagramType->SetEditable(false); //_diagramType->Enable(false); Connect(ID_COMBO, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(wxDiagramPropertiesEditionDialog::OnComboBoxSelected)); int currentType = (_parent->isCurrentDiagramComplexBox()==false)? 0 : 1; _diagramType->Select(currentType); _diagramMessageKind->Select(currentType); _diagramMessageLevel->Select(currentType); wxStaticText *type = new wxStaticText(panel, -1, wxT("Type")); wxStaticText *author = new wxStaticText(panel, -1, wxT("Author")); wxStaticText *category = new wxStaticText(panel, -1, wxT("Categories")); wxStaticText *description = new wxStaticText(panel, -1, wxT("Description")); wxStaticText *messageKind = new wxStaticText(panel, -1, wxT("Message kind")); wxStaticText *messageLevel = new wxStaticText(panel, -1, wxT("Message level")); _txtAuthor = new wxTextCtrl(panel, -1); _txtCategory = new wxTextCtrl(panel, -1); _txtDescription = new wxTextCtrl(panel, -1, wxT(""), wxPoint(-1, -1), wxSize(-1, -1), wxTE_MULTILINE); wxButton *okButton = new wxButton(panel, -1, _T("Ok"),wxDefaultPosition, wxSize(-1, -1)); wxButton *closeButton = new wxButton(panel, -1, _T("Close"), wxDefaultPosition, wxSize(-1, -1)); // connect command event handlers Connect(okButton->GetId(),wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(wxDiagramPropertiesEditionDialog::onClickOk)); Connect(closeButton->GetId(),wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(wxDiagramPropertiesEditionDialog::onClickClose)); // Assign loaded values _txtAuthor->SetValue(crea::std2wx(_parent->getCurrentDiagramAuthor())); _txtCategory->SetValue(crea::std2wx(_parent->getCurrentDiagramCategory())); _txtDescription->SetValue(crea::std2wx(_parent->getCurrentDiagramDescription())); fgsizer->Add(type); fgsizer->Add(_diagramType, 1, wxEXPAND); fgsizer->Add(author); fgsizer->Add(_txtAuthor, 1, wxEXPAND); fgsizer->Add(category); fgsizer->Add(_txtCategory, 1, wxEXPAND); fgsizer->Add(description, 1, wxEXPAND); fgsizer->Add(_txtDescription, 1, wxEXPAND); //cft fgsizer->Add(messageKind); fgsizer->Add(_diagramMessageKind, 1, wxEXPAND); fgsizer->Add(messageLevel); fgsizer->Add(_diagramMessageLevel, 1, wxEXPAND); fgsizer->Add(tree); fgsizer->Add(_treeBox, 1, wxEXPAND); //cft end fgsizer->Add(okButton, 1, wxEXPAND); fgsizer->Add(closeButton, 1, wxEXPAND); fgsizer->AddGrowableRow(3, 1); fgsizer->AddGrowableCol(1, 1); hbox->Add(fgsizer, 1, wxALL | wxEXPAND, 15); panel->SetSizerAndFit(hbox); Centre(); ShowModal(); Destroy(); // Assign loaded values _txtAuthor->SetValue(crea::std2wx(_parent->getCurrentDiagramAuthor())); _txtCategory->SetValue(crea::std2wx(_parent->getCurrentDiagramCategory())); _txtDescription->SetValue(crea::std2wx(_parent->getCurrentDiagramDescription())); } //========================================================================= void wxDiagramPropertiesEditionDialog::onClickOk(wxCommandEvent& event) { printf("RaC wxDiagramPropertiesEditionDialog::onClickOk\n"); std::string txtAuthor = wx2std(_txtAuthor->GetValue()); std::string txtCategory = wx2std(_txtCategory->GetValue()); std::string txtDescription = wx2std(_txtDescription->GetValue()); _parent->setCurrentDiagramAuthor(txtAuthor); _parent->setCurrentDiagramCategory(txtCategory); _parent->setCurrentDiagramDescription(txtDescription); // SELECTION CONSTANTS // 0 - Application // 1 - Complex box int selection = _diagramType->GetSelection(); if(selection == 0) _parent->disableComplexBox(); else if (selection == 1) _parent->enableComplexBox(); //Message std::string kindSelected = wx2std(_diagramMessageKind->GetStringSelection()); std::string levelSelected = wx2std(_diagramMessageLevel->GetStringSelection()); _parent->setCurrentDiagramMessageKind(kindSelected); _parent->setCurrentDiagramMessageLevel(levelSelected); Close(true); } //========================================================================= void wxDiagramPropertiesEditionDialog::onClickClose(wxCommandEvent& event) { printf("RaC wxDiagramPropertiesEditionDialog::onClickClose\n"); Close(true); } //========================================================================= void wxDiagramPropertiesEditionDialog::OnComboBoxSelected(wxCommandEvent& event) { // TODO Show info to edit complex boxes } //========================================================================= } // EO namespace bbtk