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
00150 enum ImageType
00151 {
00152 IT_SUSEHEADER,
00153 IT_YAST2
00154 };
00155
00164 virtual void internalError( const char *msg );
00165
00169 static int Recode( const string & str,
00170 const string & from,
00171 const string & to,
00172 string & outstr );
00173
00177 int parseMenuItemList( const YCPList & itemList, YMenuButton *menu_button, YMenu *parentMenu = 0 );
00178
00179
00183 int parseTreeItemList( const YCPList & itemList, YTree *tree, YTreeItem *parentItem = 0 );
00184
00185
00189 int parseMultiSelectionBoxItemList( const YCPList & item_list, YMultiSelectionBox * multi_sel_box );
00190
00194 bool YUI::parseRgb( const YCPValue & val, YColor *color, bool complain );
00195
00206 YWidget *createWidgetTree( YWidget *parent, YWidgetOpt & opt, YRadioButtonGroup *rbg, const YCPTerm & term );
00207
00211 YWidget *createWidgetTree( YWidget *parent, YRadioButtonGroup *rbg, const YCPTerm & term );
00212
00221 YWidget *widgetWithId( const YCPValue & id, bool log_error=false );
00222
00231 YWidget *widgetWithId( YContainerWidget *widgetRoot, const YCPValue & id, bool log_error=false );
00232
00236 YCPBoolean evaluateReplaceWidget( const YCPValue & value_id, const YCPTerm & term );
00237
00243 int defaultFunctionKey( YCPString label );
00244
00252 string productName() const { return _productName; }
00253
00258 static bool reverseLayout() { return _reverseLayout; }
00259
00263 static void setReverseLayout( bool rev ) { _reverseLayout = rev; }
00264
00270 YCPValue callBuiltin( void * function, int argc, YCPValue argv[] );
00271
00276 static YCPValue callFunction( void * function, int argc, YCPValue argv[] );
00277
00281 void setCallback( Y2Component * callback ) { _callback = callback; }
00282
00286 Y2Component * getCallback() const { return _callback; }
00287
00292 YCPValue evaluateAskForExistingDirectory ( const YCPString& startDir, const YCPString& headline );
00293 YCPValue evaluateAskForExistingFile ( const YCPString& startDir, const YCPString& filter, const YCPString& headline );
00294 YCPValue evaluateAskForSaveFileName ( const YCPString& startDir, const YCPString& filter, const YCPString& headline );
00295 void evaluateBusyCursor ();
00296 YCPValue evaluateChangeWidget ( const YCPValue & value_id, const YCPValue & property, const YCPValue & new_value );
00297 void evaluateCheckShortcuts ();
00298 YCPValue evaluateCloseDialog ();
00299 void evaluateDumpWidgetTree ();
00300 void evaluateFakeUserInput ( const YCPValue & next_input );
00301 YCPMap evaluateGetDisplayInfo ();
00302 YCPString evaluateGetLanguage ( const YCPBoolean & strip_encoding );
00303 YCPValue evaluateGetModulename ( const YCPTerm & term );
00304 YCPString evaluateGetProductName ();
00305 YCPString evaluateGlyph ( const YCPSymbol & symbol );
00306 YCPValue evaluateHasSpecialWidget ( const YCPSymbol & widget );
00307 void evaluateMakeScreenShot ( const YCPString & filename );
00308 void evaluateNormalCursor ();
00309 YCPBoolean evaluateOpenDialog ( const YCPTerm & term, const YCPTerm & term = YCPNull() );
00310 void evaluatePlayMacro ( const YCPString & filename );
00311 void evaluatePostponeShortcutCheck ();
00312 YCPValue evaluateQueryWidget ( const YCPValue& value_id, const YCPValue& property );
00313 void evaluateRecalcLayout ();
00314 YCPValue evaluateRecode ( const YCPString & from, const YCPString & to, const YCPString & text );
00315 void evaluateRecordMacro ( const YCPString & filename );
00316 void evaluateRedrawScreen ();
00317 YCPValue evaluateRunPkgSelection ( const YCPValue & value_id );
00318 void evaluateSetConsoleFont ( const YCPString& magic,
00319 const YCPString& font,
00320 const YCPString& screen_map,
00321 const YCPString& unicode_map,
00322 const YCPString& encoding );
00323 void evaluateSetKeyboard ();
00324 YCPBoolean evaluateSetFocus ( const YCPValue & value_id );
00325 void evaluateSetFunctionKeys ( const YCPMap & new_keys );
00326 void evaluateSetLanguage ( const YCPString& lang, const YCPString& encoding = YCPNull() );
00327 void evaluateSetModulename ( const YCPString & name );
00328 void evaluateSetProductName ( const YCPString & name );
00329 void evaluateStopRecordMacro ();
00330 YCPBoolean evaluateWidgetExists ( const YCPValue & value_id );
00331
00332 YCPValue evaluateUserInput ();
00333 YCPValue evaluateTimeoutUserInput ( const YCPInteger & timeout );
00334 YCPValue evaluateWaitForEvent ( const YCPInteger & timeout = YCPNull() );
00335 YCPValue evaluateWizardCommand ( const YCPTerm & command );
00336 YCPValue evaluatePollInput ();
00337
00346 void uiThreadMainLoop();
00347
00348
00349 protected:
00350
00351
00352
00353
00354 const char *moduleName();
00355
00356
00357
00372 virtual void idleLoop( int fd_ycp );
00373
00392 virtual YEvent * userInput( unsigned long timeout_millisec = 0 ) = 0;
00393
00408 virtual YEvent * pollInput() = 0;
00409
00414 virtual void showDialog( YDialog *dialog );
00415
00421 virtual void closeDialog( YDialog *dialog );
00422
00423
00432 virtual YCPString glyph( const YCPSymbol & glyphSymbol ) { return YCPString( "" ); }
00433
00434
00435
00436
00437
00438
00443 virtual YDialog *createDialog( YWidgetOpt & opt ) = 0;
00444
00448 virtual YContainerWidget *createSplit( YWidget *parent, YWidgetOpt & opt, YUIDimension dimension ) = 0;
00449
00453 virtual YContainerWidget *createReplacePoint( YWidget *parent, YWidgetOpt & opt ) = 0;
00454
00458 virtual YContainerWidget *createAlignment( YWidget *parent, YWidgetOpt & opt,
00459 YAlignmentType halign,
00460 YAlignmentType valign ) = 0;
00461
00465 virtual YContainerWidget *createSquash( YWidget *parent, YWidgetOpt & opt, bool hsquash, bool vsquash ) = 0;
00466
00467
00471 virtual YContainerWidget *createRadioButtonGroup( YWidget *parent, YWidgetOpt & opt ) = 0;
00472
00476 virtual YContainerWidget *createFrame( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00477
00478
00479
00480
00481
00482
00483
00487 virtual YWidget *createEmpty( YWidget *parent, YWidgetOpt & opt ) = 0;
00488
00492 virtual YWidget *createSpacing( YWidget *parent, YWidgetOpt & opt, float size, bool horizontal, bool vertical ) = 0;
00493
00500 virtual YWidget *createLabel( YWidget *parent, YWidgetOpt & opt, const YCPString & text ) = 0;
00501
00506 virtual YWidget *createRichText( YWidget *parent, YWidgetOpt & opt, const YCPString & text ) = 0;
00507
00508
00515 virtual YWidget *createLogView( YWidget *parent, YWidgetOpt & opt,
00516 const YCPString & label, int visibleLines, int maxLines ) = 0;
00517
00522 virtual YWidget *createPushButton( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00523
00528 virtual YWidget *createMenuButton( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00529
00535 virtual YWidget *createRadioButton( YWidget *parent, YWidgetOpt & opt, YRadioButtonGroup *rbg,
00536 const YCPString & label, bool checked ) = 0;
00537
00543 virtual YWidget *createCheckBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label, bool checked ) = 0;
00544
00548 virtual YWidget *createTextEntry( YWidget *parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text ) = 0;
00549
00553 virtual YWidget *createMultiLineEdit( YWidget *parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text ) = 0;
00554
00558 virtual YWidget *createSelectionBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00559
00563 virtual YWidget *createMultiSelectionBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00564
00568 virtual YWidget *createComboBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00569
00573 virtual YWidget *createTree( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00574
00578 virtual YWidget *createTable( YWidget *parent, YWidgetOpt & opt, vector<string> header ) = 0;
00579
00583 virtual YWidget *createProgressBar( YWidget *parent, YWidgetOpt & opt, const YCPString & label,
00584 const YCPInteger & maxprogress, const YCPInteger & progress ) = 0;
00585
00589 virtual YWidget *createImage( YWidget *parent, YWidgetOpt & opt, YCPByteblock imagedata, YCPString defaulttext ) = 0;
00590
00594 virtual YWidget *createImage( YWidget *parent, YWidgetOpt & opt, YCPString file_name, YCPString defaulttext ) = 0;
00595
00599 virtual YWidget *createImage( YWidget *parent, YWidgetOpt & opt, ImageType img, YCPString defaulttext ) = 0;
00600
00604 virtual YWidget *createIntField( YWidget *parent, YWidgetOpt & opt,
00605 const YCPString & label, int minValue, int maxValue, int initialValue ) = 0;
00606
00613 virtual YWidget *createPackageSelector( YWidget *parent, YWidgetOpt & opt, const YCPString & floppyDevice ) = 0;
00614
00618 virtual YWidget *createPkgSpecial( YWidget *parent, YWidgetOpt & opt, const YCPString & subwidget ) = 0;
00619
00620
00628 virtual YWidget *createDummySpecialWidget( YWidget *parent, YWidgetOpt & opt );
00629 virtual bool hasDummySpecialWidget() { return true; }
00630
00638 virtual YWidget * createDownloadProgress( YWidget *parent, YWidgetOpt & opt,
00639 const YCPString & label,
00640 const YCPString & filename,
00641 int expectedSize );
00642
00643 virtual bool hasDownloadProgress() { return false; }
00644
00652 virtual YWidget * createBarGraph( YWidget *parent, YWidgetOpt & opt );
00653 virtual bool hasBarGraph() { return false; }
00654
00662 virtual YWidget * createColoredLabel( YWidget *parent, YWidgetOpt & opt,
00663 YCPString label,
00664 YColor foreground, YColor background,
00665 int margin );
00666 virtual bool hasColoredLabel() { return false; }
00667
00668
00676 virtual YWidget * createDumbTab( YWidget *parent, YWidgetOpt & opt );
00677 virtual bool hasDumbTab() { return false; }
00678
00679
00687 virtual YWidget * createSlider( YWidget * parent,
00688 YWidgetOpt & opt,
00689 const YCPString & label,
00690 int minValue,
00691 int maxValue,
00692 int initialValue );
00693 virtual bool hasSlider() { return false; }
00694
00716 virtual YWidget *createPartitionSplitter( YWidget * parent,
00717 YWidgetOpt & opt,
00718 int usedSize,
00719 int totalFreeSize,
00720 int newPartSize,
00721 int minNewPartSize,
00722 int minFreeSize,
00723 const YCPString & usedLabel,
00724 const YCPString & freeLabel,
00725 const YCPString & newPartLabel,
00726 const YCPString & freeFieldLabel,
00727 const YCPString & newPartFieldLabel );
00728
00729 virtual bool hasPartitionSplitter() { return false; }
00730
00731
00735 virtual YWidget *createWizard( YWidget *parent, YWidgetOpt & opt,
00736 const YCPValue & backButtonId, const YCPString & backButtonLabel,
00737 const YCPValue & abortButtonId, const YCPString & abortButtonLabel,
00738 const YCPValue & nextButtonId, const YCPString & nextButtonLabel );
00739
00740 virtual bool hasWizard() { return false; }
00741
00742
00748 virtual YCPValue setLanguage( const YCPTerm & term );
00749
00750
00756 virtual YCPValue setConsoleFont( const YCPString & console_magic,
00757 const YCPString & font,
00758 const YCPString & screen_map,
00759 const YCPString & unicode_map,
00760 const YCPString & encoding );
00761
00762 virtual YCPValue setKeyboard();
00763
00768 virtual int getDisplayWidth() { return -1; }
00769 virtual int getDisplayHeight() { return -1; }
00770 virtual int getDisplayDepth() { return -1; }
00771 virtual long getDisplayColors() { return -1; }
00772 virtual int getDefaultWidth() { return -1; }
00773 virtual int getDefaultHeight() { return -1; }
00774 virtual bool textMode() { return true; }
00775 virtual bool hasImageSupport() { return false; }
00776 virtual bool hasLocalImageSupport() { return true; }
00777 virtual bool hasAnimationSupport() { return false; }
00778 virtual bool hasIconSupport() { return false; }
00779 virtual bool hasFullUtf8Support() { return false; }
00780
00785 virtual void busyCursor();
00786
00791 virtual void normalCursor();
00792
00797 virtual void redrawScreen();
00798
00803 virtual void makeScreenShot( string filename );
00804
00805
00812 virtual YCPValue runPkgSelection( YWidget * packageSelector ) { return YCPVoid(); }
00813
00814
00828 virtual YCPValue askForExistingDirectory( const YCPString & startDir,
00829 const YCPString & headline ) = 0;
00830
00846 virtual YCPValue askForExistingFile( const YCPString & startWith,
00847 const YCPString & filter,
00848 const YCPString & headline ) = 0;
00849
00866 virtual YCPValue askForSaveFileName( const YCPString & startWith,
00867 const YCPString & filter,
00868 const YCPString & headline ) = 0;
00869
00870
00871
00872 YCPValue callback ( const YCPValue & value );
00873
00877 YCPValue evaluateLocale( const YCPLocale & );
00878
00884 void recordMacro( string filename );
00885
00890 void stopRecordMacro();
00891
00896 void playMacro( string filename );
00897
00901 bool recordingMacro() { return macroRecorder != 0; }
00902
00906 bool playingMacro() { return macroPlayer != 0; }
00907
00908
00909 protected:
00914 void terminateUIThread();
00915
00916
00920 void createUIThread();
00921 friend void *start_ui_thread( void *ui_int );
00922
00927 void signalUIThread();
00928
00933 bool waitForUIThread();
00934
00939 void signalYCPThread();
00940
00945 bool waitForYCPThread();
00946
00950 YEvent * filterInvalidEvents( YEvent * event );
00951
00971 YCPValue doUserInput( const char * builtin_name,
00972 long timeout_millisec,
00973 bool wait,
00974 bool detailed );
00975
00976
00980 YCPValue evaluateCallback( const YCPTerm & term, bool to_wfm );
00981
00982
00996 YRadioButtonGroup *findRadioButtonGroup( YContainerWidget *root, YWidget *w, bool *contains );
00997
00998
01007 YWidget *createReplacePoint( YWidget *parent, YWidgetOpt & opt,
01008 const YCPTerm & term, const YCPList & optList, int argnr,
01009 YRadioButtonGroup *rbg );
01010
01011
01016 YWidget *createEmpty( YWidget *parent, YWidgetOpt & opt,
01017 const YCPTerm & term, const YCPList & optList, int argnr,
01018 bool hstretchable, bool vstretchable );
01019
01026 YWidget *createSpacing( YWidget *parent, YWidgetOpt & opt,
01027 const YCPTerm & term, const YCPList & optList, int argnr,
01028 bool horizontal, bool vertical );
01029
01034 YWidget *createFrame( YWidget *parent, YWidgetOpt & opt,
01035 const YCPTerm & term, const YCPList & optList, int argnr,
01036 YRadioButtonGroup *rbg );
01037
01043 YWidget *createWeight( YWidget *parent, YWidgetOpt & opt,
01044 const YCPTerm & term, const YCPList & optList, int argnr,
01045 YRadioButtonGroup *rbg, YUIDimension dim );
01046
01054 YWidget *createAlignment( YWidget *parent, YWidgetOpt & opt,
01055 const YCPTerm & term, const YCPList & optList, int argnr,
01056 YRadioButtonGroup *rbg,
01057 YAlignmentType halign, YAlignmentType valign );
01058
01059
01067 YWidget *createSquash( YWidget *parent, YWidgetOpt & opt,
01068 const YCPTerm & term, const YCPList & optList, int argnr,
01069 YRadioButtonGroup *rbg, bool hsquash, bool vsquash );
01070
01077 YWidget *createLBox( YWidget *parent, YWidgetOpt & opt,
01078 const YCPTerm & term, const YCPList & optList, int argnr,
01079 YRadioButtonGroup *rbg, YUIDimension dim );
01080
01087 YWidget *createLabel( YWidget *parent, YWidgetOpt & opt,
01088 const YCPTerm & term, const YCPList & optList, int argnr,
01089 bool heading );
01090
01095 YWidget *createRichText( YWidget *parent, YWidgetOpt & opt,
01096 const YCPTerm & term, const YCPList & optList, int argnr );
01097
01098
01103 YWidget *createLogView( YWidget *parent, YWidgetOpt & opt,
01104 const YCPTerm & term, const YCPList & optList, int argnr );
01105
01110 YWidget *createPushButton( YWidget *parent, YWidgetOpt & opt,
01111 const YCPTerm & term, const YCPList & optList, int argnr,
01112 bool isIconButton );
01113
01118 YWidget *createMenuButton( YWidget *parent, YWidgetOpt & opt,
01119 const YCPTerm & term, const YCPList & optList, int argnr );
01120
01125 YWidget *createCheckBox( YWidget *parent, YWidgetOpt & opt,
01126 const YCPTerm & term, const YCPList & optList, int argnr );
01127
01132 YWidget *createRadioButton( YWidget *parent, YWidgetOpt & opt,
01133 const YCPTerm & term, const YCPList & optList, int argnr,
01134 YRadioButtonGroup *rbg );
01135
01140 YWidget *createRadioButtonGroup( YWidget *parent, YWidgetOpt & opt,
01141 const YCPTerm & term, const YCPList & optList, int argnr,
01142 YRadioButtonGroup *rbg );
01143
01150 YWidget *createTextEntry( YWidget *parent, YWidgetOpt & opt,
01151 const YCPTerm & term, const YCPList & optList, int argnr,
01152 bool password );
01153
01158 YWidget *createMultiLineEdit( YWidget *parent, YWidgetOpt & opt,
01159 const YCPTerm & term, const YCPList & optList, int argnr );
01160
01165 YWidget *createSelectionBox( YWidget *parent, YWidgetOpt & opt,
01166 const YCPTerm & term, const YCPList & optList, int argnr );
01167
01172 YWidget *createMultiSelectionBox( YWidget *parent, YWidgetOpt & opt,
01173 const YCPTerm & term, const YCPList & optList, int argnr );
01174
01179 YWidget *createComboBox( YWidget *parent, YWidgetOpt & opt,
01180 const YCPTerm & term, const YCPList & optList, int argnr );
01181
01186 YWidget *createTree( YWidget *parent, YWidgetOpt & opt,
01187 const YCPTerm & term, const YCPList & optList, int argnr );
01188
01193 YWidget *createTable( YWidget *parent, YWidgetOpt & opt,
01194 const YCPTerm & term, const YCPList & optList, int argnr );
01195
01200 YWidget *createProgressBar( YWidget *parent, YWidgetOpt & opt,
01201 const YCPTerm & term, const YCPList & optList, int argnr );
01202
01207 YWidget *createImage( YWidget *parent, YWidgetOpt & opt,
01208 const YCPTerm & term, const YCPList & optList, int argnr );
01209
01214 YWidget *createIntField( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01215 const YCPList & optList, int argnr );
01216
01221 YWidget *createPackageSelector( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01222 const YCPList & optList, int argnr );
01223
01228 YWidget *createPkgSpecial( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01229 const YCPList & optList, int argnr );
01230
01235 YWidget *createWizard( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01236 const YCPList & optList, int argnr );
01237
01242 YWidget *createDummySpecialWidget( YWidget *parent, YWidgetOpt & opt,
01243 const YCPTerm & term, const YCPList & optList, int argnr );
01244
01249 YWidget *createDownloadProgress( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01250 const YCPList & optList, int argnr );
01251
01256 YWidget *createBarGraph( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01257 const YCPList & optList, int argnr );
01258
01263 YWidget *createColoredLabel( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01264 const YCPList & optList, int argnr );
01265
01270 YWidget *createDumbTab( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01271 const YCPList & optList, int argnr, YRadioButtonGroup * rbg );
01272
01277 YWidget *createSlider( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01278 const YCPList & optList, int argnr );
01279
01284 YWidget *createPartitionSplitter( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01285 const YCPList & optList, int argnr );
01286
01287
01288
01296 YCPValue getWidgetId( const YCPTerm & term, int *argnr );
01297
01309 YCPList getWidgetOptions( const YCPTerm & term, int *argnr );
01310
01316 void logUnknownOption( const YCPTerm & term, const YCPValue & option );
01317
01324 void rejectAllOptions( const YCPTerm & term, const YCPList & optList );
01325
01329 void registerDialog( YDialog * );
01330
01334 void removeDialog();
01335
01342 bool checkId( const YCPValue & val, bool complain = true ) const;
01343
01349 bool isSymbolOrId( const YCPValue & val ) const;
01350
01355 YCPValue getId( const YCPValue & v ) const;
01356
01360 void deleteMacroRecorder();
01361
01365 void deleteMacroPlayer();
01366
01370 void playNextMacroBlock();
01371
01375 typedef vector<YDialog *> dialogstack_type;
01376
01381 dialogstack_type dialogstack;
01382
01386 long long id_counter;
01387
01391 bool with_threads;
01392
01396 pthread_t ui_thread;
01397
01405 YUIBuiltinCallData _builtinCallData;
01406
01412 int pipe_to_ui[2];
01413
01419 int pipe_from_ui[2];
01420
01427 bool terminate_ui_thread;
01428
01432 string _moduleName;
01433
01437 string _productName;
01438
01442 YMacroRecorder *macroRecorder;
01443
01447 YMacroPlayer *macroPlayer;
01448
01452 deque<YCPValue> fakeUserInputQueue;
01453
01457 YCPMap default_fkeys;
01458
01463 bool _events_blocked;
01464
01469 static bool _reverseLayout;
01470
01474 Y2Component * _callback;
01475 };
01476
01477 #endif // YUI_h