1 using System.Drawing;
2 using System.IO;
3 using System.Linq;
4 using System.Windows.Forms;
5 using System.Xml.Linq;
6 
7 namespace WeifenLuo.WinFormsUI.Docking
8 {
9     public class DockPanelColorPalette
10     {
DockPanelColorPalette(IPaletteFactory factory)11         public DockPanelColorPalette(IPaletteFactory factory)
12         {
13             factory.Initialize(this);
14         }
15 
16         public AutoHideStripPalette AutoHideStripDefault { get; } = new AutoHideStripPalette();
17         public AutoHideStripPalette AutoHideStripHovered { get; } = new AutoHideStripPalette();
18         public ButtonPalette OverflowButtonDefault { get; } = new ButtonPalette();
19         public HoveredButtonPalette OverflowButtonHovered { get; } = new HoveredButtonPalette();
20         public HoveredButtonPalette OverflowButtonPressed { get; } = new HoveredButtonPalette();
21         public TabPalette TabSelectedActive { get; } = new TabPalette();
22         public TabPalette TabSelectedInactive { get; } = new TabPalette();
23         public UnselectedTabPalette TabUnselected { get; } = new UnselectedTabPalette();
24         public TabPalette TabUnselectedHovered { get; } = new TabPalette();
25         public HoveredButtonPalette TabButtonSelectedActiveHovered { get; } = new HoveredButtonPalette();
26         public HoveredButtonPalette TabButtonSelectedActivePressed { get; } = new HoveredButtonPalette();
27         public HoveredButtonPalette TabButtonSelectedInactiveHovered { get; } = new HoveredButtonPalette();
28         public HoveredButtonPalette TabButtonSelectedInactivePressed { get; } = new HoveredButtonPalette();
29         public HoveredButtonPalette TabButtonUnselectedTabHoveredButtonHovered { get; } = new HoveredButtonPalette();
30         public HoveredButtonPalette TabButtonUnselectedTabHoveredButtonPressed { get; } = new HoveredButtonPalette();
31         public MainWindowPalette MainWindowActive { get; } = new MainWindowPalette();
32         public MainWindowStatusBarPalette MainWindowStatusBarDefault { get; } = new MainWindowStatusBarPalette();
33         public ToolWindowCaptionPalette ToolWindowCaptionActive { get; } = new ToolWindowCaptionPalette();
34         public ToolWindowCaptionPalette ToolWindowCaptionInactive { get; } = new ToolWindowCaptionPalette();
35         public HoveredButtonPalette ToolWindowCaptionButtonActiveHovered { get; } = new HoveredButtonPalette();
36         public HoveredButtonPalette ToolWindowCaptionButtonPressed { get; } = new HoveredButtonPalette();
37         public HoveredButtonPalette ToolWindowCaptionButtonInactiveHovered { get; } = new HoveredButtonPalette();
38         public ToolWindowTabPalette ToolWindowTabSelectedActive { get; } = new ToolWindowTabPalette();
39         public ToolWindowTabPalette ToolWindowTabSelectedInactive { get; } = new ToolWindowTabPalette();
40         public ToolWindowUnselectedTabPalette ToolWindowTabUnselected { get; } = new ToolWindowUnselectedTabPalette();
41         public ToolWindowTabPalette ToolWindowTabUnselectedHovered { get; } = new ToolWindowTabPalette();
42         public Color ToolWindowBorder { get; set; }
43         public Color ToolWindowSeparator { get; set; }
44         public DockTargetPalette DockTarget { get; } = new DockTargetPalette();
45         public CommandBarMenuPalette CommandBarMenuDefault { get; } = new CommandBarMenuPalette();
46         public CommandBarMenuPopupPalette CommandBarMenuPopupDefault { get; } = new CommandBarMenuPopupPalette();
47         public CommandBarMenuPopupDisabledPalette CommandBarMenuPopupDisabled { get; } = new CommandBarMenuPopupDisabledPalette();
48         public CommandBarMenuPopupHoveredPalette CommandBarMenuPopupHovered { get; } = new CommandBarMenuPopupHoveredPalette();
49         public CommandBarMenuTopLevelHeaderPalette CommandBarMenuTopLevelHeaderHovered { get; } = new CommandBarMenuTopLevelHeaderPalette();
50         public CommandBarToolbarPalette CommandBarToolbarDefault { get; } = new CommandBarToolbarPalette();
51         public CommandBarToolbarButtonCheckedPalette CommandBarToolbarButtonChecked { get; } = new CommandBarToolbarButtonCheckedPalette();
52         public CommandBarToolbarButtonCheckedHoveredPalette CommandBarToolbarButtonCheckedHovered { get; } = new CommandBarToolbarButtonCheckedHoveredPalette();
53         public CommandBarToolbarButtonPalette CommandBarToolbarButtonDefault { get; } = new CommandBarToolbarButtonPalette();
54         public CommandBarToolbarButtonHoveredPalette CommandBarToolbarButtonHovered { get; } = new CommandBarToolbarButtonHoveredPalette();
55         public CommandBarToolbarButtonPressedPalette CommandBarToolbarButtonPressed { get; } = new CommandBarToolbarButtonPressedPalette();
56         public CommandBarToolbarOverflowButtonPalette CommandBarToolbarOverflowHovered { get; } = new CommandBarToolbarOverflowButtonPalette();
57         public CommandBarToolbarOverflowButtonPalette CommandBarToolbarOverflowPressed { get; } = new CommandBarToolbarOverflowButtonPalette();
58 
59         public VisualStudioColorTable ColorTable { get; }
60     }
61 
62     public class CommandBarToolbarOverflowButtonPalette
63     {
64         public Color Background { get; set; }
65         public Color Glyph { get; set; }
66     }
67 
68     public class CommandBarToolbarButtonPressedPalette
69     {
70         public Color Arrow { get; set; }
71         public Color Background { get; set; }
72         public Color Text { get; set; }
73     }
74 
75     public class CommandBarToolbarButtonHoveredPalette
76     {
77         public Color Arrow { get; set; }
78         public Color Separator { get; set; }
79     }
80 
81     public class CommandBarToolbarButtonPalette
82     {
83         public Color Arrow { get; set; }
84     }
85 
86     public class CommandBarToolbarButtonCheckedHoveredPalette
87     {
88         public Color Border { get; set; }
89         public Color Text { get; set; }
90     }
91 
92     public class CommandBarToolbarButtonCheckedPalette
93     {
94         public Color Background { get; set; }
95         public Color Border { get; set; }
96         public Color Text { get; set; }
97     }
98 
99     public class CommandBarToolbarPalette
100     {
101         public Color Background { get; set; }
102         public Color Border { get; set; }
103         public Color Grip { get; set; }
104         public Color OverflowButtonBackground { get; set; }
105         public Color OverflowButtonGlyph { get; set; }
106         public Color Separator { get; set; }
107         public Color SeparatorAccent { get; set; }
108         public Color Tray { get; set; }
109     }
110 
111     public class CommandBarMenuTopLevelHeaderPalette
112     {
113         public Color Background { get; set; }
114         public Color Border { get; set; }
115         public Color Text { get; set; }
116     }
117 
118     public class CommandBarMenuPopupHoveredPalette
119     {
120         public Color Arrow { get; set; }
121         public Color Checkmark { get; set; }
122         public Color CheckmarkBackground { get; set; }
123         public Color ItemBackground { get; set; }
124         public Color Text { get; set; }
125     }
126 
127     public class CommandBarMenuPopupDisabledPalette
128     {
129         public Color Checkmark { get; set; }
130         public Color CheckmarkBackground { get; set; }
131         public Color Text { get; set; }
132     }
133 
134     public class CommandBarMenuPopupPalette
135     {
136         public Color Arrow { get; set; }
137         public Color BackgroundBottom { get; set; }
138         public Color BackgroundTop { get; set; }
139         public Color Border { get; set; }
140         public Color Checkmark { get; set; }
141         public Color CheckmarkBackground { get; set; }
142         public Color IconBackground { get; set; }
143         public Color Separator { get; set; }
144     }
145 
146     public class CommandBarMenuPalette
147     {
148         public Color Background { get; set; }
149         public Color Text { get; set; }
150     }
151 
152     public interface IPaletteFactory
153     {
Initialize(DockPanelColorPalette palette)154         void Initialize(DockPanelColorPalette palette);
155     }
156 
157     public class DockTargetPalette
158     {
159         public Color Background { get; set; }
160         public Color Border { get; set; }
161         public Color ButtonBackground { get; set; }
162         public Color ButtonBorder { get; set; }
163         public Color GlyphBackground { get; set; }
164         public Color GlyphArrow { get; set; }
165         public Color GlyphBorder { get; set; }
166     }
167 
168     public class HoveredButtonPalette
169     {
170         public Color Background { get; set; }
171         public Color Border { get; set; }
172         public Color Glyph { get; set; }
173     }
174 
175     public class ButtonPalette
176     {
177         public Color Glyph { get; set; }
178     }
179 
180     public class MainWindowPalette
181     {
182         public Color Background { get; set; }
183     }
184 
185     public class MainWindowStatusBarPalette
186     {
187         public Color Background { get; set; }
188         public Color Highlight { get; set; }
189         public Color HighlightText { get; set; }
190         public Color ResizeGrip { get; set; }
191         public Color ResizeGripAccent { get; set; }
192         public Color Text { get; set; }
193     }
194 
195     public class ToolWindowTabPalette
196     {
197         public Color Background { get; set; }
198         public Color Text { get; set; }
199     }
200 
201     public class ToolWindowUnselectedTabPalette
202     {
203         public Color Background { get; set; } // VS2013
204         public Color Text { get; set; }
205     }
206 
207     public class ToolWindowCaptionPalette
208     {
209         public Color Background { get; set; }
210         public Color Button { get; set; }
211         public Color Grip { get; set; }
212         public Color Text { get; set; }
213     }
214 
215     public class TabPalette
216     {
217         public Color Background { get; set; }
218         public Color Button { get; set; }
219         public Color Text { get; set; }
220     }
221 
222     public class UnselectedTabPalette
223     {
224         public Color Background { get; set; } // VS2013 only
225         public Color Text { get; set; }
226     }
227 
228     public class AutoHideStripPalette
229     {
230         public Color Background { get; set; }
231         public Color Border { get; set; }
232         public Color Text { get; set; }
233     }
234 }
235