Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit TerminalCtrls;
- {$mode delphi}
- interface
- uses
- Classes, SysUtils, Controls, LCLType, LCLIntf, WSControls, WSLCLClasses,
- Gtk2, Gtk2Term;
- type
- TTerminal = class(TWinControl)
- end;
- implementation
- { TGtk2WSTerminal }
- type
- TGtk2WSTerminal = class(TWSWinControl)
- published
- class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
- class procedure DestroyHandle(const AWinControl: TWinControl); override;
- end;
- var
- Args: array[0..1] of PChar = ('/bin/bash', nil);
- class function TGtk2WSTerminal.CreateHandle(const AWinControl: TWinControl;
- const AParams: TCreateParams): TLCLIntfHandle;
- var
- Widget: PGtkWidget;
- begin
- Widget := vte_terminal_new;
- gtk_widget_set_uposition(Widget, AWinControl.Left, AWinControl.Top);
- gtk_widget_set_usize(Widget, AWinControl.Width, AWinControl.Height);
- gtk_widget_show_all(Widget);
- vte_terminal_fork_command_full(VTE_TERMINAL(Widget), VTE_PTY_DEFAULT,
- nil, @Args[0], nil, G_SPAWN_SEARCH_PATH, nil, nil, nil, nil);
- Result := TLCLIntfHandle(Widget);
- end;
- class procedure TGtk2WSTerminal.DestroyHandle(const AWinControl: TWinControl);
- begin
- gtk_widget_destroy(PGtkWidget(AWinControl.Handle));
- end;
- function RegisterTerminal: Boolean;
- begin
- RegisterWSComponent(TTerminal, TGtk2WSTerminal);
- Result := True;
- end;
- initialization
- RegisterTerminal;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement