MutChild.cpp
gehe zur Dokumentation dieser Datei
00001 
00023 // ===========================================================================
00024 // declarations
00025 // ===========================================================================
00026 
00027 // ---------------------------------------------------------------------------
00028 // headers
00029 // ---------------------------------------------------------------------------
00030 
00031 #include <iostream>
00032 // For compilers that support precompilation, includes "wx/wx.h".
00033 #include "wx/wxprec.h"
00034 
00035 #ifdef __BORLANDC__
00036 #pragma hdrstop
00037 #endif
00038 
00039 #ifndef WX_PRECOMP
00040 #include "wx/wx.h"
00041 #include "wx/mdi.h"
00042 #endif
00043 
00044 #include "wx/toolbar.h"
00045 
00046 #include "bitmaps/new.xpm"
00047 #include "bitmaps/open.xpm"
00048 #include "bitmaps/save.xpm"
00049 #include "bitmaps/copy.xpm"
00050 #include "bitmaps/cut.xpm"
00051 #include "bitmaps/paste.xpm"
00052 #include "bitmaps/print.xpm"
00053 #include "bitmaps/help.xpm"
00054 
00055 
00056 //#include "Mutabor.rh"
00057 #include "MutChild.h"
00058 #include "MutEditFile.h"
00059 #include "MutFrame.h"
00060 
00061 
00062 WX_DEFINE_OBJARRAY(ArrayOfWinAttr);
00063 
00064 // ---------------------------------------------------------------------------
00065 // global variables
00066 // ---------------------------------------------------------------------------
00067 
00068 int gs_nFrames = 0;
00069 
00070 //WinKind ActiveWinKind = WK_NULL;
00071 
00072 ArrayOfWinAttr WinAttrs[WK_NULL] = {
00073                                            ArrayOfWinAttr(), ArrayOfWinAttr(), ArrayOfWinAttr(),
00074                                            ArrayOfWinAttr(), ArrayOfWinAttr(), ArrayOfWinAttr()
00075                                    };
00076 
00077 // ---------------------------------------------------------------------------
00078 // event tables
00079 // ---------------------------------------------------------------------------
00080 
00081 // Note that MDI_NEW_WINDOW and MDI_ABOUT commands get passed
00082 // to the parent window for processing, so no need to
00083 // duplicate event handlers here.
00084 //#ifdef MDI_FORCE_EXTERN
00085 BEGIN_EVENT_TABLE(MutChild, MutTextBox)
00086         //#else
00087         //BEGIN_EVENT_TABLE(MutChild, wxMDIChildFrame)
00088         //#endif
00089         //    EVT_MENU(MDI_CHILD_QUIT, MutChild::OnQuit)
00090         //      EVT_MENU(CM_FILESAVE, MutChild::MenuPassOn)
00091         //      EVT_MENU(CM_COMPILE, MutChild::MenuPassOn)
00092         //      EVT_MENU(CM_ACTIVATE, MutChild::MenuPassOn)
00093         //      EVT_MENU(CM_TOGGLEKEY, MutChild::MenuPassToParent)
00094         //    EVT_MENU(MDI_REFRESH, MutChild::OnRefresh)
00095         //    EVT_MENU(MDI_CHANGE_TITLE, MutChild::OnChangeTitle)
00096         //    EVT_MENU(MDI_CHANGE_POSITION, MutChild::OnChangePosition)
00097         //    EVT_MENU(MDI_CHANGE_SIZE, MutChild::OnChangeSize)
00098 
00099         //    EVT_SIZE(MutChild::OnSize)
00100         //    EVT_MOVE(MutChild::OnMove)
00101         EVT_CLOSE(MutChild::OnClose)
00102         EVT_AUI_PANE_CLOSE(MutChild::OnAuiClose)
00103 END_EVENT_TABLE()
00104 
00105 // ===========================================================================
00106 // implementation
00107 // ===========================================================================
00108 
00109 MutChild::MutChild (WinKind k,
00110                     WinAttr * attr,
00111                     wxWindow * parent,
00112                     wxWindowID id,
00113 
00114                     const wxPoint& pos,
00115                     const wxSize & size):
00116                 MutTextBox(k,attr,parent,id,pos,size)
00117 //#ifdef MDI_FORCE_EXTERN
00118 //       : wxAuiPaneInfo()
00119 
00120 //#else
00121 //       : wxMDIChildFrame(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize,
00122 //                         wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE,title)
00123 //#endif
00124 {
00125         DEBUGLOG (other, _T("winKind=%d"),winKind);
00126         wxASSERT(WK_KEY <= winKind && winKind < WK_NULL);
00127         winAttr->Win = this;
00128         DEBUGLOG (other, _T("winKind=%d"),winKind);
00129 }
00130 
00131 MutChild::~MutChild()
00132 
00133 {
00134         wxASSERT(WK_KEY <= winKind && winKind < WK_NULL);
00135         DEBUGLOG (other, _T(""));
00136         deleteFromWinAttrs();
00137 }
00138 
00139 void MutChild::OnActivate(wxActivateEvent& event)
00140 {
00141         wxASSERT(WK_KEY <= winKind &&winKind < WK_NULL);
00142         DEBUGLOG (other, _T(""));
00143         curBox = winAttr->Box;
00144 }
00145 
00146 void MutChild::deleteFromWinAttrs()
00147 {
00148         DEBUGLOG (other, _T("winKind: %d"),winKind);
00149         wxASSERT(WK_KEY <= winKind &&winKind < WK_NULL);
00150         int i = WinAttrs[winKind].Index(*winAttr);
00151         wxASSERT(WK_KEY <= winKind &&i != wxNOT_FOUND);
00152 
00153         if (i == wxNOT_FOUND) {
00154                 wxLogWarning(_("Subwindow is not in the list anymore. Please report this bug! %s in %s : %d"),__WXFUNCTION__,_T(__FILE__),__LINE__);
00155                 return;
00156         }
00157 
00158         WinAttrs[winKind][i].Win = NULL;
00159 
00160         WinAttrs[winKind].RemoveAt(i,1);
00161         //    delete winAttr;
00162 }
00163 
00164 
00165 WinAttr* GetWinAttr (WinKind kind, int box)
00166 {
00167         wxASSERT(WK_KEY <= kind &&kind < WK_NULL);
00168         WinAttr * attr;
00169 
00170         if ( kind != WK_EDIT ) {
00171                 attr = Get (kind, box);
00172 
00173                 if (attr) return attr;
00174         }
00175 
00176         attr = new WinAttr(true, box);
00177 
00178         WinAttrs[kind].Add(attr);
00179         return attr;
00180 }
00181 
00182 WinAttr* Get (WinKind kind, int box)
00183 {
00184         wxASSERT(WK_KEY <= kind && kind < WK_NULL);
00185 
00186         for (size_t i = 0; i < WinAttrs[kind].GetCount(); i++)
00187                 if ( WinAttrs[kind][i].Box == box )
00188                         return &WinAttrs[kind][i];
00189 
00190         return 0;
00191 }
00192 
00193 bool IsOpen (WinKind kind, int box)
00194 {
00195         wxASSERT(WK_KEY <= kind && kind < WK_NULL);
00196 
00197         WinAttr *Help;
00198 
00199         if ( (Help = Get(kind, box)) )
00200                 if ( Help->Win )
00201                         return true;
00202 
00203         return false;
00204 }
00205 
00206 bool IsWanted(WinKind kind, int box)
00207 {
00208         wxASSERT(WK_KEY <= kind && kind < WK_NULL);
00209 
00210         WinAttr *Help;
00211 
00212         if ( (Help = Get(kind, box)) )
00213                 if ( Help->Wanted )
00214                         return true;
00215 
00216         return false;
00217 }
00218 
00219 void DontWant(WinKind kind, int box)
00220 {
00221         wxASSERT(WK_KEY <= kind && kind < WK_NULL);
00222 
00223         WinAttr *Help;
00224 
00225         if ( (Help = Get(kind, box)) )
00226                 Help->Wanted = 0;
00227 }
00228 
00229 int NumberOfOpen(WinKind kind)
00230 {
00231         wxASSERT(WK_KEY <= kind && kind < WK_NULL);
00232 
00233         int n = 0;
00234 
00235         for (size_t i = 0; i < WinAttrs[kind].Count(); i++)
00236                 if ( WinAttrs[kind][i].Win )
00237                         n++;
00238 
00239         return n;
00240 }
00241 
00242 
00243 
00244 

Erzeugt am Sun Aug 21 2011 10:51:54 für Mutabor von doxygen 1.7.4