Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

YQUI.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                                                                      |
00003 |                      __   __    ____ _____ ____                      |
00004 |                      \ \ / /_ _/ ___|_   _|___ \                     |
00005 |                       \ V / _` \___ \ | |   __) |                    |
00006 |                        | | (_| |___) || |  / __/                     |
00007 |                        |_|\__,_|____/ |_| |_____|                    |
00008 |                                                                      |
00009 |                               core system                            |
00010 |                                                        (C) SuSE GmbH |
00011 \----------------------------------------------------------------------/
00012 
00013   File:         YQUI.h
00014 
00015   Authors:      Mathias Kettner   <kettner@suse.de>,
00016                 Stefan Hundhammer <sh@suse.de>
00017 
00018   Maintainer:   Stefan Hundhammer <sh@suse.de>
00019 
00020 /-*/
00021 
00022 #ifndef YQUI_h
00023 #define YQUI_h
00024 
00025 #include <qapplication.h>
00026 #include <qmap.h>
00027 #include <qfont.h>
00028 #include <qtimer.h>
00029 #include <qtranslator.h>
00030 #include <vector>
00031 
00032 #include "YSimpleEventHandler.h"
00033 #include <YUI.h>
00034 
00035 #define YQWidgetMargin  4
00036 #define YQWidgetSpacing 4
00037 #define YQButtonBorder  3
00038 
00039 class QVBox;
00040 class QWidgetStack;
00041 class QCursor;
00042 class YEvent;
00043 using std::string;
00044 using std::vector;
00045 
00046 
00047 class YQUI: public QObject, public YUI
00048 {
00049     Q_OBJECT
00050 public:
00051 
00055     YQUI( int           argc,
00056           char **       argv,
00057           bool          with_threads,
00058           const char *  macro_file );
00059 
00063     ~YQUI();
00064 
00068     static YQUI * ui() { return _ui; }
00069 
00074     static void setEmbeddingParent( QWidget * p );
00075 
00079     const QFont & currentFont();
00080 
00084     const QFont & headingFont();
00085 
00095     void sendEvent( YEvent * event );
00096 
00100     bool eventPendingFor( YWidget * widget ) const
00101         { return _event_handler.eventPendingFor( widget ); }
00102 
00108     YEvent * pendingEvent() const { return _event_handler.pendingEvent(); }
00109 
00114     bool haveWM() const { return _have_wm; }
00115 
00119     bool fullscreen() const { return _fullscreen; }
00120 
00126     bool decorateToplevelWindow() const { return _decorate_toplevel_window; }
00127 
00132     bool fatalError() const { return _fatal_error; }
00133 
00139     void raiseFatalError() { _fatal_error = true; }
00140 
00144     long defaultSize( YUIDimension dim ) const;
00145 
00150     void makeScreenShot( string filename );
00151 
00158     YCPValue runPkgSelection( YWidget * packageSelector );
00159 
00166     void toggleRecordMacro();
00167 
00172     void askPlayMacro();
00173 
00179     void internalError( const char * msg );
00180 
00181 
00185     void blockWmClose()         { _wm_close_blocked = true;  }
00186 
00190     void unblockWmClose()       { _wm_close_blocked = false; }
00191 
00195     bool autoActivateDialogs() const { return _auto_activate_dialogs; }
00196 
00201     bool runningEmbedded() const;
00202 
00207     bool debugEmbedding() const { return _debug_embedding; }
00208 
00215     virtual void blockEvents( bool block = true )
00216         { _event_handler.blockEvents( block ); }
00217 
00223     virtual bool eventsBlocked() const
00224         { return _event_handler.eventsBlocked(); }
00225 
00231     QString YQUI::productName() const;
00232 
00233 
00234 public slots:
00235 
00241     void busyCursor();
00242 
00248     void normalCursor();
00249 
00254     void askSaveLogs();
00255     
00260     void askConfigureLogging();
00261     
00265     void easterEgg();
00266 
00267 
00268 signals:
00272     void wmClose();
00273 
00274 
00275 protected:
00276 
00277 
00284     void idleLoop( int fd_ycp );
00285 
00292     YCPString glyph( const YCPSymbol & glyphSymbol );
00293 
00299     YEvent * userInput( unsigned long timeout_millisec = 0 );
00300 
00306     YEvent * pollInput();
00307 
00313     YDialog * createDialog( YWidgetOpt & opt );
00314 
00320     void showDialog( YDialog * dialog );
00321 
00327     void closeDialog( YDialog * dialog );
00328 
00334     bool eventFilter( QObject * obj, QEvent * ev );
00335 
00342     bool showEventFilter( QObject * obj, QEvent * ev );
00343 
00348     void loadPredefinedQtTranslations();
00349 
00355     void pickAutoFonts();
00356 
00365     bool autoFonts() const { return _auto_fonts; }
00366 
00367 
00368     /*** Widget creation methods, all reimplemented from YUI ***/
00369 
00370     YContainerWidget * createAlignment          ( YWidget * parent, YWidgetOpt & opt, YAlignmentType horAlign, YAlignmentType vertAlign );
00371     YContainerWidget * createFrame              ( YWidget * parent, YWidgetOpt & opt, const YCPString & label );
00372     YContainerWidget * createRadioButtonGroup   ( YWidget * parent, YWidgetOpt & opt);
00373     YContainerWidget * createReplacePoint       ( YWidget * parent, YWidgetOpt & opt);
00374     YContainerWidget * createSplit              ( YWidget * parent, YWidgetOpt & opt, YUIDimension dimension);
00375     YContainerWidget * createSquash             ( YWidget * parent, YWidgetOpt & opt, bool horSquash, bool vertSquash);
00376     YContainerWidget * createWeight             ( YWidget * parent, YWidgetOpt & opt, YUIDimension dim, long weight);
00377 
00378     YWidget * createCheckBox            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, bool checked);
00379     YWidget * createComboBox            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00380     YWidget * createEmpty               ( YWidget * parent, YWidgetOpt & opt);
00381     YWidget * createImage               ( YWidget * parent, YWidgetOpt & opt, ImageType    img,         YCPString fallbackText );
00382     YWidget * createImage               ( YWidget * parent, YWidgetOpt & opt, YCPByteblock imageData,   YCPString fallbackText );
00383     YWidget * createImage               ( YWidget * parent, YWidgetOpt & opt, YCPString    fileName,    YCPString fallbackText );
00384     YWidget * createIntField            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, int minValue, int maxValue, int initialValue);
00385     YWidget * createLabel               ( YWidget * parent, YWidgetOpt & opt, const YCPString & text);
00386     YWidget * createLogView             ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, int visibleLines, int maxLines );
00387     YWidget * createMultiLineEdit       ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text);
00388     YWidget * createProgressBar         ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPInteger & maxProgress, const YCPInteger & currentProgress );
00389     YWidget * createPackageSelector     ( YWidget * parent, YWidgetOpt & opt, const YCPString & floppyDevice );
00390     YWidget * createPushButton          ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00391     YWidget * createMenuButton          ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00392     YWidget * createRadioButton         ( YWidget * parent, YWidgetOpt & opt, YRadioButtonGroup * rbg, const YCPString & label, bool checked);
00393     YWidget * createRichText            ( YWidget * parent, YWidgetOpt & opt, const YCPString & text);
00394     YWidget * createSelectionBox        ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00395     YWidget * createMultiSelectionBox   ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00396     YWidget * createSpacing             ( YWidget * parent, YWidgetOpt & opt, float size, bool horizontal, bool vertical);
00397     YWidget * createTable               ( YWidget * parent, YWidgetOpt & opt, vector<string> header);
00398     YWidget * createTextEntry           ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text);
00399     YWidget * createTree                ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00400     YWidget * createPkgSpecial          ( YWidget * parent, YWidgetOpt & opt, const YCPString & subwidget );
00401 
00402 
00403     /*** Widget creation methods for optional widgets, all reimplemented from YUI ***/
00404 
00405     bool        hasBarGraph();
00406     YWidget *   createBarGraph          ( YWidget * parent, YWidgetOpt & opt);
00407 
00408 
00409     bool        hasColoredLabel();
00410     YWidget *   createColoredLabel      ( YWidget *             parent,
00411                                           YWidgetOpt &          opt,
00412                                           YCPString             label,
00413                                           YColor                foreground,
00414                                           YColor                background,
00415                                           int                   margin );
00416 
00417     bool        hasDownloadProgress();
00418     YWidget *   createDownloadProgress  ( YWidget *             parent,
00419                                           YWidgetOpt &          opt,
00420                                           const YCPString &     label,
00421                                           const YCPString &     filename,
00422                                           int                   expectedSize );
00423 
00424     bool        hasDumbTab();
00425     YWidget *   createDumbTab           ( YWidget *             parent,
00426                                           YWidgetOpt &          opt );
00427 
00428     bool        hasSlider();
00429     YWidget *   createSlider            ( YWidget *             parent,
00430                                           YWidgetOpt &          opt,
00431                                           const YCPString &     label,
00432                                           int                   minValue,
00433                                           int                   maxValue,
00434                                           int                   initialValue );
00435 
00436     bool        hasPartitionSplitter();
00437     YWidget *   createPartitionSplitter( YWidget *              parent,
00438                                          YWidgetOpt &           opt,
00439                                          int                    usedSize,
00440                                          int                    totalFreeSize,
00441                                          int                    newPartSize,
00442                                          int                    minNewPartSize,
00443                                          int                    minFreeSize,
00444                                          const YCPString &      usedLabel,
00445                                          const YCPString &      freeLabel,
00446                                          const YCPString &      newPartLabel,
00447                                          const YCPString &      freeFieldLabel,
00448                                          const YCPString &      newPartFieldLabel );
00449 
00450     bool        hasWizard();
00451     YWidget *   createWizard            ( YWidget * parent, YWidgetOpt & opt,
00452                                           const YCPValue & backButtonId,        const YCPString & backButtonLabel,
00453                                           const YCPValue & abortButtonId,       const YCPString & abortButtonLabel,
00454                                           const YCPValue & nextButtonId,        const YCPString & nextButtonLabel  );
00455 
00456 
00457 
00458     /*** END widget creation methods ***/
00459 
00460 
00461 public:
00462 
00476     YCPValue askForExistingDirectory ( const YCPString & startDir,
00477                                        const YCPString & headline );
00478 
00493     YCPValue askForExistingFile ( const YCPString & startWith,
00494                                   const YCPString & filter,
00495                                   const YCPString & headline );
00496 
00512     YCPValue askForSaveFileName ( const YCPString & startWith,
00513                                   const YCPString & filter,
00514                                   const YCPString & headline );
00515 
00520     QString askForSaveFileName( const QString & startWith,
00521                                 const QString & filter,
00522                                 const QString & headline );
00523 
00524 
00528     QWidget* mainWidget();
00529 
00530 protected:
00531 
00536     YCPValue setLanguage( const YCPTerm & term );
00537 
00538 
00544     int  getDisplayWidth();
00545     int  getDisplayHeight();
00546     int  getDisplayDepth();
00547     long getDisplayColors();
00548     int  getDefaultWidth();
00549     int  getDefaultHeight();
00550     bool textMode()                     { return false; }
00551     bool hasImageSupport()              { return true;  }
00552     bool hasLocalImageSupport()         { return true;  }
00553     bool hasAnimationSupport()          { return true;  }
00554     bool hasIconSupport()               { return false; }       // not yet
00555     bool hasFullUtf8Support()           { return true;  }
00556 
00557 
00558     QMap<QString, int>  screenShotNo;
00559     QString             screenShotNameTemplate;
00560 
00561 
00562 protected slots:
00563 
00567     bool close();
00568 
00572     void userInputTimeout();
00573 
00577     void leaveIdleLoop( int );
00578 
00579 
00580 protected:
00581 
00585     void processCommandLineArgs( int argc, char **argv );
00586 
00587 
00588     //
00589     // Data members
00590     //
00591 
00595     bool _have_wm;
00596 
00600     bool _fullscreen;
00601 
00605     bool _decorate_toplevel_window;
00606 
00610     bool _debug_embedding;
00611 
00617     QVBox * _main_win;
00618 
00622     QWidgetStack * _widget_stack;
00623 
00627     vector<QWidget *> _popup_stack;
00628 
00632     int _main_dialog_id;
00633 
00637     QSize _default_size;
00638 
00644     bool _leave_idle_loop;
00645 
00651     bool _do_exit_loop;
00652 
00656     QCursor * _busy_cursor;
00657 
00661     QFont _current_font;
00662     bool _loaded_current_font;
00663 
00664 
00668     QFont _heading_font;
00669     bool _loaded_heading_font;
00670 
00674     bool _auto_fonts;
00675     int  _auto_normal_font_size;
00676     int  _auto_heading_font_size;
00677 
00681     bool _wm_close_blocked;
00682 
00687     bool _auto_activate_dialogs;
00688 
00692     static YQUI * _ui;
00693 
00697     bool _fatal_error;
00698 
00702     QTimer _user_input_timer;
00703 
00707     QTimer _busy_cursor_timer;
00708 
00712     YSimpleEventHandler _event_handler;
00713 
00717     QTranslator _qtTranslations;
00718 
00719 
00723     static QWidget * _embeddingParent;
00724 
00728     bool _running_embedded;
00729 };
00730 
00731 
00732 #endif // YQUI_h

Generated on Fri Oct 14 19:03:46 2005 for yast2-qt by doxygen 1.3.6