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 class QY2Settings;
00044 using std::string;
00045 using std::vector;
00046 
00047 
00048 class YQUI: public QObject, public YUI
00049 {
00050     Q_OBJECT
00051 public:
00052 
00056     YQUI( int           argc,
00057           char **       argv,
00058           bool          with_threads,
00059           const char *  macro_file );
00060 
00064     ~YQUI();
00065 
00069     static YQUI * ui() { return _ui; }
00070 
00075     static void setEmbeddingParent( QWidget * p );
00076 
00080     const QFont & currentFont();
00081 
00085     const QFont & boldFont();
00086 
00090     const QFont & headingFont();
00091 
00101     void sendEvent( YEvent * event );
00102 
00106     bool eventPendingFor( YWidget * widget ) const
00107         { return _event_handler.eventPendingFor( widget ); }
00108 
00114     YEvent * pendingEvent() const { return _event_handler.pendingEvent(); }
00115 
00120     bool haveWM() const { return _have_wm; }
00121 
00125     bool fullscreen() const { return _fullscreen; }
00126 
00132     bool decorateToplevelWindow() const { return _decorate_toplevel_window; }
00133 
00138     bool fatalError() const { return _fatal_error; }
00139 
00145     void raiseFatalError() { _fatal_error = true; }
00146 
00150     long defaultSize( YUIDimension dim ) const;
00151 
00156     void makeScreenShot( string filename );
00157 
00164     YCPValue runPkgSelection( YWidget * packageSelector );
00165 
00172     void toggleRecordMacro();
00173 
00178     void askPlayMacro();
00179 
00185     void internalError( const char * msg );
00186 
00187 
00191     void blockWmClose()         { _wm_close_blocked = true;  }
00192 
00196     void unblockWmClose()       { _wm_close_blocked = false; }
00197 
00201     bool autoActivateDialogs() const { return _auto_activate_dialogs; }
00202 
00207     bool runningEmbedded() const;
00208 
00213     bool debugEmbedding() const { return _debug_embedding; }
00214 
00221     virtual void blockEvents( bool block = true )
00222         { _event_handler.blockEvents( block ); }
00223 
00229     virtual bool eventsBlocked() const
00230         { return _event_handler.eventsBlocked(); }
00231 
00237     QString YQUI::productName() const;
00238 
00239 
00240 public slots:
00241 
00247     void busyCursor();
00248 
00254     void normalCursor();
00255 
00260     void askSaveLogs();
00261     
00266     void askConfigureLogging();
00267     
00271     void easterEgg();
00272 
00273 
00274 signals:
00278     void wmClose();
00279 
00280 
00281 protected:
00282 
00289     void idleLoop( int fd_ycp );
00290 
00297     YCPString glyph( const YCPSymbol & glyphSymbol );
00298 
00304     YEvent * userInput( unsigned long timeout_millisec = 0 );
00305 
00311     YEvent * pollInput();
00312 
00318     YDialog * createDialog( YWidgetOpt & opt );
00319 
00325     void showDialog( YDialog * dialog );
00326 
00332     void closeDialog( YDialog * dialog );
00333 
00339     bool eventFilter( QObject * obj, QEvent * ev );
00340 
00347     bool showEventFilter( QObject * obj, QEvent * ev );
00348 
00353     void loadPredefinedQtTranslations();
00354 
00361     void setLangFonts( const YCPString & language );
00362 
00372     QString fontKey( const QString & lang );
00373 
00378     void setAllFontsDirty();
00379 
00385     void pickAutoFonts();
00386 
00395     bool autoFonts() const { return _auto_fonts; }
00396 
00397 
00398     /*** Widget creation methods, all reimplemented from YUI ***/
00399 
00400     YContainerWidget * createAlignment          ( YWidget * parent, YWidgetOpt & opt, YAlignmentType horAlign, YAlignmentType vertAlign );
00401     YContainerWidget * createFrame              ( YWidget * parent, YWidgetOpt & opt, const YCPString & label );
00402     YContainerWidget * createRadioButtonGroup   ( YWidget * parent, YWidgetOpt & opt);
00403     YContainerWidget * createReplacePoint       ( YWidget * parent, YWidgetOpt & opt);
00404     YContainerWidget * createSplit              ( YWidget * parent, YWidgetOpt & opt, YUIDimension dimension);
00405     YContainerWidget * createSquash             ( YWidget * parent, YWidgetOpt & opt, bool horSquash, bool vertSquash);
00406     YContainerWidget * createWeight             ( YWidget * parent, YWidgetOpt & opt, YUIDimension dim, long weight);
00407 
00408     YWidget * createCheckBox            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, bool checked);
00409     YWidget * createComboBox            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00410     YWidget * createEmpty               ( YWidget * parent, YWidgetOpt & opt);
00411     YWidget * createImage               ( YWidget * parent, YWidgetOpt & opt, YCPByteblock imageData,   YCPString fallbackText );
00412     YWidget * createImage               ( YWidget * parent, YWidgetOpt & opt, YCPString    fileName,    YCPString fallbackText );
00413     YWidget * createIntField            ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, int minValue, int maxValue, int initialValue);
00414     YWidget * createLabel               ( YWidget * parent, YWidgetOpt & opt, const YCPString & text);
00415     YWidget * createLogView             ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, int visibleLines, int maxLines );
00416     YWidget * createMultiLineEdit       ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text);
00417     YWidget * createProgressBar         ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPInteger & maxProgress, const YCPInteger & currentProgress );
00418     YWidget * createPackageSelector     ( YWidget * parent, YWidgetOpt & opt, const YCPString & floppyDevice );
00419     YWidget * createPushButton          ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00420     YWidget * createMenuButton          ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00421     YWidget * createRadioButton         ( YWidget * parent, YWidgetOpt & opt, YRadioButtonGroup * rbg, const YCPString & label, bool checked);
00422     YWidget * createRichText            ( YWidget * parent, YWidgetOpt & opt, const YCPString & text);
00423     YWidget * createSelectionBox        ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00424     YWidget * createMultiSelectionBox   ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00425     YWidget * createSpacing             ( YWidget * parent, YWidgetOpt & opt, float size, bool horizontal, bool vertical);
00426     YWidget * createTable               ( YWidget * parent, YWidgetOpt & opt, vector<string> header);
00427     YWidget * createTextEntry           ( YWidget * parent, YWidgetOpt & opt, const YCPString & label, const YCPString & text);
00428     YWidget * createTree                ( YWidget * parent, YWidgetOpt & opt, const YCPString & label);
00429     YWidget * createPkgSpecial          ( YWidget * parent, YWidgetOpt & opt, const YCPString & subwidget );
00430 
00431 
00432     /*** Widget creation methods for optional widgets, all reimplemented from YUI ***/
00433 
00434     bool        hasBarGraph();
00435     YWidget *   createBarGraph          ( YWidget * parent, YWidgetOpt & opt);
00436 
00437 
00438     bool        hasColoredLabel();
00439     YWidget *   createColoredLabel      ( YWidget *             parent,
00440                                           YWidgetOpt &          opt,
00441                                           YCPString             label,
00442                                           YColor                foreground,
00443                                           YColor                background,
00444                                           int                   margin );
00445 
00446     bool        hasDate();
00447     YWidget *   createDate              ( YWidget *             parent,
00448                                           YWidgetOpt &          opt,
00449                                           const YCPString &     label,
00450                                           const YCPString &     date);
00451 
00452     bool        hasTime();
00453     YWidget *   createTime              ( YWidget *             parent,
00454                                           YWidgetOpt &          opt,
00455                                           const YCPString &     label,
00456                                           const YCPString &     time);
00457 
00458     bool        hasDownloadProgress();
00459     YWidget *   createDownloadProgress  ( YWidget *             parent,
00460                                           YWidgetOpt &          opt,
00461                                           const YCPString &     label,
00462                                           const YCPString &     filename,
00463                                           int                   expectedSize );
00464 
00465     bool        hasDumbTab();
00466     YWidget *   createDumbTab           ( YWidget *             parent,
00467                                           YWidgetOpt &          opt );
00468 
00469     bool        hasMultiProgressMeter();
00470     YWidget *   createMultiProgressMeter( YWidget *             parent,
00471                                           YWidgetOpt &          opt,
00472                                           bool                  horizontal,
00473                                           const YCPList &       maxValues );
00474 
00475     bool        hasSlider();
00476     YWidget *   createSlider            ( YWidget *             parent,
00477                                           YWidgetOpt &          opt,
00478                                           const YCPString &     label,
00479                                           int                   minValue,
00480                                           int                   maxValue,
00481                                           int                   initialValue );
00482 
00483     bool        hasPartitionSplitter();
00484     YWidget *   createPartitionSplitter( YWidget *              parent,
00485                                          YWidgetOpt &           opt,
00486                                          int                    usedSize,
00487                                          int                    totalFreeSize,
00488                                          int                    newPartSize,
00489                                          int                    minNewPartSize,
00490                                          int                    minFreeSize,
00491                                          const YCPString &      usedLabel,
00492                                          const YCPString &      freeLabel,
00493                                          const YCPString &      newPartLabel,
00494                                          const YCPString &      freeFieldLabel,
00495                                          const YCPString &      newPartFieldLabel );
00496 
00497     bool        hasWizard();
00498     YWidget *   createWizard            ( YWidget * parent, YWidgetOpt & opt,
00499                                           const YCPValue & backButtonId,        const YCPString & backButtonLabel,
00500                                           const YCPValue & abortButtonId,       const YCPString & abortButtonLabel,
00501                                           const YCPValue & nextButtonId,        const YCPString & nextButtonLabel  );
00502 
00503 
00504 
00505     /*** END widget creation methods ***/
00506 
00507 
00508 public:
00509 
00523     YCPValue askForExistingDirectory ( const YCPString & startDir,
00524                                        const YCPString & headline );
00525 
00540     YCPValue askForExistingFile ( const YCPString & startWith,
00541                                   const YCPString & filter,
00542                                   const YCPString & headline );
00543 
00559     YCPValue askForSaveFileName ( const YCPString & startWith,
00560                                   const YCPString & filter,
00561                                   const YCPString & headline );
00562 
00567     QString askForSaveFileName( const QString & startWith,
00568                                 const QString & filter,
00569                                 const QString & headline );
00570 
00574     QWidget* mainWidget();
00575 
00579     static void setTextdomain( const char * domain );
00580     
00584     static QPalette YQUI::visionImpairedPalette();
00585 
00589     QPalette normalPalette() const { return _normalPalette; }
00590 
00594     void toggleVisionImpairedPalette();
00595     
00600     bool usingVisionImpairedPalette() const { return _usingVisionImpairedPalette; }
00601 
00609     virtual long deviceUnits( YUIDimension dim, float layout_units );
00610 
00618     virtual float layoutUnits( YUIDimension dim, long device_units );
00619 
00620     
00621 protected:
00622 
00627     YCPValue setLanguage( const YCPTerm & term );
00628 
00629 
00635     int  getDisplayWidth();
00636     int  getDisplayHeight();
00637     int  getDisplayDepth();
00638     long getDisplayColors();
00639     int  getDefaultWidth();
00640     int  getDefaultHeight();
00641     bool textMode()                     { return false; }
00642     bool hasImageSupport()              { return true;  }
00643     bool hasLocalImageSupport()         { return true;  }
00644     bool hasAnimationSupport()          { return true;  }
00645     bool hasIconSupport()               { return false; }       // not yet
00646     bool hasFullUtf8Support()           { return true;  }
00647     bool richTextSupportsTable()        { return true; }
00648 
00649 
00650     QMap<QString, int>  screenShotNo;
00651     QString             screenShotNameTemplate;
00652 
00653 
00654 protected slots:
00655 
00659     bool close();
00660 
00664     void userInputTimeout();
00665 
00669     void leaveIdleLoop( int );
00670 
00671 
00672 protected:
00673 
00677     void processCommandLineArgs( int argc, char **argv );
00678 
00682     void calcDefaultSize();
00683 
00684 
00685     //
00686     // Data members
00687     //
00688 
00692     bool _have_wm;
00693 
00697     bool _fullscreen;
00698 
00702     bool _decorate_toplevel_window;
00703 
00707     bool _debug_embedding;
00708 
00714     QVBox * _main_win;
00715 
00719     QWidgetStack * _widget_stack;
00720 
00724     vector<QWidget *> _popup_stack;
00725 
00729     int _main_dialog_id;
00730 
00734     QSize _default_size;
00735 
00741     bool _leave_idle_loop;
00742 
00748     bool _do_exit_loop;
00749 
00750 
00754     QString _font_family;
00755 
00759     QY2Settings * _lang_fonts;
00760     
00764     QFont _current_font;
00765     bool _loaded_current_font;
00766 
00770     QFont _bold_font;
00771     bool _loaded_bold_font;
00772 
00776     QFont _heading_font;
00777     bool _loaded_heading_font;
00778 
00782     bool _auto_fonts;
00783     int  _auto_normal_font_size;
00784     int  _auto_heading_font_size;
00785 
00789     bool _wm_close_blocked;
00790 
00795     bool _auto_activate_dialogs;
00796 
00800     static YQUI * _ui;
00801 
00805     bool _fatal_error;
00806 
00810     QTimer _user_input_timer;
00811 
00815     QTimer _busy_cursor_timer;
00816 
00820     YSimpleEventHandler _event_handler;
00821 
00825     QTranslator _qtTranslations;
00826 
00827 
00831     static QWidget * _embeddingParent;
00832 
00836     bool _running_embedded;
00837 
00841     QPalette _normalPalette;
00842 
00846     bool _usingVisionImpairedPalette;
00847 };
00848 
00849 
00850 #endif // YQUI_h

Generated on Wed Sep 14 10:59:03 2005 for yast2-qt by  doxygen 1.4.4