Main Page | Class Hierarchy | Class List | Directories | 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 
00283     void idleLoop( int fd_ycp );
00284 
00291     YCPString glyph( const YCPSymbol & glyphSymbol );
00292 
00298     YEvent * userInput( unsigned long timeout_millisec = 0 );
00299 
00305     YEvent * pollInput();
00306 
00312     YDialog * createDialog( YWidgetOpt & opt );
00313 
00319     void showDialog( YDialog * dialog );
00320 
00326     void closeDialog( YDialog * dialog );
00327 
00333     bool eventFilter( QObject * obj, QEvent * ev );
00334 
00341     bool showEventFilter( QObject * obj, QEvent * ev );
00342 
00347     void loadPredefinedQtTranslations();
00348 
00354     void pickAutoFonts();
00355 
00364     bool autoFonts() const { return _auto_fonts; }
00365 
00366 
00367     /*** Widget creation methods, all reimplemented from YUI ***/
00368 
00369     YContainerWidget * createAlignment          ( YWidget * parent, YWidgetOpt & opt, YAlignmentType horAlign, YAlignmentType vertAlign );
00370     YContainerWidget * createFrame              ( YWidget * parent, YWidgetOpt & opt, const YCPString & label );
00371     YContainerWidget * createRadioButtonGroup   ( YWidget * parent, YWidgetOpt & opt);
00372     YContainerWidget * createReplacePoint       ( YWidget * parent, YWidgetOpt & opt);
00373     YContainerWidget * createSplit              ( YWidget * parent, YWidgetOpt & opt, YUIDimension dimension);
00374     YContainerWidget * createSquash             ( YWidget * parent, YWidgetOpt & opt, bool horSquash, bool vertSquash);
00375     YContainerWidget * createWeight             ( YWidget * parent, YWidgetOpt & opt, YUIDimension dim, long weight);
00376 
00377     YWidget * createCheckBox            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, bool checked);
00378     YWidget * createComboBox            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00379     YWidget * createEmpty               ( YWidget * parent, YWidgetOpt & opt);
00380     YWidget * createImage               ( YWidget * parent, YWidgetOpt & opt, YCPByteblock imageData,   YCPString fallbackText );
00381     YWidget * createImage               ( YWidget * parent, YWidgetOpt & opt, YCPString    fileName,    YCPString fallbackText );
00382     YWidget * createIntField            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, int minValue, int maxValue, int initialValue);
00383     YWidget * createLabel               ( YWidget * parent, YWidgetOpt & opt, const YCPString & text);
00384     YWidget * createLogView             ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, int visibleLines, int maxLines );
00385     YWidget * createMultiLineEdit       ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text);
00386     YWidget * createProgressBar         ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPInteger & maxProgress, const YCPInteger & currentProgress );
00387     YWidget * createPackageSelector     ( YWidget * parent, YWidgetOpt & opt, const YCPString & floppyDevice );
00388     YWidget * createPushButton          ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00389     YWidget * createMenuButton          ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00390     YWidget * createRadioButton         ( YWidget * parent, YWidgetOpt & opt, YRadioButtonGroup * rbg, const YCPString & label, bool checked);
00391     YWidget * createRichText            ( YWidget * parent, YWidgetOpt & opt, const YCPString & text);
00392     YWidget * createSelectionBox        ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00393     YWidget * createMultiSelectionBox   ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00394     YWidget * createSpacing             ( YWidget * parent, YWidgetOpt & opt, float size, bool horizontal, bool vertical);
00395     YWidget * createTable               ( YWidget * parent, YWidgetOpt & opt, vector<string> header);
00396     YWidget * createTextEntry           ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text);
00397     YWidget * createTree                ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00398     YWidget * createPkgSpecial          ( YWidget * parent, YWidgetOpt & opt, const YCPString & subwidget );
00399 
00400 
00401     /*** Widget creation methods for optional widgets, all reimplemented from YUI ***/
00402 
00403     bool        hasBarGraph();
00404     YWidget *   createBarGraph          ( YWidget * parent, YWidgetOpt & opt);
00405 
00406 
00407     bool        hasColoredLabel();
00408     YWidget *   createColoredLabel      ( YWidget *             parent,
00409                                           YWidgetOpt &          opt,
00410                                           YCPString             label,
00411                                           YColor                foreground,
00412                                           YColor                background,
00413                                           int                   margin );
00414 
00415     bool        hasDate();
00416     YWidget *   createDate              ( YWidget *             parent,
00417                                           YWidgetOpt &          opt,
00418                                           const YCPString &     label,
00419                                           const YCPString &     date);
00420 
00421     bool        hasTime();
00422     YWidget *   createTime              ( YWidget *             parent,
00423                                           YWidgetOpt &          opt,
00424                                           const YCPString &     label,
00425                                           const YCPString &     time);
00426 
00427     bool        hasDownloadProgress();
00428     YWidget *   createDownloadProgress  ( YWidget *             parent,
00429                                           YWidgetOpt &          opt,
00430                                           const YCPString &     label,
00431                                           const YCPString &     filename,
00432                                           int                   expectedSize );
00433 
00434     bool        hasDumbTab();
00435     YWidget *   createDumbTab           ( YWidget *             parent,
00436                                           YWidgetOpt &          opt );
00437 
00438     bool        hasMultiProgressMeter();
00439     YWidget *   createMultiProgressMeter( YWidget *             parent,
00440                                           YWidgetOpt &          opt,
00441                                           bool                  horizontal,
00442                                           const YCPList &       maxValues );
00443 
00444     bool        hasSlider();
00445     YWidget *   createSlider            ( YWidget *             parent,
00446                                           YWidgetOpt &          opt,
00447                                           const YCPString &     label,
00448                                           int                   minValue,
00449                                           int                   maxValue,
00450                                           int                   initialValue );
00451 
00452     bool        hasPartitionSplitter();
00453     YWidget *   createPartitionSplitter( YWidget *              parent,
00454                                          YWidgetOpt &           opt,
00455                                          int                    usedSize,
00456                                          int                    totalFreeSize,
00457                                          int                    newPartSize,
00458                                          int                    minNewPartSize,
00459                                          int                    minFreeSize,
00460                                          const YCPString &      usedLabel,
00461                                          const YCPString &      freeLabel,
00462                                          const YCPString &      newPartLabel,
00463                                          const YCPString &      freeFieldLabel,
00464                                          const YCPString &      newPartFieldLabel );
00465 
00466     bool        hasWizard();
00467     YWidget *   createWizard            ( YWidget * parent, YWidgetOpt & opt,
00468                                           const YCPValue & backButtonId,        const YCPString & backButtonLabel,
00469                                           const YCPValue & abortButtonId,       const YCPString & abortButtonLabel,
00470                                           const YCPValue & nextButtonId,        const YCPString & nextButtonLabel  );
00471 
00472 
00473 
00474     /*** END widget creation methods ***/
00475 
00476 
00477 public:
00478 
00492     YCPValue askForExistingDirectory ( const YCPString & startDir,
00493                                        const YCPString & headline );
00494 
00509     YCPValue askForExistingFile ( const YCPString & startWith,
00510                                   const YCPString & filter,
00511                                   const YCPString & headline );
00512 
00528     YCPValue askForSaveFileName ( const YCPString & startWith,
00529                                   const YCPString & filter,
00530                                   const YCPString & headline );
00531 
00536     QString askForSaveFileName( const QString & startWith,
00537                                 const QString & filter,
00538                                 const QString & headline );
00539 
00543     QWidget* mainWidget();
00544 
00548     static void setTextdomain( const char * domain );
00549     
00553     static QPalette YQUI::visionImpairedPalette();
00554 
00558     QPalette normalPalette() const { return _normalPalette; }
00559 
00563     void toggleVisionImpairedPalette();
00564     
00569     bool usingVisionImpairedPalette() const { return _usingVisionImpairedPalette; }
00570 
00571     
00572 protected:
00573 
00578     YCPValue setLanguage( const YCPTerm & term );
00579 
00580 
00586     int  getDisplayWidth();
00587     int  getDisplayHeight();
00588     int  getDisplayDepth();
00589     long getDisplayColors();
00590     int  getDefaultWidth();
00591     int  getDefaultHeight();
00592     bool textMode()                     { return false; }
00593     bool hasImageSupport()              { return true;  }
00594     bool hasLocalImageSupport()         { return true;  }
00595     bool hasAnimationSupport()          { return true;  }
00596     bool hasIconSupport()               { return false; }       // not yet
00597     bool hasFullUtf8Support()           { return true;  }
00598     bool richTextSupportsTable()        { return true; }
00599 
00600 
00601     QMap<QString, int>  screenShotNo;
00602     QString             screenShotNameTemplate;
00603 
00604 
00605 protected slots:
00606 
00610     bool close();
00611 
00615     void userInputTimeout();
00616 
00620     void leaveIdleLoop( int );
00621 
00622 
00623 protected:
00624 
00628     void processCommandLineArgs( int argc, char **argv );
00629 
00633     void calcDefaultSize();
00634 
00635 
00636     //
00637     // Data members
00638     //
00639 
00643     bool _have_wm;
00644 
00648     bool _fullscreen;
00649 
00653     bool _decorate_toplevel_window;
00654 
00658     bool _debug_embedding;
00659 
00665     QVBox * _main_win;
00666 
00670     QWidgetStack * _widget_stack;
00671 
00675     vector<QWidget *> _popup_stack;
00676 
00680     int _main_dialog_id;
00681 
00685     QSize _default_size;
00686 
00692     bool _leave_idle_loop;
00693 
00699     bool _do_exit_loop;
00700 
00704     QFont _current_font;
00705     bool _loaded_current_font;
00706 
00707 
00711     QFont _heading_font;
00712     bool _loaded_heading_font;
00713 
00717     bool _auto_fonts;
00718     int  _auto_normal_font_size;
00719     int  _auto_heading_font_size;
00720 
00724     bool _wm_close_blocked;
00725 
00730     bool _auto_activate_dialogs;
00731 
00735     static YQUI * _ui;
00736 
00740     bool _fatal_error;
00741 
00745     QTimer _user_input_timer;
00746 
00750     QTimer _busy_cursor_timer;
00751 
00755     YSimpleEventHandler _event_handler;
00756 
00760     QTranslator _qtTranslations;
00761 
00762 
00766     static QWidget * _embeddingParent;
00767 
00771     bool _running_embedded;
00772 
00776     QPalette _normalPalette;
00777 
00781     bool _usingVisionImpairedPalette;
00782 };
00783 
00784 
00785 #endif // YQUI_h

Generated on Tue Mar 22 19:06:27 2005 for yast2-qt by  doxygen 1.4.1