From: Daniel W. <dm...@lu...> - 2013-02-15 01:57:24
|
diffing dir... Sun Jan 13 05:25:38 GMT 2013 Hamish Mackenzie <ham...@go...> * Fixes for Gtk3 on Win32 and basic StyleProvider support. Also switched -fgtk3 on by default (use -f-gtk3 to build with Gtk2). Ignore-this: adb6563387f40f5c9f9b3e36d40474b9 hunk ./gtk/Graphics/UI/Gtk/Abstract/Widget.chs 282 +#if GTK_MAJOR_VERSION >= 3 + widgetGetStyleContext, +#endif hunk ./gtk/Graphics/UI/Gtk/Abstract/Widget.chs 2624 - [_$_] + +#endif + +#if GTK_MAJOR_VERSION >= 3 +-- | Returns the style context associated to @widget@. +widgetGetStyleContext :: WidgetClass widget + => widget -- ^ @widget@ : a @Widget@ + -> IO StyleContext -- ^ a @StyleContext@ +widgetGetStyleContext widget = + makeNewGObject mkStyleContext $ + {# call gtk_widget_get_style_context #} + (toWidget widget) hunk ./gtk/Graphics/UI/Gtk/ActionMenuToolbar/UIManager.chs 452 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Display/Image.chs 193 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Display/Image.chs 296 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 addfile ./gtk/Graphics/UI/Gtk/General/CssProvider.chs hunk ./gtk/Graphics/UI/Gtk/General/CssProvider.chs 1 +{-# LANGUAGE CPP #-} +-- -*-haskell-*- +-- GIMP Toolkit (GTK) Styles +-- +-- Author : Axel Simon +-- +-- Created: 13 February 2003 +-- +-- Copyright (C) 1999-2005 Axel Simon +-- +-- This library is free software; you can redistribute it and/or +-- modify it under the terms of the GNU Lesser General Public +-- License as published by the Free Software Foundation; either +-- version 2.1 of the License, or (at your option) any later version. +-- +-- This library is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-- Lesser General Public License for more details. +-- +-- | +-- Maintainer : gtk...@li... +-- Stability : provisional +-- Portability : portable (depends on GHC) +-- +-- CSS-like styling for widgets. +-- +module Graphics.UI.Gtk.General.CssProvider ( +-- * Description +-- +-- | @CssProvider@ is an object implementing the @StyleProvider@ interface. +-- It is able to parse CSS-like input in order to style widgets. +-- + +#if GTK_MAJOR_VERSION >= 3 +-- * Types + CssProvider, + CssProviderClass, + castToCssProvider, gTypeCssProvider, + toCssProvider, + +-- * Enums + CssProviderError(..), + +-- * Constructors + cssProviderNew, + +-- * Methods + cssProviderGetDefault, + cssProviderGetNamed, + cssProviderLoadFromData, + cssProviderLoadFromString, + cssProviderLoadFromPath, +#if GTK_CHECK_VERSION(3,2,0) + cssProviderToString, +#endif +#endif + + ) where + +{# context prefix ="gtk" #} + +import Control.Monad (liftM) + +import System.Glib.FFI +import System.Glib.UTFString +{#import Graphics.UI.Gtk.Types#} +import System.Glib.GError (GError(..), GErrorClass(..), GErrorDomain, + propagateGError) + +#if GTK_MAJOR_VERSION >= 3 +{#enum CssProviderError {underscoreToCase} deriving (Bounded,Eq,Show)#} + +-------------------- +-- Interfaces + +instance StyleProviderClass CssProvider + +-------------------- +-- Constructors + +-- | Returns a newly created CssProvider +cssProviderNew :: IO CssProvider -- ^ A new CssProvider +cssProviderNew = + wrapNewGObject mkCssProvider {# call gtk_css_provider_new #} + +-------------------- +-- Methods + +-- | Returns the provider containing the style settings used as a fallback for all widgets. +cssProviderGetDefault :: IO CssProvider -- ^ The provider used for fallback styling +cssProviderGetDefault = + makeNewGObject mkCssProvider {# call gtk_css_provider_get_default #} + +-- | Loads a theme from the usual theme paths +cssProviderGetNamed :: String -- ^ @name@ : A theme name + -> Maybe String -- ^ @variant@ to load, for example, "dark" + -> IO (Maybe CssProvider) -- ^ a @CssProvider@ with the theme loaded +cssProviderGetNamed name variant = + maybeNull (makeNewGObject mkCssProvider) $ + withUTFString name $ \namePtr -> + maybeWith withUTFString variant $ \variantPtr -> + {# call gtk_css_provider_get_named #} namePtr variantPtr + +-- | Loads @_data@ into @cssProvider@, making it clear any previously loaded information. +cssProviderLoadFromData :: CssProviderClass cssProvider + => cssProvider -- | ^ @cssProvider@ : a @CssProvider@ + -> Ptr CChar -- | ^ @_data@ : CSS data loaded in memory. [array length=length][element-type guint8] + -> Int -- | ^ @length@ : the length of @_data@ in bytes, or -1 for NUL terminated + -- strings. If @length@ is not -1, the code will assume it is + -- not NUL terminated and will potentially do a copy. + -> IO () +cssProviderLoadFromData cssProvider _data length = + propagateGError $ \errPtrPtr -> + {# call gtk_css_provider_load_from_data #} + (toCssProvider cssProvider) + _data + (fromIntegral length) + errPtrPtr >> return () + +-- | Loads @css@ into @cssProvider@, making it clear any previously loaded information. +cssProviderLoadFromString :: CssProviderClass cssProvider + => cssProvider -- | ^ @cssProvider@ : a @CssProvider@ + -> String -- | ^ @css@ : CSS data loaded in memory. + -> IO () +cssProviderLoadFromString cssProvider css = + withUTFStringLen css $ \(cssPtr, len) -> + cssProviderLoadFromData cssProvider cssPtr len + +-- |Loads the data contained in @path@ into @cssProvider@, making it clear any previously +-- loaded information +cssProviderLoadFromPath :: CssProviderClass cssProvider + => cssProvider -- | ^ @cssProvider@ a @CssProvider@ + -> FilePath -- | ^ the path of a filename to load + -> IO () +cssProviderLoadFromPath cssProvider path = + propagateGError $ \errPtrPtr -> + withUTFString path $ \pathPtr -> + {# call gtk_css_provider_load_from_path #} + (toCssProvider cssProvider) + pathPtr + errPtrPtr >> return () + +#if GTK_CHECK_VERSION(3,2,0) +-- | Convertes the @provider@ into a string representation in CSS format. +-- +-- Using @cssProviderLoadFromString@ with the return value from this function +-- on a new provider created with @cssProviderNew@ will basically create a +-- duplicate of this @provider@. +cssProviderToString :: CssProviderClass cssProvider + => cssProvider -- | ^ @provider@ a @CssProvider@ + -> IO String +cssProviderToString provider = + {# call gtk_css_provider_to_string #} + (toCssProvider provider) >>= peekUTFString +#endif + +#endif hunk ./gtk/Graphics/UI/Gtk/General/General.chs 144 + initialise hunk ./gtk/Graphics/UI/Gtk/General/General.chs 168 +foreign import ccall "hsgthread.h gtk2hs_initialise" + initialise :: IO () + hunk ./gtk/Graphics/UI/Gtk/General/IconFactory.chs 322 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) [_$_] +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/General/IconFactory.chs 386 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) [_$_] +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/General/Structs.hsc 609 -#elif defined(HAVE_QUARTZ_GTK) +#elif defined(HAVE_QUARTZ_GTK) || (defined(WIN32) && GTK_MAJOR_VERSION >= 3) hunk ./gtk/Graphics/UI/Gtk/General/Structs.hsc 645 -#if defined(WIN32) -foreign import ccall unsafe "gdk_win32_drawable_get_handle" - gdk_win32_drawable_get_handle :: (Ptr Drawable) -> IO (Ptr a) -#elif !defined(HAVE_QUARTZ_GTK) +#if !defined(HAVE_QUARTZ_GTK) && !defined(WIN32) hunk ./gtk/Graphics/UI/Gtk/General/Structs.hsc 664 -#if defined(WIN32) +#if defined(WIN32) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/General/Structs.hsc 672 -#elif !defined(HAVE_QUARTZ_GTK) +#elif !defined(HAVE_QUARTZ_GTK) && !defined(WIN32) addfile ./gtk/Graphics/UI/Gtk/General/StyleContext.chs hunk ./gtk/Graphics/UI/Gtk/General/StyleContext.chs 1 +{-# LANGUAGE CPP #-} +-- -*-haskell-*- +-- GIMP Toolkit (GTK) Styles +-- +-- Author : Axel Simon +-- +-- Created: 13 February 2003 +-- +-- Copyright (C) 1999-2005 Axel Simon +-- +-- This library is free software; you can redistribute it and/or +-- modify it under the terms of the GNU Lesser General Public +-- License as published by the Free Software Foundation; either +-- version 2.1 of the License, or (at your option) any later version. +-- +-- This library is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-- Lesser General Public License for more details. +-- +-- | +-- Maintainer : gtk...@li... +-- Stability : provisional +-- Portability : portable (depends on GHC) +-- +-- Rendering UI elements +-- +module Graphics.UI.Gtk.General.StyleContext ( +-- * Description +-- +-- | GtkStyleContext is an object that stores styling information +-- affecting a widget defined by @WidgetPath@. +-- +-- In order to construct the final style information, @StyleContext@ +-- queries information from all attached @StyleProviders@. Style +-- providers can be either attached explicitly to the context through +-- @styleContextAddProvider@, or to the screen through @styleContextAddProviderForScreen. +-- The resulting style is a combination of all providers' information +-- in priority order. +-- +-- For GTK+ widgets, any @StyleContext@ returned by widgetGetStyleContext +-- will already have a @WidgetPath@, a @Screen@ and RTL/LTR information set. +-- The style context will be also updated automatically if any of these +-- settings change on the widget. +-- +-- If you are using the theming layer standalone, you will need to set a +-- widget path and a screen yourself to the created style context through +-- @styleContextSetPath@ and @styleContextSetScreen@, as well as updating +-- the context yourself using @styleContextInvalidate@ whenever any of the +-- conditions change, such as a change in the "gtk-theme-name" setting or +-- a hierarchy change in the rendered widget. +-- + +#if GTK_MAJOR_VERSION >= 3 +-- * Types + StyleContext, + StyleContextClass, + castToStyleContext, gTypeStyleContext, + toStyleContext, + +-- * Constructors + styleContextNew, + +-- * Methods + styleContextAddProvider, + styleContextAddProviderForScreen, +#endif + + ) where + +{# context prefix ="gtk" #} + +import Control.Monad (liftM) + +import System.Glib.FFI +import System.Glib.UTFString +{#import Graphics.UI.Gtk.Types#} +import System.Glib.GError (GError(..), GErrorClass(..), GErrorDomain, + propagateGError) + +#if GTK_MAJOR_VERSION >= 3 +-- | Creates a standalone @StyleContext@, this style context won't be attached +-- to any widget, so you may want to call @styleContextSetPath@ yourself. +-- +-- Note : This function is only useful when using the theming layer separated +-- from GTK+, if you are using @StyleContext@ to theme @Widgets@, use +-- @widgetGetStyleContext@ in order to get a style context ready to theme +-- the widget. +styleContextNew :: IO StyleContext -- ^ A newly created StyleContext +styleContextNew = + wrapNewGObject mkStyleContext {# call gtk_style_context_new #} + +-- | Adds a style provider to @context@, to be used in style construction. +-- Note that a style provider added by this function only affects the +-- style of the widget to which @context@ belongs. If you want to affect +-- the style of all widgets, use @styleContextAddProviderForScreen@. +-- +-- Note : If both priorities are the same, A @StyleProvider@ added through +-- this function takes precedence over another added through +-- @styleContextAddProviderForScreen. +styleContextAddProvider :: (StyleContextClass context, StyleProviderClass provider) + => context -- ^ @context@ a @StyleContext@ + -> provider -- ^ @provider@ a @StyleProvider@ + -> Int -- ^ @priority@ : the priority of the style provider. + -- The lower it is, the earlier it will be used in the + -- style construction. Typically this will be in the + -- range between GTK_STYLE_PROVIDER_PRIORITY_FALLBACK + -- and GTK_STYLE_PROVIDER_PRIORITY_USER + -> IO () +styleContextAddProvider context provider priority = + {# call gtk_style_context_add_provider #} + (toStyleContext context) + (toStyleProvider provider) + (fromIntegral priority) + +-- | Adds a global style provider to @screen@, which will be used in style +-- construction for all @StyleContexts@ under @screen@. +-- +-- GTK+ uses this to make styling information from @Settings@ available. +-- +-- Note : If both priorities are the same, A @StyleProvider@ added through +-- @styleContextAddProvider@ takes precedence over another added through +-- this function. +styleContextAddProviderForScreen :: (ScreenClass screen, StyleProviderClass provider) + => screen -- ^ @screen@ a @Screen@ + -> provider -- ^ @provider@ a @StyleProvider@ + -> Int -- ^ @priority@ : the priority of the style provider. + -- The lower it is, the earlier it will be used in the + -- style construction. Typically this will be in the + -- range between GTK_STYLE_PROVIDER_PRIORITY_FALLBACK + -- and GTK_STYLE_PROVIDER_PRIORITY_USER + -> IO () +styleContextAddProviderForScreen screen provider priority = + {# call gtk_style_context_add_provider_for_screen #} + (toScreen screen) + (toStyleProvider provider) + (fromIntegral priority) + +#endif addfile ./gtk/Graphics/UI/Gtk/General/StyleProvider.chs hunk ./gtk/Graphics/UI/Gtk/General/StyleProvider.chs 1 +{-# LANGUAGE CPP #-} +-- -*-haskell-*- +-- GIMP Toolkit (GTK) Styles +-- +-- Author : Axel Simon +-- +-- Created: 13 February 2003 +-- +-- Copyright (C) 1999-2005 Axel Simon +-- +-- This library is free software; you can redistribute it and/or +-- modify it under the terms of the GNU Lesser General Public +-- License as published by the Free Software Foundation; either +-- version 2.1 of the License, or (at your option) any later version. +-- +-- This library is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-- Lesser General Public License for more details. +-- +-- | +-- Maintainer : gtk...@li... +-- Stability : provisional +-- Portability : portable (depends on GHC) +-- +-- Interface to provide style information to @StyleContext@ +-- +module Graphics.UI.Gtk.General.StyleProvider ( +-- * Description +-- +-- | @StyleProvider@ is an interface used to provide style information +-- to a @StyleContext@. See @styleContextAddProvider@ and +-- @styleContextAddProviderForScreen@. +-- +-- @StyleProvider@ is implemented by @CssProvider@ and @Settings@. +#if GTK_MAJOR_VERSION >= 3 +-- * Typess + StyleProvider, + StyleProviderClass, + castToStyleProvider, gTypeStyleProvider, + toStyleProvider, +#endif + + ) where + +{# context prefix ="gtk" #} + +import Control.Monad (liftM) + +import System.Glib.FFI +import System.Glib.UTFString +{#import Graphics.UI.Gtk.Types#} +import System.Glib.GError (GError(..), GErrorClass(..), GErrorDomain, + propagateGError) + +#if GTK_MAJOR_VERSION >= 3 +#endif hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 28 +#define DEFINED_LPTYPELIB +#define DEFINDE_LPTYPEINFO +#define DEFINED_LPTYPECOMP +#define DEFINE_LPCREATETYPEINFO +#define DEFINED_LPDISPATCH + hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 40 +#include <stdlib.h> +#include <fcntl.h> hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.c 58 +/* Initialize the default _fmode on WIN32. */ +void gtk2hs_initialise (void) { +#if defined( WIN32 ) + _fmode = _O_BINARY; +#endif +} + hunk ./gtk/Graphics/UI/Gtk/General/hsgthread.h 6 +/* Initialize the default _fmode on WIN32 systems. */ +void gtk2hs_initialise (void); + hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 377 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 419 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 438 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 455 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 484 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 503 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 519 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 731 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 832 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 852 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Selectors/FileChooser.chs 867 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/Graphics/UI/Gtk/Windows/Window.chs 1491 -#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) +#if defined (WIN32) && GTK_CHECK_VERSION(2,6,0) && GTK_MAJOR_VERSION < 3 hunk ./gtk/gtk.cabal 132 - Default: False + Default: True hunk ./gtk/gtk.cabal 216 + Graphics.UI.Gtk.General.CssProvider hunk ./gtk/gtk.cabal 226 + Graphics.UI.Gtk.General.StyleContext + Graphics.UI.Gtk.General.StyleProvider hunk ./gtk/hierarchy3.list 186 - GtkBuilder [_$_] + GtkBuilder + GtkStyleContext + GtkStyleProvider + GtkCssProvider |