diff --git a/effects.cpp b/effects.cpp index 352799177d..f3fd7e5118 100644 --- a/effects.cpp +++ b/effects.cpp @@ -1325,9 +1325,9 @@ void EffectsHandlerImpl::reconfigureEffect(const QString& name) } } -bool EffectsHandlerImpl::isEffectLoaded(const QString& name) +bool EffectsHandlerImpl::isEffectLoaded(const QString& name) const { - for (QVector< EffectPair >::iterator it = loaded_effects.begin(); it != loaded_effects.end(); ++it) + for (QVector< EffectPair >::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) if ((*it).first == name) return true; @@ -1396,6 +1396,28 @@ void EffectsHandlerImpl::slotHideOutline() emit hideOutline(); } +QString EffectsHandlerImpl::supportInformation(const QString &name) const +{ + if (!isEffectLoaded(name)) { + return QString(); + } + for (QVector< EffectPair >::const_iterator it = loaded_effects.constBegin(); it != loaded_effects.constEnd(); ++it) { + if ((*it).first == name) { + QString support((*it).first + ":\n"); + const QMetaObject *metaOptions = (*it).second->metaObject(); + for (int i=0; ipropertyCount(); ++i) { + const QMetaProperty property = metaOptions->property(i); + if (QLatin1String(property.name()) == "objectName") { + continue; + } + support.append(QLatin1String(property.name()) % ": " % (*it).second->property(property.name()).toString() % '\n'); + } + return support; + } + } + return QString(); +} + //**************************************** // EffectWindowImpl //**************************************** diff --git a/effects.h b/effects.h index a65909d231..014c4cf497 100644 --- a/effects.h +++ b/effects.h @@ -167,7 +167,8 @@ public: void toggleEffect(const QString& name); void unloadEffect(const QString& name); void reconfigureEffect(const QString& name); - bool isEffectLoaded(const QString& name); + bool isEffectLoaded(const QString& name) const; + QString supportInformation(const QString& name) const; QStringList loadedEffects() const; QStringList listOfEffects() const; diff --git a/effects/blur/blur.cpp b/effects/blur/blur.cpp index feba036128..16c04b2f8c 100644 --- a/effects/blur/blur.cpp +++ b/effects/blur/blur.cpp @@ -672,5 +672,10 @@ void BlurEffect::doCachedBlur(EffectWindow *w, const QRegion& region, const floa shader->unbind(); } +int BlurEffect::blurRadius() const +{ + return shader->radius(); +} + } // namespace KWin diff --git a/effects/blur/blur.h b/effects/blur/blur.h index ce2eac40ff..a3820856a8 100644 --- a/effects/blur/blur.h +++ b/effects/blur/blur.h @@ -35,6 +35,8 @@ class BlurShader; class BlurEffect : public KWin::Effect { Q_OBJECT + Q_PROPERTY(int blurRadius READ blurRadius) + Q_PROPERTY(bool cacheTexture READ isCacheTexture) public: BlurEffect(); ~BlurEffect(); @@ -48,6 +50,12 @@ public: void drawWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data); void paintEffectFrame(EffectFrame *frame, QRegion region, double opacity, double frameOpacity); + // for dynamic setting extraction + int blurRadius() const; + bool isCacheTexture() const { + return m_shouldCache; + } + public Q_SLOTS: void slotWindowAdded(KWin::EffectWindow *w); void slotWindowDeleted(KWin::EffectWindow *w); diff --git a/effects/coverswitch/coverswitch.h b/effects/coverswitch/coverswitch.h index cfc1cdd931..ef728e08b0 100644 --- a/effects/coverswitch/coverswitch.h +++ b/effects/coverswitch/coverswitch.h @@ -38,6 +38,18 @@ class CoverSwitchEffect : public Effect { Q_OBJECT + Q_PROPERTY(int animationDuration READ configuredAnimationDuration) + Q_PROPERTY(bool animateSwitch READ isAnimateSwitch) + Q_PROPERTY(bool animateStart READ isAnimateStart) + Q_PROPERTY(bool animateStop READ isAnimateStop) + Q_PROPERTY(bool reflection READ isReflection) + Q_PROPERTY(bool windowTitle READ isWindowTitle) + Q_PROPERTY(qreal zPosition READ windowZPosition) + Q_PROPERTY(bool dynamicThumbnails READ isDynamicThumbnails) + Q_PROPERTY(int thumbnailWindows READ configurredThumbnailWindows) + Q_PROPERTY(bool primaryTabBox READ isPrimaryTabBox) + Q_PROPERTY(bool secondaryTabBox READ isSecondaryTabBox) + // TODO: mirror colors public: CoverSwitchEffect(); ~CoverSwitchEffect(); @@ -52,6 +64,41 @@ public: static bool supported(); + // for properties + int configuredAnimationDuration() const { + return animationDuration; + } + bool isAnimateSwitch() const { + return animateSwitch; + } + bool isAnimateStart() const { + return animateStart; + } + bool isAnimateStop() const { + return animateStop; + } + bool isReflection() const { + return reflection; + } + bool isWindowTitle() const { + return windowTitle; + } + qreal windowZPosition() const { + return zPosition; + } + bool isDynamicThumbnails() const { + return dynamicThumbnails; + } + int configurredThumbnailWindows() const { + return thumbnailWindows; + } + bool isPrimaryTabBox() const { + return primaryTabBox; + } + bool isSecondaryTabBox() const { + return secondaryTabBox; + } + public Q_SLOTS: void slotWindowClosed(KWin::EffectWindow *c); void slotTabBoxAdded(int mode); diff --git a/effects/cube/cube.h b/effects/cube/cube.h index cb2b576d41..e68aafe98c 100644 --- a/effects/cube/cube.h +++ b/effects/cube/cube.h @@ -38,6 +38,23 @@ class CubeEffect : public Effect { Q_OBJECT + Q_PROPERTY(qreal cubeOpacity READ configuredCubeOpacity) + Q_PROPERTY(bool opacityDesktopOnly READ isOpacityDesktopOnly) + Q_PROPERTY(bool displayDesktopName READ isDisplayDesktopName) + Q_PROPERTY(bool reflection READ isReflection) + Q_PROPERTY(int rotationDuration READ configuredRotationDuration) + Q_PROPERTY(QColor backgroundColor READ configuredBackgroundColor) + Q_PROPERTY(QColor capColor READ configuredCapColor) + Q_PROPERTY(bool paintCaps READ isPaintCaps) + Q_PROPERTY(bool closeOnMouseRelease READ isCloseOnMouseRelease) + Q_PROPERTY(qreal zPosition READ configuredZPosition) + Q_PROPERTY(bool useForTabBox READ isUseForTabBox) + Q_PROPERTY(bool invertKeys READ isInvertKeys) + Q_PROPERTY(bool invertMouse READ isInvertMouse) + Q_PROPERTY(qreal capDeformationFactor READ configuredCapDeformationFactor) + Q_PROPERTY(bool useZOrdering READ isUseZOrdering) + Q_PROPERTY(bool texturedCaps READ isTexturedCaps) + // TODO: electric borders: not a registered type public: CubeEffect(); ~CubeEffect(); @@ -58,6 +75,56 @@ public: void unregisterCubeInsideEffect(CubeInsideEffect* effect); static bool supported(); + + // for properties + qreal configuredCubeOpacity() const { + return cubeOpacity; + } + bool isOpacityDesktopOnly() const { + return opacityDesktopOnly; + } + bool isDisplayDesktopName() const { + return displayDesktopName; + } + bool isReflection() const { + return reflection; + } + int configuredRotationDuration() const { + return rotationDuration; + } + QColor configuredBackgroundColor() const { + return backgroundColor; + } + QColor configuredCapColor() const { + return capColor; + } + bool isPaintCaps() const { + return paintCaps; + } + bool isCloseOnMouseRelease() const { + return closeOnMouseRelease; + } + qreal configuredZPosition() const { + return zPosition; + } + bool isUseForTabBox() const { + return useForTabBox; + } + bool isInvertKeys() const { + return invertKeys; + } + bool isInvertMouse() const { + return invertMouse; + } + qreal configuredCapDeformationFactor() const { + return capDeformationFactor; + } + bool isUseZOrdering() const { + return useZOrdering; + } + bool isTexturedCaps() const { + return texturedCaps; + } private slots: void toggleCube(); void toggleCylinder(); diff --git a/effects/cube/cubeslide.h b/effects/cube/cubeslide.h index 96b814840c..7ef858531d 100644 --- a/effects/cube/cubeslide.h +++ b/effects/cube/cubeslide.h @@ -33,6 +33,11 @@ class CubeSlideEffect : public Effect { Q_OBJECT + Q_PROPERTY(int rotationDuration READ configuredRotationDuration) + Q_PROPERTY(bool dontSlidePanels READ isDontSlidePanels) + Q_PROPERTY(bool dontSlideStickyWindows READ isDontSlideStickyWindows) + Q_PROPERTY(bool usePagerLayout READ isUsePagerLayout) + Q_PROPERTY(bool useWindowMoving READ isUseWindowMoving) public: CubeSlideEffect(); ~CubeSlideEffect(); @@ -46,6 +51,22 @@ public: static bool supported(); + // for properties + int configuredRotationDuration() const { + return rotationDuration; + } + bool isDontSlidePanels() const { + return dontSlidePanels; + } + bool isDontSlideStickyWindows() const { + return dontSlideStickyWindows; + } + bool isUsePagerLayout() const { + return usePagerLayout; + } + bool isUseWindowMoving() const { + return useWindowMoving; + } private Q_SLOTS: void slotDesktopChanged(int old, int current); void slotWindowStepUserMovedResized(KWin::EffectWindow *w); diff --git a/effects/dashboard/dashboard.h b/effects/dashboard/dashboard.h index 80df408c26..fe2ca52e6e 100644 --- a/effects/dashboard/dashboard.h +++ b/effects/dashboard/dashboard.h @@ -34,6 +34,9 @@ namespace KWin class DashboardEffect : public KWin::Effect { Q_OBJECT + Q_PROPERTY(qreal brightness READ configuredBrightness) + Q_PROPERTY(qreal saturation READ configuredSaturation) + Q_PROPERTY(bool blur READ isBlur) public: DashboardEffect(); ~DashboardEffect(); @@ -45,6 +48,16 @@ public: virtual void unpropagate(); virtual bool isActive() const; + // for properties + qreal configuredBrightness() const { + return brightness; + } + qreal configuredSaturation() const { + return saturation; + } + bool isBlur() const { + return blur; + } public Q_SLOTS: void slotWindowAdded(KWin::EffectWindow* c); void slotWindowClosed(KWin::EffectWindow *c); diff --git a/effects/desktopgrid/desktopgrid.h b/effects/desktopgrid/desktopgrid.h index 1bdf1c2426..c97666e296 100644 --- a/effects/desktopgrid/desktopgrid.h +++ b/effects/desktopgrid/desktopgrid.h @@ -63,6 +63,13 @@ class DesktopGridEffect : public Effect { Q_OBJECT + Q_PROPERTY(int zoomDuration READ configuredZoomDuration) + Q_PROPERTY(int border READ configuredBorder) + Q_PROPERTY(Qt::Alignment desktopNameAlignment READ configuredDesktopNameAlignment) + Q_PROPERTY(int layoutMode READ configuredLayoutMode) + Q_PROPERTY(int customLayoutRows READ configuredCustomLayoutRows) + Q_PROPERTY(bool usePresentWindows READ isUsePresentWindows) + // TODO: electric borders public: DesktopGridEffect(); ~DesktopGridEffect(); @@ -79,6 +86,25 @@ public: enum { LayoutPager, LayoutAutomatic, LayoutCustom }; // Layout modes + // for properties + int configuredZoomDuration() const { + return zoomDuration; + } + int configuredBorder() const { + return border; + } + Qt::Alignment configuredDesktopNameAlignment() const { + return desktopNameAlignment; + } + int configuredLayoutMode() const { + return layoutMode; + } + int configuredCustomLayoutRows() const { + return customLayoutRows; + } + bool isUsePresentWindows() const { + return m_usePresentWindows; + } private slots: void toggle(); // slots for global shortcut changed diff --git a/effects/dialogparent/dialogparent.h b/effects/dialogparent/dialogparent.h index 95814b0188..d439cc63c9 100644 --- a/effects/dialogparent/dialogparent.h +++ b/effects/dialogparent/dialogparent.h @@ -38,6 +38,7 @@ class DialogParentEffect : public Effect { Q_OBJECT + Q_PROPERTY(int changeTime READ configuredChangeTime) public: DialogParentEffect(); virtual void reconfigure(ReconfigureFlags); @@ -48,6 +49,10 @@ public: virtual bool isActive() const; + // for properties + int configuredChangeTime() const { + return changeTime; + } public Q_SLOTS: void slotWindowClosed(KWin::EffectWindow *c); void slotWindowActivated(KWin::EffectWindow *c); diff --git a/effects/diminactive/diminactive.h b/effects/diminactive/diminactive.h index b9c3c281d9..f1972ab557 100644 --- a/effects/diminactive/diminactive.h +++ b/effects/diminactive/diminactive.h @@ -34,12 +34,33 @@ class DimInactiveEffect : public Effect { Q_OBJECT + Q_PROPERTY(bool dimPanels READ isDimPanels) + Q_PROPERTY(bool dimDesktop READ isDimDesktop) + Q_PROPERTY(bool dimKeepAbove READ isDimKeepAbove) + Q_PROPERTY(bool dimByGroup READ isDimByGroup) + Q_PROPERTY(int dimStrength READ configuredDimStrength) public: DimInactiveEffect(); virtual void reconfigure(ReconfigureFlags); virtual void prePaintScreen(ScreenPrePaintData& data, int time); virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data); + // for properties + bool isDimPanels() const { + return dim_panels; + } + bool isDimDesktop() const { + return dim_desktop; + } + bool isDimKeepAbove() const { + return dim_keepabove; + } + bool isDimByGroup() const { + return dim_by_group; + } + int configuredDimStrength() const { + return dim_strength; + } public Q_SLOTS: void slotWindowActivated(KWin::EffectWindow* c); void slotWindowDeleted(KWin::EffectWindow *w); diff --git a/effects/fallapart/fallapart.h b/effects/fallapart/fallapart.h index 8dfcf29a3a..73786d7e01 100644 --- a/effects/fallapart/fallapart.h +++ b/effects/fallapart/fallapart.h @@ -30,6 +30,7 @@ class FallApartEffect : public Effect { Q_OBJECT + Q_PROPERTY(int blockSize READ configuredBlockSize) public: FallApartEffect(); virtual void reconfigure(ReconfigureFlags); @@ -39,6 +40,10 @@ public: virtual void postPaintScreen(); virtual bool isActive() const; + // for properties + int configuredBlockSize() const { + return blockSize; + } public Q_SLOTS: void slotWindowClosed(KWin::EffectWindow *c); void slotWindowDeleted(KWin::EffectWindow *w); diff --git a/effects/flipswitch/flipswitch.h b/effects/flipswitch/flipswitch.h index a645b2a2a7..7f76814d2b 100644 --- a/effects/flipswitch/flipswitch.h +++ b/effects/flipswitch/flipswitch.h @@ -35,6 +35,14 @@ class FlipSwitchEffect : public Effect { Q_OBJECT + Q_PROPERTY(bool tabBox READ isTabBox) + Q_PROPERTY(bool tabBoxAlternative READ isTabBoxAlternative) + Q_PROPERTY(int duration READ duration) + Q_PROPERTY(int angle READ angle) + Q_PROPERTY(qreal xPosition READ xPosition) + Q_PROPERTY(qreal yPosition READ yPosition) + Q_PROPERTY(bool windowTitle READ isWindowTitle) + // TODO: electric borders public: FlipSwitchEffect(); ~FlipSwitchEffect(); @@ -50,6 +58,29 @@ public: virtual bool isActive() const; static bool supported(); + + // for properties + bool isTabBox() const { + return m_tabbox; + } + bool isTabBoxAlternative() const { + return m_tabboxAlternative; + } + int duration() const { + return m_timeLine.duration(); + } + int angle() const { + return m_angle; + } + qreal xPosition() const { + return m_xPosition; + } + qreal yPosition() const { + return m_yPosition; + } + bool isWindowTitle() const { + return m_windowTitle; + } private Q_SLOTS: void toggleActiveCurrent(); void toggleActiveAllDesktops(); diff --git a/effects/glide/glide.h b/effects/glide/glide.h index 6e0cbda6ee..3de59951d7 100644 --- a/effects/glide/glide.h +++ b/effects/glide/glide.h @@ -34,6 +34,9 @@ class GlideEffect : public Effect { Q_OBJECT + Q_PROPERTY(int duration READ configuredDuration) + Q_PROPERTY(int effect READ configuredEffect) + Q_PROPERTY(int angle READ configuredAngle) public: GlideEffect(); ~GlideEffect(); @@ -45,6 +48,17 @@ public: virtual bool isActive() const; static bool supported(); + + // for properties + int configuredDuration() const { + return duration; + } + int configuredEffect() const { + return effect; + } + int configuredAngle() const { + return angle; + } public Q_SLOTS: void slotWindowAdded(KWin::EffectWindow* c); void slotWindowClosed(KWin::EffectWindow *c); diff --git a/effects/login/login.h b/effects/login/login.h index a25da79a80..6994232d10 100644 --- a/effects/login/login.h +++ b/effects/login/login.h @@ -31,6 +31,7 @@ class LoginEffect : public Effect { Q_OBJECT + Q_PROPERTY(bool fadeToBlack READ isFadeToBlack) public: LoginEffect(); virtual void prePaintScreen(ScreenPrePaintData& data, int time); @@ -40,6 +41,10 @@ public: virtual void reconfigure(ReconfigureFlags); virtual bool isActive() const; + // for properties + bool isFadeToBlack() const { + return m_fadeToBlack; + } public Q_SLOTS: void slotWindowClosed(KWin::EffectWindow *w); diff --git a/effects/logout/logout.h b/effects/logout/logout.h index f3f69b21fb..342b4382af 100644 --- a/effects/logout/logout.h +++ b/effects/logout/logout.h @@ -36,6 +36,7 @@ class LogoutEffect : public Effect { Q_OBJECT + Q_PROPERTY(bool useBlur READ isUseBlur) public: LogoutEffect(); ~LogoutEffect(); @@ -45,6 +46,11 @@ public: virtual void postPaintScreen(); virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data); virtual bool isActive() const; + + // for properties + bool isUseBlur() const { + return useBlur; + } public Q_SLOTS: void slotWindowAdded(KWin::EffectWindow* w); void slotWindowClosed(KWin::EffectWindow *w); diff --git a/effects/lookingglass/lookingglass.h b/effects/lookingglass/lookingglass.h index 892f9a20ce..8ce9f1323d 100644 --- a/effects/lookingglass/lookingglass.h +++ b/effects/lookingglass/lookingglass.h @@ -40,6 +40,7 @@ class GLVertexBuffer; class LookingGlassEffect : public Effect { Q_OBJECT + Q_PROPERTY(int initialRadius READ initialRadius) public: LookingGlassEffect(); virtual ~LookingGlassEffect(); @@ -52,6 +53,10 @@ public: static bool supported(); + // for properties + int initialRadius() const { + return initialradius; + } public slots: void toggle(); void zoomIn(); diff --git a/effects/magiclamp/magiclamp.h b/effects/magiclamp/magiclamp.h index 6131a16293..3845e548c0 100644 --- a/effects/magiclamp/magiclamp.h +++ b/effects/magiclamp/magiclamp.h @@ -32,6 +32,7 @@ class MagicLampEffect : public Effect { Q_OBJECT + Q_PROPERTY(int animationDuration READ animationDuration) public: MagicLampEffect(); @@ -44,6 +45,10 @@ public: static bool supported(); + // for properties + int animationDuration() const { + return mAnimationDuration; + } public Q_SLOTS: void slotWindowDeleted(KWin::EffectWindow *w); void slotWindowMinimized(KWin::EffectWindow *w); diff --git a/effects/magnifier/magnifier.h b/effects/magnifier/magnifier.h index 979685373a..a838cf4c3b 100644 --- a/effects/magnifier/magnifier.h +++ b/effects/magnifier/magnifier.h @@ -34,6 +34,8 @@ class MagnifierEffect : public Effect { Q_OBJECT + Q_PROPERTY(QSize magnifierSize READ magnifierSize) + Q_PROPERTY(qreal targetZoom READ targetZoom) public: MagnifierEffect(); virtual ~MagnifierEffect(); @@ -43,6 +45,14 @@ public: virtual void postPaintScreen(); virtual bool isActive() const; static bool supported(); + + // for properties + QSize magnifierSize() const { + return magnifier_size; + } + qreal targetZoom() const { + return target_zoom; + } private slots: void zoomIn(); void zoomOut(); diff --git a/effects/mousemark/mousemark.h b/effects/mousemark/mousemark.h index ccf551d846..34372cd033 100644 --- a/effects/mousemark/mousemark.h +++ b/effects/mousemark/mousemark.h @@ -32,12 +32,22 @@ class MouseMarkEffect : public Effect { Q_OBJECT + Q_PROPERTY(int width READ configuredWidth) + Q_PROPERTY(QColor color READ configuredColor) public: MouseMarkEffect(); ~MouseMarkEffect(); virtual void reconfigure(ReconfigureFlags); virtual void paintScreen(int mask, QRegion region, ScreenPaintData& data); virtual bool isActive() const; + + // for properties + int configuredWidth() const { + return width; + } + QColor configuredColor() const { + return color; + } private slots: void clear(); void clearLast(); diff --git a/effects/presentwindows/presentwindows.h b/effects/presentwindows/presentwindows.h index 71052660b5..e891715aa4 100644 --- a/effects/presentwindows/presentwindows.h +++ b/effects/presentwindows/presentwindows.h @@ -67,6 +67,23 @@ class PresentWindowsEffect : public Effect { Q_OBJECT + Q_PROPERTY(int layoutMode READ layoutMode) + Q_PROPERTY(bool showCaptions READ isShowCaptions) + Q_PROPERTY(bool showIcons READ isShowIcons) + Q_PROPERTY(bool doNotCloseWindows READ isDoNotCloseWindows) + Q_PROPERTY(bool ignoreMinimized READ isIgnoreMinimized) + Q_PROPERTY(int accuracy READ accuracy) + Q_PROPERTY(bool fillGaps READ isFillGaps) + Q_PROPERTY(int fadeDuration READ fadeDuration) + Q_PROPERTY(bool showPanel READ isShowPanel) + Q_PROPERTY(int leftButtonWindow READ leftButtonWindow) + Q_PROPERTY(int rightButtonWindow READ rightButtonWindow) + Q_PROPERTY(int middleButtonWindow READ middleButtonWindow) + Q_PROPERTY(int leftButtonDesktop READ leftButtonDesktop) + Q_PROPERTY(int middleButtonDesktop READ middleButtonDesktop) + Q_PROPERTY(int rightButtonDesktop READ rightButtonDesktop) + Q_PROPERTY(bool dragToClose READ isDragToClose) + // TODO: electric borders private: // Structures struct WindowData { @@ -130,6 +147,55 @@ public: DesktopShowDesktopAction = 3 // Minimizes all windows }; + // for properties + int layoutMode() const { + return m_layoutMode; + } + bool isShowCaptions() const { + return m_showCaptions; + } + bool isShowIcons() const { + return m_showIcons; + } + bool isDoNotCloseWindows() const { + return m_doNotCloseWindows; + } + bool isIgnoreMinimized() const { + return m_ignoreMinimized; + } + int accuracy() const { + return m_accuracy; + } + bool isFillGaps() const { + return m_fillGaps; + } + int fadeDuration() const { + return m_fadeDuration; + } + bool isShowPanel() const { + return m_showPanel; + } + int leftButtonWindow() const { + return m_leftButtonWindow; + } + int rightButtonWindow() const { + return m_rightButtonWindow; + } + int middleButtonWindow() const { + return m_middleButtonWindow; + } + int leftButtonDesktop() const { + return m_leftButtonDesktop; + } + int middleButtonDesktop() const { + return m_middleButtonDesktop; + } + int rightButtonDesktop() const { + return m_rightButtonDesktop; + } + bool isDragToClose() const { + return m_dragToClose; + } public slots: void setActive(bool active); void toggleActive() { diff --git a/effects/resize/resize.h b/effects/resize/resize.h index d6c815c6c1..31f4ff3543 100644 --- a/effects/resize/resize.h +++ b/effects/resize/resize.h @@ -30,6 +30,8 @@ class ResizeEffect : public Effect { Q_OBJECT + Q_PROPERTY(bool textureScale READ isTextureScale) + Q_PROPERTY(bool outline READ isOutline) public: ResizeEffect(); ~ResizeEffect(); @@ -42,6 +44,13 @@ public: virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data); virtual void reconfigure(ReconfigureFlags); + bool isTextureScale() const { + return m_features & TextureScale; + } + bool isOutline() const { + return m_features & Outline; + } + public Q_SLOTS: void slotWindowStartUserMovedResized(KWin::EffectWindow *w); void slotWindowStepUserMovedResized(KWin::EffectWindow *w, const QRect &geometry); diff --git a/effects/sheet/sheet.h b/effects/sheet/sheet.h index abee09ae25..305f834828 100644 --- a/effects/sheet/sheet.h +++ b/effects/sheet/sheet.h @@ -33,6 +33,7 @@ class SheetEffect : public Effect { Q_OBJECT + Q_PROPERTY(int duration READ configuredDuration) public: SheetEffect(); virtual void reconfigure(ReconfigureFlags); @@ -44,6 +45,10 @@ public: static bool supported(); + // for properties + int configuredDuration() const { + return duration; + } public Q_SLOTS: void slotWindowAdded(KWin::EffectWindow* c); void slotWindowClosed(KWin::EffectWindow *c); diff --git a/effects/showfps/showfps.h b/effects/showfps/showfps.h index 61be61faf3..00b45c5e61 100644 --- a/effects/showfps/showfps.h +++ b/effects/showfps/showfps.h @@ -33,6 +33,14 @@ class GLTexture; class ShowFpsEffect : public Effect { + Q_OBJECT + Q_PROPERTY(qreal alpha READ configuredAlpha) + Q_PROPERTY(int x READ configuredX) + Q_PROPERTY(int y READ configuredY) + Q_PROPERTY(QRect fpsTextRect READ configuredFpsTextRect) + Q_PROPERTY(int textAlign READ configuredTextAlign) + Q_PROPERTY(QFont textFont READ configuredTextFont) + Q_PROPERTY(QColor textColor READ configuredTextColor) public: ShowFpsEffect(); virtual void reconfigure(ReconfigureFlags); @@ -41,6 +49,29 @@ public: virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data); virtual void postPaintScreen(); enum { INSIDE_GRAPH, NOWHERE, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT }; // fps text position + + // for properties + qreal configuredAlpha() const { + return alpha; + } + int configuredX() const { + return x; + } + int configuredY() const { + return y; + } + QRect configuredFpsTextRect() const { + return fpsTextRect; + } + int configuredTextAlign() const { + return textAlign; + } + QFont configuredTextFont() const { + return textFont; + } + QColor configuredTextColor() const { + return textColor; + } private: void paintGL(int fps); #ifdef KWIN_HAVE_XRENDER_COMPOSITING diff --git a/effects/slidingpopups/slidingpopups.h b/effects/slidingpopups/slidingpopups.h index dd51af9d98..ff21eebad4 100644 --- a/effects/slidingpopups/slidingpopups.h +++ b/effects/slidingpopups/slidingpopups.h @@ -33,6 +33,8 @@ class SlidingPopupsEffect : public Effect { Q_OBJECT + Q_PROPERTY(int fadeInTime READ fadeInTime) + Q_PROPERTY(int fadeOutTime READ fadeOutTime) public: SlidingPopupsEffect(); ~SlidingPopupsEffect(); @@ -44,6 +46,13 @@ public: virtual bool isActive() const; // TODO react also on virtual desktop changes + // for properties + int fadeInTime() const { + return mFadeInTime; + } + int fadeOutTime() const { + return mFadeOutTime; + } public Q_SLOTS: void slotWindowAdded(KWin::EffectWindow *c); void slotWindowClosed(KWin::EffectWindow *c); diff --git a/effects/thumbnailaside/thumbnailaside.h b/effects/thumbnailaside/thumbnailaside.h index 5bb66589cf..841f462ad5 100644 --- a/effects/thumbnailaside/thumbnailaside.h +++ b/effects/thumbnailaside/thumbnailaside.h @@ -39,10 +39,28 @@ class ThumbnailAsideEffect : public Effect { Q_OBJECT + Q_PROPERTY(int maxWidth READ configuredMaxWidth) + Q_PROPERTY(int spacing READ configuredSpacing) + Q_PROPERTY(qreal opacity READ configuredOpacity) + Q_PROPERTY(int screen READ configuredScreen) public: ThumbnailAsideEffect(); virtual void reconfigure(ReconfigureFlags); virtual void paintScreen(int mask, QRegion region, ScreenPaintData& data); + + // for properties + int configuredMaxWidth() const { + return maxwidth; + } + int configuredSpacing() const { + return spacing; + } + qreal configuredOpacity() const { + return opacity; + } + int configuredScreen() const { + return screen; + } private slots: void toggleCurrentThumbnail(); void slotWindowClosed(KWin::EffectWindow *w); diff --git a/effects/trackmouse/trackmouse.h b/effects/trackmouse/trackmouse.h index 731e760eb3..a475714a6b 100644 --- a/effects/trackmouse/trackmouse.h +++ b/effects/trackmouse/trackmouse.h @@ -34,6 +34,8 @@ class TrackMouseEffect : public Effect { Q_OBJECT + Q_PROPERTY(Qt::KeyboardModifiers modifiers READ modifiers) + Q_PROPERTY(bool mousePolling READ isMousePolling) public: TrackMouseEffect(); virtual ~TrackMouseEffect(); @@ -42,6 +44,14 @@ public: virtual void postPaintScreen(); virtual void reconfigure(ReconfigureFlags); virtual bool isActive() const; + + // for properties + Qt::KeyboardModifiers modifiers() const { + return m_modifiers; + } + bool isMousePolling() const { + return m_mousePolling; + } private slots: void toggle(); void slotMouseChanged(const QPoint& pos, const QPoint& old, diff --git a/effects/translucency/translucency.h b/effects/translucency/translucency.h index 193af57fea..35f5448019 100644 --- a/effects/translucency/translucency.h +++ b/effects/translucency/translucency.h @@ -31,12 +31,61 @@ class TranslucencyEffect : public Effect { Q_OBJECT + Q_PROPERTY(qreal decoration READ configuredDecoration) + Q_PROPERTY(qreal moveResize READ configuredMoveResize) + Q_PROPERTY(qreal dialogs READ configuredDialogs) + Q_PROPERTY(qreal inactive READ configuredInactive) + Q_PROPERTY(qreal comboboxPopups READ configuredComboboxPopups) + Q_PROPERTY(qreal menus READ configuredMenus) + Q_PROPERTY(bool individualMenuConfig READ isIndividualMenuConfig) + Q_PROPERTY(qreal dropDownMenus READ configuredDropDownMenus) + Q_PROPERTY(qreal popupMenus READ configuredPopupMenus) + Q_PROPERTY(qreal tornOffMenus READ configuredTornOffMenus) + Q_PROPERTY(int moveResizeDuration READ configuredMoveResizeDuration) + Q_PROPERTY(int activeInactiveDuration READ configuredActiveInactiveDuration) public: TranslucencyEffect(); virtual void reconfigure(ReconfigureFlags); virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time); virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data); + // for properties + qreal configuredDecoration() const { + return decoration; + } + qreal configuredMoveResize() const { + return moveresize; + } + qreal configuredDialogs() const { + return dialogs; + } + qreal configuredInactive() const { + return inactive; + } + qreal configuredComboboxPopups() const { + return comboboxpopups; + } + qreal configuredMenus() const { + return menus; + } + bool isIndividualMenuConfig() const { + return individualmenuconfig; + } + qreal configuredDropDownMenus() const { + return dropdownmenus; + } + qreal configuredPopupMenus() const { + return popupmenus; + } + qreal configuredTornOffMenus() const { + return tornoffmenus; + } + int configuredMoveResizeDuration() const { + return moveresize_timeline.duration(); + } + int configuredActiveInactiveDuration() const { + return activeinactive_timeline.duration(); + } public Q_SLOTS: void slotWindowActivated(KWin::EffectWindow* w); void slotWindowStartStopUserMovedResized(KWin::EffectWindow *w); diff --git a/effects/windowgeometry/windowgeometry.h b/effects/windowgeometry/windowgeometry.h index 789ccfc395..5362b1f762 100644 --- a/effects/windowgeometry/windowgeometry.h +++ b/effects/windowgeometry/windowgeometry.h @@ -29,6 +29,8 @@ namespace KWin class WindowGeometry : public Effect { Q_OBJECT + Q_PROPERTY(bool handlesMoves READ isHandlesMoves) + Q_PROPERTY(bool handlesResizes READ isHandlesResizes) public: WindowGeometry(); ~WindowGeometry(); @@ -40,6 +42,13 @@ public: void paintScreen(int mask, QRegion region, ScreenPaintData &data); virtual bool isActive() const; + // for properties + bool isHandlesMoves() const { + return iHandleMoves; + } + bool isHandlesResizes() const { + return iHandleResizes; + } private slots: void toggle(); void slotWindowStartUserMovedResized(KWin::EffectWindow *w); diff --git a/effects/wobblywindows/wobblywindows.h b/effects/wobblywindows/wobblywindows.h index 94c2e9abf4..69d1f879ea 100644 --- a/effects/wobblywindows/wobblywindows.h +++ b/effects/wobblywindows/wobblywindows.h @@ -25,6 +25,22 @@ struct ParameterSet; class WobblyWindowsEffect : public Effect { Q_OBJECT + Q_PROPERTY(qreal stiffness READ stiffness) + Q_PROPERTY(qreal drag READ drag) + Q_PROPERTY(qreal moveFactor READ moveFactor) + Q_PROPERTY(qreal xTesselation READ xTesselation) + Q_PROPERTY(qreal yTesselation READ yTesselation) + Q_PROPERTY(qreal minVelocity READ minVelocity) + Q_PROPERTY(qreal maxVelocity READ maxVelocity) + Q_PROPERTY(qreal stopVelocity READ stopVelocity) + Q_PROPERTY(qreal minAcceleration READ minAcceleration) + Q_PROPERTY(qreal maxAcceleration READ maxAcceleration) + Q_PROPERTY(qreal stopAcceleration READ stopAcceleration) + Q_PROPERTY(bool moveEffectEnabled READ isMoveEffectEnabled) + Q_PROPERTY(bool openEffectEnabled READ isOpenEffectEnabled) + Q_PROPERTY(bool closeEffectEnabled READ isCloseEffectEnabled) + Q_PROPERTY(bool moveWobble READ isMoveWobble) + Q_PROPERTY(bool resizeWobble READ isResizeWobble) public: WobblyWindowsEffect(); @@ -57,6 +73,55 @@ public: static bool supported(); + // for properties + qreal stiffness() const { + return m_stiffness; + } + qreal drag() const { + return m_drag; + } + qreal moveFactor() const { + return m_move_factor; + } + qreal xTesselation() const { + return m_xTesselation; + } + qreal yTesselation() const { + return m_yTesselation; + } + qreal minVelocity() const { + return m_minVelocity; + } + qreal maxVelocity() const { + return m_maxVelocity; + } + qreal stopVelocity() const { + return m_stopVelocity; + } + qreal minAcceleration() const { + return m_minAcceleration; + } + qreal maxAcceleration() const { + return m_maxAcceleration; + } + qreal stopAcceleration() const { + return m_stopAcceleration; + } + bool isMoveEffectEnabled() const { + return m_moveEffectEnabled; + } + bool isOpenEffectEnabled() const { + return m_openEffectEnabled; + } + bool isCloseEffectEnabled() const { + return m_closeEffectEnabled; + } + bool isMoveWobble() const { + return m_moveWobble; + } + bool isResizeWobble() const { + return m_resizeWobble; + } public Q_SLOTS: void slotWindowAdded(KWin::EffectWindow *w); void slotWindowClosed(KWin::EffectWindow *w); diff --git a/effects/zoom/zoom.h b/effects/zoom/zoom.h index d809b21877..8053fa9962 100644 --- a/effects/zoom/zoom.h +++ b/effects/zoom/zoom.h @@ -36,6 +36,14 @@ class ZoomEffect : public Effect { Q_OBJECT + Q_PROPERTY(qreal zoomFactor READ configuredZoomFactor) + Q_PROPERTY(int mousePointer READ configuredMousePointer) + Q_PROPERTY(int mouseTracking READ configuredMouseTracking) + Q_PROPERTY(bool enableFocusTracking READ isEnableFocusTracking) + Q_PROPERTY(bool followFocus READ isFollowFocus) + Q_PROPERTY(int focusDelay READ configuredFocusDelay) + Q_PROPERTY(qreal moveFactor READ configuredMoveFactor) + Q_PROPERTY(qreal targetZoom READ targetZoom) public: ZoomEffect(); virtual ~ZoomEffect(); @@ -44,6 +52,31 @@ public: virtual void paintScreen(int mask, QRegion region, ScreenPaintData& data); virtual void postPaintScreen(); virtual bool isActive() const; + // for properties + qreal configuredZoomFactor() const { + return zoomFactor; + } + int configuredMousePointer() const { + return mousePointer; + } + int configuredMouseTracking() const { + return mouseTracking; + } + bool isEnableFocusTracking() const { + return enableFocusTracking; + } + bool isFollowFocus() const { + return followFocus; + } + int configuredFocusDelay() const { + return focusDelay; + } + qreal configuredMoveFactor() const { + return moveFactor; + } + qreal targetZoom() const { + return target_zoom; + } private slots: inline void zoomIn() { zoomIn(-1.0); }; void zoomIn(double to); diff --git a/org.kde.KWin.xml b/org.kde.KWin.xml index 2e8eee595e..980944b72f 100644 --- a/org.kde.KWin.xml +++ b/org.kde.KWin.xml @@ -58,6 +58,10 @@ + + + + diff --git a/useractions.cpp b/useractions.cpp index 2aec51e4ce..deb6507675 100755 --- a/useractions.cpp +++ b/useractions.cpp @@ -1052,6 +1052,13 @@ QStringList Workspace::listOfEffects() const return listModules; } +QString Workspace::supportInformationForEffect(const QString& name) const +{ + if (effects) + return static_cast(effects)->supportInformation(name); + return QString(); +} + void Workspace::slotActivateAttentionWindow() { if (attention_chain.count() > 0) diff --git a/workspace.cpp b/workspace.cpp index d973a89a1e..a7fca958b6 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -2439,6 +2439,12 @@ QString Workspace::supportInformation() const foreach (const QString &effect, activeEffects()) { support.append(effect % '\n'); } + support.append("\nEffect Settings:\n"); + support.append( "----------------\n"); + foreach (const QString &effect, loadedEffects()) { + support.append(supportInformationForEffect(effect)); + support.append('\n'); + } } else { support.append("Compositing is not active\n"); } diff --git a/workspace.h b/workspace.h index 2f7fe19429..1fa0c20f98 100644 --- a/workspace.h +++ b/workspace.h @@ -392,6 +392,7 @@ public: void toggleEffect(const QString& name); void reconfigureEffect(const QString& name); void unloadEffect(const QString& name); + QString supportInformationForEffect(const QString& name) const; void updateCompositeBlocking(Client* c = NULL); QStringList loadedEffects() const;