1 unit gtk3wssplitter;
2 
3 {$mode objfpc}{$H+}
4 {$I gtk3defines.inc}
5 
6 interface
7 
8 uses
9   // LCL
10   LCLProc, ExtCtrls, Classes, Controls, SysUtils, types, Graphics, LCLType,
11   // widgetset
12   WSExtCtrls, WSLCLClasses, WSPairSplitter,
13   Gtk3WSControls,
14   PairSplitter;
15 
16 type
17 
18   { TGtk3WSPairSplitterSide }
19 
20   TGtk3WSPairSplitterSide = class(TWSPairSplitterSide)
21   published
CreateHandlenull22     class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
23   end;
24 
25   { TGtk3WSCustomPairSplitter }
26 
27   TGtk3WSCustomPairSplitter = class(TWSCustomPairSplitter)
28   published
CreateHandlenull29     class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
AddSidenull30     class function AddSide(ASplitter: TCustomPairSplitter; ASide: TPairSplitterSide; Side: integer): Boolean; override;
RemoveSidenull31     class function RemoveSide(ASplitter: TCustomPairSplitter; ASide: TPairSplitterSide; Side: integer): Boolean; override;
SetPositionnull32     class function SetPosition(ASplitter: TCustomPairSplitter; var NewPosition: integer): Boolean; override;
33     // special cursor handling
GetSplitterCursornull34     class function GetSplitterCursor(ASplitter: TCustomPairSplitter; var ACursor: TCursor): Boolean; override;
SetSplitterCursornull35     class function SetSplitterCursor(ASplitter: TCustomPairSplitter; ACursor: TCursor): Boolean; override;
36   end;
37 
38 implementation
39 uses
40   wsproc,gtk3widgets,lazgtk3;
41 
42 { TGtk3WSPairSplitterSide }
43 
TGtk3WSPairSplitterSide.CreateHandlenull44 class function TGtk3WSPairSplitterSide.CreateHandle(
45   const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
46 begin
47   Result:=TLclIntfHandle(TGtk3Window.Create(AWinControl, AParams));
48 end;
49 
50 { TGtk3WSSplitter }
51 
52 
53 { TGtk3WSCustomPairSplitter }
54 
TGtk3WSCustomPairSplitter.CreateHandlenull55 class function TGtk3WSCustomPairSplitter.CreateHandle(
56   const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
57 begin
58   Result:=TLclIntfHandle(TGtk3Paned.Create(AWinControl, AParams));
59 end;
60 
TGtk3WSCustomPairSplitter.AddSidenull61 class function TGtk3WSCustomPairSplitter.AddSide(ASplitter: TCustomPairSplitter;
62   ASide: TPairSplitterSide; Side: integer): Boolean;
63 var
64   paned: TGtk3Paned;
65   wside:TGtk3Widget;
66 begin
67   Result := False;
68   if not (WSCheckHandleAllocated(ASplitter, 'AddSide - splitter') and
69           WSCheckHandleAllocated(ASide, 'AddSide - side'))
70   then Exit;
71 
72   if (Side < 0) or (Side > 1) then exit;
73 
74   paned:=TGtk3Paned(ASplitter.Handle);
75   wside:=TGtk3Widget(ASide.Handle);
76 
77   if Side=0 then
78   begin
79     PGtkWIdget(wside.Widget)^.set_parent(nil);
80     PGtkPaned(paned.Widget)^.add1(wside.Widget);
81   end
82   else
83   begin
84     PGtkWidget(wside.Widget)^.set_parent(nil);
85   	PGtkPaned(paned.Widget)^.add2(wside.Widget);
86   end;
87   Result := True;
88 end;
89 
TGtk3WSCustomPairSplitter.RemoveSidenull90 class function TGtk3WSCustomPairSplitter.RemoveSide(ASplitter: TCustomPairSplitter;
91   ASide: TPairSplitterSide; Side: integer): Boolean;
92 begin
93   Result := False;
94 end;
95 
TGtk3WSCustomPairSplitter.SetPositionnull96 class function TGtk3WSCustomPairSplitter.SetPosition(
97   ASplitter: TCustomPairSplitter; var NewPosition: integer): Boolean;
98 var
99   paned:PGtkPaned;
100 begin
101   Result:=false;
102   if not WSCheckHandleAllocated(ASplitter, ClassName+'.SetPosition') then
103   	Exit;
104 
105   paned:=PGtkPaned(TGtk3Paned(ASplitter.Handle).Widget);
106   paned^.set_position(NewPosition);
107   Result:=true;
108   ///Result:=inherited SetPosition(ASplitter, NewPosition);
109 end;
110 
TGtk3WSCustomPairSplitter.GetSplitterCursornull111 class function TGtk3WSCustomPairSplitter.GetSplitterCursor(
112   ASplitter: TCustomPairSplitter; var ACursor: TCursor): Boolean;
113 begin
114   ACursor:=crHsplit;
115   Result:=true;
116 end;
117 
TGtk3WSCustomPairSplitter.SetSplitterCursornull118 class function TGtk3WSCustomPairSplitter.SetSplitterCursor(
119   ASplitter: TCustomPairSplitter; ACursor: TCursor): Boolean;
120 begin
121   //ASplitter.Cursor:=ACursor;
122   Result:=false;
123 end;
124 
125 
126 end.
127 
128