00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef YUI_h
00021 #define YUI_h
00022
00023 #include <pthread.h>
00024 #include <deque>
00025 #include <ycp/YCPString.h>
00026 #include <ycp/YCPVoid.h>
00027 #include <ycp/YCPTerm.h>
00028 #include <ycp/YCPInteger.h>
00029 #include <ycp/YCPMap.h>
00030 #include <ycp/YCPBoolean.h>
00031 #include <ycp/YCPByteblock.h>
00032
00033 #include "YWidget.h"
00034 #include "YAlignment.h"
00035
00036
00037 using std::deque;
00038 using std::string;
00039
00040 class YContainerWidget;
00041 class YEvent;
00042 class YDialog;
00043 class YMacroPlayer;
00044 class YMacroRecorder;
00045 class YMenu;
00046 class YMenuButton;
00047 class YMultiSelectionBox;
00048 class YRadioButtonGroup;
00049 class YTree;
00050 class YTreeItem;
00051 class Y2Component;
00052
00053
00054 typedef struct
00055 {
00056 int red;
00057 int green;
00058 int blue;
00059 } YColor;
00060
00061 struct YUIBuiltinCallData
00062 {
00063 void * function;
00064 int argc;
00065 YCPValue * argv;
00066 YCPValue result;
00067
00068 YUIBuiltinCallData()
00069 : result( YCPVoid() )
00070 {
00071 function = 0;
00072 argc = 0;
00073 argv = 0;
00074 }
00075 };
00076
00077
00094 class YUI
00095 {
00096 protected:
00100 YUI( bool with_threads );
00101
00102
00103 public:
00104
00108 virtual ~YUI();
00109
00113 YDialog *currentDialog() const;
00114
00115
00124 virtual void blockEvents( bool block = true ) { _events_blocked = block; }
00125
00132 void unblockEvents() { blockEvents( false ); }
00133
00139 virtual bool eventsBlocked() const { return _events_blocked; }
00140
00145 void topmostConstructorHasFinished();
00146
00155 virtual void internalError( const char *msg );
00156
00160 static int Recode( const string & str,
00161 const string & from,
00162 const string & to,
00163 string & outstr );
00164
00168 int parseMenuItemList( const YCPList & itemList, YMenuButton *menu_button, YMenu *parentMenu = 0 );
00169
00170
00174 int parseTreeItemList( const YCPList & itemList, YTree *tree, YTreeItem *parentItem = 0 );
00175
00176
00180 int parseMultiSelectionBoxItemList( const YCPList & item_list, YMultiSelectionBox * multi_sel_box );
00181
00185 bool YUI::parseRgb( const YCPValue & val, YColor *color, bool complain );
00186
00197 YWidget *createWidgetTree( YWidget *parent, YWidgetOpt & opt, YRadioButtonGroup *rbg, const YCPTerm & term );
00198
00202 YWidget *createWidgetTree( YWidget *parent, YRadioButtonGroup *rbg, const YCPTerm & term );
00203
00212 YWidget *widgetWithId( const YCPValue & id, bool log_error=false );
00213
00222 YWidget *widgetWithId( YContainerWidget *widgetRoot, const YCPValue & id, bool log_error=false );
00223
00227 YCPBoolean evaluateReplaceWidget( const YCPValue & value_id, const YCPTerm & term );
00228
00234 int defaultFunctionKey( YCPString label );
00235
00243 string productName() const { return _productName; }
00244
00249 static bool reverseLayout() { return _reverseLayout; }
00250
00254 static void setReverseLayout( bool rev ) { _reverseLayout = rev; }
00255
00261 YCPValue callBuiltin( void * function, int argc, YCPValue argv[] );
00262
00267 static YCPValue callFunction( void * function, int argc, YCPValue argv[] );
00268
00272 void setCallback( Y2Component * callback ) { _callback = callback; }
00273
00277 Y2Component * getCallback() const { return _callback; }
00278
00283 YCPValue evaluateAskForExistingDirectory ( const YCPString& startDir, const YCPString& headline );
00284 YCPValue evaluateAskForExistingFile ( const YCPString& startDir, const YCPString& filter, const YCPString& headline );
00285 YCPValue evaluateAskForSaveFileName ( const YCPString& startDir, const YCPString& filter, const YCPString& headline );
00286 void evaluateBusyCursor ();
00287 YCPValue evaluateChangeWidget ( const YCPValue & value_id, const YCPValue & property, const YCPValue & new_value );
00288 void evaluateCheckShortcuts ();
00289 YCPValue evaluateCloseDialog ();
00290 void evaluateDumpWidgetTree ();
00291 void evaluateFakeUserInput ( const YCPValue & next_input );
00292 YCPMap evaluateGetDisplayInfo ();
00293 YCPString evaluateGetLanguage ( const YCPBoolean & strip_encoding );
00294 YCPValue evaluateGetModulename ( const YCPTerm & term );
00295 YCPString evaluateGetProductName ();
00296 YCPString evaluateGlyph ( const YCPSymbol & symbol );
00297 YCPValue evaluateHasSpecialWidget ( const YCPSymbol & widget );
00298 void evaluateMakeScreenShot ( const YCPString & filename );
00299 void evaluateNormalCursor ();
00300 YCPBoolean evaluateOpenDialog ( const YCPTerm & term, const YCPTerm & term = YCPNull() );
00301 void evaluatePlayMacro ( const YCPString & filename );
00302 void evaluatePostponeShortcutCheck ();
00303 YCPValue evaluateQueryWidget ( const YCPValue& value_id, const YCPValue& property );
00304 void evaluateRecalcLayout ();
00305 YCPValue evaluateRecode ( const YCPString & from, const YCPString & to, const YCPString & text );
00306 void evaluateRecordMacro ( const YCPString & filename );
00307 void evaluateRedrawScreen ();
00308 YCPValue evaluateRunPkgSelection ( const YCPValue & value_id );
00309 void evaluateSetConsoleFont ( const YCPString& magic,
00310 const YCPString& font,
00311 const YCPString& screen_map,
00312 const YCPString& unicode_map,
00313 const YCPString& encoding );
00314 void evaluateSetKeyboard ();
00315 YCPBoolean evaluateSetFocus ( const YCPValue & value_id );
00316 void evaluateSetFunctionKeys ( const YCPMap & new_keys );
00317 void evaluateSetLanguage ( const YCPString& lang, const YCPString& encoding = YCPNull() );
00318 void evaluateSetModulename ( const YCPString & name );
00319 void evaluateSetProductName ( const YCPString & name );
00320 void evaluateStopRecordMacro ();
00321 YCPBoolean evaluateWidgetExists ( const YCPValue & value_id );
00322
00323 YCPValue evaluateUserInput ();
00324 YCPValue evaluateTimeoutUserInput ( const YCPInteger & timeout );
00325 YCPValue evaluateWaitForEvent ( const YCPInteger & timeout = YCPNull() );
00326 YCPValue evaluateWizardCommand ( const YCPTerm & command );
00327 YCPValue evaluatePollInput ();
00328
00337 void uiThreadMainLoop();
00338
00339
00340 protected:
00341
00342
00343
00344
00345 const char *moduleName();
00346
00347
00348
00363 virtual void idleLoop( int fd_ycp );
00364
00383 virtual YEvent * userInput( unsigned long timeout_millisec = 0 ) = 0;
00384
00399 virtual YEvent * pollInput() = 0;
00400
00405 virtual void showDialog( YDialog *dialog );
00406
00412 virtual void closeDialog( YDialog *dialog );
00413
00414
00423 virtual YCPString glyph( const YCPSymbol & glyphSymbol ) { return YCPString( "" ); }
00424
00425
00426
00427
00428
00429
00434 virtual YDialog *createDialog( YWidgetOpt & opt ) = 0;
00435
00439 virtual YContainerWidget *createSplit( YWidget *parent, YWidgetOpt & opt, YUIDimension dimension ) = 0;
00440
00444 virtual YContainerWidget *createReplacePoint( YWidget *parent, YWidgetOpt & opt ) = 0;
00445
00449 virtual YContainerWidget *createAlignment( YWidget *parent, YWidgetOpt & opt,
00450 YAlignmentType halign,
00451 YAlignmentType valign ) = 0;
00452
00456 virtual YContainerWidget *createSquash( YWidget *parent, YWidgetOpt & opt, bool hsquash, bool vsquash ) = 0;
00457
00458
00462 virtual YContainerWidget *createRadioButtonGroup( YWidget *parent, YWidgetOpt & opt ) = 0;
00463
00467 virtual YContainerWidget *createFrame( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00468
00469
00470
00471
00472
00473
00474
00478 virtual YWidget *createEmpty( YWidget *parent, YWidgetOpt & opt ) = 0;
00479
00483 virtual YWidget *createSpacing( YWidget *parent, YWidgetOpt & opt, float size, bool horizontal, bool vertical ) = 0;
00484
00491 virtual YWidget *createLabel( YWidget *parent, YWidgetOpt & opt, const YCPString & text ) = 0;
00492
00493
00498 virtual YWidget *createRichText( YWidget *parent, YWidgetOpt & opt, const YCPString & text ) = 0;
00499
00500
00507 virtual YWidget *createLogView( YWidget *parent, YWidgetOpt & opt,
00508 const YCPString & label, int visibleLines, int maxLines ) = 0;
00509
00514 virtual YWidget *createPushButton( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00515
00520 virtual YWidget *createMenuButton( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00521
00527 virtual YWidget *createRadioButton( YWidget *parent, YWidgetOpt & opt, YRadioButtonGroup *rbg,
00528 const YCPString & label, bool checked ) = 0;
00529
00535 virtual YWidget *createCheckBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label, bool checked ) = 0;
00536
00540 virtual YWidget *createTextEntry( YWidget *parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text ) = 0;
00541
00545 virtual YWidget *createMultiLineEdit( YWidget *parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text ) = 0;
00546
00550 virtual YWidget *createSelectionBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00551
00555 virtual YWidget *createMultiSelectionBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00556
00560 virtual YWidget *createComboBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00561
00565 virtual YWidget *createTree( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00566
00570 virtual YWidget *createTable( YWidget *parent, YWidgetOpt & opt, vector<string> header ) = 0;
00571
00575 virtual YWidget *createProgressBar( YWidget *parent, YWidgetOpt & opt, const YCPString & label,
00576 const YCPInteger & maxprogress, const YCPInteger & progress ) = 0;
00577
00581 virtual YWidget *createImage( YWidget *parent, YWidgetOpt & opt, YCPByteblock imagedata, YCPString defaulttext ) = 0;
00582
00586 virtual YWidget *createImage( YWidget *parent, YWidgetOpt & opt, YCPString file_name, YCPString defaulttext ) = 0;
00587
00591 virtual YWidget *createIntField( YWidget *parent, YWidgetOpt & opt,
00592 const YCPString & label, int minValue, int maxValue, int initialValue ) = 0;
00593
00600 virtual YWidget *createPackageSelector( YWidget *parent, YWidgetOpt & opt, const YCPString & floppyDevice ) = 0;
00601
00605 virtual YWidget *createPkgSpecial( YWidget *parent, YWidgetOpt & opt, const YCPString & subwidget ) = 0;
00606
00607
00615 virtual YWidget *createDummySpecialWidget( YWidget *parent, YWidgetOpt & opt );
00616 virtual bool hasDummySpecialWidget() { return true; }
00617
00625 virtual YWidget * createDownloadProgress( YWidget *parent, YWidgetOpt & opt,
00626 const YCPString & label,
00627 const YCPString & filename,
00628 int expectedSize );
00629
00630 virtual bool hasDownloadProgress() { return false; }
00631
00639 virtual YWidget * createBarGraph( YWidget *parent, YWidgetOpt & opt );
00640 virtual bool hasBarGraph() { return false; }
00641
00649 virtual YWidget * createColoredLabel( YWidget *parent, YWidgetOpt & opt,
00650 YCPString label,
00651 YColor foreground, YColor background,
00652 int margin );
00653 virtual bool hasColoredLabel() { return false; }
00654
00655
00659 virtual YWidget * createDate( YWidget *parent,
00660 YWidgetOpt & opt,
00661 const YCPString & label,
00662 const YCPString & date );
00663 virtual bool hasDate() { return false; }
00664
00665
00669 virtual YWidget * createTime( YWidget *parent,
00670 YWidgetOpt & opt,
00671 const YCPString & label,
00672 const YCPString & time );
00673 virtual bool hasTime() { return false; }
00674
00675
00683 virtual YWidget * createDumbTab( YWidget *parent, YWidgetOpt & opt );
00684 virtual bool hasDumbTab() { return false; }
00685
00686
00694 virtual YWidget * createMultiProgressMeter( YWidget *parent, YWidgetOpt & opt,
00695 bool horizontal, const YCPList & maxValues );
00696 virtual bool hasMultiProgressMeter() { return false; }
00697
00698
00706 virtual YWidget * createSlider( YWidget * parent,
00707 YWidgetOpt & opt,
00708 const YCPString & label,
00709 int minValue,
00710 int maxValue,
00711 int initialValue );
00712 virtual bool hasSlider() { return false; }
00713
00735 virtual YWidget *createPartitionSplitter( YWidget * parent,
00736 YWidgetOpt & opt,
00737 int usedSize,
00738 int totalFreeSize,
00739 int newPartSize,
00740 int minNewPartSize,
00741 int minFreeSize,
00742 const YCPString & usedLabel,
00743 const YCPString & freeLabel,
00744 const YCPString & newPartLabel,
00745 const YCPString & freeFieldLabel,
00746 const YCPString & newPartFieldLabel );
00747
00748 virtual bool hasPartitionSplitter() { return false; }
00749
00750
00754 virtual YWidget *createWizard( YWidget *parent, YWidgetOpt & opt,
00755 const YCPValue & backButtonId, const YCPString & backButtonLabel,
00756 const YCPValue & abortButtonId, const YCPString & abortButtonLabel,
00757 const YCPValue & nextButtonId, const YCPString & nextButtonLabel );
00758
00759 virtual bool hasWizard() { return false; }
00760
00761
00767 virtual YCPValue setLanguage( const YCPTerm & term );
00768
00769
00775 virtual YCPValue setConsoleFont( const YCPString & console_magic,
00776 const YCPString & font,
00777 const YCPString & screen_map,
00778 const YCPString & unicode_map,
00779 const YCPString & encoding );
00780
00781 virtual YCPValue setKeyboard();
00782
00787 virtual int getDisplayWidth() { return -1; }
00788 virtual int getDisplayHeight() { return -1; }
00789 virtual int getDisplayDepth() { return -1; }
00790 virtual long getDisplayColors() { return -1; }
00791 virtual int getDefaultWidth() { return -1; }
00792 virtual int getDefaultHeight() { return -1; }
00793 virtual bool textMode() { return true; }
00794 virtual bool hasImageSupport() { return false; }
00795 virtual bool hasLocalImageSupport() { return true; }
00796 virtual bool hasAnimationSupport() { return false; }
00797 virtual bool hasIconSupport() { return false; }
00798 virtual bool hasFullUtf8Support() { return false; }
00799 virtual bool richTextSupportsTable() { return false; }
00800
00805 virtual void busyCursor();
00806
00811 virtual void normalCursor();
00812
00817 virtual void redrawScreen();
00818
00823 virtual void makeScreenShot( string filename );
00824
00825
00832 virtual YCPValue runPkgSelection( YWidget * packageSelector ) { return YCPVoid(); }
00833
00834
00848 virtual YCPValue askForExistingDirectory( const YCPString & startDir,
00849 const YCPString & headline ) = 0;
00850
00866 virtual YCPValue askForExistingFile( const YCPString & startWith,
00867 const YCPString & filter,
00868 const YCPString & headline ) = 0;
00869
00886 virtual YCPValue askForSaveFileName( const YCPString & startWith,
00887 const YCPString & filter,
00888 const YCPString & headline ) = 0;
00889
00890
00891
00892 YCPValue callback ( const YCPValue & value );
00893
00897 YCPValue evaluateLocale( const YCPLocale & );
00898
00904 void recordMacro( string filename );
00905
00910 void stopRecordMacro();
00911
00916 void playMacro( string filename );
00917
00921 bool recordingMacro() { return macroRecorder != 0; }
00922
00926 bool playingMacro() { return macroPlayer != 0; }
00927
00928
00929 protected:
00934 void terminateUIThread();
00935
00936
00940 void createUIThread();
00941 friend void *start_ui_thread( void *ui_int );
00942
00947 void signalUIThread();
00948
00953 bool waitForUIThread();
00954
00959 void signalYCPThread();
00960
00965 bool waitForYCPThread();
00966
00970 YEvent * filterInvalidEvents( YEvent * event );
00971
00991 YCPValue doUserInput( const char * builtin_name,
00992 long timeout_millisec,
00993 bool wait,
00994 bool detailed );
00995
00996
01000 YCPValue evaluateCallback( const YCPTerm & term, bool to_wfm );
01001
01002
01016 YRadioButtonGroup *findRadioButtonGroup( YContainerWidget *root, YWidget *w, bool *contains );
01017
01018
01027 YWidget *createReplacePoint( YWidget *parent, YWidgetOpt & opt,
01028 const YCPTerm & term, const YCPList & optList, int argnr,
01029 YRadioButtonGroup *rbg );
01030
01031
01036 YWidget *createEmpty( YWidget *parent, YWidgetOpt & opt,
01037 const YCPTerm & term, const YCPList & optList, int argnr,
01038 bool hstretchable, bool vstretchable );
01039
01046 YWidget *createSpacing( YWidget *parent, YWidgetOpt & opt,
01047 const YCPTerm & term, const YCPList & optList, int argnr,
01048 bool horizontal, bool vertical );
01049
01054 YWidget *createFrame( YWidget *parent, YWidgetOpt & opt,
01055 const YCPTerm & term, const YCPList & optList, int argnr,
01056 YRadioButtonGroup *rbg );
01057
01063 YWidget *createWeight( YWidget *parent, YWidgetOpt & opt,
01064 const YCPTerm & term, const YCPList & optList, int argnr,
01065 YRadioButtonGroup *rbg, YUIDimension dim );
01066
01074 YWidget *createAlignment( YWidget *parent, YWidgetOpt & opt,
01075 const YCPTerm & term, const YCPList & optList, int argnr,
01076 YRadioButtonGroup *rbg,
01077 YAlignmentType halign, YAlignmentType valign );
01078
01079
01087 YWidget *createSquash( YWidget *parent, YWidgetOpt & opt,
01088 const YCPTerm & term, const YCPList & optList, int argnr,
01089 YRadioButtonGroup *rbg, bool hsquash, bool vsquash );
01090
01097 YWidget *createLBox( YWidget *parent, YWidgetOpt & opt,
01098 const YCPTerm & term, const YCPList & optList, int argnr,
01099 YRadioButtonGroup *rbg, YUIDimension dim );
01100
01107 YWidget *createLabel( YWidget *parent, YWidgetOpt & opt,
01108 const YCPTerm & term, const YCPList & optList, int argnr,
01109 bool heading );
01110
01111 YWidget *createDate( YWidget *parent, YWidgetOpt & opt,
01112 const YCPTerm & term, const YCPList & optList, int argnr);
01113
01114 YWidget *createTime( YWidget *parent, YWidgetOpt & opt,
01115 const YCPTerm & term, const YCPList & optList, int argnr);
01116
01121 YWidget *createRichText( YWidget *parent, YWidgetOpt & opt,
01122 const YCPTerm & term, const YCPList & optList, int argnr );
01123
01124
01129 YWidget *createLogView( YWidget *parent, YWidgetOpt & opt,
01130 const YCPTerm & term, const YCPList & optList, int argnr );
01131
01136 YWidget *createPushButton( YWidget *parent, YWidgetOpt & opt,
01137 const YCPTerm & term, const YCPList & optList, int argnr,
01138 bool isIconButton );
01139
01144 YWidget *createMenuButton( YWidget *parent, YWidgetOpt & opt,
01145 const YCPTerm & term, const YCPList & optList, int argnr );
01146
01151 YWidget *createCheckBox( YWidget *parent, YWidgetOpt & opt,
01152 const YCPTerm & term, const YCPList & optList, int argnr );
01153
01158 YWidget *createRadioButton( YWidget *parent, YWidgetOpt & opt,
01159 const YCPTerm & term, const YCPList & optList, int argnr,
01160 YRadioButtonGroup *rbg );
01161
01166 YWidget *createRadioButtonGroup( YWidget *parent, YWidgetOpt & opt,
01167 const YCPTerm & term, const YCPList & optList, int argnr,
01168 YRadioButtonGroup *rbg );
01169
01176 YWidget *createTextEntry( YWidget *parent, YWidgetOpt & opt,
01177 const YCPTerm & term, const YCPList & optList, int argnr,
01178 bool password );
01179
01184 YWidget *createMultiLineEdit( YWidget *parent, YWidgetOpt & opt,
01185 const YCPTerm & term, const YCPList & optList, int argnr );
01186
01191 YWidget *createSelectionBox( YWidget *parent, YWidgetOpt & opt,
01192 const YCPTerm & term, const YCPList & optList, int argnr );
01193
01198 YWidget *createMultiSelectionBox( YWidget *parent, YWidgetOpt & opt,
01199 const YCPTerm & term, const YCPList & optList, int argnr );
01200
01205 YWidget *createComboBox( YWidget *parent, YWidgetOpt & opt,
01206 const YCPTerm & term, const YCPList & optList, int argnr );
01207
01212 YWidget *createTree( YWidget *parent, YWidgetOpt & opt,
01213 const YCPTerm & term, const YCPList & optList, int argnr );
01214
01219 YWidget *createTable( YWidget *parent, YWidgetOpt & opt,
01220 const YCPTerm & term, const YCPList & optList, int argnr );
01221
01226 YWidget *createProgressBar( YWidget *parent, YWidgetOpt & opt,
01227 const YCPTerm & term, const YCPList & optList, int argnr );
01228
01233 YWidget *createImage( YWidget *parent, YWidgetOpt & opt,
01234 const YCPTerm & term, const YCPList & optList, int argnr );
01235
01240 YWidget *createIntField( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01241 const YCPList & optList, int argnr );
01242
01247 YWidget *createPackageSelector( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01248 const YCPList & optList, int argnr );
01249
01254 YWidget *createPkgSpecial( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01255 const YCPList & optList, int argnr );
01256
01261 YWidget *createWizard( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01262 const YCPList & optList, int argnr );
01263
01268 YWidget *createDummySpecialWidget( YWidget *parent, YWidgetOpt & opt,
01269 const YCPTerm & term, const YCPList & optList, int argnr );
01270
01275 YWidget *createDownloadProgress( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01276 const YCPList & optList, int argnr );
01277
01282 YWidget *createBarGraph( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01283 const YCPList & optList, int argnr );
01284
01289 YWidget *createColoredLabel( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01290 const YCPList & optList, int argnr );
01291
01296 YWidget *createDumbTab( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01297 const YCPList & optList, int argnr, YRadioButtonGroup * rbg );
01298
01303 YWidget * createMultiProgressMeter( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01304 const YCPList & optList, int argnr, bool horizontal );
01309 YWidget *createSlider( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01310 const YCPList & optList, int argnr );
01311
01316 YWidget *createPartitionSplitter( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01317 const YCPList & optList, int argnr );
01318
01319
01320
01328 YCPValue getWidgetId( const YCPTerm & term, int *argnr );
01329
01341 YCPList getWidgetOptions( const YCPTerm & term, int *argnr );
01342
01348 void logUnknownOption( const YCPTerm & term, const YCPValue & option );
01349
01356 void rejectAllOptions( const YCPTerm & term, const YCPList & optList );
01357
01361 void registerDialog( YDialog * );
01362
01366 void removeDialog();
01367
01374 bool checkId( const YCPValue & val, bool complain = true ) const;
01375
01381 bool isSymbolOrId( const YCPValue & val ) const;
01382
01387 YCPValue getId( const YCPValue & v ) const;
01388
01392 void deleteMacroRecorder();
01393
01397 void deleteMacroPlayer();
01398
01402 void playNextMacroBlock();
01403
01407 typedef vector<YDialog *> dialogstack_type;
01408
01413 dialogstack_type dialogstack;
01414
01418 long long id_counter;
01419
01423 bool with_threads;
01424
01428 pthread_t ui_thread;
01429
01437 YUIBuiltinCallData _builtinCallData;
01438
01444 int pipe_to_ui[2];
01445
01451 int pipe_from_ui[2];
01452
01459 bool terminate_ui_thread;
01460
01464 string _moduleName;
01465
01469 string _productName;
01470
01474 YMacroRecorder *macroRecorder;
01475
01479 YMacroPlayer *macroPlayer;
01480
01484 deque<YCPValue> fakeUserInputQueue;
01485
01489 YCPMap default_fkeys;
01490
01495 bool _events_blocked;
01496
01501 static bool _reverseLayout;
01502
01506 Y2Component * _callback;
01507 };
01508
01509 #endif // YUI_h