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
00110
00114 static YUI * ui() { return _yui; }
00115
00116
00120 YDialog *currentDialog() const;
00121
00122
00131 virtual void blockEvents( bool block = true ) { _events_blocked = block; }
00132
00139 void unblockEvents() { blockEvents( false ); }
00140
00146 virtual bool eventsBlocked() const { return _events_blocked; }
00147
00152 void topmostConstructorHasFinished();
00153
00162 virtual void internalError( const char *msg );
00163
00167 static int Recode( const string & str,
00168 const string & from,
00169 const string & to,
00170 string & outstr );
00171
00175 int parseMenuItemList( const YCPList & itemList, YMenuButton *menu_button, YMenu *parentMenu = 0 );
00176
00180 bool YUI::parseRgb( const YCPValue & val, YColor *color, bool complain );
00181
00192 YWidget *createWidgetTree( YWidget *parent, YWidgetOpt & opt, YRadioButtonGroup *rbg, const YCPTerm & term );
00193
00197 YWidget *createWidgetTree( YWidget *parent, YRadioButtonGroup *rbg, const YCPTerm & term );
00198
00207 YWidget *widgetWithId( const YCPValue & id, bool log_error=false );
00208
00217 YWidget *widgetWithId( YContainerWidget *widgetRoot, const YCPValue & id, bool log_error=false );
00218
00222 YCPBoolean evaluateReplaceWidget( const YCPValue & value_id, const YCPTerm & term );
00223
00229 int defaultFunctionKey( YCPString label );
00230
00238 string productName() const { return _productName; }
00239
00246 virtual long deviceUnits( YUIDimension dim, float layout_units );
00247
00254 virtual float layoutUnits( YUIDimension dim, long device_units );
00255
00260 static bool reverseLayout() { return _reverseLayout; }
00261
00265 static void setReverseLayout( bool rev ) { _reverseLayout = rev; }
00266
00272 YCPValue callBuiltin( void * function, int argc, YCPValue argv[] );
00273
00278 static YCPValue callFunction( void * function, int argc, YCPValue argv[] );
00279
00283 void setCallback( Y2Component * callback ) { _callback = callback; }
00284
00288 Y2Component * getCallback() const { return _callback; }
00289
00294 YCPValue evaluateAskForExistingDirectory ( const YCPString& startDir, const YCPString& headline );
00295 YCPValue evaluateAskForExistingFile ( const YCPString& startDir, const YCPString& filter, const YCPString& headline );
00296 YCPValue evaluateAskForSaveFileName ( const YCPString& startDir, const YCPString& filter, const YCPString& headline );
00297 void evaluateBusyCursor ();
00298 YCPValue evaluateChangeWidget ( const YCPValue & value_id, const YCPValue & property, const YCPValue & new_value );
00299 void evaluateCheckShortcuts ();
00300 YCPValue evaluateCloseDialog ();
00301 void evaluateDumpWidgetTree ();
00302 void evaluateFakeUserInput ( const YCPValue & next_input );
00303 YCPMap evaluateGetDisplayInfo ();
00304 YCPString evaluateGetLanguage ( const YCPBoolean & strip_encoding );
00305 YCPValue evaluateGetModulename ( const YCPTerm & term );
00306 YCPString evaluateGetProductName ();
00307 YCPString evaluateGlyph ( const YCPSymbol & symbol );
00308 YCPValue evaluateHasSpecialWidget ( const YCPSymbol & widget );
00309 void evaluateMakeScreenShot ( const YCPString & filename );
00310 void evaluateNormalCursor ();
00311 YCPBoolean evaluateOpenDialog ( const YCPTerm & term, const YCPTerm & term = YCPNull() );
00312 void evaluatePlayMacro ( const YCPString & filename );
00313 void evaluatePostponeShortcutCheck ();
00314 YCPValue evaluateQueryWidget ( const YCPValue& value_id, const YCPValue& property );
00315 void evaluateRecalcLayout ();
00316 YCPValue evaluateRecode ( const YCPString & from, const YCPString & to, const YCPString & text );
00317 void evaluateRecordMacro ( const YCPString & filename );
00318 void evaluateRedrawScreen ();
00319 YCPValue evaluateRunPkgSelection ( const YCPValue & value_id );
00320 void evaluateSetConsoleFont ( const YCPString& magic,
00321 const YCPString& font,
00322 const YCPString& screen_map,
00323 const YCPString& unicode_map,
00324 const YCPString& encoding );
00325 void evaluateSetKeyboard ();
00326 YCPBoolean evaluateSetFocus ( const YCPValue & value_id );
00327 void evaluateSetFunctionKeys ( const YCPMap & new_keys );
00328 void evaluateSetLanguage ( const YCPString& lang, const YCPString& encoding = YCPNull() );
00329 void evaluateSetModulename ( const YCPString & name );
00330 void evaluateSetProductName ( const YCPString & name );
00331 void evaluateStopRecordMacro ();
00332 YCPBoolean evaluateWidgetExists ( const YCPValue & value_id );
00333
00334 YCPValue evaluateUserInput ();
00335 YCPValue evaluateTimeoutUserInput ( const YCPInteger & timeout );
00336 YCPValue evaluateWaitForEvent ( const YCPInteger & timeout = YCPNull() );
00337 YCPValue evaluateWizardCommand ( const YCPTerm & command );
00338 YCPValue evaluatePollInput ();
00339
00348 void uiThreadMainLoop();
00349
00356 static bool checkId( const YCPValue & val, bool complain = true );
00357
00362 static YCPValue getId( const YCPValue & v );
00363
00364
00365 protected:
00366
00367
00368
00369
00370 const char *moduleName();
00371
00372
00373
00388 virtual void idleLoop( int fd_ycp );
00389
00408 virtual YEvent * userInput( unsigned long timeout_millisec = 0 ) = 0;
00409
00424 virtual YEvent * pollInput() = 0;
00425
00430 virtual void showDialog( YDialog *dialog );
00431
00437 virtual void closeDialog( YDialog *dialog );
00438
00439
00448 virtual YCPString glyph( const YCPSymbol & glyphSymbol ) { return YCPString( "" ); }
00449
00450
00451
00452
00453
00454
00459 virtual YDialog *createDialog( YWidgetOpt & opt ) = 0;
00460
00464 virtual YContainerWidget *createSplit( YWidget *parent, YWidgetOpt & opt, YUIDimension dimension ) = 0;
00465
00469 virtual YContainerWidget *createReplacePoint( YWidget *parent, YWidgetOpt & opt ) = 0;
00470
00474 virtual YContainerWidget *createAlignment( YWidget *parent, YWidgetOpt & opt,
00475 YAlignmentType halign,
00476 YAlignmentType valign ) = 0;
00477
00481 virtual YContainerWidget *createSquash( YWidget *parent, YWidgetOpt & opt, bool hsquash, bool vsquash ) = 0;
00482
00483
00487 virtual YContainerWidget *createRadioButtonGroup( YWidget *parent, YWidgetOpt & opt ) = 0;
00488
00492 virtual YContainerWidget *createFrame( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00493
00494
00495
00496
00497
00498
00499
00503 virtual YWidget *createEmpty( YWidget *parent, YWidgetOpt & opt ) = 0;
00504
00508 virtual YWidget *createSpacing( YWidget *parent, YWidgetOpt & opt, float size, bool horizontal, bool vertical ) = 0;
00509
00516 virtual YWidget *createLabel( YWidget *parent, YWidgetOpt & opt, const YCPString & text ) = 0;
00517
00518
00523 virtual YWidget *createRichText( YWidget *parent, YWidgetOpt & opt, const YCPString & text ) = 0;
00524
00525
00532 virtual YWidget *createLogView( YWidget *parent, YWidgetOpt & opt,
00533 const YCPString & label, int visibleLines, int maxLines ) = 0;
00534
00539 virtual YWidget *createPushButton( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00540
00545 virtual YWidget *createMenuButton( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00546
00552 virtual YWidget *createRadioButton( YWidget *parent, YWidgetOpt & opt, YRadioButtonGroup *rbg,
00553 const YCPString & label, bool checked ) = 0;
00554
00560 virtual YWidget *createCheckBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label, bool checked ) = 0;
00561
00565 virtual YWidget *createTextEntry( YWidget *parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text ) = 0;
00566
00570 virtual YWidget *createMultiLineEdit( YWidget *parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text ) = 0;
00571
00575 virtual YWidget *createSelectionBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00576
00580 virtual YWidget *createMultiSelectionBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00581
00585 virtual YWidget *createComboBox( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00586
00590 virtual YWidget *createTree( YWidget *parent, YWidgetOpt & opt, const YCPString & label ) = 0;
00591
00595 virtual YWidget *createTable( YWidget *parent, YWidgetOpt & opt, vector<string> header ) = 0;
00596
00600 virtual YWidget *createProgressBar( YWidget *parent, YWidgetOpt & opt, const YCPString & label,
00601 const YCPInteger & maxprogress, const YCPInteger & progress ) = 0;
00602
00606 virtual YWidget *createImage( YWidget *parent, YWidgetOpt & opt, YCPByteblock imagedata, YCPString defaulttext ) = 0;
00607
00611 virtual YWidget *createImage( YWidget *parent, YWidgetOpt & opt, YCPString file_name, YCPString defaulttext ) = 0;
00612
00616 virtual YWidget *createIntField( YWidget *parent, YWidgetOpt & opt,
00617 const YCPString & label, int minValue, int maxValue, int initialValue ) = 0;
00618
00625 virtual YWidget *createPackageSelector( YWidget *parent, YWidgetOpt & opt, const YCPString & floppyDevice ) = 0;
00626
00630 virtual YWidget *createPkgSpecial( YWidget *parent, YWidgetOpt & opt, const YCPString & subwidget ) = 0;
00631
00632
00640 virtual YWidget *createDummySpecialWidget( YWidget *parent, YWidgetOpt & opt );
00641 virtual bool hasDummySpecialWidget() { return true; }
00642
00650 virtual YWidget * createDownloadProgress( YWidget *parent, YWidgetOpt & opt,
00651 const YCPString & label,
00652 const YCPString & filename,
00653 int expectedSize );
00654
00655 virtual bool hasDownloadProgress() { return false; }
00656
00664 virtual YWidget * createBarGraph( YWidget *parent, YWidgetOpt & opt );
00665 virtual bool hasBarGraph() { return false; }
00666
00674 virtual YWidget * createColoredLabel( YWidget *parent, YWidgetOpt & opt,
00675 YCPString label,
00676 YColor foreground, YColor background,
00677 int margin );
00678 virtual bool hasColoredLabel() { return false; }
00679
00680
00684 virtual YWidget * createDate( YWidget *parent,
00685 YWidgetOpt & opt,
00686 const YCPString & label,
00687 const YCPString & date );
00688 virtual bool hasDate() { return false; }
00689
00690
00694 virtual YWidget * createTime( YWidget *parent,
00695 YWidgetOpt & opt,
00696 const YCPString & label,
00697 const YCPString & time );
00698 virtual bool hasTime() { return false; }
00699
00700
00708 virtual YWidget * createDumbTab( YWidget *parent, YWidgetOpt & opt );
00709 virtual bool hasDumbTab() { return false; }
00710
00711
00719 virtual YWidget * createMultiProgressMeter( YWidget *parent, YWidgetOpt & opt,
00720 bool horizontal, const YCPList & maxValues );
00721 virtual bool hasMultiProgressMeter() { return false; }
00722
00723
00731 virtual YWidget * createSlider( YWidget * parent,
00732 YWidgetOpt & opt,
00733 const YCPString & label,
00734 int minValue,
00735 int maxValue,
00736 int initialValue );
00737 virtual bool hasSlider() { return false; }
00738
00760 virtual YWidget *createPartitionSplitter( YWidget * parent,
00761 YWidgetOpt & opt,
00762 int usedSize,
00763 int totalFreeSize,
00764 int newPartSize,
00765 int minNewPartSize,
00766 int minFreeSize,
00767 const YCPString & usedLabel,
00768 const YCPString & freeLabel,
00769 const YCPString & newPartLabel,
00770 const YCPString & freeFieldLabel,
00771 const YCPString & newPartFieldLabel );
00772
00773 virtual bool hasPartitionSplitter() { return false; }
00774
00775
00779 virtual YWidget *createWizard( YWidget *parent, YWidgetOpt & opt,
00780 const YCPValue & backButtonId, const YCPString & backButtonLabel,
00781 const YCPValue & abortButtonId, const YCPString & abortButtonLabel,
00782 const YCPValue & nextButtonId, const YCPString & nextButtonLabel );
00783
00784 virtual bool hasWizard() { return false; }
00785
00786
00792 virtual YCPValue setLanguage( const YCPTerm & term );
00793
00794
00800 virtual YCPValue setConsoleFont( const YCPString & console_magic,
00801 const YCPString & font,
00802 const YCPString & screen_map,
00803 const YCPString & unicode_map,
00804 const YCPString & encoding );
00805
00806 virtual YCPValue setKeyboard();
00807
00812 virtual int getDisplayWidth() { return -1; }
00813 virtual int getDisplayHeight() { return -1; }
00814 virtual int getDisplayDepth() { return -1; }
00815 virtual long getDisplayColors() { return -1; }
00816 virtual int getDefaultWidth() { return -1; }
00817 virtual int getDefaultHeight() { return -1; }
00818 virtual bool textMode() { return true; }
00819 virtual bool hasImageSupport() { return false; }
00820 virtual bool hasLocalImageSupport() { return true; }
00821 virtual bool hasAnimationSupport() { return false; }
00822 virtual bool hasIconSupport() { return false; }
00823 virtual bool hasFullUtf8Support() { return false; }
00824 virtual bool richTextSupportsTable() { return false; }
00825
00830 virtual void busyCursor();
00831
00836 virtual void normalCursor();
00837
00842 virtual void redrawScreen();
00843
00848 virtual void makeScreenShot( string filename );
00849
00850
00857 virtual YCPValue runPkgSelection( YWidget * packageSelector ) { return YCPVoid(); }
00858
00859
00873 virtual YCPValue askForExistingDirectory( const YCPString & startDir,
00874 const YCPString & headline ) = 0;
00875
00891 virtual YCPValue askForExistingFile( const YCPString & startWith,
00892 const YCPString & filter,
00893 const YCPString & headline ) = 0;
00894
00911 virtual YCPValue askForSaveFileName( const YCPString & startWith,
00912 const YCPString & filter,
00913 const YCPString & headline ) = 0;
00914
00915
00916
00917 YCPValue callback ( const YCPValue & value );
00918
00922 YCPValue evaluateLocale( const YCPLocale & );
00923
00929 void recordMacro( string filename );
00930
00935 void stopRecordMacro();
00936
00941 void playMacro( string filename );
00942
00946 bool recordingMacro() { return macroRecorder != 0; }
00947
00951 bool playingMacro() { return macroPlayer != 0; }
00952
00953
00954 protected:
00959 void terminateUIThread();
00960
00961
00965 void createUIThread();
00966 friend void *start_ui_thread( void *ui_int );
00967
00972 void signalUIThread();
00973
00978 bool waitForUIThread();
00979
00984 void signalYCPThread();
00985
00990 bool waitForYCPThread();
00991
00995 YEvent * filterInvalidEvents( YEvent * event );
00996
01016 YCPValue doUserInput( const char * builtin_name,
01017 long timeout_millisec,
01018 bool wait,
01019 bool detailed );
01020
01021
01025 YCPValue evaluateCallback( const YCPTerm & term, bool to_wfm );
01026
01027
01041 YRadioButtonGroup *findRadioButtonGroup( YContainerWidget *root, YWidget *w, bool *contains );
01042
01043
01052 YWidget *createReplacePoint( YWidget *parent, YWidgetOpt & opt,
01053 const YCPTerm & term, const YCPList & optList, int argnr,
01054 YRadioButtonGroup *rbg );
01055
01056
01061 YWidget *createEmpty( YWidget *parent, YWidgetOpt & opt,
01062 const YCPTerm & term, const YCPList & optList, int argnr,
01063 bool hstretchable, bool vstretchable );
01064
01071 YWidget *createSpacing( YWidget *parent, YWidgetOpt & opt,
01072 const YCPTerm & term, const YCPList & optList, int argnr,
01073 bool horizontal, bool vertical );
01074
01079 YWidget *createFrame( YWidget *parent, YWidgetOpt & opt,
01080 const YCPTerm & term, const YCPList & optList, int argnr,
01081 YRadioButtonGroup *rbg );
01082
01088 YWidget *createWeight( YWidget *parent, YWidgetOpt & opt,
01089 const YCPTerm & term, const YCPList & optList, int argnr,
01090 YRadioButtonGroup *rbg, YUIDimension dim );
01091
01099 YWidget *createAlignment( YWidget *parent, YWidgetOpt & opt,
01100 const YCPTerm & term, const YCPList & optList, int argnr,
01101 YRadioButtonGroup *rbg,
01102 YAlignmentType halign, YAlignmentType valign );
01103
01108 YWidget *createMarginBox( YWidget * parent, YWidgetOpt & opt,
01109 const YCPTerm & term, const YCPList & optList,
01110 int argnr, YRadioButtonGroup * rbg );
01111
01119 YWidget *createMinSize( YWidget * parent, YWidgetOpt & opt,
01120 const YCPTerm & term, const YCPList & optList, int argnr,
01121 YRadioButtonGroup * rbg,
01122 bool hor, bool vert );
01123
01131 YWidget *createSquash( YWidget *parent, YWidgetOpt & opt,
01132 const YCPTerm & term, const YCPList & optList, int argnr,
01133 YRadioButtonGroup *rbg, bool hsquash, bool vsquash );
01134
01141 YWidget *createLBox( YWidget *parent, YWidgetOpt & opt,
01142 const YCPTerm & term, const YCPList & optList, int argnr,
01143 YRadioButtonGroup *rbg, YUIDimension dim );
01144
01151 YWidget *createLabel( YWidget *parent, YWidgetOpt & opt,
01152 const YCPTerm & term, const YCPList & optList, int argnr,
01153 bool heading );
01154
01155 YWidget *createDate( YWidget *parent, YWidgetOpt & opt,
01156 const YCPTerm & term, const YCPList & optList, int argnr);
01157
01158 YWidget *createTime( YWidget *parent, YWidgetOpt & opt,
01159 const YCPTerm & term, const YCPList & optList, int argnr);
01160
01165 YWidget *createRichText( YWidget *parent, YWidgetOpt & opt,
01166 const YCPTerm & term, const YCPList & optList, int argnr );
01167
01168
01173 YWidget *createLogView( YWidget *parent, YWidgetOpt & opt,
01174 const YCPTerm & term, const YCPList & optList, int argnr );
01175
01180 YWidget *createPushButton( YWidget *parent, YWidgetOpt & opt,
01181 const YCPTerm & term, const YCPList & optList, int argnr,
01182 bool isIconButton );
01183
01188 YWidget *createMenuButton( YWidget *parent, YWidgetOpt & opt,
01189 const YCPTerm & term, const YCPList & optList, int argnr );
01190
01195 YWidget *createCheckBox( YWidget *parent, YWidgetOpt & opt,
01196 const YCPTerm & term, const YCPList & optList, int argnr );
01197
01202 YWidget *createRadioButton( YWidget *parent, YWidgetOpt & opt,
01203 const YCPTerm & term, const YCPList & optList, int argnr,
01204 YRadioButtonGroup *rbg );
01205
01210 YWidget *createRadioButtonGroup( YWidget *parent, YWidgetOpt & opt,
01211 const YCPTerm & term, const YCPList & optList, int argnr,
01212 YRadioButtonGroup *rbg );
01213
01220 YWidget *createTextEntry( YWidget *parent, YWidgetOpt & opt,
01221 const YCPTerm & term, const YCPList & optList, int argnr,
01222 bool password );
01223
01228 YWidget *createMultiLineEdit( YWidget *parent, YWidgetOpt & opt,
01229 const YCPTerm & term, const YCPList & optList, int argnr );
01230
01235 YWidget *createSelectionBox( YWidget *parent, YWidgetOpt & opt,
01236 const YCPTerm & term, const YCPList & optList, int argnr );
01237
01242 YWidget *createMultiSelectionBox( YWidget *parent, YWidgetOpt & opt,
01243 const YCPTerm & term, const YCPList & optList, int argnr );
01244
01249 YWidget *createComboBox( YWidget *parent, YWidgetOpt & opt,
01250 const YCPTerm & term, const YCPList & optList, int argnr );
01251
01256 YWidget *createTree( YWidget *parent, YWidgetOpt & opt,
01257 const YCPTerm & term, const YCPList & optList, int argnr );
01258
01263 YWidget *createTable( YWidget *parent, YWidgetOpt & opt,
01264 const YCPTerm & term, const YCPList & optList, int argnr );
01265
01270 YWidget *createProgressBar( YWidget *parent, YWidgetOpt & opt,
01271 const YCPTerm & term, const YCPList & optList, int argnr );
01272
01277 YWidget *createImage( YWidget *parent, YWidgetOpt & opt,
01278 const YCPTerm & term, const YCPList & optList, int argnr );
01279
01284 YWidget *createIntField( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01285 const YCPList & optList, int argnr );
01286
01291 YWidget *createPackageSelector( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01292 const YCPList & optList, int argnr );
01293
01298 YWidget *createPkgSpecial( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01299 const YCPList & optList, int argnr );
01300
01305 YWidget *createWizard( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01306 const YCPList & optList, int argnr );
01307
01312 YWidget *createDummySpecialWidget( YWidget *parent, YWidgetOpt & opt,
01313 const YCPTerm & term, const YCPList & optList, int argnr );
01314
01319 YWidget *createDownloadProgress( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01320 const YCPList & optList, int argnr );
01321
01326 YWidget *createBarGraph( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01327 const YCPList & optList, int argnr );
01328
01333 YWidget *createColoredLabel( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01334 const YCPList & optList, int argnr );
01335
01340 YWidget *createDumbTab( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01341 const YCPList & optList, int argnr, YRadioButtonGroup * rbg );
01342
01347 YWidget * createMultiProgressMeter( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01348 const YCPList & optList, int argnr, bool horizontal );
01353 YWidget *createSlider( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01354 const YCPList & optList, int argnr );
01355
01360 YWidget *createPartitionSplitter( YWidget *parent, YWidgetOpt & opt, const YCPTerm & term,
01361 const YCPList & optList, int argnr );
01362
01363
01364
01372 YCPValue getWidgetId( const YCPTerm & term, int *argnr );
01373
01385 YCPList getWidgetOptions( const YCPTerm & term, int *argnr );
01386
01392 void logUnknownOption( const YCPTerm & term, const YCPValue & option );
01393
01400 void rejectAllOptions( const YCPTerm & term, const YCPList & optList );
01401
01405 void registerDialog( YDialog * );
01406
01410 void removeDialog();
01411
01417 bool isSymbolOrId( const YCPValue & val ) const;
01418
01419
01423 void deleteMacroRecorder();
01424
01428 void deleteMacroPlayer();
01429
01433 void playNextMacroBlock();
01434
01438 typedef vector<YDialog *> dialogstack_type;
01439
01444 dialogstack_type dialogstack;
01445
01449 long long id_counter;
01450
01454 bool with_threads;
01455
01459 pthread_t ui_thread;
01460
01468 YUIBuiltinCallData _builtinCallData;
01469
01475 int pipe_to_ui[2];
01476
01482 int pipe_from_ui[2];
01483
01490 bool terminate_ui_thread;
01491
01495 string _moduleName;
01496
01500 string _productName;
01501
01505 YMacroRecorder *macroRecorder;
01506
01510 YMacroPlayer *macroPlayer;
01511
01515 deque<YCPValue> fakeUserInputQueue;
01516
01520 YCPMap default_fkeys;
01521
01526 bool _events_blocked;
01527
01532 static bool _reverseLayout;
01533
01537 Y2Component * _callback;
01538
01539
01543 static YUI * _yui;
01544
01545 };
01546
01547 #endif // YUI_h