1499 lines
48 KiB
ObjectPascal
1499 lines
48 KiB
ObjectPascal
unit spkte_AppearanceEditor;
|
|
|
|
{$MODE Delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
LCLIntf, LCLType, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, ExtCtrls, StdCtrls, ComCtrls, Buttons, Spin, LCLVersion,
|
|
SpkGUITools, SpkXMLParser, SpkToolbar,
|
|
spkt_Buttons, spkt_Pane, spkt_Tab, spkt_Appearance;
|
|
|
|
type
|
|
|
|
{ TfrmAppearanceEditWindow }
|
|
|
|
TfrmAppearanceEditWindow = class(TForm)
|
|
SmallImages: TImageList;
|
|
LargeImages: TImageList;
|
|
Images_150: TImageList;
|
|
Label15: TLabel;
|
|
Label16: TLabel;
|
|
Label19: TLabel;
|
|
Label20: TLabel;
|
|
PaneHSpacer: TBevel;
|
|
ItemHSpacer: TBevel;
|
|
edPaneHotTrackBrightnessChange: TSpinEdit;
|
|
edItemHotTrackBrightnessChange: TSpinEdit;
|
|
TabVSpacer: TBevel;
|
|
bInactiveTabHeaderFontColor: TSpeedButton;
|
|
bItemActiveInnerDarkColor: TSpeedButton;
|
|
bItemActiveGradientFromColor: TSpeedButton;
|
|
bItemActiveGradientToColor: TSpeedButton;
|
|
bItemActiveCaptionColor: TSpeedButton;
|
|
bItemActiveInnerLightColor: TSpeedButton;
|
|
bItemHotTrackInnerDarkColor: TSpeedButton;
|
|
bItemHotTrackFrameColor: TSpeedButton;
|
|
bItemActiveFrameColor: TSpeedButton;
|
|
bItemHotTrackGradientFromColor: TSpeedButton;
|
|
bItemHotTrackGradientToColor: TSpeedButton;
|
|
bItemHotTrackCaptionColor: TSpeedButton;
|
|
bItemHotTrackInnerLightColor: TSpeedButton;
|
|
bItemIdleInnerDarkColor: TSpeedButton;
|
|
bItemIdleGradientFromColor: TSpeedButton;
|
|
bItemIdleGradientToColor: TSpeedButton;
|
|
bItemIdleCaptionColor: TSpeedButton;
|
|
bItemIdleInnerLightColor: TSpeedButton;
|
|
bPaneBorderDarkColor: TSpeedButton;
|
|
bPaneBorderLightColor: TSpeedButton;
|
|
bPaneGradientFromColor: TSpeedButton;
|
|
bPaneGradientToColor: TSpeedButton;
|
|
bPaneCaptionBackgroundColor: TSpeedButton;
|
|
bPaneCaptionFontColor: TSpeedButton;
|
|
bItemIdleFrameColor: TSpeedButton;
|
|
bTabGradientFromColor: TSpeedButton;
|
|
bTabGradientToColor: TSpeedButton;
|
|
bActiveTabHeaderFontColor: TSpeedButton;
|
|
bExportToPascal: TButton;
|
|
bCopyToClipboard: TButton;
|
|
cbItemStyle: TComboBox;
|
|
cbPaneStyle: TComboBox;
|
|
ColorView: TShape;
|
|
ItemVSpacer: TBevel;
|
|
gbPreview: TGroupBox;
|
|
Label12: TLabel;
|
|
Label27: TLabel;
|
|
LblCaptionBackground1: TLabel;
|
|
LblRGB: TLabel;
|
|
Images_100: TImageList;
|
|
Images_200: TImageList;
|
|
Label18: TLabel;
|
|
LblInactiveTabHeaderFontColor: TLabel;
|
|
pInactiveTabHeaderFont: TPanel;
|
|
ButtonPanel: TPanel;
|
|
bTabFrameColor: TSpeedButton;
|
|
SpkTab2: TSpkTab;
|
|
TabHSpacer: TBevel;
|
|
tbPreview: TSpkToolbar;
|
|
SpkTab1: TSpkTab;
|
|
SpkPane1: TSpkPane;
|
|
SpkLargeButton1: TSpkLargeButton;
|
|
SpkLargeButton3: TSpkLargeButton;
|
|
SpkLargeButton2: TSpkLargeButton;
|
|
SpkPane2: TSpkPane;
|
|
SpkSmallButton1: TSpkSmallButton;
|
|
SpkSmallButton2: TSpkSmallButton;
|
|
SpkSmallButton3: TSpkSmallButton;
|
|
SpkPane3: TSpkPane;
|
|
SpkSmallButton4: TSpkSmallButton;
|
|
SpkSmallButton5: TSpkSmallButton;
|
|
SpkSmallButton6: TSpkSmallButton;
|
|
SpkSmallButton7: TSpkSmallButton;
|
|
SpkSmallButton8: TSpkSmallButton;
|
|
PageControl1: TPageControl;
|
|
TabSheet1: TTabSheet;
|
|
TabSheet2: TTabSheet;
|
|
TabSheet3: TTabSheet;
|
|
Label2: TLabel;
|
|
pTabFrame: TPanel;
|
|
pTabGradientFrom: TPanel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
pTabGradientTo: TPanel;
|
|
cbTabGradientKind: TComboBox;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
pTabHeaderFont: TPanel;
|
|
Label8: TLabel;
|
|
pPaneBorderDark: TPanel;
|
|
pPaneBorderLight: TPanel;
|
|
Label21: TLabel;
|
|
Label9: TLabel;
|
|
pPaneGradientFrom: TPanel;
|
|
pPaneGradientTo: TPanel;
|
|
Label10: TLabel;
|
|
Label11: TLabel;
|
|
cbPaneGradientKind: TComboBox;
|
|
pPaneCaptionBackground: TPanel;
|
|
LblPaneCaptionBackground: TLabel;
|
|
Label13: TLabel;
|
|
pPaneCaptionFont: TPanel;
|
|
Label1: TLabel;
|
|
Label7: TLabel;
|
|
Label14: TLabel;
|
|
Label25: TLabel;
|
|
Label26: TLabel;
|
|
pItemFont: TPanel;
|
|
cbItemIdleGradientKind: TComboBox;
|
|
pItemIdleGradientTo: TPanel;
|
|
pItemIdleGradientFrom: TPanel;
|
|
pItemIdleFrame: TPanel;
|
|
LblIdle: TLabel;
|
|
Label28: TLabel;
|
|
pItemIdleCaptionColor: TPanel;
|
|
Label29: TLabel;
|
|
pItemIdleInnerDark: TPanel;
|
|
LblLinkInnerLightColor: TLabel;
|
|
pItemIdleInnerLight: TPanel;
|
|
cbItemHottrackGradientKind: TComboBox;
|
|
pItemHottrackGradientTo: TPanel;
|
|
pItemHottrackGradientFrom: TPanel;
|
|
pItemHottrackFrame: TPanel;
|
|
LblHotTrack: TLabel;
|
|
pItemHottrackCaptionColor: TPanel;
|
|
pItemHottrackInnerDark: TPanel;
|
|
pItemHottrackInnerLight: TPanel;
|
|
cbItemActiveGradientKind: TComboBox;
|
|
pItemActiveGradientTo: TPanel;
|
|
pItemActiveGradientFrom: TPanel;
|
|
pItemActiveFrame: TPanel;
|
|
LblActive: TLabel;
|
|
pItemActiveCaptionColor: TPanel;
|
|
pItemActiveInnerDark: TPanel;
|
|
pItemActiveInnerLight: TPanel;
|
|
bOK: TButton;
|
|
bCancel: TButton;
|
|
cdColorDialog: TColorDialog;
|
|
fdFontDialog: TFontDialog;
|
|
pActiveTabHeaderFont: TPanel;
|
|
pPaneCaptionFontColor: TPanel;
|
|
TabSheet4: TTabSheet;
|
|
bImport: TButton;
|
|
bExportToXML: TButton;
|
|
mXML: TMemo;
|
|
sTabRectangle: TShape;
|
|
cbLinkTab: TCheckBox;
|
|
sPaneRectangle: TShape;
|
|
cbLinkPane: TCheckBox;
|
|
cbLinkItem: TCheckBox;
|
|
sItemRectangle: TShape;
|
|
TabSheet5: TTabSheet;
|
|
Label17: TLabel;
|
|
LbAppearanceStyle: TListbox;
|
|
|
|
procedure bExportToPascalClick(Sender: TObject);
|
|
procedure bExportToXMLClick(Sender: TObject);
|
|
procedure bImportClick(Sender: TObject);
|
|
procedure bInactiveTabHeaderFontColorClick(Sender: TObject);
|
|
procedure bItemActiveCaptionColorClick(Sender: TObject);
|
|
procedure bItemActiveFrameColorClick(Sender: TObject);
|
|
procedure bItemActiveGradientFromColorClick(Sender: TObject);
|
|
procedure bItemActiveGradientToColorClick(Sender: TObject);
|
|
procedure bItemActiveInnerDarkColorClick(Sender: TObject);
|
|
procedure bItemActiveInnerLightColorClick(Sender: TObject);
|
|
procedure bItemHotTrackCaptionColorClick(Sender: TObject);
|
|
procedure bItemHotTrackFrameColorClick(Sender: TObject);
|
|
procedure bItemHotTrackGradientFromColorClick(Sender: TObject);
|
|
procedure bItemHotTrackGradientToColorClick(Sender: TObject);
|
|
procedure bItemHotTrackInnerDarkColorClick(Sender: TObject);
|
|
procedure bItemHotTrackInnerLightColorClick(Sender: TObject);
|
|
procedure bItemIdleCaptionColorClick(Sender: TObject);
|
|
procedure bItemIdleFrameColorClick(Sender: TObject);
|
|
procedure bItemIdleGradientFromColorClick(Sender: TObject);
|
|
procedure bItemIdleGradientToColorClick(Sender: TObject);
|
|
procedure bItemIdleInnerDarkColorClick(Sender: TObject);
|
|
procedure bItemIdleInnerLightColorClick(Sender: TObject);
|
|
procedure bPaneBorderDarkColorClick(Sender: TObject);
|
|
procedure bPaneBorderLightColorClick(Sender: TObject);
|
|
procedure bPaneCaptionBackgroundColorClick(Sender: TObject);
|
|
procedure bPaneCaptionFontColorClick(Sender: TObject);
|
|
procedure bPaneGradientFromColorClick(Sender: TObject);
|
|
procedure bPaneGradientToColorClick(Sender: TObject);
|
|
procedure bResetClick(Sender: TObject);
|
|
|
|
procedure bTabBorderColorClick(Sender: TObject);
|
|
procedure bTabGradientFromColorClick(Sender: TObject);
|
|
procedure bTabGradientToColorClick(Sender: TObject);
|
|
procedure bActiveTabHeaderFontColorClick(Sender: TObject);
|
|
procedure bCopyToClipboardClick(Sender: TObject);
|
|
|
|
procedure cbItemActiveGradientKindChange(Sender: TObject);
|
|
procedure cbItemHottrackGradientKindChange(Sender: TObject);
|
|
procedure cbItemIdleGradientKindChange(Sender: TObject);
|
|
procedure cbItemStyleChange(Sender: TObject);
|
|
procedure cbPaneGradientKindChange(Sender: TObject);
|
|
procedure cbPaneStyleChange(Sender: TObject);
|
|
procedure cbTabGradientKindChange(Sender: TObject);
|
|
|
|
procedure cbLinkItemClick(Sender: TObject);
|
|
procedure cbLinkPaneClick(Sender: TObject);
|
|
procedure cbLinkTabClick(Sender: TObject);
|
|
|
|
procedure edItemHotTrackBrightnessChangeChange(Sender: TObject);
|
|
procedure edPaneHotTrackBrightnessChangeChange(Sender: TObject);
|
|
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
|
|
procedure LbAppearanceStyleClick(Sender: TObject);
|
|
|
|
procedure pActiveTabHeaderFontClick(Sender: TObject);
|
|
procedure pInactiveTabHeaderFontClick(Sender: TObject);
|
|
procedure pTabFrameClick(Sender: TObject);
|
|
procedure pTabGradientFromClick(Sender: TObject);
|
|
procedure pTabGradientToClick(Sender: TObject);
|
|
|
|
procedure pPaneBorderDarkClick(Sender: TObject);
|
|
procedure pPaneBorderLightClick(Sender: TObject);
|
|
procedure pPaneCaptionFontClick(Sender: TObject);
|
|
procedure pPaneCaptionFontColorClick(Sender: TObject);
|
|
procedure pPaneGradientFromClick(Sender: TObject);
|
|
procedure pPaneGradientToClick(Sender: TObject);
|
|
procedure pPaneCaptionBackgroundClick(Sender: TObject);
|
|
|
|
procedure pItemActiveCaptionColorClick(Sender: TObject);
|
|
procedure pItemActiveFrameClick(Sender: TObject);
|
|
procedure pItemActiveGradientFromClick(Sender: TObject);
|
|
procedure pItemActiveGradientToClick(Sender: TObject);
|
|
procedure pItemActiveInnerDarkClick(Sender: TObject);
|
|
procedure pItemActiveInnerLightClick(Sender: TObject);
|
|
|
|
procedure pItemFontClick(Sender: TObject);
|
|
procedure pItemIdleCaptionColorClick(Sender: TObject);
|
|
procedure pItemIdleFrameClick(Sender: TObject);
|
|
procedure pItemIdleGradientFromClick(Sender: TObject);
|
|
procedure pItemIdleGradientToClick(Sender: TObject);
|
|
procedure pItemIdleInnerDarkClick(Sender: TObject);
|
|
procedure pItemIdleInnerLightClick(Sender: TObject);
|
|
|
|
procedure pItemHottrackCaptionColorClick(Sender: TObject);
|
|
procedure pItemHottrackFrameClick(Sender: TObject);
|
|
procedure pItemHottrackGradientFromClick(Sender: TObject);
|
|
procedure pItemHottrackGradientToClick(Sender: TObject);
|
|
procedure pItemHottrackInnerDarkClick(Sender: TObject);
|
|
procedure pItemHottrackInnerLightClick(Sender: TObject);
|
|
|
|
procedure pTabHeaderFontClick(Sender: TObject);
|
|
|
|
private
|
|
procedure SetLinkedFrameColor(AColor : TColor);
|
|
procedure SetLinkedGradientFromColor(AColor : TColor);
|
|
procedure SetLinkedGradientToColor(AColor : TColor);
|
|
procedure SetLinkedGradientKind(AKindIndex : integer);
|
|
|
|
function GetAppearance: TSpkToolbarAppearance;
|
|
procedure SetAppearance(const Value: TSpkToolbarAppearance);
|
|
|
|
procedure SwitchAttributesLink(const Value : boolean);
|
|
|
|
function ChangeColor(Panel : TPanel) : boolean;
|
|
procedure SetPanelColor(Panel: TPanel; AColor : TColor);
|
|
function ChangeFont(Panel : TPanel) : boolean;
|
|
procedure SetPanelFont(Panel : TPanel; AFont : TFont);
|
|
procedure SetComboGradientKind(Combo : TComboBox; GradientType : TBackgroundKind);
|
|
procedure LoadAppearance(AAppearance : TSpkToolbarAppearance);
|
|
|
|
private { Color picker }
|
|
FScreenBitmap: TBitmap;
|
|
FScreenshotForm: TForm;
|
|
function PickColor(APanel: TPanel): Boolean;
|
|
procedure ScreenshotKeyDown(Sender: TObject;
|
|
var Key: Word; {%H-}Shift: TShiftState);
|
|
procedure ScreenshotMouseDown(Sender: TObject; {%H-}Button: TMouseButton;
|
|
{%H-}Shift: TShiftState; X, Y: integer);
|
|
procedure ScreenshotMouseMove(Sender: TObject;
|
|
{%H-}Shift: TShiftState; X, Y: integer);
|
|
procedure ScreenshotMouseUp(Sender: TObject; {%H-}Button: TMouseButton;
|
|
{%H-}Shift: TShiftState; {%H-}X, {%H-}Y: integer);
|
|
|
|
private
|
|
procedure UpdateImages;
|
|
procedure UpdateSizes;
|
|
|
|
protected
|
|
{$IF lcl_fullversion >= 1080000}
|
|
procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy;
|
|
const AXProportion, AYProportion: Double); override;
|
|
{$ENDIF}
|
|
|
|
public
|
|
property Appearance : TSpkToolbarAppearance read GetAppearance write SetAppearance;
|
|
end;
|
|
|
|
var
|
|
frmAppearanceEditWindow: TfrmAppearanceEditWindow;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
Types, clipbrd, spkt_Const;
|
|
|
|
var
|
|
CurrPageIndex: Integer = 0;
|
|
|
|
|
|
{ TfrmAppearanceEditWindow }
|
|
|
|
{$IF lcl_fullversion >= 1080000}
|
|
procedure TfrmAppearanceEditWindow.DoAutoAdjustLayout(
|
|
const AMode: TLayoutAdjustmentPolicy; const AXProportion, AYProportion: Double);
|
|
begin
|
|
inherited;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
procedure TfrmAppearanceEditWindow.SetAppearance(const Value: TSpkToolbarAppearance);
|
|
begin
|
|
tbPreview.Appearance.Assign(Value);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SetComboGradientKind(Combo: TComboBox;
|
|
GradientType: TBackgroundKind);
|
|
begin
|
|
Combo.ItemIndex := ord(GradientType);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SetLinkedFrameColor(AColor: TColor);
|
|
begin
|
|
tbPreview.Appearance.Tab.BorderColor := AColor;
|
|
SetPanelColor(pTabFrame, AColor);
|
|
|
|
tbPreview.Appearance.Pane.BorderDarkColor := AColor;
|
|
SetPanelColor(pPaneBorderDark, AColor);
|
|
|
|
tbPreview.Appearance.Element.IdleFrameColor := AColor;
|
|
SetPanelColor(pItemIdleFrame, AColor);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SetLinkedGradientFromColor(AColor: TColor);
|
|
begin
|
|
tbPreview.Appearance.Tab.GradientFromColor := AColor;
|
|
SetPanelColor(pTabGradientFrom, AColor);
|
|
|
|
tbPreview.Appearance.Pane.GradientFromColor := AColor;
|
|
SetPanelColor(pPaneGradientFrom, AColor);
|
|
|
|
tbPreview.Appearance.Element.IdleGradientFromColor := AColor;
|
|
SetPanelColor(pItemIdleGradientFrom, AColor);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SetLinkedGradientKind(AKindIndex: integer);
|
|
var
|
|
Kind: TBackgroundKind;
|
|
begin
|
|
Kind := TBackgroundKind(AKindIndex);
|
|
|
|
tbPreview.Appearance.Tab.GradientType := Kind;
|
|
SetComboGradientKind(cbTabGradientKind, Kind);
|
|
|
|
tbPreview.Appearance.Pane.GradientType := Kind;
|
|
SetComboGradientKind(cbPaneGradientKind, Kind);
|
|
|
|
tbPreview.Appearance.Element.IdleGradientType := Kind;
|
|
SetComboGradientKind(cbItemIdleGradientKind, Kind);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SetLinkedGradientToColor(AColor: TColor);
|
|
begin
|
|
tbPreview.Appearance.Tab.GradientToColor := AColor;
|
|
SetPanelColor(pTabGradientTo, AColor);
|
|
|
|
tbPreview.Appearance.Pane.GradientToColor := AColor;
|
|
SetPanelColor(pPaneGradientTo, AColor);
|
|
|
|
tbPreview.Appearance.Element.IdleGradientToColor := AColor;
|
|
SetPanelColor(pItemIdleGradientTo, AColor);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SetPanelColor(Panel: TPanel; AColor: TColor);
|
|
begin
|
|
Panel.Color := AColor;
|
|
if Panel.Color <> AColor then
|
|
Showmessage('lipa!');
|
|
if (GetRValue(AColor) + GetGValue(AColor) + GetBValue(AColor)) div 3 >= 128 then
|
|
Panel.Font.Color := clBlack
|
|
else
|
|
Panel.Font.Color := clWhite;
|
|
Panel.Caption := '$' + IntToHex(AColor, 8);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SetPanelFont(Panel: TPanel; AFont: TFont);
|
|
begin
|
|
Panel.Font.Assign(AFont);
|
|
Panel.Caption := AFont.Name + ', ' + IntToStr(AFont.Size);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bTabBorderColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pTabFrame) then
|
|
begin
|
|
tbPreview.Appearance.Tab.BorderColor := pTabFrame.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pTabFrame.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bTabGradientFromColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pTabGradientFrom) then
|
|
begin
|
|
tbPreview.Appearance.Tab.GradientFromColor := pTabGradientFrom.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pTabGradientFrom.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bTabGradientToColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pTabGradientTo) then
|
|
begin
|
|
tbPreview.Appearance.Tab.GradientToColor := pTabGradientTo.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pTabGradientTo.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bCopyToClipboardClick(Sender: TObject);
|
|
begin
|
|
if mXML.Lines.Count > 0 then
|
|
Clipboard.AsText := mXML.Text;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bActiveTabHeaderFontColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pActiveTabHeaderFont) then
|
|
begin
|
|
tbPreview.Appearance.Tab.TabHeaderFont.Color := pActiveTabHeaderFont.Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bExportToPascalClick(Sender: TObject);
|
|
var
|
|
L: TStrings;
|
|
begin
|
|
L := TStringList.Create;
|
|
try
|
|
tbPreview.Appearance.SaveToPascal(L);
|
|
mXML.Clear;
|
|
mXML.Lines.Assign(L);
|
|
finally
|
|
L.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bExportToXMLClick(Sender: TObject);
|
|
var
|
|
Xml: TSpkXMLParser;
|
|
Node: TSpkXMLNode;
|
|
begin
|
|
XML:=TSpkXMLParser.Create;
|
|
try
|
|
Node := XML['Appearance', true];
|
|
tbPreview.Appearance.SaveToXML(Node);
|
|
mXML.Clear;
|
|
mXml.Text:=XML.Generate;
|
|
finally
|
|
XML.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bInactiveTabHeaderFontColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pInactiveTabHeaderFont) then
|
|
begin
|
|
tbPreview.Appearance.Tab.InactiveTabHeaderFontColor := pInactiveTabHeaderFont.Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemActiveCaptionColorClick(Sender: TObject
|
|
);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemActiveCaptionColor) then
|
|
tbPreview.Appearance.Element.ActiveCaptionColor := pItemActiveCaptionColor.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemActiveFrameColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemActiveFrame) then
|
|
tbPreview.Appearance.Element.ActiveFrameColor := pItemactiveFrame.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemActiveGradientFromColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemActiveGradientFrom) then
|
|
tbPreview.Appearance.Element.ActiveGradientFromColor := pItemActiveGradientFrom.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemActiveGradientToColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemActiveGradientTo) then
|
|
tbPreview.Appearance.Element.ActiveGradientToColor := pItemActiveGradientTo.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemActiveInnerDarkColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemActiveInnerDark) then
|
|
tbPreview.Appearance.Element.ActiveInnerDarkColor := pItemActiveInnerDark.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemActiveInnerLightColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemActiveInnerLight) then
|
|
tbPreview.Appearance.Element.ActiveInnerLightColor := pItemActiveInnerLight.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemHotTrackCaptionColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemHotTrackCaptionColor) then
|
|
tbPreview.Appearance.Element.HotTrackCaptionColor := pItemHotTrackCaptionColor.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemHotTrackFrameColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemHotTrackFrame) then
|
|
tbPreview.Appearance.Element.HotTrackFrameColor := pItemHotTrackFrame.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemHotTrackGradientFromColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemHotTrackGradientFrom) then
|
|
tbPreview.Appearance.Element.HotTrackGradientFromColor := pItemHotTrackGradientFrom.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemHotTrackGradientToColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemHotTrackGradientTo) then
|
|
tbPreview.Appearance.Element.HotTrackGradientToColor := pItemHotTrackGradientTo.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemHotTrackInnerDarkColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemHotTrackInnerDark) then
|
|
tbPreview.Appearance.Element.HotTrackInnerDarkColor := pItemHotTrackInnerDark.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemHotTrackInnerLightColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemHotTrackInnerLight) then
|
|
tbPreview.Appearance.Element.HotTrackInnerLightColor := pItemHotTrackInnerLight.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemIdleCaptionColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemIdleCaptionColor) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleCaptionColor := pItemIdleCaptionColor.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pItemIdleCaptionColor.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemIdleFrameColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemIdleFrame) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleFrameColor := pItemIdleFrame.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pItemIdleFrame.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemIdleGradientFromColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemIdleGradientFrom) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleGradientFromColor := pItemIdleGradientFrom.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pItemIdleGradientFrom.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemIdleGradientToColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemIdleGradientTo) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleGradientToColor := pItemIdleGradientTo.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pItemIdleGradientTo.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemIdleInnerDarkColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemIdleInnerDark) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleInnerDarkColor := pItemIdleInnerDark.Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor(pItemIdleInnerDark.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bItemIdleInnerLightColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pItemIdleInnerLight) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleInnerLightColor := pItemIdleInnerLight.Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedFrameColor(pItemIdleInnerLight.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bPaneBorderDarkColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pPaneBorderDark) then
|
|
begin
|
|
tbPreview.Appearance.Pane.BorderDarkColor := pPaneBorderDark.Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedFrameColor(pPaneBorderDark.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bPaneBorderLightColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pPaneBorderLight) then
|
|
begin
|
|
tbPreview.Appearance.Pane.BorderLightColor := pPaneBorderLight.Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedFrameColor(pPaneBorderLight.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bPaneCaptionBackgroundColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pPaneCaptionBackground) then
|
|
tbPreview.Appearance.Pane.CaptionBgColor := pPaneCaptionBackground.Color;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bPaneCaptionFontColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pPaneCaptionFontColor) then
|
|
begin
|
|
tbPreview.Appearance.Pane.CaptionFont.Color := pPaneCaptionFontColor.Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bPaneGradientFromColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pPaneGradientFrom) then
|
|
begin
|
|
tbPreview.Appearance.Pane.GradientFromColor := pPaneGradientFrom.Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedFrameColor(pPaneGradientFrom.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bPaneGradientToColorClick(Sender: TObject);
|
|
begin
|
|
(Sender as TSpeedButton).Down := true;
|
|
if PickColor(pPaneGradientTo) then
|
|
begin
|
|
tbPreview.Appearance.Pane.GradientToColor := pPaneGradientTo.Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedFrameColor(pPaneGradientTo.Color)
|
|
end;
|
|
(Sender as TSpeedButton).Down := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.SwitchAttributesLink(const Value: boolean);
|
|
begin
|
|
cbLinkTab.checked := Value;
|
|
cbLinkPane.Checked := Value;
|
|
cbLinkItem.Checked := Value;
|
|
|
|
sTabRectangle.Visible := Value;
|
|
sPaneRectangle.Visible := Value;
|
|
sItemRectangle.Visible := Value;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbItemHottrackGradientKindChange(Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Element do
|
|
HotTrackGradientType := TBackgroundKind((Sender as TCombobox).ItemIndex);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbItemIdleGradientKindChange(Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Element do
|
|
IdleGradientType := TBackgroundKind((Sender as TCombobox).ItemIndex);
|
|
if cbLinkItem.Checked then
|
|
SetLinkedGradientKind((Sender as TComboBox).ItemIndex);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbItemStyleChange(Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Element do
|
|
Style := TSpkElementStyle((Sender as TCombobox).ItemIndex);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbLinkItemClick(Sender: TObject);
|
|
begin
|
|
SwitchAttributesLink(cbLinkItem.Checked);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbLinkPaneClick(Sender: TObject);
|
|
begin
|
|
SwitchAttributesLink(cbLinkPane.Checked);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbLinkTabClick(Sender: TObject);
|
|
begin
|
|
SwitchAttributesLink(cbLinkTab.Checked);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbTabGradientKindChange(Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Tab do
|
|
GradientType := TBackgroundKind((Sender as TCombobox).ItemIndex);
|
|
if cbLinkTab.Checked then
|
|
SetLinkedGradientKind((Sender as TComboBox).ItemIndex);
|
|
end;
|
|
|
|
function TfrmAppearanceEditWindow.ChangeColor(Panel: TPanel): boolean;
|
|
begin
|
|
cdColorDialog.Color := Panel.Color;
|
|
if cdColorDialog.Execute then
|
|
begin
|
|
SetPanelColor(Panel, cdColorDialog.Color);
|
|
Result := true
|
|
end
|
|
else
|
|
Result := false;
|
|
end;
|
|
|
|
function TfrmAppearanceEditWindow.ChangeFont(Panel: TPanel): boolean;
|
|
begin
|
|
fdFontDialog.Font.Assign(Panel.Font);
|
|
if fdFontDialog.Execute then
|
|
begin
|
|
SetPanelFont(Panel, fdFontDialog.Font);
|
|
Result := true;
|
|
end
|
|
else
|
|
Result := false;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.edItemHotTrackBrightnessChangeChange(
|
|
Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Element do
|
|
HotTrackBrightnessChange := (Sender as TSpinEdit).Value;
|
|
tbPreview.Invalidate;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.edPaneHotTrackBrightnessChangeChange(
|
|
Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Pane do
|
|
HotTrackBrightnessChange := (Sender as TSpinEdit).Value;
|
|
tbPreview.Invalidate;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.FormActivate(Sender: TObject);
|
|
begin
|
|
UpdateImages;
|
|
UpdateSizes;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.FormCloseQuery(Sender: TObject;
|
|
var CanClose: boolean);
|
|
begin
|
|
if CanClose then CurrPageIndex := PageControl1.PageIndex;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.FormCreate(Sender: TObject);
|
|
begin
|
|
PageControl1.PageIndex := CurrPageIndex;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.FormShow(Sender: TObject);
|
|
begin
|
|
LoadAppearance(tbPreview.Appearance);
|
|
end;
|
|
|
|
function TfrmAppearanceEditWindow.GetAppearance: TSpkToolbarAppearance;
|
|
begin
|
|
result := tbPreview.Appearance;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.LbAppearanceStyleClick(Sender: TObject);
|
|
begin
|
|
tbPreview.Appearance.Reset(TSpkStyle(LbAppearanceStyle.ItemIndex));
|
|
LoadAppearance(tbPreview.Appearance);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.LoadAppearance(AAppearance: TSpkToolbarAppearance);
|
|
begin
|
|
with AAppearance do
|
|
begin
|
|
with Tab do
|
|
begin
|
|
SetPanelColor(pTabFrame, BorderColor);
|
|
SetPanelColor(pTabGradientFrom, GradientFromColor);
|
|
SetPanelColor(pTabGradientTo, GradientToColor);
|
|
SetComboGradientKind(cbTabGradientKind, GradientType);
|
|
SetPanelFont(pTabHeaderFont, TabHeaderFont);
|
|
SetPanelColor(pActiveTabHeaderFont, TabHeaderFont.Color);
|
|
SetPanelColor(pInactiveTabHeaderFont, InactiveTabHeaderFontColor);
|
|
end;
|
|
|
|
with Pane do
|
|
begin
|
|
SetPanelColor(pPaneBorderDark, BorderDarkColor);
|
|
SetPanelColor(pPaneBorderLight, BorderLightColor);
|
|
SetPanelColor(pPaneGradientFrom, GradientFromColor);
|
|
SetPanelColor(pPaneGradientTo, GradientToColor);
|
|
SetComboGradientKind(cbPaneGradientKind, GradientType);
|
|
SetPanelColor(pPaneCaptionBackground, CaptionBgColor);
|
|
SetPanelFont(pPaneCaptionFont, CaptionFont);
|
|
SetPanelColor(pPaneCaptionFontColor, CaptionFont.Color);
|
|
cbPaneStyle.ItemIndex := ord(Style);
|
|
edPaneHotTrackBrightnessChange.Value := HotTrackBrightnessChange;
|
|
end;
|
|
|
|
with Element do
|
|
begin
|
|
SetPanelFont(pItemFont, CaptionFont);
|
|
|
|
SetPanelColor(pItemIdleFrame, IdleFrameColor);
|
|
SetPanelColor(pItemIdleGradientFrom, IdleGradientFromColor);
|
|
SetPanelColor(pItemIdleGradientTo, IdleGradientToColor);
|
|
SetComboGradientKind(cbItemIdleGradientKind, IdleGradientType);
|
|
SetPanelColor(pItemIdleCaptionColor, IdleCaptionColor);
|
|
SetPanelColor(pItemIdleInnerDark, IdleInnerDarkColor);
|
|
SetPanelColor(pItemIdleInnerLight, IdleInnerLightColor);
|
|
|
|
SetPanelColor(pItemHottrackFrame, HottrackFrameColor);
|
|
SetPanelColor(pItemHottrackGradientFrom, HottrackGradientFromColor);
|
|
SetPanelColor(pItemHottrackGradientTo, HottrackGradientToColor);
|
|
SetComboGradientKind(cbItemHottrackGradientKind, HottrackGradientType);
|
|
SetPanelColor(pItemHottrackCaptionColor, HottrackCaptionColor);
|
|
SetPanelColor(pItemHottrackInnerDark, HottrackInnerDarkColor);
|
|
SetPanelColor(pItemHottrackInnerLight, HottrackInnerLightColor);
|
|
|
|
SetPanelColor(pItemActiveFrame, ActiveFrameColor);
|
|
SetPanelColor(pItemActiveGradientFrom, ActiveGradientFromColor);
|
|
SetPanelColor(pItemActiveGradientTo, ActiveGradientToColor);
|
|
SetComboGradientKind(cbItemActiveGradientKind, ActiveGradientType);
|
|
SetPanelColor(pItemActiveCaptionColor, ActiveCaptionColor);
|
|
SetPanelColor(pItemActiveInnerDark, ActiveInnerDarkColor);
|
|
SetPanelColor(pItemActiveInnerLight, ActiveInnerLightColor);
|
|
|
|
cbItemStyle.ItemIndex := ord(Style);
|
|
edItemHotTrackBrightnessChange.Value := HotTrackBrightnessChange;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemActiveCaptionColorClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then begin
|
|
tbPreview.Appearance.Element.ActiveCaptionColor:=(Sender as TPanel).Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemActiveFrameClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.ActiveFrameColor:=(Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemActiveGradientFromClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.ActiveGradientFromColor:=(Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bImportClick(Sender: TObject);
|
|
var
|
|
XML: TSpkXMLParser;
|
|
Node: TSpkXMLNode;
|
|
begin
|
|
tbPreview.BeginUpdate;
|
|
XML := TSpkXMLParser.Create;
|
|
try
|
|
XML.Parse(PChar(mXML.text));
|
|
Node := XML['Appearance', false];
|
|
if assigned(Node) then
|
|
tbPreview.Appearance.LoadFromXML(Node);
|
|
LoadAppearance(tbPreview.Appearance);
|
|
finally
|
|
XML.Free;
|
|
tbPreview.EndUpdate;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.bResetClick(Sender: TObject);
|
|
begin
|
|
tbPreview.Appearance.Reset;
|
|
LoadAppearance(tbPreview.Appearance);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbItemActiveGradientKindChange(Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Element do
|
|
ActiveGradientType := TBackgroundKind((Sender as TCombobox).ItemIndex);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemActiveGradientToClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.ActiveGradientToColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemActiveInnerDarkClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.ActiveInnerDarkColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemActiveInnerLightClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.ActiveInnerLightColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemHottrackCaptionColorClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Element.HotTrackCaptionColor := (Sender as TPanel).Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemHottrackFrameClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.HotTrackFrameColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemHottrackGradientFromClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.HotTrackGradientFromColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemHottrackGradientToClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.HotTrackGradientToColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemHottrackInnerDarkClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.HotTrackInnerDarkColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemHottrackInnerLightClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.HotTrackInnerLightColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemIdleCaptionColorClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleCaptionColor := (Sender as TPanel).Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemIdleFrameClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleFrameColor := (Sender as TPanel).Color;
|
|
if cbLinkItem.Checked then
|
|
SetLinkedFrameColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemIdleGradientFromClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleGradientFromColor := (Sender as TPanel).Color;
|
|
if cbLinkItem.Checked then
|
|
SetLinkedGradientFromColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemIdleGradientToClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Element.IdleGradientToColor := (Sender as TPanel).Color;
|
|
if cbLinkItem.Checked then
|
|
SetLinkedGradientToColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemIdleInnerDarkClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.IdleInnerDarkColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemIdleInnerLightClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.IdleInnerLightColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pItemFontClick(Sender: TObject);
|
|
begin
|
|
if ChangeFont(Sender as TPanel) then
|
|
tbPreview.Appearance.Element.CaptionFont.Assign((Sender as TPanel).Font);
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pPaneBorderDarkClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Pane.BorderDarkColor := (Sender as TPanel).Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedFrameColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pPaneBorderLightClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Pane.BorderLightColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pPaneCaptionBackgroundClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
tbPreview.Appearance.Pane.CaptionBgColor := (Sender as TPanel).Color;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pPaneCaptionFontClick(Sender: TObject);
|
|
begin
|
|
if ChangeFont(Sender as TPanel) then
|
|
tbPreview.Appearance.Pane.CaptionFont.Assign((Sender as TPanel).Font);
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pPaneCaptionFontColorClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Pane.CaptionFont.Color:=((Sender as TPanel).Color);
|
|
pPaneCaptionFont.Font.color:=((Sender as TPanel).Color);
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pPaneGradientFromClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Pane.GradientFromColor:=(Sender as TPanel).Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedGradientFromColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbPaneGradientKindChange(Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Pane do
|
|
GradientType := TBackgroundKind((Sender as TCombobox).ItemIndex);
|
|
if cbLinkPane.Checked then
|
|
SetLinkedGradientKind((Sender as TComboBox).ItemIndex);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.cbPaneStyleChange(Sender: TObject);
|
|
begin
|
|
with tbPreview.Appearance.Pane do
|
|
Style := TSpkPaneStyle((Sender as TCombobox).ItemIndex);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pPaneGradientToClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Pane.GradientToColor:=(Sender as TPanel).Color;
|
|
if cbLinkPane.Checked then
|
|
SetLinkedGradientToColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pTabFrameClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Tab.BorderColor:=(Sender as TPanel).Color;
|
|
if cbLinkTab.checked then
|
|
SetLinkedFrameColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pTabGradientFromClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Tab.GradientFromColor := (Sender as TPanel).Color;
|
|
if cbLinkTab.Checked then
|
|
SetLinkedGradientFromColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pTabGradientToClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Tab.GradientToColor := (Sender as TPanel).Color;
|
|
if cbLinkTab.Checked then
|
|
SetLinkedGradientToColor((Sender as TPanel).Color);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pTabHeaderFontClick(Sender: TObject);
|
|
begin
|
|
if ChangeFont(Sender as TPanel) then begin
|
|
tbPreview.Appearance.Tab.TabHeaderFont.Assign((Sender as TPanel).Font);
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pActiveTabHeaderFontClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Tab.TabHeaderFont.Color := (Sender as TPanel).Color;
|
|
pTabHeaderFont.Font.Color := (Sender as TPanel).Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.pInactiveTabHeaderFontClick(Sender: TObject);
|
|
begin
|
|
if ChangeColor(Sender as TPanel) then
|
|
begin
|
|
tbPreview.Appearance.Tab.InactiveTabHeaderFontColor := (Sender as TPanel).Color;
|
|
tbPreview.ForceRepaint;
|
|
end;
|
|
end;
|
|
|
|
function TfrmAppearanceEditWindow.PickColor(APanel: TPanel): Boolean;
|
|
var
|
|
screenDC: HDC;
|
|
cvOrigin: TPoint;
|
|
rgbOrigin: TPoint;
|
|
P: TPoint;
|
|
img: TImage;
|
|
begin
|
|
FScreenshotForm := TForm.Create(self);
|
|
FScreenBitmap := TBitmap.Create;
|
|
try
|
|
screenDC := GetDC(0);
|
|
try
|
|
FScreenBitmap.LoadFromDevice(ScreenDC);
|
|
finally
|
|
ReleaseDC(0, screenDC);
|
|
end;
|
|
|
|
FScreenshotForm.BorderStyle := bsNone;
|
|
FScreenshotForm.FormStyle := fsStayOnTop;
|
|
FScreenshotForm.SetBounds(0, 0, Screen.Width, Screen.Height);
|
|
|
|
img := TImage.Create(FScreenshotForm);
|
|
img.Picture.Bitmap := FScreenBitmap;
|
|
img.Parent := FScreenshotForm;
|
|
img.Align := alClient;
|
|
|
|
cvOrigin := ColorView.BoundsRect.TopLeft;
|
|
P := ColorView.ClientToScreen(Point(0, 0));
|
|
ColorView.Parent := FScreenshotForm;
|
|
ColorView.Top := P.Y;
|
|
ColorView.Left := P.X;
|
|
ColorView.Show;
|
|
|
|
rgbOrigin := LblRGB.BoundsRect.TopLeft;
|
|
P := LblRGB.ClientToScreen(Point(0, 0));
|
|
LblRGB.Parent := FScreenshotForm;
|
|
LblRGB.Top := P.Y;
|
|
LblRGB.Left := P.X;
|
|
LblRGB.Show;
|
|
|
|
// Screen.Cursors[1] := LoadCursorFromLazarusResource('picker');
|
|
FScreenshotForm.Cursor := crCross; //1;
|
|
img.Cursor := crCross; //1;
|
|
|
|
FScreenshotForm.OnKeyDown := ScreenshotKeyDown;
|
|
img.OnMouseUp := ScreenshotMouseUp;
|
|
img.OnMouseDown := ScreenshotMouseDown;
|
|
img.OnMouseMove := ScreenshotMouseMove;
|
|
|
|
Result := FScreenshotForm.ShowModal = mrOK;
|
|
if Result then
|
|
SetPanelColor(APanel, ColorView.Brush.Color);
|
|
|
|
ColorView.Hide;
|
|
ColorView.Top := cvOrigin.Y;
|
|
ColorView.Left := cvOrigin.X;
|
|
ColorView.Parent := ButtonPanel;
|
|
|
|
LblRGB.Hide;
|
|
LblRGB.Top := rgbOrigin.Y;
|
|
LblRGB.Left := rgbOrigin.X;
|
|
LblRGB.Parent := ButtonPanel;
|
|
|
|
finally
|
|
FScreenshotForm.Free;
|
|
FScreenBitmap.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.ScreenshotKeyDown(Sender: TObject;
|
|
var Key: Word; Shift: TShiftState);
|
|
begin
|
|
case Key of
|
|
VK_ESCAPE: FScreenshotForm.ModalResult := mrCancel;
|
|
VK_RETURN: FScreenshotForm.ModalResult := mrOK;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.ScreenshotMouseDown(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: integer);
|
|
begin
|
|
ColorView.Brush.Color := FScreenBitmap.Canvas.Pixels[X, Y];
|
|
LblRGB.Caption := '$' + IntToHex(ColorView.Brush.Color, 8);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.ScreenshotMouseMove(Sender: TObject;
|
|
Shift: TShiftState; X, Y: integer);
|
|
begin
|
|
ColorView.Brush.Color := FScreenBitmap.Canvas.Pixels[X, Y];
|
|
LblRGB.Caption := '$' + IntToHex(ColorView.Brush.Color, 8);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.ScreenshotMouseUp(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: integer);
|
|
begin
|
|
FScreenshotForm.ModalResult := mrOK;
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.UpdateImages;
|
|
var
|
|
imglist: TImageList;
|
|
m: double;
|
|
ico: TIcon;
|
|
w, h: Integer;
|
|
begin
|
|
// Use correct size of color picker icon
|
|
if ScreenInfo.PixelsPerInchY >= 180 then begin
|
|
imglist := Images_200;
|
|
m := 2.0;
|
|
end
|
|
else if ScreenInfo.PixelsPerInchY >= 135 then begin
|
|
imglist := Images_150;
|
|
m := 1.5;
|
|
end
|
|
else begin
|
|
imglist := Images_100;
|
|
m := 1.0;
|
|
end;
|
|
|
|
ico := TIcon.Create;
|
|
try
|
|
ico.Assign(Application.Icon);
|
|
w := round(LargeImages.Width * m);
|
|
h := round(LargeImages.Height * m);
|
|
ico.Current := ico.GetBestIndexForSize(Size(w, h));
|
|
LargeImages.Width := ico.Width;
|
|
LargeImages.Height := ico.Height;
|
|
LargeImages.AddIcon(ico);
|
|
|
|
w := round(SmallImages.Width * m);
|
|
h := round(SmallImages.Height * m);
|
|
ico.Current := ico.GetBestIndexForSize(Size(w, h));
|
|
SmallImages.Width := ico.Width;
|
|
SmallImages.Height := ico.Height;
|
|
SmallImages.AddIcon(ico);
|
|
finally
|
|
ico.Free;
|
|
end;
|
|
|
|
imglist.GetBitmap(0, bTabFrameColor.Glyph);
|
|
imglist.GetBitmap(0, bTabGradientFromColor.Glyph);
|
|
imglist.GetBitmap(0, bTabGradientToColor.Glyph);
|
|
imglist.GetBitmap(0, bActiveTabHeaderFontColor.Glyph);
|
|
imglist.GetBitmap(0, bInactiveTabHeaderFontColor.Glyph);
|
|
|
|
imglist.GetBitmap(0, bPaneBorderDarkColor.Glyph);
|
|
imglist.GetBitmap(0, bPaneBorderLightColor.Glyph);
|
|
imglist.GetBitmap(0, bPaneGradientFromColor.Glyph);
|
|
imglist.GetBitmap(0, bPaneGradientToColor.Glyph);
|
|
imglist.GetBitmap(0, bPaneCaptionBackgroundColor.Glyph);
|
|
imglist.GetBitmap(0, bPaneCaptionFontColor.Glyph);
|
|
|
|
imglist.GetBitmap(0, bItemIdleCaptionColor.Glyph);
|
|
imglist.GetBitmap(0, bItemIdleFrameColor.Glyph);
|
|
imglist.GetBitmap(0, bItemIdleGradientFromColor.Glyph);
|
|
imglist.GetBitmap(0, bItemIdleGradientToColor.Glyph);
|
|
imglist.GetBitmap(0, bItemIdleInnerDarkColor.Glyph);
|
|
imglist.GetBitmap(0, bItemIdleInnerLightColor.Glyph);
|
|
|
|
imglist.GetBitmap(0, bItemHotTrackCaptionColor.Glyph);
|
|
imglist.GetBitmap(0, bItemHotTrackFrameColor.Glyph);
|
|
imglist.GetBitmap(0, bItemHotTrackGradientFromColor.Glyph);
|
|
imglist.GetBitmap(0, bItemHotTrackGradientToColor.Glyph);
|
|
imglist.GetBitmap(0, bItemHotTrackInnerDarkColor.Glyph);
|
|
imglist.GetBitmap(0, bItemHotTrackInnerLightColor.Glyph);
|
|
|
|
imglist.GetBitmap(0, bItemActiveCaptionColor.Glyph);
|
|
imglist.GetBitmap(0, bItemActiveFrameColor.Glyph);
|
|
imglist.GetBitmap(0, bItemActiveGradientFromColor.Glyph);
|
|
imglist.GetBitmap(0, bItemActiveGradientToColor.Glyph);
|
|
imglist.GetBitmap(0, bItemActiveInnerDarkColor.Glyph);
|
|
imglist.GetBitmap(0, bItemActiveInnerLightColor.Glyph);
|
|
end;
|
|
|
|
procedure TfrmAppearanceEditWindow.UpdateSizes;
|
|
var
|
|
w, h: Integer;
|
|
|
|
procedure AddToHeight(var AHeight: Integer; AControl: TControl);
|
|
begin
|
|
inc(AHeight, AControl.Height);
|
|
with AControl.BorderSpacing do
|
|
inc(AHeight, Top + Bottom + Around);
|
|
end;
|
|
|
|
begin
|
|
// Update layout of controls
|
|
bOK.AutoSize := false;
|
|
bOK.Width := bCancel.Width;
|
|
|
|
ColorView.Width := ColorView.Height;
|
|
|
|
h := CbTabGradientKind.Height;
|
|
{$IF lcl_fullversion < 1080000}
|
|
w := SpkScaleX(pTabFrame.Width, 96);
|
|
{$ELSE}
|
|
w := pTabFrame.Width;
|
|
{$ENDIF}
|
|
// h := SpkScaleY(pTabFrame.Height, 96);
|
|
|
|
pTabFrame.Width := w;
|
|
pTabFrame.Height := h;
|
|
pTabGradientFrom.Height := h;
|
|
pTabGradientTo.Height := h;
|
|
pActiveTabHeaderFont.Height := h;
|
|
pInactiveTabHeaderFont.Height := h;
|
|
pTabHeaderFont.Height := h;
|
|
|
|
pPaneBorderDark.Width := w;
|
|
pPaneBorderDark.Height := h;
|
|
pPaneBorderLight.Height := h;
|
|
pPaneGradientFrom.Height := h;
|
|
pPaneGradientTo.Height := h;
|
|
pPaneCaptionBackground.Height := h;
|
|
pPaneCaptionFontColor.Height := h;
|
|
pPaneCaptionFont.Height := h;
|
|
|
|
pItemIdleFrame.Width := w;
|
|
pItemHotTrackFrame.Width := w;
|
|
pItemActiveFrame.Width := w;
|
|
pItemIdleFrame.Height := h;
|
|
pItemIdleGradientFrom.Height := h;
|
|
pItemIdleGradientTo.Height := h;
|
|
pItemIdleCaptionColor.Height := h;
|
|
pItemIdleInnerDark.Height := h;
|
|
pItemIdleInnerLight.Height := h;
|
|
pItemFont.Height := h;
|
|
|
|
// TabSheet2 requires the largest height
|
|
h := Height - TabSheet2.ClientHeight; // This is the height outside the tabsheet
|
|
// Add the heights of all controls
|
|
AddToHeight(h, cbLinkPane);
|
|
AddToHeight(h, pPaneBorderDark);
|
|
AddToHeight(h, pPaneBorderLight);
|
|
AddToHeight(h, pPaneGradientFrom);
|
|
AddToHeight(h, pPaneGradientTo);
|
|
AddToHeight(h, cbPaneGradientKind);
|
|
AddToHeight(h, pPaneCaptionBackground);
|
|
AddToHeight(h, edPaneHotTrackBrightnessChange);
|
|
AddToHeight(h, pPaneCaptionFontColor);
|
|
AddToHeight(h, pPaneCaptionFont);
|
|
AddToHeight(h, cbPaneStyle);
|
|
|
|
// Adjust width and height
|
|
{$IF lcl_fullversion < 1080000}
|
|
Width := SpkScaleX(Width, 96);
|
|
Height := SpkScaleY(Height, 96);
|
|
// Height := h;
|
|
{$ENDIF}
|
|
(*
|
|
Constraints.MinHeight := h;
|
|
Height := 0; *)
|
|
|
|
Position := poScreenCenter;
|
|
end;
|
|
|
|
|
|
end.
|
|
|
|
|