You've already forked linux-packaging-mono
acceptance-tests
data
debian
docs
external
ikvm-native
libgc
llvm
m4
man
mcs
build
class
Accessibility
Commons.Xml.Relaxng
Cscompmgd
CustomMarshalers
Facades
I18N
IBM.Data.DB2
ICSharpCode.SharpZipLib
Microsoft.Build
Microsoft.Build.Engine
Microsoft.Build.Framework
Microsoft.Build.Tasks
Microsoft.Build.Utilities
Microsoft.CSharp
Microsoft.NuGet.Build.Tasks
Microsoft.VisualC
Microsoft.Web.Infrastructure
MicrosoftAjaxLibrary
Mono.Btls.Interface
Mono.C5
Mono.CSharp
Mono.Cairo
Mono.Cecil
Mono.Cecil.Mdb
Mono.CodeContracts
Mono.CompilerServices.SymbolWriter
Mono.Data.Sqlite
Mono.Data.Tds
Mono.Debugger.Soft
Mono.Http
Mono.Management
Mono.Messaging
Mono.Messaging.RabbitMQ
Mono.Options
Mono.Parallel
Mono.Posix
Mono.Profiler.Log
Mono.Runtime.Tests
Mono.Security
Mono.Security.Win32
Mono.Simd
Mono.Tasklets
Mono.WebBrowser
Mono.XBuild.Tasks
Novell.Directory.Ldap
PEAPI
RabbitMQ.Client
SMDiagnostics
System
System.ComponentModel.Composition.4.5
System.ComponentModel.DataAnnotations
System.Configuration
System.Configuration.Install
System.Core
System.Data
System.Data.DataSetExtensions
System.Data.Entity
System.Data.Linq
System.Data.OracleClient
System.Data.Services
System.Data.Services.Client
System.Deployment
System.Design
System.DirectoryServices
System.DirectoryServices.Protocols
System.Drawing
System.Drawing.Design
System.Dynamic
System.EnterpriseServices
System.IO.Compression
System.IO.Compression.FileSystem
System.IdentityModel
System.IdentityModel.Selectors
System.Json
System.Json.Microsoft
System.Management
System.Messaging
System.Net
System.Net.Http
System.Net.Http.Formatting
System.Net.Http.WebRequest
System.Net.Http.WinHttpHandler
System.Numerics
System.Numerics.Vectors
System.Reactive.Core
System.Reactive.Debugger
System.Reactive.Experimental
System.Reactive.Interfaces
System.Reactive.Linq
System.Reactive.Observable.Aliases
System.Reactive.PlatformServices
System.Reactive.Providers
System.Reactive.Runtime.Remoting
System.Reactive.Windows.Forms
System.Reactive.Windows.Threading
System.Reflection.Context
System.Runtime.Caching
System.Runtime.CompilerServices.Unsafe
System.Runtime.DurableInstancing
System.Runtime.Remoting
System.Runtime.Serialization
System.Runtime.Serialization.Formatters.Soap
System.Security
System.ServiceModel
System.ServiceModel.Activation
System.ServiceModel.Discovery
System.ServiceModel.Internals
System.ServiceModel.Routing
System.ServiceModel.Web
System.ServiceProcess
System.Threading.Tasks.Dataflow
System.Transactions
System.Web
System.Web.Abstractions
System.Web.ApplicationServices
System.Web.DynamicData
System.Web.Extensions
System.Web.Extensions.Design
System.Web.Http
System.Web.Http.SelfHost
System.Web.Http.WebHost
System.Web.Mobile
System.Web.Mvc3
System.Web.Razor
System.Web.RegularExpressions
System.Web.Routing
System.Web.Services
System.Web.WebPages
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Windows
System.Windows.Forms
Assembly
Documentation
System.Resources
System.Windows.Forms
System.Windows.Forms.CarbonInternal
System.Windows.Forms.Design
System.Windows.Forms.Internal
System.Windows.Forms.Layout
System.Windows.Forms.PropertyGridInternal
System.Windows.Forms.RTF
System.Windows.Forms.Theming
System.Windows.Forms.VisualStyles
BackgroundType.cs
BooleanProperty.cs
BorderType.cs
CheckBoxState.cs
ColorProperty.cs
ComboBoxState.cs
ContentAlignment.cs
EdgeEffects.cs
EdgeStyle.cs
Edges.cs
EnumProperty.cs
FilenameProperty.cs
FillType.cs
FontProperty.cs
GlyphFontSizingType.cs
GlyphType.cs
GroupBoxState.cs
GtkPlus.cs
HitTestCode.cs
HitTestOptions.cs
HorizontalAlign.cs
IVisualStyles.cs
IconEffect.cs
ImageOrientation.cs
ImageSelectType.cs
IntegerProperty.cs
MarginProperty.cs
OffsetType.cs
PointProperty.cs
PushButtonState.cs
RadioButtonState.cs
ScrollBarArrowButtonState.cs
ScrollBarSizeBoxState.cs
ScrollBarState.cs
SizingType.cs
StringProperty.cs
TabItemState.cs
TextBoxState.cs
TextMetrics.cs
TextMetricsCharacterSet.cs
TextMetricsPitchAndFamilyValues.cs
TextShadowType.cs
ThemeSizeType.cs
ToolBarState.cs
TrackBarThumbState.cs
TrueSizeScalingType.cs
UXTheme.cs
VerticalAlignment.cs
VisualStyleElement.cs
VisualStyleInformation.cs
VisualStyleRenderer.cs
VisualStyleState.cs
VisualStylesEngine.cs
VisualStylesGtkPlus.cs
VisualStylesNative.cs
System.Windows.Forms.WebBrowserDialogs
Test
resources
Makefile
README
System.Windows.Forms.dll.resources
System.Windows.Forms.dll.sources
System.Windows.Forms_test.dll.sources
System.Windows.Forms.DataVisualization
System.Workflow.Activities
System.Workflow.ComponentModel
System.Workflow.Runtime
System.XML
System.Xaml
System.Xml.Linq
System.Xml.Serialization
SystemWebTestShim
WebMatrix.Data
WindowsBase
aot-compiler
corlib
dlr
doc
legacy
lib
monodoc
notes
reference-assemblies
referencesource
test-helpers
LICENSE
Makefile
Open.snk
README
ecma.pub
mono.pub
mono.snk
msfinal.pub
reactive.pub
silverlight.pub
winfx.pub
winfx3.pub
docs
errors
ilasm
jay
mcs
packages
tests
tools
AUTHORS
COPYING
INSTALL.txt
Makefile
MonoIcon.png
README
ScalableMonoIcon.svg
mkinstalldirs
mk
mono
msvc
netcore
po
runtime
samples
scripts
support
tools
COPYING.LIB
LICENSE
Makefile.am
Makefile.in
NEWS
README.md
acinclude.m4
aclocal.m4
autogen.sh
code_of_conduct.md
compile
config.guess
config.h.in
config.rpath
config.sub
configure.REMOVED.git-id
configure.ac.REMOVED.git-id
depcomp
install-sh
ltmain.sh.REMOVED.git-id
missing
mkinstalldirs
mono-uninstalled.pc.in
test-driver
winconfig.h
1175 lines
36 KiB
C#
1175 lines
36 KiB
C#
![]() |
//
|
||
|
// VisualStylesGtkPlus.cs: IVisualStyles that uses GtkPlus.
|
||
|
//
|
||
|
// Permission is hereby granted, free of charge, to any person obtaining
|
||
|
// a copy of this software and associated documentation files (the
|
||
|
// "Software"), to deal in the Software without restriction, including
|
||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||
|
// distribute, sublicense, and/or sell copies of the Software, and to
|
||
|
// permit persons to whom the Software is furnished to do so, subject to
|
||
|
// the following conditions:
|
||
|
//
|
||
|
// The above copyright notice and this permission notice shall be
|
||
|
// included in all copies or substantial portions of the Software.
|
||
|
//
|
||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||
|
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||
|
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
|
//
|
||
|
// Copyright (c) 2008 George Giolfan
|
||
|
//
|
||
|
// Authors:
|
||
|
// George Giolfan (georgegiolfan@yahoo.com)
|
||
|
//
|
||
|
|
||
|
using System.Drawing;
|
||
|
using System.Collections.Generic;
|
||
|
namespace System.Windows.Forms.VisualStyles
|
||
|
{
|
||
|
class VisualStylesGtkPlus : IVisualStyles
|
||
|
{
|
||
|
public static bool Initialize ()
|
||
|
{
|
||
|
return GtkPlus.Initialize ();
|
||
|
}
|
||
|
static GtkPlus GtkPlus {
|
||
|
get {
|
||
|
return GtkPlus.Instance;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
enum S {
|
||
|
S_OK,
|
||
|
S_FALSE
|
||
|
}
|
||
|
enum ThemeHandle {
|
||
|
BUTTON = 1,
|
||
|
COMBOBOX,
|
||
|
EDIT,
|
||
|
HEADER,
|
||
|
PROGRESS,
|
||
|
REBAR,
|
||
|
SCROLLBAR,
|
||
|
SPIN,
|
||
|
STATUS,
|
||
|
TAB,
|
||
|
TOOLBAR,
|
||
|
TRACKBAR,
|
||
|
TREEVIEW
|
||
|
}
|
||
|
|
||
|
#region UxTheme
|
||
|
public int UxThemeCloseThemeData (IntPtr hTheme)
|
||
|
{
|
||
|
#if DEBUG
|
||
|
return (int)((Enum.IsDefined (typeof (ThemeHandle), (int)hTheme)) ? S.S_OK : S.S_FALSE);
|
||
|
#else
|
||
|
return (int)S.S_OK;
|
||
|
#endif
|
||
|
}
|
||
|
public int UxThemeDrawThemeParentBackground (IDeviceContext dc, Rectangle bounds, Control childControl)
|
||
|
{
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeDrawThemeBackground (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle bounds, Rectangle clipRectangle)
|
||
|
{
|
||
|
return (int)(DrawBackground ((ThemeHandle)(int)hTheme, dc, iPartId, iStateId, bounds, clipRectangle, Rectangle.Empty) ? S.S_OK : S.S_FALSE);
|
||
|
}
|
||
|
public int UxThemeDrawThemeBackground (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle bounds)
|
||
|
{
|
||
|
return UxThemeDrawThemeBackground (hTheme, dc, iPartId, iStateId, bounds, bounds);
|
||
|
}
|
||
|
bool DrawBackground (ThemeHandle themeHandle, IDeviceContext dc, int part, int state, Rectangle bounds, Rectangle clipRectangle, Rectangle excludedArea) {
|
||
|
GtkPlusState gtk_plus_state;
|
||
|
GtkPlusToggleButtonValue gtk_plus_toggle_button_value;
|
||
|
switch (themeHandle) {
|
||
|
#region BUTTON
|
||
|
case ThemeHandle.BUTTON:
|
||
|
switch ((BUTTONPARTS)part) {
|
||
|
#region BP_PUSHBUTTON
|
||
|
case BUTTONPARTS.BP_PUSHBUTTON:
|
||
|
switch ((PUSHBUTTONSTATES)state) {
|
||
|
case PUSHBUTTONSTATES.PBS_NORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case PUSHBUTTONSTATES.PBS_HOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
break;
|
||
|
case PUSHBUTTONSTATES.PBS_PRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
break;
|
||
|
case PUSHBUTTONSTATES.PBS_DISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
break;
|
||
|
case PUSHBUTTONSTATES.PBS_DEFAULTED:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
default:
|
||
|
return false;
|
||
|
}
|
||
|
GtkPlus.ButtonPaint (dc, bounds, clipRectangle, (PUSHBUTTONSTATES)state == PUSHBUTTONSTATES.PBS_DEFAULTED, gtk_plus_state);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region BP_RADIOBUTTON
|
||
|
case BUTTONPARTS.BP_RADIOBUTTON:
|
||
|
switch ((RADIOBUTTONSTATES)state) {
|
||
|
case RADIOBUTTONSTATES.RBS_UNCHECKEDNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case RADIOBUTTONSTATES.RBS_UNCHECKEDPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case RADIOBUTTONSTATES.RBS_UNCHECKEDHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case RADIOBUTTONSTATES.RBS_UNCHECKEDDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case RADIOBUTTONSTATES.RBS_CHECKEDNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
case RADIOBUTTONSTATES.RBS_CHECKEDPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
case RADIOBUTTONSTATES.RBS_CHECKEDHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
case RADIOBUTTONSTATES.RBS_CHECKEDDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
default:
|
||
|
return false;
|
||
|
}
|
||
|
GtkPlus.RadioButtonPaint (dc, bounds, clipRectangle, gtk_plus_state, gtk_plus_toggle_button_value);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region BP_CHECKBOX
|
||
|
case BUTTONPARTS.BP_CHECKBOX:
|
||
|
switch ((CHECKBOXSTATES)state) {
|
||
|
case CHECKBOXSTATES.CBS_UNCHECKEDNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_UNCHECKEDPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_UNCHECKEDHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_UNCHECKEDDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Unchecked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_CHECKEDNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_CHECKEDPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_CHECKEDHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_CHECKEDDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Checked;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_MIXEDNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Mixed;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_MIXEDPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Mixed;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_MIXEDHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Mixed;
|
||
|
break;
|
||
|
case CHECKBOXSTATES.CBS_MIXEDDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
gtk_plus_toggle_button_value = GtkPlusToggleButtonValue.Mixed;
|
||
|
break;
|
||
|
default:
|
||
|
return false;
|
||
|
}
|
||
|
GtkPlus.CheckBoxPaint (dc, bounds, clipRectangle, gtk_plus_state, gtk_plus_toggle_button_value);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region BP_GROUPBOX
|
||
|
case BUTTONPARTS.BP_GROUPBOX:
|
||
|
switch ((GROUPBOXSTATES)state) {
|
||
|
case GROUPBOXSTATES.GBS_NORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case GROUPBOXSTATES.GBS_DISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
break;
|
||
|
default:
|
||
|
return false;
|
||
|
}
|
||
|
GtkPlus.GroupBoxPaint (dc, bounds, excludedArea, gtk_plus_state);
|
||
|
return true;
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region COMBOBOX
|
||
|
case ThemeHandle.COMBOBOX:
|
||
|
switch ((COMBOBOXPARTS)part) {
|
||
|
#region CP_DROPDOWNBUTTON
|
||
|
case COMBOBOXPARTS.CP_DROPDOWNBUTTON:
|
||
|
switch ((COMBOBOXSTYLESTATES)state) {
|
||
|
case COMBOBOXSTYLESTATES.CBXS_NORMAL: gtk_plus_state = GtkPlusState.Normal; break;
|
||
|
case COMBOBOXSTYLESTATES.CBXS_HOT: gtk_plus_state = GtkPlusState.Hot; break;
|
||
|
case COMBOBOXSTYLESTATES.CBXS_PRESSED: gtk_plus_state = GtkPlusState.Pressed; break;
|
||
|
case COMBOBOXSTYLESTATES.CBXS_DISABLED: gtk_plus_state = GtkPlusState.Disabled; break;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.ComboBoxPaintDropDownButton (dc, bounds, clipRectangle, gtk_plus_state);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region CP_BORDER
|
||
|
case COMBOBOXPARTS.CP_BORDER:
|
||
|
switch ((BORDERSTATES)state) {
|
||
|
case BORDERSTATES.CBB_NORMAL:
|
||
|
case BORDERSTATES.CBB_HOT:
|
||
|
case BORDERSTATES.CBB_FOCUSED:
|
||
|
case BORDERSTATES.CBB_DISABLED:
|
||
|
GtkPlus.ComboBoxPaintBorder (dc, bounds, clipRectangle);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region EDIT
|
||
|
case ThemeHandle.EDIT:
|
||
|
switch ((EDITPARTS)part) {
|
||
|
#region EP_EDITTEXT
|
||
|
case EDITPARTS.EP_EDITTEXT:
|
||
|
switch ((EDITTEXTSTATES)state) {
|
||
|
case EDITTEXTSTATES.ETS_NORMAL:
|
||
|
case EDITTEXTSTATES.ETS_ASSIST:
|
||
|
case EDITTEXTSTATES.ETS_READONLY:
|
||
|
case EDITTEXTSTATES.ETS_HOT:
|
||
|
case EDITTEXTSTATES.ETS_SELECTED:
|
||
|
case EDITTEXTSTATES.ETS_FOCUSED:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case EDITTEXTSTATES.ETS_DISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.TextBoxPaint (dc, bounds, excludedArea, gtk_plus_state);
|
||
|
return true;
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region HEADER
|
||
|
case ThemeHandle.HEADER:
|
||
|
switch ((HEADERPARTS)part) {
|
||
|
#region HP_HEADERITEM
|
||
|
case HEADERPARTS.HP_HEADERITEM:
|
||
|
switch ((HEADERITEMSTATES)state) {
|
||
|
case HEADERITEMSTATES.HIS_NORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case HEADERITEMSTATES.HIS_HOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
break;
|
||
|
case HEADERITEMSTATES.HIS_PRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.HeaderPaint (dc, bounds, clipRectangle, gtk_plus_state);
|
||
|
return true;
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region PROGRESS
|
||
|
case ThemeHandle.PROGRESS:
|
||
|
switch ((PROGRESSPARTS)part) {
|
||
|
case PROGRESSPARTS.PP_BAR:
|
||
|
case PROGRESSPARTS.PP_BARVERT:
|
||
|
GtkPlus.ProgressBarPaintBar (dc, bounds, clipRectangle);
|
||
|
return true;
|
||
|
case PROGRESSPARTS.PP_CHUNK:
|
||
|
case PROGRESSPARTS.PP_CHUNKVERT:
|
||
|
GtkPlus.ProgressBarPaintChunk (dc, bounds, clipRectangle);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region REBAR
|
||
|
case ThemeHandle.REBAR:
|
||
|
switch ((REBARPARTS)part) {
|
||
|
case REBARPARTS.RP_BAND:
|
||
|
GtkPlus.ToolBarPaint (dc, bounds, clipRectangle);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region SCROLLBAR
|
||
|
case ThemeHandle.SCROLLBAR:
|
||
|
switch ((SCROLLBARPARTS)part) {
|
||
|
#region SBP_ARROWBTN
|
||
|
case SCROLLBARPARTS.SBP_ARROWBTN:
|
||
|
bool horizontal;
|
||
|
bool up_or_left;
|
||
|
switch ((ARROWBTNSTATES)state) {
|
||
|
case ARROWBTNSTATES.ABS_UPNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
horizontal = false;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_UPHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
horizontal = false;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_UPPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
horizontal = false;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_UPDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
horizontal = false;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_DOWNNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
horizontal = false;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_DOWNHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
horizontal = false;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_DOWNPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
horizontal = false;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_DOWNDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
horizontal = false;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_LEFTNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
horizontal = true;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_LEFTHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
horizontal = true;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_LEFTPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
horizontal = true;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_LEFTDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
horizontal = true;
|
||
|
up_or_left = true;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_RIGHTNORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
horizontal = true;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_RIGHTHOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
horizontal = true;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_RIGHTPRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
horizontal = true;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
case ARROWBTNSTATES.ABS_RIGHTDISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
horizontal = true;
|
||
|
up_or_left = false;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.ScrollBarPaintArrowButton (dc, bounds, clipRectangle, gtk_plus_state, horizontal, up_or_left);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region SBP_THUMBBTNHORZ, SBP_THUMBBTNVERT
|
||
|
case SCROLLBARPARTS.SBP_THUMBBTNHORZ:
|
||
|
case SCROLLBARPARTS.SBP_THUMBBTNVERT:
|
||
|
if (!GetGtkPlusState ((SCROLLBARSTYLESTATES)state, out gtk_plus_state))
|
||
|
return false;
|
||
|
GtkPlus.ScrollBarPaintThumbButton (
|
||
|
dc,
|
||
|
bounds,
|
||
|
clipRectangle,
|
||
|
gtk_plus_state,
|
||
|
(SCROLLBARPARTS)part == SCROLLBARPARTS.SBP_THUMBBTNHORZ);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region SBP_LOWERTRACKHORZ, SBP_UPPERTRACKHORZ, SBP_LOWERTRACKVERT, SBP_UPPERTRACKVERT
|
||
|
case SCROLLBARPARTS.SBP_LOWERTRACKHORZ:
|
||
|
case SCROLLBARPARTS.SBP_UPPERTRACKHORZ:
|
||
|
case SCROLLBARPARTS.SBP_LOWERTRACKVERT:
|
||
|
case SCROLLBARPARTS.SBP_UPPERTRACKVERT:
|
||
|
if (!GetGtkPlusState ((SCROLLBARSTYLESTATES)state, out gtk_plus_state))
|
||
|
return false;
|
||
|
GtkPlus.ScrollBarPaintTrack (
|
||
|
dc,
|
||
|
bounds,
|
||
|
clipRectangle,
|
||
|
gtk_plus_state,
|
||
|
(SCROLLBARPARTS)part == SCROLLBARPARTS.SBP_LOWERTRACKHORZ ||
|
||
|
(SCROLLBARPARTS)part == SCROLLBARPARTS.SBP_UPPERTRACKHORZ,
|
||
|
(SCROLLBARPARTS)part == SCROLLBARPARTS.SBP_UPPERTRACKHORZ ||
|
||
|
(SCROLLBARPARTS)part == SCROLLBARPARTS.SBP_UPPERTRACKVERT);
|
||
|
return true;
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region SPIN
|
||
|
case ThemeHandle.SPIN:
|
||
|
bool up;
|
||
|
switch ((SPINPARTS)part) {
|
||
|
#region SPNP_UP
|
||
|
case SPINPARTS.SPNP_UP:
|
||
|
up = true;
|
||
|
switch ((UPSTATES)state) {
|
||
|
case UPSTATES.UPS_NORMAL: gtk_plus_state = GtkPlusState.Normal; break;
|
||
|
case UPSTATES.UPS_HOT: gtk_plus_state = GtkPlusState.Hot; break;
|
||
|
case UPSTATES.UPS_PRESSED: gtk_plus_state = GtkPlusState.Pressed; break;
|
||
|
case UPSTATES.UPS_DISABLED: gtk_plus_state = GtkPlusState.Disabled; break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region SPNP_DOWN
|
||
|
case SPINPARTS.SPNP_DOWN:
|
||
|
up = false;
|
||
|
switch ((DOWNSTATES)state) {
|
||
|
case DOWNSTATES.DNS_NORMAL: gtk_plus_state = GtkPlusState.Normal; break;
|
||
|
case DOWNSTATES.DNS_HOT: gtk_plus_state = GtkPlusState.Hot; break;
|
||
|
case DOWNSTATES.DNS_PRESSED: gtk_plus_state = GtkPlusState.Pressed; break;
|
||
|
case DOWNSTATES.DNS_DISABLED: gtk_plus_state = GtkPlusState.Disabled; break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.UpDownPaint (dc, bounds, clipRectangle, up, gtk_plus_state);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region STATUS
|
||
|
case ThemeHandle.STATUS:
|
||
|
switch ((STATUSPARTS)part) {
|
||
|
case STATUSPARTS.SP_GRIPPER:
|
||
|
GtkPlus.StatusBarPaintGripper (dc, bounds, clipRectangle);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TABCONTROL
|
||
|
case ThemeHandle.TAB:
|
||
|
bool selected;
|
||
|
switch ((TABPARTS)part) {
|
||
|
#region TABP_TABITEM
|
||
|
case TABPARTS.TABP_TABITEM:
|
||
|
switch ((TABITEMSTATES)state) {
|
||
|
case TABITEMSTATES.TIS_SELECTED:
|
||
|
selected = true;
|
||
|
break;
|
||
|
case TABITEMSTATES.TIS_NORMAL:
|
||
|
case TABITEMSTATES.TIS_HOT:
|
||
|
case TABITEMSTATES.TIS_DISABLED:
|
||
|
selected = false;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_TABITEMLEFTEDGE
|
||
|
case TABPARTS.TABP_TABITEMLEFTEDGE:
|
||
|
switch ((TABITEMLEFTEDGESTATES)state) {
|
||
|
case TABITEMLEFTEDGESTATES.TILES_SELECTED:
|
||
|
selected = true;
|
||
|
break;
|
||
|
case TABITEMLEFTEDGESTATES.TILES_NORMAL:
|
||
|
case TABITEMLEFTEDGESTATES.TILES_HOT:
|
||
|
case TABITEMLEFTEDGESTATES.TILES_DISABLED:
|
||
|
selected = false;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_TABITEMRIGHTEDGE
|
||
|
case TABPARTS.TABP_TABITEMRIGHTEDGE:
|
||
|
switch ((TABITEMRIGHTEDGESTATES)state) {
|
||
|
case TABITEMRIGHTEDGESTATES.TIRES_SELECTED:
|
||
|
selected = true;
|
||
|
break;
|
||
|
case TABITEMRIGHTEDGESTATES.TIRES_NORMAL:
|
||
|
case TABITEMRIGHTEDGESTATES.TIRES_HOT:
|
||
|
case TABITEMRIGHTEDGESTATES.TIRES_DISABLED:
|
||
|
selected = false;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_TABITEMBOTHEDGE
|
||
|
case TABPARTS.TABP_TABITEMBOTHEDGE:
|
||
|
selected = false;
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_TOPTABITEM
|
||
|
case TABPARTS.TABP_TOPTABITEM:
|
||
|
switch ((TOPTABITEMSTATES)state) {
|
||
|
case TOPTABITEMSTATES.TTIS_SELECTED:
|
||
|
selected = true;
|
||
|
break;
|
||
|
case TOPTABITEMSTATES.TTIS_NORMAL:
|
||
|
case TOPTABITEMSTATES.TTIS_HOT:
|
||
|
case TOPTABITEMSTATES.TTIS_DISABLED:
|
||
|
selected = false;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_TOPTABITEMLEFTEDGE
|
||
|
case TABPARTS.TABP_TOPTABITEMLEFTEDGE:
|
||
|
switch ((TOPTABITEMLEFTEDGESTATES)state) {
|
||
|
case TOPTABITEMLEFTEDGESTATES.TTILES_SELECTED:
|
||
|
selected = true;
|
||
|
break;
|
||
|
case TOPTABITEMLEFTEDGESTATES.TTILES_NORMAL:
|
||
|
case TOPTABITEMLEFTEDGESTATES.TTILES_HOT:
|
||
|
case TOPTABITEMLEFTEDGESTATES.TTILES_DISABLED:
|
||
|
selected = false;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_TOPTABITEMRIGHTEDGE
|
||
|
case TABPARTS.TABP_TOPTABITEMRIGHTEDGE:
|
||
|
switch ((TOPTABITEMRIGHTEDGESTATES)state) {
|
||
|
case TOPTABITEMRIGHTEDGESTATES.TTIRES_SELECTED:
|
||
|
selected = true;
|
||
|
break;
|
||
|
case TOPTABITEMRIGHTEDGESTATES.TTIRES_NORMAL:
|
||
|
case TOPTABITEMRIGHTEDGESTATES.TTIRES_HOT:
|
||
|
case TOPTABITEMRIGHTEDGESTATES.TTIRES_DISABLED:
|
||
|
selected = false;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_TOPTABITEMBOTHEDGE
|
||
|
case TABPARTS.TABP_TOPTABITEMBOTHEDGE:
|
||
|
selected = false;
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TABP_PANE
|
||
|
case TABPARTS.TABP_PANE:
|
||
|
GtkPlus.TabControlPaintPane (dc, bounds, clipRectangle);
|
||
|
return true;
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.TabControlPaintTabItem (dc, bounds, clipRectangle, selected ? GtkPlusState.Pressed : GtkPlusState.Normal);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region TOOLBAR
|
||
|
case ThemeHandle.TOOLBAR:
|
||
|
switch ((TOOLBARPARTS)part) {
|
||
|
case TOOLBARPARTS.TP_BUTTON:
|
||
|
switch ((TOOLBARSTYLESTATES)state) {
|
||
|
case TOOLBARSTYLESTATES.TS_NORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case TOOLBARSTYLESTATES.TS_HOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
break;
|
||
|
case TOOLBARSTYLESTATES.TS_PRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
break;
|
||
|
case TOOLBARSTYLESTATES.TS_DISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
break;
|
||
|
case TOOLBARSTYLESTATES.TS_CHECKED:
|
||
|
case TOOLBARSTYLESTATES.TS_HOTCHECKED:
|
||
|
GtkPlus.ToolBarPaintCheckedButton (dc, bounds, clipRectangle);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.ToolBarPaintButton (dc, bounds, clipRectangle, gtk_plus_state);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TRACKBAR
|
||
|
case ThemeHandle.TRACKBAR:
|
||
|
switch ((TRACKBARPARTS)part) {
|
||
|
#region TKP_TRACK
|
||
|
case TRACKBARPARTS.TKP_TRACK:
|
||
|
switch ((TRACKSTATES)state) {
|
||
|
case TRACKSTATES.TRS_NORMAL:
|
||
|
GtkPlus.TrackBarPaintTrack (dc, bounds, clipRectangle, true);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TKP_TRACKVERT
|
||
|
case TRACKBARPARTS.TKP_TRACKVERT:
|
||
|
switch ((TRACKVERTSTATES)state) {
|
||
|
case TRACKVERTSTATES.TRVS_NORMAL:
|
||
|
GtkPlus.TrackBarPaintTrack (dc, bounds, clipRectangle, false);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TKP_THUMB
|
||
|
case TRACKBARPARTS.TKP_THUMB:
|
||
|
switch ((THUMBSTATES)state) {
|
||
|
case THUMBSTATES.TUS_NORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case THUMBSTATES.TUS_HOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
break;
|
||
|
case THUMBSTATES.TUS_PRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
break;
|
||
|
case THUMBSTATES.TUS_FOCUSED:
|
||
|
gtk_plus_state = GtkPlusState.Selected;
|
||
|
break;
|
||
|
case THUMBSTATES.TUS_DISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.TrackBarPaintThumb (dc, bounds, clipRectangle, gtk_plus_state, true);
|
||
|
return true;
|
||
|
#endregion
|
||
|
#region TKP_THUMBVERT
|
||
|
case TRACKBARPARTS.TKP_THUMBVERT:
|
||
|
switch ((THUMBVERTSTATES)state) {
|
||
|
case THUMBVERTSTATES.TUVS_NORMAL:
|
||
|
gtk_plus_state = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case THUMBVERTSTATES.TUVS_HOT:
|
||
|
gtk_plus_state = GtkPlusState.Hot;
|
||
|
break;
|
||
|
case THUMBVERTSTATES.TUVS_PRESSED:
|
||
|
gtk_plus_state = GtkPlusState.Pressed;
|
||
|
break;
|
||
|
case THUMBVERTSTATES.TUVS_FOCUSED:
|
||
|
gtk_plus_state = GtkPlusState.Selected;
|
||
|
break;
|
||
|
case THUMBVERTSTATES.TUVS_DISABLED:
|
||
|
gtk_plus_state = GtkPlusState.Disabled;
|
||
|
break;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.TrackBarPaintThumb (dc, bounds, clipRectangle, gtk_plus_state, false);
|
||
|
return true;
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TREEVIEW
|
||
|
case ThemeHandle.TREEVIEW:
|
||
|
switch ((TREEVIEWPARTS)part) {
|
||
|
case TREEVIEWPARTS.TVP_GLYPH:
|
||
|
bool closed;
|
||
|
switch ((GLYPHSTATES)state) {
|
||
|
case GLYPHSTATES.GLPS_CLOSED : closed = true; break;
|
||
|
case GLYPHSTATES.GLPS_OPENED: closed = false; break;
|
||
|
default: return false;
|
||
|
}
|
||
|
GtkPlus.TreeViewPaintGlyph (dc, bounds, clipRectangle, closed);
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
}
|
||
|
static bool GetGtkPlusState (SCROLLBARSTYLESTATES state, out GtkPlusState result)
|
||
|
{
|
||
|
switch (state) {
|
||
|
case SCROLLBARSTYLESTATES.SCRBS_NORMAL:
|
||
|
result = GtkPlusState.Normal;
|
||
|
break;
|
||
|
case SCROLLBARSTYLESTATES.SCRBS_HOT:
|
||
|
result = GtkPlusState.Hot;
|
||
|
break;
|
||
|
case SCROLLBARSTYLESTATES.SCRBS_PRESSED:
|
||
|
result = GtkPlusState.Pressed;
|
||
|
break;
|
||
|
case SCROLLBARSTYLESTATES.SCRBS_DISABLED:
|
||
|
result = GtkPlusState.Disabled;
|
||
|
break;
|
||
|
default:
|
||
|
result = (GtkPlusState)0;
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
public int UxThemeDrawThemeEdge (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle bounds, Edges edges, EdgeStyle style, EdgeEffects effects, out Rectangle result)
|
||
|
{
|
||
|
result = Rectangle.Empty;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeDrawThemeText (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, string text, TextFormatFlags textFlags, Rectangle bounds)
|
||
|
{
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeBackgroundContentRect (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle bounds, out Rectangle result)
|
||
|
{
|
||
|
return (int)(GetBackgroundContentRectangle ((ThemeHandle)(int)hTheme, iPartId, iStateId, bounds, out result) ? S.S_OK : S.S_FALSE);
|
||
|
}
|
||
|
bool GetBackgroundContentRectangle (ThemeHandle handle, int part, int state, Rectangle bounds, out Rectangle result)
|
||
|
{
|
||
|
switch (handle) {
|
||
|
case ThemeHandle.PROGRESS:
|
||
|
switch ((PROGRESSPARTS)part) {
|
||
|
case PROGRESSPARTS.PP_BAR:
|
||
|
case PROGRESSPARTS.PP_BARVERT:
|
||
|
result = GtkPlus.ProgressBarGetBackgroundContentRectagle (bounds);
|
||
|
return true;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
result = Rectangle.Empty;
|
||
|
return false;
|
||
|
}
|
||
|
public int UxThemeGetThemeBackgroundExtent (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle contentBounds, out Rectangle result)
|
||
|
{
|
||
|
result = Rectangle.Empty;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeBackgroundRegion (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle bounds, out Region result)
|
||
|
{
|
||
|
result = null;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeBool (IntPtr hTheme, int iPartId, int iStateId, BooleanProperty prop, out bool result)
|
||
|
{
|
||
|
result = false;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeColor (IntPtr hTheme, int iPartId, int iStateId, ColorProperty prop, out Color result)
|
||
|
{
|
||
|
result = Color.Black;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeEnumValue (IntPtr hTheme, int iPartId, int iStateId, EnumProperty prop, out int result)
|
||
|
{
|
||
|
result = 0;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeFilename (IntPtr hTheme, int iPartId, int iStateId, FilenameProperty prop, out string result)
|
||
|
{
|
||
|
result = null;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeInt (IntPtr hTheme, int iPartId, int iStateId, IntegerProperty prop, out int result)
|
||
|
{
|
||
|
return (int)(GetInteger ((ThemeHandle)(int)hTheme, iPartId, iStateId, prop, out result) ? S.S_OK : S.S_FALSE);
|
||
|
}
|
||
|
bool GetInteger (ThemeHandle handle, int part, int state, IntegerProperty property, out int result)
|
||
|
{
|
||
|
switch (handle) {
|
||
|
case ThemeHandle.PROGRESS:
|
||
|
switch ((PROGRESSPARTS)part) {
|
||
|
case PROGRESSPARTS.PP_CHUNK:
|
||
|
case PROGRESSPARTS.PP_CHUNKVERT:
|
||
|
switch (property) {
|
||
|
case IntegerProperty.ProgressChunkSize:
|
||
|
result = ThemeWin32Classic.ProgressBarGetChunkSize ();
|
||
|
return true;
|
||
|
case IntegerProperty.ProgressSpaceSize:
|
||
|
result = ThemeWin32Classic.ProgressBarChunkSpacing;
|
||
|
return true;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
result = 0;
|
||
|
return false;
|
||
|
}
|
||
|
public int UxThemeGetThemeMargins (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, MarginProperty prop, out Padding result)
|
||
|
{
|
||
|
result = Padding.Empty;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemePartSize (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, Rectangle bounds, ThemeSizeType type, out Size result)
|
||
|
{
|
||
|
return (int)(GetPartSize ((ThemeHandle)(int)hTheme, dc, iPartId, iStateId, bounds, true, type, out result) ? S.S_OK : S.S_FALSE);
|
||
|
}
|
||
|
public int UxThemeGetThemePartSize (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, ThemeSizeType type, out Size result)
|
||
|
{
|
||
|
return (int)(GetPartSize ((ThemeHandle)(int)hTheme, dc, iPartId, iStateId, Rectangle.Empty, false, type, out result) ? S.S_OK : S.S_FALSE);
|
||
|
}
|
||
|
bool GetPartSize (ThemeHandle themeHandle, IDeviceContext dc, int part, int state, Rectangle bounds, bool rectangleSpecified, ThemeSizeType type, out Size result)
|
||
|
{
|
||
|
switch (themeHandle) {
|
||
|
#region BUTTON
|
||
|
case ThemeHandle.BUTTON:
|
||
|
switch ((BUTTONPARTS)part) {
|
||
|
case BUTTONPARTS.BP_RADIOBUTTON:
|
||
|
result = GtkPlus.RadioButtonGetSize ();
|
||
|
return true;
|
||
|
case BUTTONPARTS.BP_CHECKBOX:
|
||
|
result = GtkPlus.CheckBoxGetSize ();
|
||
|
return true;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region HEADER
|
||
|
case ThemeHandle.HEADER:
|
||
|
switch ((HEADERPARTS)part) {
|
||
|
case HEADERPARTS.HP_HEADERITEM:
|
||
|
result = new Size (0, ThemeWin32Classic.ListViewGetHeaderHeight ());
|
||
|
return true;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
#region TRACKBAR
|
||
|
case ThemeHandle.TRACKBAR:
|
||
|
switch ((TRACKBARPARTS)part) {
|
||
|
case TRACKBARPARTS.TKP_TRACK:
|
||
|
result = new Size (0, ThemeWin32Classic.TrackBarHorizontalTrackHeight);
|
||
|
return true;
|
||
|
case TRACKBARPARTS.TKP_TRACKVERT:
|
||
|
result = new Size (ThemeWin32Classic.TrackBarVerticalTrackWidth, 0);
|
||
|
return true;
|
||
|
case TRACKBARPARTS.TKP_THUMB:
|
||
|
case TRACKBARPARTS.TKP_THUMBVERT:
|
||
|
result = ThemeWin32Classic.TrackBarGetThumbSize ();
|
||
|
if ((TRACKBARPARTS)part == TRACKBARPARTS.TKP_THUMBVERT) {
|
||
|
int temporary = result.Width;
|
||
|
result.Width = result.Height;
|
||
|
result.Height = temporary;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
}
|
||
|
result = Size.Empty;
|
||
|
return false;
|
||
|
}
|
||
|
public int UxThemeGetThemePosition (IntPtr hTheme, int iPartId, int iStateId, PointProperty prop, out Point result)
|
||
|
{
|
||
|
result = Point.Empty;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeString (IntPtr hTheme, int iPartId, int iStateId, StringProperty prop, out string result)
|
||
|
{
|
||
|
result = null;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeTextExtent (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, string textToDraw, TextFormatFlags flags, Rectangle bounds, out Rectangle result)
|
||
|
{
|
||
|
result = Rectangle.Empty;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeTextExtent (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, string textToDraw, TextFormatFlags flags, out Rectangle result)
|
||
|
{
|
||
|
result = Rectangle.Empty;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeGetThemeTextMetrics (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, out TextMetrics result)
|
||
|
{
|
||
|
result = new TextMetrics ();
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public int UxThemeHitTestThemeBackground (IntPtr hTheme, IDeviceContext dc, int iPartId, int iStateId, HitTestOptions options, Rectangle backgroundRectangle, IntPtr hrgn, Point pt, out HitTestCode result)
|
||
|
{
|
||
|
result = HitTestCode.Bottom;
|
||
|
return (int)S.S_FALSE;
|
||
|
}
|
||
|
public bool UxThemeIsAppThemed ()
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
public bool UxThemeIsThemeActive ()
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
public bool UxThemeIsThemeBackgroundPartiallyTransparent (IntPtr hTheme, int iPartId, int iStateId)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
public bool UxThemeIsThemePartDefined (IntPtr hTheme, int iPartId)
|
||
|
{
|
||
|
switch ((ThemeHandle)(int)hTheme) {
|
||
|
#region BUTTON
|
||
|
case ThemeHandle.BUTTON:
|
||
|
switch ((BUTTONPARTS)iPartId) {
|
||
|
case BUTTONPARTS.BP_PUSHBUTTON:
|
||
|
case BUTTONPARTS.BP_CHECKBOX:
|
||
|
case BUTTONPARTS.BP_RADIOBUTTON:
|
||
|
case BUTTONPARTS.BP_GROUPBOX:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region COMBOBOX
|
||
|
case ThemeHandle.COMBOBOX:
|
||
|
switch ((COMBOBOXPARTS)iPartId) {
|
||
|
case COMBOBOXPARTS.CP_DROPDOWNBUTTON:
|
||
|
case COMBOBOXPARTS.CP_BORDER:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region EDIT
|
||
|
case ThemeHandle.EDIT:
|
||
|
switch ((EDITPARTS)iPartId) {
|
||
|
case EDITPARTS.EP_EDITTEXT:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region HEADER
|
||
|
case ThemeHandle.HEADER:
|
||
|
switch ((HEADERPARTS)iPartId) {
|
||
|
case HEADERPARTS.HP_HEADERITEM:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region PROGRESS
|
||
|
case ThemeHandle.PROGRESS:
|
||
|
switch ((PROGRESSPARTS)iPartId) {
|
||
|
case PROGRESSPARTS.PP_BAR:
|
||
|
case PROGRESSPARTS.PP_BARVERT:
|
||
|
case PROGRESSPARTS.PP_CHUNK:
|
||
|
case PROGRESSPARTS.PP_CHUNKVERT:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region REBAR
|
||
|
case ThemeHandle.REBAR:
|
||
|
switch ((REBARPARTS)iPartId) {
|
||
|
case REBARPARTS.RP_BAND:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region SCROLLBAR
|
||
|
case ThemeHandle.SCROLLBAR:
|
||
|
switch ((SCROLLBARPARTS)iPartId) {
|
||
|
case SCROLLBARPARTS.SBP_ARROWBTN:
|
||
|
case SCROLLBARPARTS.SBP_THUMBBTNHORZ:
|
||
|
case SCROLLBARPARTS.SBP_THUMBBTNVERT:
|
||
|
case SCROLLBARPARTS.SBP_LOWERTRACKHORZ:
|
||
|
case SCROLLBARPARTS.SBP_UPPERTRACKHORZ:
|
||
|
case SCROLLBARPARTS.SBP_LOWERTRACKVERT:
|
||
|
case SCROLLBARPARTS.SBP_UPPERTRACKVERT:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region SPIN
|
||
|
case ThemeHandle.SPIN:
|
||
|
switch ((SPINPARTS)iPartId) {
|
||
|
case SPINPARTS.SPNP_UP:
|
||
|
case SPINPARTS.SPNP_DOWN:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
#region STATUS
|
||
|
case ThemeHandle.STATUS:
|
||
|
switch ((STATUSPARTS)iPartId) {
|
||
|
case STATUSPARTS.SP_GRIPPER:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TABCONTROL
|
||
|
case ThemeHandle.TAB:
|
||
|
switch ((TABPARTS)iPartId) {
|
||
|
case TABPARTS.TABP_TABITEM:
|
||
|
case TABPARTS.TABP_TABITEMLEFTEDGE:
|
||
|
case TABPARTS.TABP_TABITEMRIGHTEDGE:
|
||
|
case TABPARTS.TABP_TABITEMBOTHEDGE:
|
||
|
case TABPARTS.TABP_TOPTABITEM:
|
||
|
case TABPARTS.TABP_TOPTABITEMLEFTEDGE:
|
||
|
case TABPARTS.TABP_TOPTABITEMRIGHTEDGE:
|
||
|
case TABPARTS.TABP_TOPTABITEMBOTHEDGE:
|
||
|
case TABPARTS.TABP_PANE:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TOOLBAR
|
||
|
case ThemeHandle.TOOLBAR:
|
||
|
switch ((TOOLBARPARTS)iPartId) {
|
||
|
case TOOLBARPARTS.TP_BUTTON:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TRACKBAR
|
||
|
case ThemeHandle.TRACKBAR:
|
||
|
switch ((TRACKBARPARTS)iPartId) {
|
||
|
case TRACKBARPARTS.TKP_TRACK:
|
||
|
case TRACKBARPARTS.TKP_TRACKVERT:
|
||
|
case TRACKBARPARTS.TKP_THUMB:
|
||
|
case TRACKBARPARTS.TKP_THUMBVERT:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
#region TREEVIEW
|
||
|
case ThemeHandle.TREEVIEW:
|
||
|
switch ((TREEVIEWPARTS)iPartId) {
|
||
|
case TREEVIEWPARTS.TVP_GLYPH:
|
||
|
return true;
|
||
|
default: return false;
|
||
|
}
|
||
|
#endregion
|
||
|
default: return false;
|
||
|
}
|
||
|
}
|
||
|
public IntPtr UxThemeOpenThemeData (IntPtr hWnd, string classList)
|
||
|
{
|
||
|
ThemeHandle theme_handle;
|
||
|
try {
|
||
|
theme_handle = (ThemeHandle)Enum.Parse (typeof (ThemeHandle), classList);
|
||
|
} catch (ArgumentException) {
|
||
|
return IntPtr.Zero;
|
||
|
}
|
||
|
return (IntPtr)(int)theme_handle;
|
||
|
}
|
||
|
#endregion
|
||
|
#region VisualStyleInformation
|
||
|
public string VisualStyleInformationAuthor {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationColorScheme {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationCompany {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public Color VisualStyleInformationControlHighlightHot {
|
||
|
get {
|
||
|
return Color.Black;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationCopyright {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationDescription {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationDisplayName {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationFileName {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public bool VisualStyleInformationIsSupportedByOS
|
||
|
{
|
||
|
get {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
public int VisualStyleInformationMinimumColorDepth {
|
||
|
get {
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationSize {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public bool VisualStyleInformationSupportsFlatMenus {
|
||
|
get {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
public Color VisualStyleInformationTextControlBorder {
|
||
|
get {
|
||
|
return Color.Black;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationUrl {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
public string VisualStyleInformationVersion {
|
||
|
get {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
#region VisualStyleRenderer
|
||
|
public void VisualStyleRendererDrawBackgroundExcludingArea (IntPtr theme, IDeviceContext dc, int part, int state, Rectangle bounds, Rectangle excludedArea)
|
||
|
{
|
||
|
DrawBackground ((ThemeHandle)(int)theme, dc, part, state, bounds, bounds, excludedArea);
|
||
|
}
|
||
|
#endregion
|
||
|
}
|
||
|
}
|