source: dev/trunk/ab5.0/abdev/abdev/Rad_UndoRedo.cpp@ 624

Last change on this file since 624 was 624, checked in by dai_9181, 16 years ago

WindowInfoクラスをリファクタリング

File size: 24.3 KB
RevLine 
[475]1#include "stdafx.h"
2
[3]3#include "Common.h"
4
5void Rad_UndoCommand(int WndNum){
6 extern HINSTANCE hInst;
7 extern MDIINFO MdiInfo[MAX_WNDNUM];
[609]8 int i;
[3]9 DWORD dw;
10 char *temporary;
11 RAD_UNDOSTATE *pUndoState;
12
13 pUndoState=&MdiInfo[WndNum].MdiRadInfo->undo;
14 i=pUndoState->NowPos-1;
15 if(i==-1) i=MAX_UNDONUM-1;
16 if(!pUndoState->Command[i]){
17 MessageBeep(0);
18 return;
19 }
20 pUndoState->NowPos=i;
21
[624]22 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[WndNum].path);
[609]23 int WndInfoNum = GetWndInfoNum(MdiInfo[WndNum].path);
[3]24 switch(pUndoState->Command[pUndoState->NowPos]){
25 case RAD_UNDO_INSERTITEM:
26 DeleteDlgItem(WndNum,WndInfoNum,pUndoState->SelectItemNum[pUndoState->NowPos],0);
27 MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]=-1;
28 break;
29 case RAD_UNDO_DELETEITEM:
[624]30 ActiveBasic::PM::ChildWindowInfo *pChildInfo;
[3]31 RECT rect;
[624]32 pChildInfo=(ActiveBasic::PM::ChildWindowInfo *)pUndoState->lpdwData[pUndoState->NowPos];
[3]33 rect.left=pChildInfo->pos.x;
34 rect.top=pChildInfo->pos.y;
35 rect.right=pChildInfo->pos.x+pChildInfo->size.cx;
36 rect.bottom=pChildInfo->pos.y+pChildInfo->size.cy;
37 InsertDlgItem(WndNum,WndInfoNum,pUndoState->SelectItemNum[pUndoState->NowPos],
38 &pChildInfo->pos,&pChildInfo->size,
[624]39 pChildInfo->GetName().c_str(),pChildInfo->GetCaption().c_str(),pChildInfo->GetStyle(),pChildInfo->GetExStyle(),pChildInfo->Control,pChildInfo->image.type,pChildInfo->image.path.c_str(),0);
[3]40 break;
41 case RAD_UNDO_NAME:
42 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[617]43 RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pUndoState->NowPos];
[3]44
[617]45 std::string tempStr = pWindowInfo->GetName();
46 pWindowInfo->SetName( names->name );
47 names->name = tempStr;
48
[3]49 GlobalFree(MdiInfo[WndNum].path);
[617]50 MdiInfo[WndNum].path=(char *)GlobalAlloc(GMEM_FIXED,pWindowInfo->GetName().size()+1);
51 lstrcpy(MdiInfo[WndNum].path,pWindowInfo->GetName().c_str());
[3]52
[617]53 tempStr = pWindowInfo->GetHandleName();
54 pWindowInfo->SetHandleName( names->HandleName );
55 names->HandleName = tempStr;
[3]56
[609]57 temporary=pWindowInfo->CallBackName;
58 pWindowInfo->CallBackName=names->CallBackName;
[3]59 names->CallBackName=temporary;
60 }
61 else{
[624]62 std::string tempStr = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetName();
63 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetName( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
64 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
65 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
[3]66 }
67 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
68 ChangePropertyWindow(WndNum,WndInfoNum);
69 break;
70 case RAD_UNDO_CAPTION:
71 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[624]72 std::string tempStr = pWindowInfo->GetCaption();
73 pWindowInfo->SetCaption( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
74 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
75 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
[3]76 }
77 else{
[624]78 std::string tempStr = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetCaption();
79 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetCaption( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
80 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
81 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
[3]82 }
83 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
84 ChangePropertyWindow(WndNum,WndInfoNum);
[609]85 DrawRadWindow(WndNum,pWindowInfo);
[3]86 break;
87 case RAD_UNDO_FONT:
88 LOGFONT *pLogFont,lf;
89 pLogFont=(LOGFONT *)pUndoState->lpdwData[pUndoState->NowPos];
[609]90 lf=pWindowInfo->LogFont;
91 pWindowInfo->LogFont=*pLogFont;
[3]92 *pLogFont=lf;
93 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
94 ChangePropertyWindow(WndNum,WndInfoNum);
[609]95 DrawRadWindow(WndNum,pWindowInfo);
[3]96 break;
97 case RAD_UNDO_BGCOLOR:
[624]98 {
99 int tempBgColor = pWindowInfo->GetBackgroundColor();
100 pWindowInfo->SetBackgroundColor( static_cast<int>(pUndoState->lpdwData[pUndoState->NowPos]) );
101 pUndoState->lpdwData[pUndoState->NowPos] = static_cast<DWORD>(tempBgColor);
102
103 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
104 ChangePropertyWindow(WndNum,WndInfoNum);
105 DrawRadWindow(WndNum,pWindowInfo);
106 break;
107 }
[3]108 case RAD_UNDO_WINDOWMENU:
[624]109 {
110 std::string tempMenuIdName = pWindowInfo->GetMenuIdName();
111 pWindowInfo->SetMenuIdName( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
112 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
113 pUndoState->lpdwData[pUndoState->NowPos] = (DWORD)( new std::string( tempMenuIdName ) );
114 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
115 {
116 ChangePropertyWindow(WndNum,WndInfoNum);
117 }
118 DrawRadWindow(WndNum,pWindowInfo);
119 break;
120 }
[3]121 case RAD_UNDO_ICONRES:
[624]122 {
123 std::string tempStr = pWindowInfo->GetIconResourceName();
124 pWindowInfo->SetIconResourceName( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
125 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
126 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
127 }
[3]128 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
129 ChangePropertyWindow(WndNum,WndInfoNum);
130 break;
131 case RAD_UNDO_STYLE:
132 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[624]133 dw=pWindowInfo->GetStyle();
134 pWindowInfo->SetStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]135 pUndoState->lpdwData[pUndoState->NowPos]=dw;
136 }
137 else{
[624]138 dw=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetStyle();
139 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]140 pUndoState->lpdwData[pUndoState->NowPos]=dw;
141 }
142 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
143 ChangePropertyWindow(WndNum,WndInfoNum);
[609]144 DrawRadWindow(WndNum,pWindowInfo);
[3]145 break;
146 case RAD_UNDO_EXSTYLE:
147 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[624]148 dw=pWindowInfo->GetExStyle();
149 pWindowInfo->SetExStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]150 pUndoState->lpdwData[pUndoState->NowPos]=dw;
151 }
152 else{
[624]153 dw=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetExStyle();
154 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetExStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]155 pUndoState->lpdwData[pUndoState->NowPos]=dw;
156 }
[609]157 DrawRadWindow(WndNum,pWindowInfo);
[3]158 break;
159 case RAD_UNDO_POSITION:
160 POINTANDSIZE PointAndSize,*pReadPointAndSize;
161 pReadPointAndSize=(POINTANDSIZE *)pUndoState->lpdwData[pUndoState->NowPos];
162 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[609]163 PointAndSize.size=pWindowInfo->size;
164 pWindowInfo->size=pReadPointAndSize->size;
[3]165 }
166 else{
[616]167 PointAndSize.pos=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->pos;
168 PointAndSize.size=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->size;
169 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->pos=pReadPointAndSize->pos;
170 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->size=pReadPointAndSize->size;
[3]171 }
172 *pReadPointAndSize=PointAndSize;
[609]173 DrawRadWindow(WndNum,pWindowInfo);
[3]174 SetStatusText(NULL);
175
176 //サポートダイアログの内容をセット
[612]177 SetSupportDlgData( WndNum, *pWindowInfo );
[3]178 break;
179 case RAD_UNDO_IMAGESTATE:
[624]180 {
181 ActiveBasic::PM::ImageControlInfo *pImageCtrlInfo = (ActiveBasic::PM::ImageControlInfo *)pUndoState->lpdwData[pUndoState->NowPos];
[3]182
[624]183 ActiveBasic::PM::ImageReferenceType::EnumType tempType = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.type;
184 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.type = pImageCtrlInfo->type;
185 pImageCtrlInfo->type = tempType;
[3]186
[624]187 std::string tempPath = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.path;
188 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.path = pImageCtrlInfo->path;
189 pImageCtrlInfo->path = tempPath;
[3]190
[624]191 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
192 ChangePropertyWindow(WndNum,WndInfoNum);
193 DrawRadWindow(WndNum,pWindowInfo);
194 }
[3]195 break;
196 case RAD_UNDO_TYPE:
[609]197 dw=pWindowInfo->type;
198 pWindowInfo->type=pUndoState->lpdwData[pUndoState->NowPos];
[3]199 pUndoState->lpdwData[pUndoState->NowPos]=dw;
200 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
201 ChangePropertyWindow(WndNum,WndInfoNum);
202 break;
203 }
204
[618]205 projectInfo.ModifyOfMaterial=1;
[3]206
207 ResetState_UndoMenu();
208}
209void Rad_RedoCommand(int WndNum){
210 extern HINSTANCE hInst;
211 extern MDIINFO MdiInfo[MAX_WNDNUM];
212 DWORD dw;
213 char *temporary;
214 RAD_UNDOSTATE *pUndoState;
[624]215 ActiveBasic::PM::ChildWindowInfo *pChildInfo;
[3]216 RECT rect;
217
218 pUndoState=&MdiInfo[WndNum].MdiRadInfo->undo;
219 if(!pUndoState->Command[pUndoState->NowPos]){
220 MessageBeep(0);
221 return;
222 }
223
[624]224 ActiveBasic::PM::WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[WndNum].path);
[609]225 int WndInfoNum = GetWndInfoNum(MdiInfo[WndNum].path);
[3]226 switch(pUndoState->Command[pUndoState->NowPos]){
227 case RAD_UNDO_INSERTITEM:
[624]228 pChildInfo=(ActiveBasic::PM::ChildWindowInfo *)pUndoState->lpdwData[pUndoState->NowPos];
[3]229 rect.left=pChildInfo->pos.x;
230 rect.top=pChildInfo->pos.y;
231 rect.right=pChildInfo->pos.x+pChildInfo->size.cx;
232 rect.bottom=pChildInfo->pos.y+pChildInfo->size.cy;
233 InsertDlgItem(WndNum,WndInfoNum,pUndoState->SelectItemNum[pUndoState->NowPos],
234 &pChildInfo->pos,&pChildInfo->size,
[624]235 pChildInfo->GetName().c_str(),pChildInfo->GetCaption().c_str(),pChildInfo->GetStyle(),pChildInfo->GetExStyle(),pChildInfo->Control,pChildInfo->image.type,pChildInfo->image.path.c_str(),0);
[3]236 break;
237 case RAD_UNDO_DELETEITEM:
238 DeleteDlgItem(WndNum,WndInfoNum,pUndoState->SelectItemNum[pUndoState->NowPos],0);
239 MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]=-1;
240 break;
241 case RAD_UNDO_NAME:
242 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[617]243 RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pUndoState->NowPos];
[3]244
[617]245 std::string tempStr = pWindowInfo->GetName();
246 pWindowInfo->SetName( names->name );
247 names->name = tempStr;
248
[3]249 GlobalFree(MdiInfo[WndNum].path);
[617]250 MdiInfo[WndNum].path=(char *)GlobalAlloc(GMEM_FIXED,pWindowInfo->GetName().size()+1);
251 lstrcpy(MdiInfo[WndNum].path,pWindowInfo->GetName().c_str());
[3]252
[617]253 tempStr = pWindowInfo->GetHandleName();
254 pWindowInfo->SetHandleName( names->HandleName );
255 names->HandleName = tempStr;
[3]256
[609]257 temporary=pWindowInfo->CallBackName;
258 pWindowInfo->CallBackName=names->CallBackName;
[3]259 names->CallBackName=temporary;
260 }
261 else{
[624]262 std::string tempStr = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetName();
263 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetName( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
264 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
265 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
[3]266 }
267 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
268 ChangePropertyWindow(WndNum,WndInfoNum);
269 break;
270 case RAD_UNDO_CAPTION:
271 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[624]272 std::string tempStr = pWindowInfo->GetCaption();
273 pWindowInfo->SetCaption( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
274 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
275 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
[3]276 }
277 else{
[624]278 std::string tempStr = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetCaption();
279 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetCaption( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
280 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
281 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
[3]282 }
283 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
284 ChangePropertyWindow(WndNum,WndInfoNum);
[609]285 DrawRadWindow(WndNum,pWindowInfo);
[3]286 break;
287 case RAD_UNDO_FONT:
288 LOGFONT *pLogFont,lf;
289 pLogFont=(LOGFONT *)pUndoState->lpdwData[pUndoState->NowPos];
[609]290 lf=pWindowInfo->LogFont;
291 pWindowInfo->LogFont=*pLogFont;
[3]292 *pLogFont=lf;
293 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
294 ChangePropertyWindow(WndNum,WndInfoNum);
[609]295 DrawRadWindow(WndNum,pWindowInfo);
[3]296 break;
297 case RAD_UNDO_BGCOLOR:
[624]298 {
299 int tempBgColor = pWindowInfo->GetBackgroundColor();
300 pWindowInfo->SetBackgroundColor( static_cast<int>(pUndoState->lpdwData[pUndoState->NowPos]) );
301 pUndoState->lpdwData[pUndoState->NowPos] = static_cast<DWORD>(tempBgColor);
302 }
[3]303 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
304 ChangePropertyWindow(WndNum,WndInfoNum);
[609]305 DrawRadWindow(WndNum,pWindowInfo);
[3]306 break;
307 case RAD_UNDO_WINDOWMENU:
[624]308 {
309 std::string tempMenuIdName = pWindowInfo->GetMenuIdName();
310 pWindowInfo->SetMenuIdName( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
311 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
312 pUndoState->lpdwData[pUndoState->NowPos] = (DWORD)( new std::string( tempMenuIdName ) );
313 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
314 {
315 ChangePropertyWindow(WndNum,WndInfoNum);
316 }
317 DrawRadWindow(WndNum,pWindowInfo);
318 break;
319 }
[3]320 case RAD_UNDO_ICONRES:
[624]321 {
322 std::string tempStr = pWindowInfo->GetIconResourceName();
323 pWindowInfo->SetIconResourceName( *(std::string *)pUndoState->lpdwData[pUndoState->NowPos] );
324 delete (std::string *)pUndoState->lpdwData[pUndoState->NowPos];
325 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)( new std::string( tempStr ) );
326 }
[3]327 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
328 ChangePropertyWindow(WndNum,WndInfoNum);
329 break;
330 case RAD_UNDO_STYLE:
331 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[624]332 dw=pWindowInfo->GetStyle();
333 pWindowInfo->SetStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]334 pUndoState->lpdwData[pUndoState->NowPos]=dw;
335 }
336 else{
[624]337 dw=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetStyle();
338 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]339 pUndoState->lpdwData[pUndoState->NowPos]=dw;
340 }
341 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
342 ChangePropertyWindow(WndNum,WndInfoNum);
[609]343 DrawRadWindow(WndNum,pWindowInfo);
[3]344 break;
345 case RAD_UNDO_EXSTYLE:
346 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[624]347 dw=pWindowInfo->GetExStyle();
348 pWindowInfo->SetExStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]349 pUndoState->lpdwData[pUndoState->NowPos]=dw;
350 }
351 else{
[624]352 dw=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->GetExStyle();
353 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->SetExStyle( pUndoState->lpdwData[pUndoState->NowPos] );
[3]354 pUndoState->lpdwData[pUndoState->NowPos]=dw;
355 }
[609]356 DrawRadWindow(WndNum,pWindowInfo);
[3]357 break;
358 case RAD_UNDO_POSITION:
359 POINTANDSIZE PointAndSize,*pReadPointAndSize;
360 pReadPointAndSize=(POINTANDSIZE *)pUndoState->lpdwData[pUndoState->NowPos];
361 if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
[609]362 PointAndSize.size=pWindowInfo->size;
363 pWindowInfo->size=pReadPointAndSize->size;
[3]364 }
365 else{
[616]366 PointAndSize.pos=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->pos;
367 PointAndSize.size=pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->size;
368 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->pos=pReadPointAndSize->pos;
369 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->size=pReadPointAndSize->size;
[3]370 }
371 *pReadPointAndSize=PointAndSize;
[609]372 DrawRadWindow(WndNum,pWindowInfo);
[3]373 SetStatusText(NULL);
374
375 //サポートダイアログの内容をセット
[612]376 SetSupportDlgData( WndNum, *pWindowInfo );
[3]377 break;
378 case RAD_UNDO_IMAGESTATE:
[624]379 {
380 ActiveBasic::PM::ImageControlInfo *pImageCtrlInfo = (ActiveBasic::PM::ImageControlInfo *)pUndoState->lpdwData[pUndoState->NowPos];
[3]381
[624]382 ActiveBasic::PM::ImageReferenceType::EnumType tempType = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.type;
383 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.type = pImageCtrlInfo->type;
384 pImageCtrlInfo->type = tempType;
[3]385
[624]386 std::string tempPath = pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.path;
387 pWindowInfo->childWindowInfos[pUndoState->SelectItemNum[pUndoState->NowPos]]->image.path = pImageCtrlInfo->path;
388 pImageCtrlInfo->path = tempPath;
[3]389
[624]390 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
391 ChangePropertyWindow(WndNum,WndInfoNum);
392 DrawRadWindow(WndNum,pWindowInfo);
393 break;
394 }
[3]395 case RAD_UNDO_TYPE:
[609]396 dw=pWindowInfo->type;
397 pWindowInfo->type=pUndoState->lpdwData[pUndoState->NowPos];
[3]398 pUndoState->lpdwData[pUndoState->NowPos]=dw;
399 if(pUndoState->SelectItemNum[pUndoState->NowPos]==MdiInfo[WndNum].MdiRadInfo->SelectingItem[0])
400 ChangePropertyWindow(WndNum,WndInfoNum);
401 break;
402 }
403
404 pUndoState->NowPos++;
405 if(pUndoState->NowPos==MAX_UNDONUM) pUndoState->NowPos=0;
406
[618]407 projectInfo.ModifyOfMaterial=1;
[3]408
409 ResetState_UndoMenu();
410}
411void Rad_DeleteUndoData(int WndNum,int pos){
412 extern HANDLE hHeap;
413 extern MDIINFO MdiInfo[MAX_WNDNUM];
414 RAD_UNDOSTATE *pUndoState;
415
416 pUndoState=&MdiInfo[WndNum].MdiRadInfo->undo;
417 switch(pUndoState->Command[pos]){
418 case RAD_UNDO_INSERTITEM:
419 case RAD_UNDO_DELETEITEM:
[624]420 ActiveBasic::PM::ChildWindowInfo *pChildInfo;
421 pChildInfo=(ActiveBasic::PM::ChildWindowInfo *)pUndoState->lpdwData[pos];
422 delete pChildInfo;
[3]423 break;
424 case RAD_UNDO_NAME:
425 if(pUndoState->SelectItemNum[pos]==SELECT_WINDOW){
[617]426 RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pos];
[3]427 HeapDefaultFree(names->CallBackName);
[617]428 delete names;
[3]429 }
[624]430 else
431 {
432 std::string *pTempStr = (std::string *)pUndoState->lpdwData[pos];
433 delete pTempStr;
434 }
[3]435 break;
436 case RAD_UNDO_CAPTION:
[624]437 {
438 std::string *pTempStr = (std::string *)pUndoState->lpdwData[pos];
439 delete pTempStr;
440 }
[3]441 break;
442 case RAD_UNDO_FONT:
443 HeapDefaultFree((void *)pUndoState->lpdwData[pos]);
444 break;
445 case RAD_UNDO_WINDOWMENU:
[624]446 {
447 std::string *pTempMenuId = (std::string *)pUndoState->lpdwData[pos];
448 delete pTempMenuId;
449 }
[3]450 break;
451 case RAD_UNDO_ICONRES:
[624]452 {
453 std::string *pTempStr = (std::string *)pUndoState->lpdwData[pos];
454 delete pTempStr;
455 }
[3]456 break;
457 case RAD_UNDO_POSITION:
458 HeapDefaultFree((void *)pUndoState->lpdwData[pos]);
459 break;
460 case RAD_UNDO_IMAGESTATE:
[624]461 {
462 ActiveBasic::PM::ImageControlInfo *pImageCtrlInfo = (ActiveBasic::PM::ImageControlInfo *)pUndoState->lpdwData[pUndoState->NowPos];
463
464 delete pImageCtrlInfo;
465
466 break;
467 }
[3]468 }
469 pUndoState->Command[pos]=0;
470}
471void Rad_NoticeChanging(int WndNum,int Command,int SelectItemNum,DWORD dwData){
472 extern HANDLE hHeap;
473 extern MDIINFO MdiInfo[MAX_WNDNUM];
474 int i;
475 RAD_UNDOSTATE *pUndoState;
476
477 pUndoState=&MdiInfo[WndNum].MdiRadInfo->undo;
478
479 //Redoされた場合の不要なデータを削除する
480 for(i=pUndoState->NowPos;;i++){
481 if(i==MAX_UNDONUM) i=0;
482 if(pUndoState->Command[i]==0) break;
483 Rad_DeleteUndoData(WndNum,i);
484 }
485
486 pUndoState->Command[pUndoState->NowPos]=Command;
487 pUndoState->SelectItemNum[pUndoState->NowPos]=SelectItemNum;
488 switch(Command){
489 case RAD_UNDO_INSERTITEM:
490 case RAD_UNDO_DELETEITEM:
[624]491 ActiveBasic::PM::ChildWindowInfo *pChildInfo,*pSaveChildInfo;
492 pChildInfo=(ActiveBasic::PM::ChildWindowInfo *)dwData;
493 pSaveChildInfo = new ActiveBasic::PM::ChildWindowInfo();
494 pSaveChildInfo->SetName( pChildInfo->GetName() );
[3]495 pSaveChildInfo->pos=pChildInfo->pos;
496 pSaveChildInfo->size=pChildInfo->size;
[624]497 pSaveChildInfo->SetCaption( pChildInfo->GetCaption() );
498 pSaveChildInfo->SetStyle( pChildInfo->GetStyle() );
499 pSaveChildInfo->SetExStyle( pChildInfo->GetExStyle() );
[3]500 pSaveChildInfo->Control=pChildInfo->Control;
501 if(pChildInfo->Control==CT_IMAGEBOX){
502 //イメージ ボックスの場合
[624]503 pSaveChildInfo->image = pChildInfo->image;
[3]504 }
505 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)pSaveChildInfo;
506 break;
507 case RAD_UNDO_NAME:
508 if(SelectItemNum==SELECT_WINDOW){
[617]509 RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)dwData;
510 RAD_UNDOSTATE_NAME *SaveNames = new RAD_UNDOSTATE_NAME();
511 SaveNames->name = names->name;
512 SaveNames->HandleName = names->HandleName;
[3]513 SaveNames->CallBackName=(char *)HeapAlloc(hHeap,0,lstrlen(names->CallBackName)+1);
514 lstrcpy(SaveNames->CallBackName,names->CallBackName);
515 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)SaveNames;
516 }
517 else{
[624]518 std::string *pTempStr = new std::string( *(std::string *)dwData );
519 pUndoState->lpdwData[pUndoState->NowPos] = (DWORD)pTempStr;
[3]520 }
521 break;
522 case RAD_UNDO_CAPTION:
[624]523 {
524 std::string *pTempStr = new std::string( *(std::string *)dwData );
525 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)pTempStr;
526 }
[3]527 break;
528 case RAD_UNDO_FONT:
529 LOGFONT *pLogFont,*pSaveLogFont;
530 pLogFont=(LOGFONT *)dwData;
531 pSaveLogFont=(LOGFONT *)HeapAlloc(hHeap,0,sizeof(LOGFONT));
532 *pSaveLogFont=*pLogFont;
533 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)pSaveLogFont;
534 break;
535 case RAD_UNDO_BGCOLOR:
536 pUndoState->lpdwData[pUndoState->NowPos]=dwData;
537 break;
538 case RAD_UNDO_WINDOWMENU:
[624]539 {
540 std::string *pTempStr = new std::string( *(std::string *)dwData );
541 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)pTempStr;
542 }
543 break;
[3]544 case RAD_UNDO_ICONRES:
[624]545 {
546 std::string *pTempStr = new std::string( *(std::string *)dwData );
547 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)pTempStr;
[3]548 }
549 break;
550 case RAD_UNDO_STYLE:
551 case RAD_UNDO_EXSTYLE:
552 pUndoState->lpdwData[pUndoState->NowPos]=dwData;
553 break;
554 case RAD_UNDO_POSITION:
555 POINTANDSIZE *pPointAndSize,*pSavePointAndSize;
556 pPointAndSize=(POINTANDSIZE *)dwData;
557 pSavePointAndSize=(POINTANDSIZE *)HeapAlloc(hHeap,0,sizeof(POINTANDSIZE));
558 pSavePointAndSize->pos=pPointAndSize->pos;
559 pSavePointAndSize->size=pPointAndSize->size;
560 pUndoState->lpdwData[pUndoState->NowPos]=(DWORD)pSavePointAndSize;
561 break;
562 case RAD_UNDO_IMAGESTATE:
[624]563 {
564 ActiveBasic::PM::ImageControlInfo *pImageCtrlInfo = (ActiveBasic::PM::ImageControlInfo *)dwData;
565 ActiveBasic::PM::ImageControlInfo *pSaveImageCtrlInfo = new ActiveBasic::PM::ImageControlInfo( *pImageCtrlInfo );
566 pUndoState->lpdwData[pUndoState->NowPos] = (DWORD)( new ActiveBasic::PM::ImageControlInfo( *pImageCtrlInfo ) );
567 break;
568 }
[3]569 case RAD_UNDO_TYPE:
570 pUndoState->lpdwData[pUndoState->NowPos]=dwData;
571 break;
572 }
573
574 pUndoState->NowPos++;
575 if(pUndoState->NowPos==MAX_UNDONUM) pUndoState->NowPos=0;
576 if(pUndoState->Command[pUndoState->NowPos]){
577 //一番古い情報を切り捨てる
578 Rad_DeleteUndoData(WndNum,pUndoState->NowPos);
579 }
580
[618]581 projectInfo.ModifyOfMaterial=1;
[3]582
583 ResetState_UndoMenu();
584}
Note: See TracBrowser for help on using the repository browser.