X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxGUITextEditor.cxx;h=95901c4868fc6987f829983884f312a789ca7817;hb=296901b1b2cc279a1984c89e15435ac092ba5f4a;hp=e2f7fe46eada0f9f3346205ff88feac0f3089e44;hpb=fc399c5aab38ad24ea5d57552701411b4d805181;p=bbtk.git diff --git a/kernel/src/bbtkWxGUITextEditor.cxx b/kernel/src/bbtkWxGUITextEditor.cxx index e2f7fe4..95901c4 100644 --- a/kernel/src/bbtkWxGUITextEditor.cxx +++ b/kernel/src/bbtkWxGUITextEditor.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUITextEditor.cxx,v $ Language: C++ - Date: $Date: 2008/03/21 14:59:39 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/03/26 14:57:01 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -39,10 +39,20 @@ #include "icons/cc_new.xpm" #include "icons/cc_open.xpm" +#include "icons/cc_stop.xpm" #include "icons/cc_save.xpm" +#include "icons/cc_save_as.xpm" #include "icons/cc_run.xpm" #include "icons/cc_exit.xpm" +#include "../data/icons/wxart_new.xpm" +#include "../data/icons/wxart_fileopen.xpm" +#include "../data/icons/wxart_filesave.xpm" +#include "../data/icons/wxart_filesaveas.xpm" +#include "../data/icons/wxart_exefile.xpm" +#include "../data/icons/wxart_delete.xpm" +#include "../data/icons/wxart_down.xpm" +#include "../data/icons/wxart_eldel.xpm" namespace bbtk { @@ -193,7 +203,7 @@ namespace bbtk } } std::cout << "file [" << mName << "]" <SaveFile(mName); + mwxInputText->SaveFile(std2wx(mName)); mwxInputText->SetModified(false); } //================================================================ @@ -238,19 +248,42 @@ namespace bbtk // BUTTONS wxPanel *btnsCtrlPanel = new wxPanel(this,-1); wxBoxSizer *btnsSizer = new wxBoxSizer(wxHORIZONTAL); - + + /* wxBitmap bmp_new(cc_new_xpm); - mwxButtonNew = new wxBitmapButton( btnsCtrlPanel,ID_ButtonNew,bmp_new);//_T("New") ); - btnsSizer->Add( mwxButtonNew ); wxBitmap bmp_open(cc_open_xpm); - mwxButtonOpen = new wxBitmapButton( btnsCtrlPanel,ID_ButtonOpen,bmp_open);//,_T("Open") ); - btnsSizer->Add( mwxButtonOpen ); + wxBitmap bmp_close(cc_stop_xpm); wxBitmap bmp_save(cc_save_xpm); - mwxButtonSave = new wxBitmapButton( btnsCtrlPanel,ID_ButtonSave,bmp_save);//_T("Save") ); + wxBitmap bmp_saveas(cc_save_as_xpm); + wxBitmap bmp_run(cc_run_xpm); + */ + wxBitmap bmp_new(new_xpm); + wxBitmap bmp_open(fileopen_xpm); + wxBitmap bmp_close(eldel_xpm); + wxBitmap bmp_save(filesave_xpm); + wxBitmap bmp_saveas(filesaveas_xpm); + wxBitmap bmp_run(down_xpm); + + + wxSize btn_size(32,32); + mwxButtonNew = new wxBitmapButton( btnsCtrlPanel,ID_ButtonNew,bmp_new + ,wxDefaultPosition, btn_size); + btnsSizer->Add( mwxButtonNew ); + + mwxButtonOpen = new wxBitmapButton( btnsCtrlPanel,ID_ButtonOpen,bmp_open ,wxDefaultPosition, btn_size);//,_T("Open") ); + btnsSizer->Add( mwxButtonOpen ); + + mwxButtonClose = new wxBitmapButton( btnsCtrlPanel,ID_ButtonClose,bmp_close ,wxDefaultPosition, btn_size);//,_T("Open") ); + btnsSizer->Add( mwxButtonClose ); + + mwxButtonSave = new wxBitmapButton( btnsCtrlPanel,ID_ButtonSave,bmp_save ,wxDefaultPosition, btn_size);//_T("Save") ); btnsSizer->Add( mwxButtonSave ); - wxBitmap bmp_run(cc_run_xpm); - mwxButtonRun = new wxBitmapButton( btnsCtrlPanel,ID_ButtonRun,bmp_run);//_T("Run") ); + mwxButtonSaveAs = new wxBitmapButton( btnsCtrlPanel,ID_ButtonSaveAs,bmp_saveas ,wxDefaultPosition, btn_size);//_T("Save") ); + btnsSizer->Add( mwxButtonSaveAs ); + + + mwxButtonRun = new wxBitmapButton( btnsCtrlPanel,ID_ButtonRun,bmp_run ,wxDefaultPosition, btn_size);//_T("Run") ); btnsSizer->Add( mwxButtonRun ); /* wxBitmap bmp_quit(cc_exit_xpm); @@ -279,6 +312,7 @@ namespace bbtk WxGUITextEditor::~WxGUITextEditor() { m_mgr.UnInit(); + // delete mInterpreter; } //================================================================ @@ -352,14 +386,67 @@ namespace bbtk } //================================================================ + //================================================================ + void WxGUITextEditor::OnButtonClose(wxCommandEvent& event) + { + CloseCurrentPage(); + } + //================================================================ + + //================================================================ + bool WxGUITextEditor::CloseCurrentPage() + { + std::cout << "-------------- CLOSE ---------------"<GetPageCount()==0) return true; + if (GetCurrentPage()->IsModified()) + { + wxString mess = std2wx(GetCurrentPage()->GetPageName()); + mess += _T(" modified. Save it ?"); + wxMessageDialog* d = + new wxMessageDialog(this, + mess, + _T("Save buffer"), + wxYES_NO | wxCANCEL | wxICON_QUESTION); + switch (d->ShowModal()) + { + case wxID_CANCEL : + return false; + break; + case wxID_YES : + GetCurrentPage()->Save(mFileNameFilter); + break; + case wxID_NO : ; + } + } + mwxNotebook->DeletePage(mwxNotebook->GetSelection()); + FocusOnCurrentPage(); + return true; + } + //================================================================ + + //================================================================ + bool WxGUITextEditor::CloseAllPages() + { + bool ok = true; + while (mwxNotebook->GetPageCount()!=0) + { + if (!CloseCurrentPage()) + { + ok = false; + break; + } + } + return ok; + } + //================================================================ + //================================================================ void WxGUITextEditor::OnButtonSave(wxCommandEvent& event) { - Save(); + SaveCurrentPage(); } - void WxGUITextEditor::Save() + void WxGUITextEditor::SaveCurrentPage() { - std::cout << "-------------- SAVE ---------------"<GetPageCount()==0) return; GetCurrentPage()->Save(mFileNameFilter); mwxNotebook->SetPageText(mwxNotebook->GetSelection(), @@ -367,10 +454,22 @@ namespace bbtk } //================================================================ + //================================================================ + void WxGUITextEditor::OnButtonSaveAs(wxCommandEvent& event) + { + if (mwxNotebook->GetPageCount()==0) return; + GetCurrentPage()->SetAskFilename(true); + SaveCurrentPage(); + } + //================================================================ + //================================================================ void WxGUITextEditor::OnPageClose(wxAuiNotebookEvent& evt) { std::cout << "-------------- CLOSE ---------------"<GetPageCount()==0) return; if (GetCurrentPage()->IsModified()) { @@ -390,11 +489,12 @@ namespace bbtk case wxID_NO : ; } } - + */ } //================================================================ + /* //================================================================ void WxGUITextEditor::OnButtonQuit(wxCommandEvent& event) @@ -413,7 +513,8 @@ namespace bbtk //================================================================ void WxGUITextEditor::OnButtonRun(wxCommandEvent& event) { - if (mUser!=0) mUser->WxGUITextEditorRun(); + if ((mUser!=0) && (mwxNotebook->GetPageCount()>0)) + mUser->WxGUITextEditorRun(); FocusOnCurrentPage(); } @@ -512,7 +613,7 @@ namespace bbtk switch (event.GetKeyCode()) { case 'n': case 'N' : New(); break; - case 's': case 'S' : Save(); break; + case 's': case 'S' : SaveCurrentPage(); break; case 'o': case 'O' : Open(); break; // case 'r': case 'R' : Run(); break; // case 'q': case 'Q' : Quit(); break; @@ -526,7 +627,9 @@ namespace bbtk // EVT_CHAR(WxGUITextEditor::OnKeyPress) EVT_BUTTON(WxGUITextEditor::ID_ButtonNew, WxGUITextEditor::OnButtonNew) EVT_BUTTON(WxGUITextEditor::ID_ButtonOpen, WxGUITextEditor::OnButtonOpen) + EVT_BUTTON(WxGUITextEditor::ID_ButtonClose, WxGUITextEditor::OnButtonClose) EVT_BUTTON(WxGUITextEditor::ID_ButtonSave, WxGUITextEditor::OnButtonSave) + EVT_BUTTON(WxGUITextEditor::ID_ButtonSaveAs, WxGUITextEditor::OnButtonSaveAs) EVT_BUTTON(WxGUITextEditor::ID_ButtonRun, WxGUITextEditor::OnButtonRun) // EVT_BUTTON(WxGUITextEditor::ID_ButtonQuit, WxGUITextEditor::OnButtonQuit) EVT_AUINOTEBOOK_PAGE_CLOSE(wxID_ANY, WxGUITextEditor::OnPageClose)