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