From: Markus R. <rol...@us...> - 2007-06-21 17:55:47
|
Update of /cvsroot/simspark/simspark/contrib/rsgedit In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv23736 Modified Files: Tag: RSGEDIT_SCINTILLA mainframe.cpp mainframe.h Log Message: - add the OpenGl window as a tab to the notebook control - use wxScintilla edit controls to open ruby and rsg files - use the SparkEdit class to manage edit controls Index: mainframe.h =================================================================== RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/mainframe.h,v retrieving revision 1.15 retrieving revision 1.15.2.1 diff -C2 -d -r1.15 -r1.15.2.1 *** mainframe.h 15 Jun 2007 10:42:40 -0000 1.15 --- mainframe.h 21 Jun 2007 17:55:43 -0000 1.15.2.1 *************** *** 23,28 **** --- 23,32 ---- #endif + #ifndef MAINFRAME_H + #define MAINFRAME_H + #include <wx/wx.h> #include <wx/image.h> + #include <wx/wxflatnotebook/wxflatnotebook.h> #include "constants.h" #include "sparktree.h" *************** *** 30,36 **** #include <oxygen/sceneserver/scenedict.h> - #ifndef MAINFRAME_H - #define MAINFRAME_H - class SparkGLCanvas; class SparkContextEvent; --- 34,37 ---- *************** *** 149,152 **** --- 150,155 ---- void OnTreeItemRightClick(wxTreeEvent& event); + void OnTabClosing(wxFlatNotebookEvent& event); + void OnSparkContext(SparkContextEvent& event); *************** *** 179,183 **** wxSplitterWindow* window_1; wxPanel* mLeftPane; ! SparkGLCanvas* mCanvas; wxPanel* mTopPane; wxTextCtrl* mCtrLog; --- 182,186 ---- wxSplitterWindow* window_1; wxPanel* mLeftPane; ! wxFlatNotebook* mCtrNotebook; wxPanel* mTopPane; wxTextCtrl* mCtrLog; *************** *** 217,220 **** --- 220,225 ---- wxString mSimFName; + SparkGLCanvas* mCanvas; + DECLARE_EVENT_TABLE() }; // wxGlade: end class Index: mainframe.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/mainframe.cpp,v retrieving revision 1.21 retrieving revision 1.21.2.1 diff -C2 -d -r1.21 -r1.21.2.1 *** mainframe.cpp 15 Jun 2007 10:42:40 -0000 1.21 --- mainframe.cpp 21 Jun 2007 17:55:43 -0000 1.21.2.1 *************** *** 24,27 **** --- 24,28 ---- #include "propertyframe.h" #include "agentframe.h" + #include "sparkedit.h" #include <wx/filename.h> *************** *** 102,105 **** --- 103,108 ---- EVT_TREE_ITEM_RIGHT_CLICK(1, mainframe::OnTreeItemRightClick) + EVT_FLATNOTEBOOK_PAGE_CLOSING(wxID_ANY, mainframe::OnTabClosing) + EVT_SPARK_CONTEXT(ID_SPARK_CONTEXT, mainframe::OnSparkContext) END_EVENT_TABLE() *************** *** 117,136 **** // begin wxGlade: mainframe::mainframe ! mCtrVertSplitter = new wxSplitterWindow(this, -1, wxDefaultPosition, wxDefaultSize, wxSP_NOBORDER); ! mRightPane = new wxPanel(mCtrVertSplitter, -1, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxTAB_TRAVERSAL); ! mCtrHorSplitter = new wxSplitterWindow(mRightPane, -1, wxDefaultPosition, wxDefaultSize, wxSP_NOBORDER); ! mBottomPane = new wxPanel(mCtrHorSplitter, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); ! mTopPane = new wxPanel(mCtrHorSplitter, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); ! mLeftPane = new wxPanel(mCtrVertSplitter, -1, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxTAB_TRAVERSAL); ! window_1 = new wxSplitterWindow(mLeftPane, -1, wxDefaultPosition, wxDefaultSize, wxSP_3DBORDER|wxSP_BORDER); ! window_1_pane_2 = new wxPanel(window_1, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); ! window_1_pane_1 = new wxPanel(window_1, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); MainFrame_menubar = new wxMenuBar(); SetMenuBar(MainFrame_menubar); wxMenu* wxglade_tmp_menu_1 = new wxMenu(); ! wxglade_tmp_menu_1->Append(ID_FILE_OPEN, wxT("&Open"), wxT(""), wxITEM_NORMAL); ! wxglade_tmp_menu_1->Append(ID_AGENT_OPEN, wxT("Start &Agent"), wxT(""), wxITEM_NORMAL); ! wxglade_tmp_menu_1->Append(ID_FILE_RELOAD, wxT("&Reload"), wxT(""), wxITEM_NORMAL); ! wxglade_tmp_menu_1->Append(wxID_EXIT, wxT("&Exit"), wxT(""), wxITEM_NORMAL); MainFrame_menubar->Append(wxglade_tmp_menu_1, wxT("&File")); wxMenu* wxglade_tmp_menu_2 = new wxMenu(); --- 120,139 ---- // begin wxGlade: mainframe::mainframe ! mCtrVertSplitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_NOBORDER); ! mRightPane = new wxPanel(mCtrVertSplitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxTAB_TRAVERSAL); ! mCtrHorSplitter = new wxSplitterWindow(mRightPane, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_NOBORDER); ! mBottomPane = new wxPanel(mCtrHorSplitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); ! mTopPane = new wxPanel(mCtrHorSplitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); ! mLeftPane = new wxPanel(mCtrVertSplitter, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER|wxTAB_TRAVERSAL); ! window_1 = new wxSplitterWindow(mLeftPane, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3DBORDER|wxSP_BORDER); ! window_1_pane_2 = new wxPanel(window_1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); ! window_1_pane_1 = new wxPanel(window_1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL); MainFrame_menubar = new wxMenuBar(); SetMenuBar(MainFrame_menubar); wxMenu* wxglade_tmp_menu_1 = new wxMenu(); ! wxglade_tmp_menu_1->Append(ID_FILE_OPEN, wxT("&Open"), wxEmptyString, wxITEM_NORMAL); ! wxglade_tmp_menu_1->Append(ID_AGENT_OPEN, wxT("Start &Agent"), wxEmptyString, wxITEM_NORMAL); ! wxglade_tmp_menu_1->Append(ID_FILE_RELOAD, wxT("&Reload"), wxEmptyString, wxITEM_NORMAL); ! wxglade_tmp_menu_1->Append(wxID_EXIT, wxT("&Exit"), wxEmptyString, wxITEM_NORMAL); MainFrame_menubar->Append(wxglade_tmp_menu_1, wxT("&File")); wxMenu* wxglade_tmp_menu_2 = new wxMenu(); *************** *** 139,158 **** MainFrame_menubar->Append(wxglade_tmp_menu_2, wxT("&View")); wxMenu* wxglade_tmp_menu_3 = new wxMenu(); ! wxglade_tmp_menu_3->Append(ID_SIM_STEP, wxT("St&ep"), wxT(""), wxITEM_NORMAL); wxglade_tmp_menu_3->Append(ID_SIM_START, wxT("&Start"), wxT("Start simulation"), wxITEM_NORMAL); wxglade_tmp_menu_3->Append(ID_SIM_PAUSE, wxT("&Pause"), wxT("Pause Simulation"), wxITEM_NORMAL); MainFrame_menubar->Append(wxglade_tmp_menu_3, wxT("&Simulation")); wxMenu* wxglade_tmp_menu_4 = new wxMenu(); ! wxglade_tmp_menu_4->Append(ID_HELP_ABOUT, wxT("&About"), wxT(""), wxITEM_NORMAL); MainFrame_menubar->Append(wxglade_tmp_menu_4, wxT("&Help")); MainFrame_statusbar = CreateStatusBar(1, 0); ! mCtrPropList = new wxListCtrl(window_1_pane_1, -1, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSIMPLE_BORDER); mCtrTree = new wxTreeCtrl(window_1_pane_2, 1, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS|wxTR_NO_LINES|wxTR_LINES_AT_ROOT|wxTR_DEFAULT_STYLE|wxSIMPLE_BORDER); ! mCanvas = new SparkGLCanvas(mTopPane, -1); ! mCtrLog = new wxTextCtrl(mBottomPane, -1, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL|wxNO_BORDER); button_2 = new wxButton(mBottomPane, ID_LOG_CLEAR, wxT("Clear")); button_3 = new wxButton(mBottomPane, ID_LOG_COPY, wxT("Copy")); ! static_line_1 = new wxStaticLine(mBottomPane, -1); ! label_2 = new wxStaticText(mBottomPane, -1, wxT("Log Channels")); mCtrLogChannelDebug = new wxCheckBox(mBottomPane, ID_LOG_CHANNEL_DEBUG, wxT("Debug")); mCtrLogChannelNormal = new wxCheckBox(mBottomPane, ID_LOG_CHANNEL_NORMAL, wxT("Normal")); --- 142,161 ---- MainFrame_menubar->Append(wxglade_tmp_menu_2, wxT("&View")); wxMenu* wxglade_tmp_menu_3 = new wxMenu(); ! wxglade_tmp_menu_3->Append(ID_SIM_STEP, wxT("St&ep"), wxEmptyString, wxITEM_NORMAL); wxglade_tmp_menu_3->Append(ID_SIM_START, wxT("&Start"), wxT("Start simulation"), wxITEM_NORMAL); wxglade_tmp_menu_3->Append(ID_SIM_PAUSE, wxT("&Pause"), wxT("Pause Simulation"), wxITEM_NORMAL); MainFrame_menubar->Append(wxglade_tmp_menu_3, wxT("&Simulation")); wxMenu* wxglade_tmp_menu_4 = new wxMenu(); ! wxglade_tmp_menu_4->Append(ID_HELP_ABOUT, wxT("&About"), wxEmptyString, wxITEM_NORMAL); MainFrame_menubar->Append(wxglade_tmp_menu_4, wxT("&Help")); MainFrame_statusbar = CreateStatusBar(1, 0); ! mCtrPropList = new wxListCtrl(window_1_pane_1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSIMPLE_BORDER); mCtrTree = new wxTreeCtrl(window_1_pane_2, 1, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS|wxTR_NO_LINES|wxTR_LINES_AT_ROOT|wxTR_DEFAULT_STYLE|wxSIMPLE_BORDER); ! mCtrNotebook = new wxFlatNotebook(mTopPane, wxID_ANY); ! mCtrLog = new wxTextCtrl(mBottomPane, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL|wxNO_BORDER); button_2 = new wxButton(mBottomPane, ID_LOG_CLEAR, wxT("Clear")); button_3 = new wxButton(mBottomPane, ID_LOG_COPY, wxT("Copy")); ! static_line_1 = new wxStaticLine(mBottomPane, wxID_ANY); ! label_2 = new wxStaticText(mBottomPane, wxID_ANY, wxT("Log Channels")); mCtrLogChannelDebug = new wxCheckBox(mBottomPane, ID_LOG_CHANNEL_DEBUG, wxT("Debug")); mCtrLogChannelNormal = new wxCheckBox(mBottomPane, ID_LOG_CHANNEL_NORMAL, wxT("Normal")); *************** *** 164,167 **** --- 167,182 ---- // end wxGlade + mCtrNotebook->SetWindowStyleFlag + (mCtrNotebook->GetWindowStyleFlag() + | wxFNB_DROPDOWN_TABS_LIST + | wxFNB_X_ON_TAB + | wxFNB_MOUSE_MIDDLE_CLOSES_TABS + | wxFNB_VC8 + ); + + mCtrNotebook->RemovePage(0); + mCanvas = new SparkGLCanvas(mCtrNotebook, wxID_ANY); + mCtrNotebook->AddPage(mCanvas, wxT("Canvas")); + // create toolbar mToolBar = CreateToolBar( wxTB_FLAT|wxTB_HORIZONTAL, wxID_ANY ); *************** *** 248,252 **** // begin wxGlade: mainframe::set_properties SetTitle(wxT("RsgEdit")); ! SetSize(wxSize(1024, 770)); int MainFrame_statusbar_widths[] = { 0 }; MainFrame_statusbar->SetStatusWidths(1, MainFrame_statusbar_widths); --- 263,267 ---- // begin wxGlade: mainframe::set_properties SetTitle(wxT("RsgEdit")); ! SetSize(wxSize(1076, 786)); int MainFrame_statusbar_widths[] = { 0 }; MainFrame_statusbar->SetStatusWidths(1, MainFrame_statusbar_widths); *************** *** 272,318 **** wxBoxSizer* sizer_4 = new wxBoxSizer(wxVERTICAL); sizer_4->Add(mCtrPropList, 1, wxEXPAND, 0); - window_1_pane_1->SetAutoLayout(true); window_1_pane_1->SetSizer(sizer_4); - sizer_4->Fit(window_1_pane_1); - sizer_4->SetSizeHints(window_1_pane_1); sizer_8->Add(mCtrTree, 1, wxEXPAND, 0); - window_1_pane_2->SetAutoLayout(true); window_1_pane_2->SetSizer(sizer_8); - sizer_8->Fit(window_1_pane_2); - sizer_8->SetSizeHints(window_1_pane_2); window_1->SplitHorizontally(window_1_pane_1, window_1_pane_2); sizer_7->Add(window_1, 1, wxEXPAND, 0); - mLeftPane->SetAutoLayout(true); mLeftPane->SetSizer(sizer_7); ! sizer_7->Fit(mLeftPane); ! sizer_7->SetSizeHints(mLeftPane); ! sizer_5->Add(mCanvas, 1, wxEXPAND, 0); ! mTopPane->SetAutoLayout(true); mTopPane->SetSizer(sizer_5); - sizer_5->Fit(mTopPane); - sizer_5->SetSizeHints(mTopPane); sizer_6->Add(mCtrLog, 1, wxEXPAND, 0); ! sizer_11->Add(button_2, 0, wxALL|wxEXPAND|wxADJUST_MINSIZE, 5); ! sizer_11->Add(button_3, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxADJUST_MINSIZE, 5); sizer_11->Add(static_line_1, 0, wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 5); ! sizer_11->Add(label_2, 0, wxALL|wxADJUST_MINSIZE, 5); ! sizer_11->Add(mCtrLogChannelDebug, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxADJUST_MINSIZE, 5); ! sizer_11->Add(mCtrLogChannelNormal, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxADJUST_MINSIZE, 5); ! sizer_11->Add(mCtrLogChannelWarning, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxADJUST_MINSIZE, 5); ! sizer_11->Add(mCtrLogChannelError, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxADJUST_MINSIZE, 5); sizer_6->Add(sizer_11, 0, 0, 0); - mBottomPane->SetAutoLayout(true); mBottomPane->SetSizer(sizer_6); - sizer_6->Fit(mBottomPane); - sizer_6->SetSizeHints(mBottomPane); mCtrHorSplitter->SplitHorizontally(mTopPane, mBottomPane); sizer_2->Add(mCtrHorSplitter, 1, wxEXPAND, 0); - mRightPane->SetAutoLayout(true); mRightPane->SetSizer(sizer_2); - sizer_2->Fit(mRightPane); - sizer_2->SetSizeHints(mRightPane); mCtrVertSplitter->SplitVertically(mLeftPane, mRightPane); sizer_1->Add(mCtrVertSplitter, 1, wxEXPAND, 0); - SetAutoLayout(true); SetSizer(sizer_1); Layout(); --- 287,314 ---- wxBoxSizer* sizer_4 = new wxBoxSizer(wxVERTICAL); sizer_4->Add(mCtrPropList, 1, wxEXPAND, 0); window_1_pane_1->SetSizer(sizer_4); sizer_8->Add(mCtrTree, 1, wxEXPAND, 0); window_1_pane_2->SetSizer(sizer_8); window_1->SplitHorizontally(window_1_pane_1, window_1_pane_2); sizer_7->Add(window_1, 1, wxEXPAND, 0); mLeftPane->SetSizer(sizer_7); ! sizer_5->Add(mCtrNotebook, 1, wxEXPAND, 0); mTopPane->SetSizer(sizer_5); sizer_6->Add(mCtrLog, 1, wxEXPAND, 0); ! sizer_11->Add(button_2, 0, wxALL|wxEXPAND, 5); ! sizer_11->Add(button_3, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, 5); sizer_11->Add(static_line_1, 0, wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 5); ! sizer_11->Add(label_2, 0, wxALL, 5); ! sizer_11->Add(mCtrLogChannelDebug, 0, wxLEFT|wxRIGHT|wxBOTTOM, 5); ! sizer_11->Add(mCtrLogChannelNormal, 0, wxLEFT|wxRIGHT|wxBOTTOM, 5); ! sizer_11->Add(mCtrLogChannelWarning, 0, wxLEFT|wxRIGHT|wxBOTTOM, 5); ! sizer_11->Add(mCtrLogChannelError, 0, wxLEFT|wxRIGHT|wxBOTTOM, 5); sizer_6->Add(sizer_11, 0, 0, 0); mBottomPane->SetSizer(sizer_6); mCtrHorSplitter->SplitHorizontally(mTopPane, mBottomPane); sizer_2->Add(mCtrHorSplitter, 1, wxEXPAND, 0); mRightPane->SetSizer(sizer_2); mCtrVertSplitter->SplitVertically(mLeftPane, mRightPane); sizer_1->Add(mCtrVertSplitter, 1, wxEXPAND, 0); SetSizer(sizer_1); Layout(); *************** *** 754,757 **** --- 750,754 ---- void mainframe::EditFile(const wxString& fname, int line) { + #if 0 wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromMimeType("text/plain"); if (ft == 0) *************** *** 770,773 **** --- 767,784 ---- wxExecute(cmd); + #endif + + wxScintilla* edit = SparkEdit::GetEdit(fname,mCtrNotebook); + if (edit != 0) + { + edit->GotoLine(line); + } + + if (edit == 0) + { + return; + } + + edit->GotoLine(line); } *************** *** 1075,1076 **** --- 1086,1105 ---- spark->SetLogPriority(mask); } + + void mainframe::OnTabClosing(wxFlatNotebookEvent& event) + { + wxWindow* page = mCtrNotebook->GetPage(event.GetSelection()); + if (page == mCanvas) + { + event.Veto(); + return; + } + + wxScintilla* edit = dynamic_cast<wxScintilla*>(page); + if (edit != 0) + { + SparkEdit::PutEdit(edit); + } + + event.Skip(); + } |