gehe zur Dokumentation dieser Datei00001 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 #include <iostream>
00032 
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 
00057 #include "MutChild.h"
00058 #include "MutEditFile.h"
00059 #include "MutFrame.h"
00060 
00061 
00062 WX_DEFINE_OBJARRAY(ArrayOfWinAttr);
00063 
00064 
00065 
00066 
00067 
00068 int gs_nFrames = 0;
00069 
00070 
00071 
00072 ArrayOfWinAttr WinAttrs[WK_NULL] = {
00073                                            ArrayOfWinAttr(), ArrayOfWinAttr(), ArrayOfWinAttr(),
00074                                            ArrayOfWinAttr(), ArrayOfWinAttr(), ArrayOfWinAttr()
00075                                    };
00076 
00077 
00078 
00079 
00080 
00081 
00082 
00083 
00084 
00085 BEGIN_EVENT_TABLE(MutChild, MutTextBox)
00086         
00087         
00088         
00089         
00090         
00091         
00092         
00093         
00094         
00095         
00096         
00097         
00098 
00099         
00100         
00101         EVT_CLOSE(MutChild::OnClose)
00102         EVT_AUI_PANE_CLOSE(MutChild::OnAuiClose)
00103 END_EVENT_TABLE()
00104 
00105 
00106 
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 
00118 
00119 
00120 
00121 
00122 
00123 
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         
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