source: trunk/geant4/interfaces/basic/src/G4UIQt.cc @ 488

Last change on this file since 488 was 488, checked in by garnier, 17 years ago

r581@mac-90108: laurentgarnier | 2007-06-07 10:29:52 +0200
version ok, mais sans signals slots

  • Property svn:mime-type set to text/cpp
File size: 20.1 KB
Line 
1// TODO !
2
3//
4// ********************************************************************
5// * License and Disclaimer                                           *
6// *                                                                  *
7// * The  Geant4 software  is  copyright of the Copyright Holders  of *
8// * the Geant4 Collaboration.  It is provided  under  the terms  and *
9// * conditions of the Geant4 Software License,  included in the file *
10// * LICENSE and available at  http://cern.ch/geant4/license .  These *
11// * include a list of copyright holders.                             *
12// *                                                                  *
13// * Neither the authors of this software system, nor their employing *
14// * institutes,nor the agencies providing financial support for this *
15// * work  make  any representation or  warranty, express or implied, *
16// * regarding  this  software system or assume any liability for its *
17// * use.  Please see the license in the file  LICENSE  and URL above *
18// * for the full disclaimer and the limitation of liability.         *
19// *                                                                  *
20// * This  code  implementation is the result of  the  scientific and *
21// * technical work of the GEANT4 collaboration.                      *
22// * By using,  copying,  modifying or  distributing the software (or *
23// * any work based  on the software)  you  agree  to acknowledge its *
24// * use  in  resulting  scientific  publications,  and indicate your *
25// * acceptance of all terms of the Geant4 Software license.          *
26// ********************************************************************
27//
28//
29// $Id: G4UIQt.cc,v 1.14 2007/05/29 11:09:49 $
30// GEANT4 tag $Name: geant4-08-01 $
31//
32// L. Garnier
33
34//#define DEBUG
35
36#ifdef G4UI_BUILD_QT_SESSION
37
38#include "G4Types.hh"
39
40#include <string.h>
41
42#include "G4UIQt.hh"
43#include "G4UImanager.hh"
44#include "G4StateManager.hh"
45#include "G4UIcommandTree.hh"
46#include "G4UIcommandStatus.hh"
47
48#include "G4Qt.hh"
49
50#include <QtGui/qapplication.h>
51#include <QtGui/qwidget.h>
52#include <QtGui/qmenu.h>
53#include <QtGui/qmenubar.h>
54#include <QtGui/qboxlayout.h>
55#include <QtGui/qpushbutton.h>
56#include <QtGui/qlabel.h>
57
58#include <stdlib.h>
59
60static G4bool ConvertStringToInt(const char*,int&);
61//static void ExecuteChangeSizeFunction(Widget);
62
63static G4bool exitSession = true;
64static G4bool exitPause = true;
65static G4bool exitHelp = true;
66/***************************************************************************/
67/**
68 Build a Qt window with a menubar, output area and promt area
69      +-----------------------+
70      |exit menu|             |
71      |                       |
72      | +-------------------+ |
73      | |                   | |
74      | |  Output area      | |
75      | |                   | |
76      | +-------------------+ |
77      |     | clear |         |
78      | +-------------------+ |
79      | |> promt area       | |
80      | +-------------------+ |
81      +-----------------------+
82*/
83
84G4UIQt::G4UIQt (
85 int argc,
86 char** argv
87)
88/***************************************************************************/
89/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
90{
91  G4UImanager* UI = G4UImanager::GetUIpointer(); // TO KEEP
92  if(UI!=NULL) UI->SetSession(this); // TO KEEP
93
94  G4Qt* interactorManager = G4Qt::getInstance (argc,argv,(char*)"Qt");  // TO KEEP ?
95
96  mainWindow = new QMainWindow();
97  mainWindow->setWindowTitle( "G4UI Session" );
98  mainWindow->setBaseSize(300,200);
99  QWidget* centralWidget = new QWidget();
100  QVBoxLayout* vBox = new QVBoxLayout();
101  textArea = new QTextEdit();
102  QLabel *sessionLabel = new QLabel("Session : ");
103  QPushButton *clearButton = new QPushButton("clear");
104//  mainWindow->connect(clearButton, SIGNAL(clicked()), SLOT(textArea->clear()));
105
106//  QMenu *menuFile = new QMenu("File");
107//  mainWindow->menuBar()->addMenu(menuFile);
108
109  promptArea = new QLineEdit();
110  textArea->setReadOnly(FALSE);
111  vBox->addWidget(textArea);
112  vBox->addWidget(clearButton);
113  vBox->addWidget(sessionLabel);
114  vBox->addWidget(promptArea);
115  centralWidget->setLayout(vBox);
116  mainWindow->setCentralWidget(centralWidget);
117
118//  QMainWindow top = (QMainWindow)interactorManager->GetMainInteractor();
119
120//   if(getenv("XENVIRONMENT")==NULL) {
121//     XrmDatabase database = XrmGetDatabase(XtDisplay(top));
122//     if(database!=NULL) {
123//       XrmPutLineResource(&database,"*topShadowColor:white");
124//       XrmPutLineResource(&database,"*bottomShadowColor:black");
125//       XrmPutLineResource(&database,"*foreground:black");
126//       XrmPutLineResource(&database,"*background:lightgrey");
127//       XrmPutLineResource(&database,"*borderColor:lightgrey");
128//       XrmPutLineResource(&database,"*fontList:-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-1");
129//       XrmPutLineResource(&database,"*text.background:white");
130//       XrmPutLineResource(&database,"*text.fontList:*courier*-r-*--14-*");
131//       XrmPutLineResource(&database,"*text.maxLength:8000");
132//     }
133//   }
134
135//   Arg args[9];
136//   XtSetArg(args[0],XmNkeyboardFocusPolicy,XmPOINTER); // For completion.
137//   shell = XtAppCreateShell ("G4UIXm","G4UIXm",
138//                          topLevelShellWidgetClass,XtDisplay(top),
139//                          args,1);
140//   form = XmCreateForm (shell,(char*)"form",NULL,0);
141//   XtManageChild (form);
142
143//   XtSetArg(args[0],XmNtopAttachment   ,XmATTACH_FORM);
144//   XtSetArg(args[1],XmNleftAttachment  ,XmATTACH_FORM);
145//   XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
146//   menuBar = XmCreateMenuBar (form,(char*)"menuBar",args,3);
147
148//   XtSetArg(args[0],XmNtopAttachment      ,XmATTACH_NONE);
149//   XtSetArg(args[1],XmNleftAttachment     ,XmATTACH_FORM);
150//   XtSetArg(args[2],XmNrightAttachment    ,XmATTACH_FORM);
151//   XtSetArg(args[3],XmNbottomAttachment   ,XmATTACH_FORM);
152//   command = XmCreateCommand (form,(char*)"command",args,4);
153//   XtManageChild (command);
154
155//   XtSetArg(args[0],XmNtopAttachment   ,XmATTACH_NONE);
156//   XtSetArg(args[1],XmNleftAttachment  ,XmATTACH_FORM);
157//   XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
158//   XtSetArg(args[3],XmNbottomAttachment,XmATTACH_WIDGET);
159//   XtSetArg(args[4],XmNbottomWidget    ,command);
160//   XmString cps = XmStringLtoRCreate((char*)"Clear",XmSTRING_DEFAULT_CHARSET);
161//   XtSetArg (args[5],XmNlabelString,cps);
162//   Widget clearButton = XmCreatePushButton(form,(char*)"clearButton",args,6);
163//   XmStringFree (cps);
164//   XtManageChild (clearButton);
165
166//   XtSetArg(args[0],XmNtopAttachment   ,XmATTACH_WIDGET);
167//   XtSetArg(args[1],XmNtopWidget       ,menuBar);
168//   XtSetArg(args[2],XmNleftAttachment  ,XmATTACH_FORM);
169//   XtSetArg(args[3],XmNrightAttachment ,XmATTACH_FORM);
170//   XtSetArg(args[4],XmNbottomAttachment,XmATTACH_WIDGET);
171//   XtSetArg(args[5],XmNbottomWidget    ,clearButton);
172//   XtSetArg(args[6],XmNeditMode        ,XmMULTI_LINE_EDIT);
173//   XtSetArg(args[7],XmNrows            ,12);
174//   XtSetArg(args[8],XmNcolumns         ,80);
175//   text = XmCreateSGcrolledText (form,(char*)"text",args,9);
176//   XtManageChild (text);
177
178//   XtAddCallback(clearButton,XmNactivateCallback,
179//              clearButtonCallback,(XtPointer)text);
180//   XtAddCallback(command,XmNcommandEnteredCallback,
181//              commandEnteredCallback,(XtPointer)this);
182
183//   Widget commandText = XmCommandGetChild(command,XmDIALOG_COMMAND_TEXT);
184//   XtAddEventHandler(commandText,KeyPressMask,False,keyHandler,(XtPointer)this);
185
186//   XtRealizeWidget(shell);
187//   XtMapWidget(shell);
188
189  if(UI!=NULL) UI->SetCoutDestination(this);  // TO KEEP
190}
191/***************************************************************************/
192G4UIQt::~G4UIQt(
193)
194/***************************************************************************/
195/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
196{
197  G4UImanager* UI = G4UImanager::GetUIpointer();  // TO KEEP
198  if(UI!=NULL) {  // TO KEEP
199    UI->SetSession(NULL);  // TO KEEP
200    UI->SetCoutDestination(NULL);  // TO KEEP
201  }
202
203 
204  if (mainWindow!=NULL)
205    delete mainWindow;
206}
207/***************************************************************************/
208/*
209    Start the Qt main loop
210 */
211G4UIsession* G4UIQt::SessionStart (
212)
213/***************************************************************************/
214/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
215{
216
217  mainWindow->show();
218  qApp->exec();
219
220//   Prompt("session"); // TO KEEP
221//   exitSession = false; // TO KEEP
222//   interactorManager->DisableSecondaryLoop (); // TO KEEP
223//   void* event; // TO KEEP
224//   while((event = interactorManager->GetEvent())!=NULL) {  // TO KEEP
225//     interactorManager->DispatchEvent(event); // TO KEEP
226//     if(exitSession==true) break; // TO KEEP
227//   } // TO KEEP
228//   interactorManager->EnableSecondaryLoop (); // TO KEEP
229  return this; // TO KEEP
230}
231/***************************************************************************/
232/**
233  Display the prompt in the prompt area
234 */
235void G4UIQt::Prompt (
236 G4String aPrompt
237)
238/***************************************************************************/
239/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
240{
241// TODO !
242//  Arg args[1];
243//  char* str = (char*)XtNewString(aPrompt.data());
244//  XmString cps = XmStringLtoRCreate(str,XmSTRING_DEFAULT_CHARSET);
245//  XtFree(str);
246//  XtSetArg(args[0],XmNpromptString,cps);
247//  XtSetValues(command,args,1);
248//  XmStringFree(cps);
249}
250/***************************************************************************/
251void G4UIQt::SessionTerminate (
252)
253/***************************************************************************/
254/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
255{
256}
257/***************************************************************************/
258void G4UIQt::PauseSessionStart (
259 G4String a_state
260)
261/***************************************************************************/
262/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
263{
264  if(a_state=="G4_pause> ") {  // TO KEEP
265    SecondaryLoop ("Pause, type continue to exit this state"); // TO KEEP
266  } // TO KEEP
267
268  if(a_state=="EndOfEvent") { // TO KEEP
269    // Picking with feed back in event data Done here !!!
270    SecondaryLoop ("End of event, type continue to exit this state"); // TO KEEP
271  } // TO KEEP
272}
273/***************************************************************************/
274void G4UIQt::SecondaryLoop (
275 G4String a_prompt
276)
277/***************************************************************************/
278/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
279{
280  G4Qt* interactorManager = G4Qt::getInstance (); // TO KEEP ?
281  Prompt(a_prompt); // TO KEEP
282  exitPause = false; // TO KEEP
283  void* event; // TO KEEP
284  while((event = interactorManager->GetEvent())!=NULL) {  // TO KEEP
285    interactorManager->DispatchEvent(event); // TO KEEP
286    if(exitPause==true) break; // TO KEEP
287  } // TO KEEP
288  Prompt("session"); // TO KEEP
289}
290/***************************************************************************/
291/**
292  Receive a cout from Geant4. We have to display it in the cout zone
293 */
294G4int G4UIQt::ReceiveG4cout (
295 G4String a_string
296)
297/***************************************************************************/
298/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
299{
300// TODO !
301//  XmTextAppendString(text,(char*)a_string.data());
302//  return 0;
303}
304/***************************************************************************/
305/**
306  Receive a cerr from Geant4. We have to display it in the cout zone
307 */
308G4int G4UIQt::ReceiveG4cerr (
309 G4String a_string
310)
311/***************************************************************************/
312/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
313{
314// TODO !
315//  XmTextAppendString(text,(char*)a_string.data());
316//  return 0;
317}
318/***************************************************************************/
319G4bool G4UIQt::GetHelpChoice(
320 G4int& aInt
321)
322/***************************************************************************/
323/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
324{
325//   fHelp = true; // TO KEEP
326//   // SecondaryLoop : // TO KEEP
327//   G4Qt* interactorManager = G4Qt::getInstance (); // TO KEEP ?
328//   Prompt("Help"); // TO KEEP
329//   exitHelp = false; // TO KEEP
330//   void* event; // TO KEEP
331//   while((event = interactorManager->GetEvent())!=NULL) {  // TO KEEP
332//     interactorManager->DispatchEvent(event); // TO KEEP
333//     if(exitHelp==true) break; // TO KEEP
334//   } // TO KEEP
335//   Prompt("session"); // TO KEEP
336//   // // TO KEEP
337//   if(fHelp==false) return false; // TO KEEP
338//   aInt = fHelpChoice; // TO KEEP
339//   fHelp = false; // TO KEEP
340//   return true; // TO KEEP
341}
342/***************************************************************************/
343void G4UIQt::ExitHelp(
344)
345/***************************************************************************/
346/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
347{
348}
349/***************************************************************************/
350void G4UIQt::AddMenu (
351 const char* a_name
352,const char* a_label
353)
354/***************************************************************************/
355/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
356{
357//   if(menuBar==NULL) return;
358//   if(a_name==NULL) return;
359//   if(a_label==NULL) return;
360//   XtManageChild (menuBar);
361//   // Pulldown menu :
362//   Widget widget;
363//   widget = XmCreatePulldownMenu (menuBar,(char*)a_name,NULL,0);
364//   AddInteractor (a_name,(G4Interactor)widget);
365//   // Cascade button :
366//   Arg args[2];
367//   XmString cps = XmStringLtoRCreate((char*)a_label,XmSTRING_DEFAULT_CHARSET);
368//   XtSetArg (args[0],XmNlabelString,cps);
369//   XtSetArg (args[1],XmNsubMenuId,widget);
370//   widget = XmCreateCascadeButton (menuBar,(char*)a_name,args,2);
371//   XmStringFree (cps);
372//   XtManageChild (widget);
373//   ExecuteChangeSizeFunction(form);
374}
375/***************************************************************************/
376void G4UIQt::AddButton (
377 const char* a_menu
378,const char* a_label
379,const char* a_command
380)
381/***************************************************************************/
382/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
383{
384//   if(a_menu==NULL) return; // TO KEEP
385//   if(a_label==NULL) return; // TO KEEP
386//   if(a_command==NULL) return; // TO KEEP
387//   Widget parent = (Widget)GetInteractor(a_menu);
388//   if(parent==NULL) return;
389//   Widget widget = XmCreatePushButton(parent,(char*)a_label,NULL,0);
390//   XtManageChild (widget);
391//   XtAddCallback (widget,XmNactivateCallback,ButtonCallback,(XtPointer)this);
392//   commands[widget] = a_command;
393//}
394// /***************************************************************************/
395// G4String G4UIXm::GetCommand (
396//  Widget a_widget
397// )
398// /***************************************************************************/
399// /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
400// {
401//   return commands[a_widget];
402// }
403/***************************************************************************/
404/***************************************************************************/
405/***************************************************************************/
406/**
407  Callback call when "enter" clicked on the prompt zone.
408  Send the command to geant4
409 */
410// TODO !
411//void G4UIQt::commandEnteredCallback (
412// Widget    a_widget
413//,XtPointer a_tag
414//,XtPointer a_data
415//)
416/***************************************************************************/
417/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
418//{
419//  G4UIQt*  This = (G4UIQt*)a_tag;
420
421//   XmString cps  = ((XmCommandCallbackStruct*)a_data)->value;
422//   char*    ss = XmConvertCompoundStringToString(cps,0);
423//   G4String command (ss);
424//   XtFree   (ss);
425
426//   if(This->fHelp==true) {
427//     exitHelp = true;
428//     This->fHelp = ConvertStringToInt(command.data(),This->fHelpChoice);
429//   } else {
430//     This->ApplyShellCommand (command,exitSession,exitPause);
431//   }
432
433//   a_widget = NULL;
434//   a_tag    = NULL;
435//}
436// /***************************************************************************/
437// void G4UIXm::keyHandler (
438//  Widget a_widget
439// ,XtPointer a_tag
440// ,XEvent* a_event
441// ,Boolean*
442// )
443// /***************************************************************************/
444// /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
445// {
446//   KeySym keySym;
447//   XLookupString(&(a_event->xkey),NULL,0,&keySym,NULL);
448//   if(keySym!=XK_Tab) return;
449//   G4UIXm* This = (G4UIXm*)a_tag;
450//   char* s = XmTextGetString(a_widget);
451//   G4String ss = This->Complete(s);
452//   XmTextSetString(a_widget,(char*)ss.data());
453//   XtFree(s);
454//   XmTextSetInsertionPosition(a_widget,XmTextGetLastPosition(a_widget));
455//}
456
457 /***************************************************************************/
458// void clearButtonCallback (
459// )
460/***************************************************************************/
461/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
462//{
463//}
464/***************************************************************************/
465// TODO !
466//void G4UIQt::ButtonCallback (
467// Widget a_widget
468//,XtPointer a_tag
469//,XtPointer
470//)
471/***************************************************************************/
472/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
473//{
474//   G4UIXm* This = (G4UIXm*)a_tag;
475//   if(This->fHelp==true) return; // Disabled when in help.
476//   G4String ss = This->GetCommand (a_widget);
477//   //printf ("debug : execute:\n%s\n",ss.data());
478//   This->ApplyShellCommand(ss,exitSession,exitPause);
479//}
480/***************************************************************************/
481/***************************************************************************/
482/***************************************************************************/
483// char* XmConvertCompoundStringToString (
484//  XmString a_cps
485// ,int a_number
486// )
487// /***************************************************************************/
488// /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
489// {
490//   if(a_cps==NULL) return NULL;
491//   char* ss = NULL;
492//   XmStringContext context;
493//   XmStringInitContext(&context,a_cps);
494//   int icount = 0;
495//   Boolean Done = False;
496//   while(Done==False) { 
497//     char* text = NULL;
498//     XmStringCharSet charset = NULL;
499//     XmStringDirection direct;
500//     Boolean sep;
501//     if(XmStringGetNextSegment(context,&text,&charset,&direct,&sep)==True) {
502//       XtFree(charset);
503//       if(sep==True) Done = True;
504//       if(icount==a_number) {
505//      ss = text;
506//      break;
507//       }
508//       icount++;
509//       XtFree(text);
510//     }
511//     else
512//       Done = True;
513//   }
514//   XmStringFreeContext(context);
515//   return ss;
516}
517// /***************************************************************************/
518// void XmTextAppendString (
519//  Widget This
520// ,char* a_string
521// )
522// /***************************************************************************/
523// /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
524// {
525//   if(This==NULL) return;
526//   if(!XtIsSubclass(This,xmTextWidgetClass)) return;
527//   if(a_string==NULL) return;
528//   XmTextPosition  lastpos = XmTextGetLastPosition(This);
529//   XmTextReplace(This,lastpos,lastpos,a_string);
530//   XmTextSetInsertionPosition(This,XmTextGetLastPosition(This));
531// }
532//////////////////////////////////////////////////////////////////////////////
533G4bool ConvertStringToInt(
534 const char* aString
535,int& aInt
536)
537//////////////////////////////////////////////////////////////////////////////
538//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
539{
540  aInt = 0; // TO KEEP
541  if(aString==NULL) return false; // TO KEEP
542  char* s; // TO KEEP
543  long value = strtol(aString,&s,10); // TO KEEP
544  if(s==aString) return false; // TO KEEP
545  aInt = value; // TO KEEP
546  return true; // TO KEEP
547}
548#include <X11/IntrinsicP.h>
549//////////////////////////////////////////////////////////////////////////////
550// void ExecuteChangeSizeFunction (
551//  Widget aWidget
552// )
553// //////////////////////////////////////////////////////////////////////////////
554// //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
555// {
556//   if(aWidget==NULL) return;
557//   if(aWidget->core.widget_class->core_class.resize==NULL) return;
558//   (aWidget->core.widget_class->core_class.resize)(aWidget);
559// }
560
561
562#endif
Note: See TracBrowser for help on using the repository browser.