mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 19:39:30 +02:00
Separates gtk1 and gtk2 TTrackBar
git-svn-id: trunk@14865 -
This commit is contained in:
parent
8c7962a98b
commit
3b3a8da73c
@ -29,16 +29,15 @@ interface
|
|||||||
uses
|
uses
|
||||||
// libs
|
// libs
|
||||||
GLib2, Gtk2, Gdk2, Gdk2pixbuf,
|
GLib2, Gtk2, Gdk2, Gdk2pixbuf,
|
||||||
// LCL
|
// RTL, FCL, LCL
|
||||||
ComCtrls, Classes, FPCAdds, LCLType, LMessages, Controls, Graphics,
|
ComCtrls, Classes, FPCAdds, LCLType, LMessages, Controls, Graphics,
|
||||||
StdCtrls, LCLProc, ImgList, Math, Sysutils,
|
StdCtrls, LCLProc, ImgList, Math, Sysutils, InterfaceBase,
|
||||||
// widgetset
|
// widgetset
|
||||||
WSComCtrls, WSLCLClasses, WSControls, WSProc,
|
WSComCtrls, WSLCLClasses, WSControls, WSProc,
|
||||||
// GtkWidgetset
|
// GtkWidgetset
|
||||||
GtkWSComCtrls,
|
GtkWSComCtrls, GtkWSControls, GtkDef, GtkProc,
|
||||||
GtkWSControls,
|
// Gtk2Widgetset
|
||||||
// interface
|
Gtk2WSControls, Gtk2Int;
|
||||||
GtkDef, GtkProc;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
// For simplified manipulation
|
// For simplified manipulation
|
||||||
@ -207,10 +206,13 @@ type
|
|||||||
|
|
||||||
{ TGtk2WSTrackBar }
|
{ TGtk2WSTrackBar }
|
||||||
|
|
||||||
TGtk2WSTrackBar = class(TGtkWSTrackBar)
|
TGtk2WSTrackBar = class(TWSTrackBar)
|
||||||
private
|
private
|
||||||
protected
|
protected
|
||||||
|
class procedure SetCallbacks(const AWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual;
|
||||||
public
|
public
|
||||||
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||||
|
class procedure ApplyChanges(const ATrackBar: TCustomTrackBar); override;
|
||||||
class function GetPosition(const ATrackBar: TCustomTrackBar): integer; override;
|
class function GetPosition(const ATrackBar: TCustomTrackBar): integer; override;
|
||||||
class procedure SetPosition(const ATrackBar: TCustomTrackBar; const NewPosition: integer); override;
|
class procedure SetPosition(const ATrackBar: TCustomTrackBar; const NewPosition: integer); override;
|
||||||
end;
|
end;
|
||||||
@ -257,6 +259,72 @@ end;
|
|||||||
|
|
||||||
{ TGtk2WSTrackBar }
|
{ TGtk2WSTrackBar }
|
||||||
|
|
||||||
|
class procedure TGtk2WSTrackBar.SetCallbacks(const AWidget: PGtkWidget;
|
||||||
|
const AWidgetInfo: PWidgetInfo);
|
||||||
|
begin
|
||||||
|
TGtk2WSWinControl.SetCallbacks(PGtkObject(AWidget), TComponent(AWidgetInfo^.LCLObject));
|
||||||
|
TGtk2Widgetset(WidgetSet).SetCallback(LM_CHANGED, PGtkObject(AWidget), AWidgetInfo^.LCLObject);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TGtk2WSTrackBar.CreateHandle(const AWinControl: TWinControl;
|
||||||
|
const AParams: TCreateParams): TLCLIntfHandle;
|
||||||
|
var
|
||||||
|
Adjustment: PGtkAdjustment;
|
||||||
|
Widget: PGtkWidget;
|
||||||
|
WidgetInfo: PWidgetInfo;
|
||||||
|
begin
|
||||||
|
with TCustomTrackBar(AWinControl) do
|
||||||
|
begin
|
||||||
|
Adjustment := PGtkAdjustment(gtk_adjustment_new (Position, Min, Max,
|
||||||
|
linesize, pagesize, 1));
|
||||||
|
if (Orientation = trHorizontal) then
|
||||||
|
Widget := gtk_hscale_new(Adjustment)
|
||||||
|
else
|
||||||
|
Widget := gtk_vscale_new(Adjustment);
|
||||||
|
// gtk_scale_set_digits(PGtkScale(Widget), 0);
|
||||||
|
end;
|
||||||
|
Result := TLCLIntfHandle(PtrUInt(Widget));
|
||||||
|
{$IFDEF DebugLCLComponents}
|
||||||
|
DebugGtkWidgets.MarkCreated(Widget, dbgsName(AWinControl));
|
||||||
|
{$ENDIF}
|
||||||
|
WidgetInfo := CreateWidgetInfo(Pointer(Result), AWinControl, AParams);
|
||||||
|
Set_RC_Name(AWinControl, Widget);
|
||||||
|
SetCallbacks(Widget, WidgetInfo);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class procedure TGtk2WSTrackBar.ApplyChanges(const ATrackBar: TCustomTrackBar);
|
||||||
|
var
|
||||||
|
wHandle: HWND;
|
||||||
|
Adjustment: PGtkAdjustment;
|
||||||
|
begin
|
||||||
|
with ATrackBar do
|
||||||
|
begin
|
||||||
|
wHandle := Handle;
|
||||||
|
Adjustment := gtk_range_get_adjustment (GTK_RANGE(Pointer(wHandle)));
|
||||||
|
Adjustment^.lower := Min;
|
||||||
|
Adjustment^.Upper := Max;
|
||||||
|
Adjustment^.Value := Position;
|
||||||
|
Adjustment^.step_increment := LineSize;
|
||||||
|
Adjustment^.page_increment := PageSize;
|
||||||
|
{ now do some of the more sophisticated features }
|
||||||
|
{ Hint: For some unknown reason we have to disable the draw_value first,
|
||||||
|
otherwise it's set always to true }
|
||||||
|
gtk_scale_set_draw_value (GTK_SCALE (Pointer(wHandle)), false);
|
||||||
|
|
||||||
|
if (TickStyle<>tsNone) then
|
||||||
|
begin
|
||||||
|
gtk_scale_set_draw_value (GTK_SCALE (Pointer(wHandle)), true);
|
||||||
|
case ScalePos of
|
||||||
|
trLeft : gtk_scale_set_value_pos (GTK_SCALE (Pointer(wHandle)), GTK_POS_LEFT);
|
||||||
|
trRight : gtk_scale_set_value_pos (GTK_SCALE (Pointer(wHandle)), GTK_POS_RIGHT);
|
||||||
|
trTop : gtk_scale_set_value_pos (GTK_SCALE (Pointer(wHandle)), GTK_POS_TOP);
|
||||||
|
trBottom: gtk_scale_set_value_pos (GTK_SCALE (Pointer(wHandle)), GTK_POS_BOTTOM);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
//Not here (Delphi compatibility): gtk_signal_emit_by_name (GTK_Object (Adjustment), 'value_changed');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
class function TGtk2WSTrackBar.GetPosition(const ATrackBar: TCustomTrackBar
|
class function TGtk2WSTrackBar.GetPosition(const ATrackBar: TCustomTrackBar
|
||||||
): integer;
|
): integer;
|
||||||
var
|
var
|
||||||
|
Loading…
Reference in New Issue
Block a user