#
Prev |  | Next

# socket

## Name

socket -- Container for embedding windows of other processes

## Synopsis

socket [`-option` `value`...]

## Screenshot

## Options

-plugID

  type: WindowID

  ID of the window to be embedded.

-onPlugAdded

  type: string (default: "")

  Tcl command which is executed if the plug window is added. Before evaluation the following percent strings are substituted: TABLE %% | % %w | widget name. TABLE

-onPlugRemoved

  Tcl command which is executed if the plug window is removed. Before evaluation the following percent strings are substituted: TABLE %% | % %w | widget name. TABLE

-visible

  type: boolean (default: 1)

  Whether or not the item is visible.

## Description

A socket can embed a window from another process using the XEMBED protocol. The GUI of the other process does not have to be written in GTK+ or Gnocl. Qt, Tcl/Tk or pure X should work just fine. If the other side uses Gnocl, it should use the plug widget. The plug widget can either be embedded by setting the -socketID option, or by setting the -plugID option of the socket.

## Commands

`id` delete

  Deletes the widget and the associated tcl command.

`id` configure [`-option` `value`...]

  Configures the widget. Option may have any of the values accepted on creation of the widget.

`id` getID

  Returns the window ID of the socket widget.

`id` getPlugID

  Returns the window ID of the plug widget.

## Example

    exec wish "$0" "$@"

    package require Gnocl
    wm state . withdrawn    ;# hide tk main window

    set box [gnocl::box -orientation vertical]
    gnocl::window -title "Socket" -child $box

    set menubar [gnocl::menuBar]
    set menu [gnocl::menu]
    $menu add [gnocl::menuItem -text "%#Quit" -onClicked exit]
    $menubar add [gnocl::menuItem -text "%__File" -submenu $menu]
    $box add $menubar -expand 0

    set socket [gnocl::socket]
    $box add $socket
    gnocl::update

    toplevel .embed -use [format "0x%x" [$socket getID]]
    button .embed.but -text "tk in Gnocl" -command {puts "Hello tk!"}
    pack .embed.but
    update
    wm minsize .embed [winfo reqwidth .embed] [winfo reqheight .embed]

results in

## See also

plug, `GtkSocket`

Prev | Home | Next
plug | Up | canvas