1. ----------------------------------------------------------------------- 
  2. --               GtkAda - Ada95 binding for Gtk+/Gnome               -- 
  3. --                                                                   -- 
  4. --                    Copyright (C) 2010-2013, AdaCore               -- 
  5. --                                                                   -- 
  6. -- This library is free software; you can redistribute it and/or     -- 
  7. -- modify it under the terms of the GNU General Public               -- 
  8. -- License as published by the Free Software Foundation; either      -- 
  9. -- version 2 of the License, or (at your option) any later version.  -- 
  10. --                                                                   -- 
  11. -- This library is distributed in the hope that it will be useful,   -- 
  12. -- but WITHOUT ANY WARRANTY; without even the implied warranty of    -- 
  13. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -- 
  14. -- General Public License for more details.                          -- 
  15. --                                                                   -- 
  16. -- You should have received a copy of the GNU General Public         -- 
  17. -- License along with this library; if not, write to the             -- 
  18. -- Free Software Foundation, Inc., 59 Temple Place - Suite 330,      -- 
  19. -- Boston, MA 02111-1307, USA.                                       -- 
  20. --                                                                   -- 
  21. -- As a special exception, if other files instantiate generics from  -- 
  22. -- this unit, or you link this unit with other files to produce an   -- 
  23. -- executable, this  unit  does not  by itself cause  the resulting  -- 
  24. -- executable to be covered by the GNU General Public License. This  -- 
  25. -- exception does not however invalidate any other reasons why the   -- 
  26. -- executable file  might be covered by the  GNU Public License.     -- 
  27. ----------------------------------------------------------------------- 
  28.  
  29. --  <description> 
  30. --  The "system tray" or notification area is normally used for transient icons 
  31. --  that indicate some special state. For example, a system tray icon might 
  32. --  appear to tell the user that they have new mail, or have an incoming 
  33. --  instant message, or something along those lines. The basic idea is that 
  34. --  creating an icon in the notification area is less annoying than popping up 
  35. --  a dialog. 
  36. -- 
  37. --  A Gtk_Status_Icon object can be used to display an icon in a "system tray". 
  38. --  The icon can have a tooltip, and the user can interact with it by 
  39. --  activating it or popping up a context menu. Critical information should not 
  40. --  solely be displayed in a Gtk_Status_Icon, since it may not be visible 
  41. --  (e.g. when the user doesn't have a notification area on his panel). This 
  42. --  can be checked with Is_Embedded. 
  43. -- 
  44. --  On X11, the implementation follows the freedesktop.org "System Tray" 
  45. --  specification. Implementations of the "tray" side of this specification can 
  46. --  be found e.g. in the GNOME and KDE panel applications. 
  47. -- 
  48. --  Note that a Gtk_Status_Icon is not a widget, but just a GObject. Making it 
  49. --  a widget would be impractical, since the system tray on Win32 doesn't allow 
  50. --  to embed arbitrary widgets. 
  51. --  </description> 
  52. --  <c_version>2.16.6</c_version> 
  53.  
  54. with Glib.G_Icon; 
  55. with Glib.Object; 
  56. with Glib.Properties; 
  57. with Gdk.Pixbuf; 
  58. with Gdk.Rectangle; 
  59. with Gdk.Screen; 
  60. with Gtk.Enums; 
  61. with Gtk.Image; 
  62.  
  63. package Gtk.Status_Icon is 
  64.  
  65.    type Gtk_Status_Icon_Record is new Glib.Object.GObject_Record with private; 
  66.    type Gtk_Status_Icon is access all Gtk_Status_Icon_Record'Class; 
  67.  
  68.    function Get_Type return GType; 
  69.  
  70.    procedure Gtk_New (Widget : out Gtk_Status_Icon); 
  71.    procedure Initialize (Widget : access Gtk_Status_Icon_Record'Class); 
  72.    --  Creates an empty status icon object. 
  73.  
  74.    function Get_Storage_Type 
  75.      (Status_Icon : access Gtk_Status_Icon_Record) 
  76.       return Gtk.Image.Gtk_Image_Type; 
  77.    --  Gets the type of representation being used by the Gtk_Status_Icon 
  78.    --  to store image data. If the Gtk_Status_Icon has no image data, 
  79.    --  the return value will be Image_Empty. 
  80.  
  81.    function Is_Embedded 
  82.      (Status_Icon : access Gtk_Status_Icon_Record) return Boolean; 
  83.    --  Returns whether the status icon is embedded in a notification 
  84.    --  area. 
  85.  
  86.    ---------- 
  87.    -- File -- 
  88.    ---------- 
  89.  
  90.    procedure Gtk_New_From_File 
  91.      (Widget   : out Gtk_Status_Icon; 
  92.       Filename : String); 
  93.    procedure Initialize_From_File 
  94.      (Widget   : access Gtk_Status_Icon_Record'Class; 
  95.       Filename : String); 
  96.    --  Creates a status icon displaying the file Filename. 
  97.    -- 
  98.    --  The image will be scaled down to fit in the available 
  99.    --  space in the notification area, if necessary. 
  100.  
  101.    procedure Set_From_File 
  102.      (Status_Icon : access Gtk_Status_Icon_Record; 
  103.       Filename    : String); 
  104.    --  Makes Status_Icon display the file Filename. 
  105.    --  See Gtk_New_From_File for details. 
  106.  
  107.    ------------ 
  108.    -- G_Icon -- 
  109.    ------------ 
  110.  
  111.    procedure Gtk_New_From_Gicon 
  112.      (Widget : out Gtk_Status_Icon; 
  113.       Icon   : Glib.G_Icon.G_Icon); 
  114.    procedure Initialize_From_Gicon 
  115.      (Widget : access Gtk_Status_Icon_Record'Class; 
  116.       Icon   : Glib.G_Icon.G_Icon); 
  117.    --  Creates a status icon displaying a G_Icon. If the icon is a 
  118.    --  themed icon, it will be updated when the theme changes. 
  119.  
  120.    function Get_Gicon 
  121.      (Status_Icon : access Gtk_Status_Icon_Record) return Glib.G_Icon.G_Icon; 
  122.    --  Retrieves the G_Icon being displayed by the Gtk_Status_Icon. 
  123.    --  The storage type of the status icon must be Image_Empty or 
  124.    --  Image_Gicon (see Get_Storage_Type). 
  125.    --  The caller of this function does not own a reference to the 
  126.    --  returned G_Icon. 
  127.    -- 
  128.    --  Status_Icon is left unchanged if this function fails.  Returns 
  129.    --  null if the image is empty. 
  130.  
  131.    procedure Set_From_Gicon 
  132.      (Status_Icon : access Gtk_Status_Icon_Record; 
  133.       Icon        : Glib.G_Icon.G_Icon); 
  134.    --  Makes Status_Icon display the G_Icon. 
  135.    --  See Gtk_New_From_G_Icon for details. 
  136.  
  137.    --------------- 
  138.    -- Icon_Name -- 
  139.    --------------- 
  140.  
  141.    procedure Gtk_New_From_Icon_Name 
  142.      (Widget    : out Gtk_Status_Icon; 
  143.       Icon_Name : String); 
  144.    procedure Initialize_From_Icon_Name 
  145.      (Widget    : access Gtk_Status_Icon_Record'Class; 
  146.       Icon_Name : String); 
  147.    --  Creates a status icon displaying an icon from the current icon theme. 
  148.    --  If the current icon theme is changed, the icon will be updated 
  149.    --  appropriately. 
  150.  
  151.    function Get_Icon_Name 
  152.      (Status_Icon : access Gtk_Status_Icon_Record) return String; 
  153.    --  Gets the name of the icon being displayed by the Gtk_Status_Icon. 
  154.    --  The storage type of the status icon must be Image_Empty or 
  155.    --  Image_Icon_Name (see Get_Storage_Type).  Returns "" if the image 
  156.    --  is empty. 
  157.  
  158.    procedure Set_From_Icon_Name 
  159.      (Status_Icon : access Gtk_Status_Icon_Record; 
  160.       Icon_Name   : String); 
  161.    --  Makes Status_Icon display the icon named Icon_Name from the 
  162.    --  current icon theme. 
  163.    --  See Gtk_New_From_Icon_Name for details. 
  164.  
  165.    ------------ 
  166.    -- Pixbuf -- 
  167.    ------------ 
  168.  
  169.    procedure Gtk_New_From_Pixbuf 
  170.      (Widget : out Gtk_Status_Icon; 
  171.       Pixbuf : Gdk.Pixbuf.Gdk_Pixbuf); 
  172.    procedure Initialize_From_Pixbuf 
  173.      (Widget : access Gtk_Status_Icon_Record'Class; 
  174.       Pixbuf : Gdk.Pixbuf.Gdk_Pixbuf); 
  175.    --  Creates a status icon displaying Pixbuf. 
  176.    -- 
  177.    --  The image will be scaled down to fit in the available 
  178.    --  space in the notification area, if necessary. 
  179.  
  180.    function Get_Pixbuf 
  181.      (Status_Icon : access Gtk_Status_Icon_Record) 
  182.       return Gdk.Pixbuf.Gdk_Pixbuf; 
  183.    --  Gets the Gdk_Pixbuf being displayed by the Gtk_Status_Icon. 
  184.    --  The storage type of the status icon must be Gtk_Image_Empty 
  185.    --  (in which case this function will return null) or Gtk_Image_Pixbuf 
  186.    --  (see Get_Storage_Type).  The caller of this function does not own 
  187.    --  a reference to the returned pixbuf. 
  188.  
  189.    procedure Set_From_Pixbuf 
  190.      (Status_Icon : access Gtk_Status_Icon_Record; 
  191.       Pixbuf      : Gdk.Pixbuf.Gdk_Pixbuf); 
  192.    --  Makes Status_Icon display Pixbuf. 
  193.    --  See Gtk_New_From_Pixbuf for details. 
  194.  
  195.    ----------- 
  196.    -- Stock -- 
  197.    ----------- 
  198.  
  199.    procedure Gtk_New_From_Stock 
  200.      (Widget   : out Gtk_Status_Icon; 
  201.       Stock_Id : String); 
  202.    procedure Initialize_From_Stock 
  203.      (Widget   : access Gtk_Status_Icon_Record'Class; 
  204.       Stock_Id : String); 
  205.    --  Creates a status icon displaying a stock icon. Sample stock icon 
  206.    --  names are "GTK_STOCK_OPEN", "GTK_STOCK_QUIT". You can register your 
  207.    --  own stock icon names, see Gtk.Icon_Factory.Add_Default and 
  208.    --  Gtk.Icon_Factory.Add. 
  209.  
  210.    function Get_Stock 
  211.      (Status_Icon : access Gtk_Status_Icon_Record) return String; 
  212.    --  Gets the id of the stock icon being displayed by the Gtk_Status_Icon. 
  213.    --  The storage type of the status icon must be Image_Empty or 
  214.    --  Image_Stock (see Get_Storage_Type).  Returns "" if the image is empty. 
  215.  
  216.    procedure Set_From_Stock 
  217.      (Status_Icon : access Gtk_Status_Icon_Record; 
  218.       Stock_Id    : String); 
  219.    --  Makes Status_Icon display the stock icon with the id Stock_Id. 
  220.    --  See Gtk_New_From_Stock for details. 
  221.  
  222.    -------------- 
  223.    -- Tooltips -- 
  224.    -------------- 
  225.  
  226.    function Get_Has_Tooltip 
  227.      (Status_Icon : access Gtk_Status_Icon_Record) return Boolean; 
  228.    procedure Set_Has_Tooltip 
  229.      (Status_Icon : access Gtk_Status_Icon_Record; 
  230.       Has_Tooltip : Boolean); 
  231.    --  Gets/Sets the has-tooltip property on Status_Icon. 
  232.    --  See has-tooltip for more information. 
  233.  
  234.    function Get_Tooltip_Markup 
  235.      (Status_Icon : access Gtk_Status_Icon_Record) return String; 
  236.    procedure Set_Tooltip_Markup 
  237.      (Status_Icon : access Gtk_Status_Icon_Record; 
  238.       Markup      : String); 
  239.    --  Gets/Sets Markup as the contents of the tooltip, which is marked up with 
  240.    --  the Pango text markup language.  "" means no tooltip. 
  241.    -- 
  242.    --  Set_Tooltip_Markup function will take care of setting has-tooltip to 
  243.    --  True and of the default handler for the query-tooltip signal. 
  244.    -- 
  245.    --  See also the tooltip-markup property. 
  246.  
  247.    function Get_Tooltip_Text 
  248.      (Status_Icon : access Gtk_Status_Icon_Record) return String; 
  249.    procedure Set_Tooltip_Text 
  250.      (Status_Icon : access Gtk_Status_Icon_Record; 
  251.       Text        : String); 
  252.    --  Gets/Sets the contents of the tooltip.  "" means no tooltip. 
  253.    -- 
  254.    --  This function will take care of setting has-tooltip to 
  255.    --  True and of the default handler for the query-tooltip 
  256.    --  signal. 
  257.    -- 
  258.    --  See also the tooltip-text property. 
  259.  
  260.    ------------- 
  261.    -- Display -- 
  262.    ------------- 
  263.  
  264.    procedure Get_Geometry 
  265.      (Status_Icon : access Gtk_Status_Icon_Record; 
  266.       Screen      : in out Gdk.Screen.Gdk_Screen; 
  267.       Area        : out Gdk.Rectangle.Gdk_Rectangle; 
  268.       Orientation : out Gtk.Enums.Gtk_Orientation; 
  269.       Success     : out Boolean); 
  270.    --  Status_Icon: a Gtk_Status_Icon 
  271.    --  Screen:      a valid Gdk_Screen or null if the information is not needed 
  272.    --  Area:        area occupied by the status icon 
  273.    --  Orientation: the orientation of the panel in which the status icon is 
  274.    --               embedded. A panel at the top or bottom of the screen is 
  275.    --               horizontal, a panel at the left or right is vertical. 
  276.    --  Success:     True if the location information has been filled in. 
  277.    -- 
  278.    --  Obtains information about the location of the status icon 
  279.    --  on screen. This information can be used to e.g. position 
  280.    --  popups like notification bubbles. 
  281.    -- 
  282.    --  See Position_Menu for a more convenient alternative for positioning 
  283.    --  menus. 
  284.    -- 
  285.    --  Note that some platforms do not allow GTK+ to provide 
  286.    --  this information, and even on platforms that do allow it, 
  287.    --  the information is not reliable unless the status icon 
  288.    --  is embedded in a notification area, see Is_Embedded. 
  289.  
  290.    function Get_Blinking 
  291.      (Status_Icon : access Gtk_Status_Icon_Record) return Boolean; 
  292.    procedure Set_Blinking 
  293.      (Status_Icon : access Gtk_Status_Icon_Record; 
  294.       Blinking    : Boolean); 
  295.    --  Makes the status icon start or stop blinking. 
  296.    --  Note that blinking user interface elements may be problematic 
  297.    --  for some users, and thus may be turned off, in which case 
  298.    --  this setting has no effect. 
  299.  
  300.    function Get_Screen 
  301.      (Status_Icon : access Gtk_Status_Icon_Record) 
  302.       return Gdk.Screen.Gdk_Screen; 
  303.    procedure Set_Screen 
  304.      (Status_Icon : access Gtk_Status_Icon_Record; 
  305.       Screen      : access Gdk.Screen.Gdk_Screen_Record'Class); 
  306.    --  Gets/Sets the Gdk_Screen where Status_Icon is displayed.  When invoking 
  307.    --  Set_Screen, if the icon is already mapped, it will be unmapped, and then 
  308.    --  remapped on the new screen. 
  309.  
  310.    function Get_Size (Status_Icon : access Gtk_Status_Icon_Record) return Gint; 
  311.    --  Gets the size in pixels that is available for the image. 
  312.    --  Stock icons and named icons adapt their size automatically 
  313.    --  if the size of the notification area changes. For other 
  314.    --  storage types, the size-changed signal can be used to 
  315.    --  react to size changes. 
  316.    -- 
  317.    --  Note that the returned size is only meaningful while the 
  318.    --  status icon is embedded (see Is_Embedded). 
  319.  
  320.    function Get_Visible 
  321.      (Status_Icon : access Gtk_Status_Icon_Record) return Boolean; 
  322.    procedure Set_Visible 
  323.      (Status_Icon : access Gtk_Status_Icon_Record; 
  324.       Visible     : Boolean); 
  325.    --  Whether the status icon is visible or not. 
  326.    --  Note that being visible does not guarantee that 
  327.    --  the user can actually see the icon, see also 
  328.    --  Is_Embedded. 
  329.  
  330.    function Get_X11_Window_Id 
  331.      (Status_Icon : access Gtk_Status_Icon_Record) return Guint32; 
  332.    --  This function is only useful on the X11/freedesktop.org platform. 
  333.    --  It returns a window ID for the widget in the underlying 
  334.    --  status icon implementation.  This is useful for the Galago 
  335.    --  notification service, which can send a window ID in the protocol 
  336.    --  in order for the server to position notification windows 
  337.    --  pointing to a status icon reliably. 
  338.    -- 
  339.    --  This function is not intended for other use cases which are 
  340.    --  more likely to be met by one of the non-X11 specific methods, such 
  341.    --  as Position_Menu. 
  342.  
  343.    procedure Position_Menu 
  344.      (Menu        : System.Address; 
  345.       X           : out Gint; 
  346.       Y           : out Gint; 
  347.       Push_In     : out Gboolean; 
  348.       Status_Icon : System.Address); 
  349.    --  Menu positioning function to use with Gtk.Menu.Popup to position 
  350.    --  Menu aligned to Status_Icon.  Pass Get_Object (Your_Status_Icon) as 
  351.    --  User_Data when calling Gtk.Menu.Popup. 
  352.  
  353.    ----------------- 
  354.    -- Obsolescent -- 
  355.    ----------------- 
  356.  
  357.    procedure Set_Tooltip 
  358.      (Status_Icon  : access Gtk_Status_Icon_Record; 
  359.       Tooltip_Text : String); 
  360.    pragma Obsolescent; --  Set_Tooltip 
  361.    --  Sets the tooltip of the status icon. 
  362.    -- 
  363.    --  Deprecated: 2.16: Use Set_Tooltip_Text instead. 
  364.  
  365.    ---------------- 
  366.    -- Properties -- 
  367.    ---------------- 
  368.  
  369.    --  <properties> 
  370.    --  Name:  Blinking_Property 
  371.    --  Type:  Boolean 
  372.    --  Descr: Whether or not the status icon is blinking 
  373.    -- 
  374.    --  Name:  Embedded_Property 
  375.    --  Type:  Boolean 
  376.    --  Descr: Whether or not the status icon is embedded 
  377.    -- 
  378.    --  Name:  File_Property 
  379.    --  Type:  String 
  380.    --  Descr: Filename to load and display 
  381.    -- 
  382.    --  Name:  Gicon_Property 
  383.    --  Type:  Object 
  384.    --  Descr: The GIcon being displayed 
  385.    -- 
  386.    --  Name:  Has_Tooltip_Property 
  387.    --  Type:  Boolean 
  388.    --  Descr: Whether this tray icon has a tooltip 
  389.    -- 
  390.    --  Name:  Icon_Name_Property 
  391.    --  Type:  String 
  392.    --  Descr: The name of the icon from the icon theme 
  393.    -- 
  394.    --  Name:  Orientation_Property 
  395.    --  Type:  Enum 
  396.    --  Descr: The orientation of the tray 
  397.    -- 
  398.    --  Name:  Pixbuf_Property 
  399.    --  Type:  Object 
  400.    --  Descr: A Gdk_Pixbuf to display 
  401.    -- 
  402.    --  Name:  Screen_Property 
  403.    --  Type:  Object 
  404.    --  Descr: The screen where this status icon will be displayed 
  405.    -- 
  406.    --  Name:  Size_Property 
  407.    --  Type:  Int 
  408.    --  Descr: The size of the icon 
  409.    -- 
  410.    --  Name:  Stock_Property 
  411.    --  Type:  String 
  412.    --  Descr: Stock ID for a stock image to display 
  413.    -- 
  414.    --  Name:  Storage_Type_Property 
  415.    --  Type:  Enum 
  416.    --  Descr: The representation being used for image data 
  417.    -- 
  418.    --  Name:  Tooltip_Markup_Property 
  419.    --  Type:  String 
  420.    --  Descr: The contents of the tooltip for this tray icon 
  421.    -- 
  422.    --  Name:  Tooltip_Text_Property 
  423.    --  Type:  String 
  424.    --  Descr: The contents of the tooltip for this widget 
  425.    -- 
  426.    --  Name:  Visible_Property 
  427.    --  Type:  Boolean 
  428.    --  Descr: Whether or not the status icon is visible 
  429.    -- 
  430.    --  </properties> 
  431.  
  432.    Blinking_Property       : constant Glib.Properties.Property_Boolean; 
  433.    Embedded_Property       : constant Glib.Properties.Property_Boolean; 
  434.    File_Property           : constant Glib.Properties.Property_String; 
  435.    Gicon_Property          : constant Glib.Properties.Property_Object; 
  436.    Has_Tooltip_Property    : constant Glib.Properties.Property_Boolean; 
  437.    Icon_Name_Property      : constant Glib.Properties.Property_String; 
  438.    Orientation_Property    : constant Glib.Properties.Property_Enum; 
  439.    Pixbuf_Property         : constant Glib.Properties.Property_Object; 
  440.    Screen_Property         : constant Glib.Properties.Property_Object; 
  441.    Size_Property           : constant Glib.Properties.Property_Int; 
  442.    Stock_Property          : constant Glib.Properties.Property_String; 
  443.    Storage_Type_Property   : constant Glib.Properties.Property_Enum; 
  444.    Tooltip_Markup_Property : constant Glib.Properties.Property_String; 
  445.    Tooltip_Text_Property   : constant Glib.Properties.Property_String; 
  446.    Visible_Property        : constant Glib.Properties.Property_Boolean; 
  447.  
  448. private 
  449.  
  450.    type Gtk_Status_Icon_Record is 
  451.      new Glib.Object.GObject_Record with null record; 
  452.  
  453.    Blinking_Property : constant Glib.Properties.Property_Boolean := 
  454.      Glib.Properties.Build ("blinking"); 
  455.    Embedded_Property : constant Glib.Properties.Property_Boolean := 
  456.      Glib.Properties.Build ("embedded"); 
  457.    File_Property : constant Glib.Properties.Property_String := 
  458.      Glib.Properties.Build ("file"); 
  459.    Gicon_Property : constant Glib.Properties.Property_Object := 
  460.      Glib.Properties.Build ("gicon"); 
  461.    Has_Tooltip_Property : constant Glib.Properties.Property_Boolean := 
  462.      Glib.Properties.Build ("has-tooltip"); 
  463.    Icon_Name_Property : constant Glib.Properties.Property_String := 
  464.      Glib.Properties.Build ("icon-name"); 
  465.    Orientation_Property : constant Glib.Properties.Property_Enum := 
  466.      Glib.Properties.Build ("orientation"); 
  467.    Pixbuf_Property : constant Glib.Properties.Property_Object := 
  468.      Glib.Properties.Build ("pixbuf"); 
  469.    Screen_Property : constant Glib.Properties.Property_Object := 
  470.      Glib.Properties.Build ("screen"); 
  471.    Size_Property : constant Glib.Properties.Property_Int := 
  472.      Glib.Properties.Build ("size"); 
  473.    Stock_Property : constant Glib.Properties.Property_String := 
  474.      Glib.Properties.Build ("stock"); 
  475.    Storage_Type_Property : constant Glib.Properties.Property_Enum := 
  476.      Glib.Properties.Build ("storage-type"); 
  477.    Tooltip_Markup_Property : constant Glib.Properties.Property_String := 
  478.      Glib.Properties.Build ("tooltip-markup"); 
  479.    Tooltip_Text_Property : constant Glib.Properties.Property_String := 
  480.      Glib.Properties.Build ("tooltip-text"); 
  481.    Visible_Property : constant Glib.Properties.Property_Boolean := 
  482.      Glib.Properties.Build ("visible"); 
  483.  
  484.    pragma Import (C, Get_Type, "gtk_status_icon_get_type"); 
  485.    pragma Import (C, Position_Menu, "gtk_status_icon_position_menu"); 
  486.  
  487. end Gtk.Status_Icon;