home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / include / libpurple / desktopitem.h < prev    next >
Encoding:
C/C++ Source or Header  |  2007-05-04  |  6.5 KB  |  172 lines

  1. /**
  2.  * @file desktopitem.h Functions for managing .desktop files
  3.  * @ingroup core
  4.  *
  5.  * Purple is the legal property of its developers, whose names are too numerous
  6.  * to list here.  Please refer to the COPYRIGHT file distributed with this
  7.  * source distribution.
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  22.  *
  23.  */
  24.  
  25. /*
  26.  * The following code has been adapted from gnome-desktop-item.[ch],
  27.  * as found on gnome-desktop-2.8.1.
  28.  *
  29.  *   Copyright (C) 2004 by Alceste Scalas <alceste.scalas@gmx.net>.
  30.  *
  31.  * Original copyright notice:
  32.  *
  33.  * Copyright (C) 1999, 2000 Red Hat Inc.
  34.  * Copyright (C) 2001 Sid Vicious
  35.  * All rights reserved.
  36.  *
  37.  * This file is part of the Gnome Library.
  38.  *
  39.  * The Gnome Library is free software; you can redistribute it and/or
  40.  * modify it under the terms of the GNU Library General Public License as
  41.  * published by the Free Software Foundation; either version 2 of the
  42.  * License, or (at your option) any later version.
  43.  * 
  44.  * The Gnome Library is distributed in the hope that it will be useful,
  45.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  46.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  47.  * Library General Public License for more details.
  48.  * 
  49.  * You should have received a copy of the GNU Library General Public
  50.  * License along with the Gnome Library; see the file COPYING.LIB.  If not,
  51.  * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  52.  * Boston, MA 02111-1307, USA.
  53.  */
  54.  
  55. #ifndef _PURPLE_DESKTOP_ITEM_H_
  56. #define _PURPLE_DESKTOP_ITEM_H_
  57.  
  58. #include <glib.h>
  59. #include <glib-object.h>
  60.  
  61. G_BEGIN_DECLS
  62.  
  63. typedef enum {
  64.     PURPLE_DESKTOP_ITEM_TYPE_NULL = 0 /* This means its NULL, that is, not
  65.                       * set */,
  66.     PURPLE_DESKTOP_ITEM_TYPE_OTHER /* This means it's not one of the below
  67.                      strings types, and you must get the
  68.                      Type attribute. */,
  69.  
  70.     /* These are the standard compliant types: */
  71.     PURPLE_DESKTOP_ITEM_TYPE_APPLICATION,
  72.     PURPLE_DESKTOP_ITEM_TYPE_LINK,
  73.     PURPLE_DESKTOP_ITEM_TYPE_FSDEVICE,
  74.     PURPLE_DESKTOP_ITEM_TYPE_MIME_TYPE,
  75.     PURPLE_DESKTOP_ITEM_TYPE_DIRECTORY,
  76.     PURPLE_DESKTOP_ITEM_TYPE_SERVICE,
  77.     PURPLE_DESKTOP_ITEM_TYPE_SERVICE_TYPE
  78. } PurpleDesktopItemType;
  79.  
  80. typedef struct _PurpleDesktopItem PurpleDesktopItem;
  81.  
  82. #define PURPLE_TYPE_DESKTOP_ITEM         (purple_desktop_item_get_type ())
  83. GType purple_desktop_item_get_type       (void);
  84.  
  85. /* standard */
  86. #define PURPLE_DESKTOP_ITEM_ENCODING    "Encoding" /* string */
  87. #define PURPLE_DESKTOP_ITEM_VERSION    "Version"  /* numeric */
  88. #define PURPLE_DESKTOP_ITEM_NAME        "Name" /* localestring */
  89. #define PURPLE_DESKTOP_ITEM_GENERIC_NAME    "GenericName" /* localestring */
  90. #define PURPLE_DESKTOP_ITEM_TYPE        "Type" /* string */
  91. #define PURPLE_DESKTOP_ITEM_FILE_PATTERN "FilePattern" /* regexp(s) */
  92. #define PURPLE_DESKTOP_ITEM_TRY_EXEC    "TryExec" /* string */
  93. #define PURPLE_DESKTOP_ITEM_NO_DISPLAY    "NoDisplay" /* boolean */
  94. #define PURPLE_DESKTOP_ITEM_COMMENT    "Comment" /* localestring */
  95. #define PURPLE_DESKTOP_ITEM_EXEC        "Exec" /* string */
  96. #define PURPLE_DESKTOP_ITEM_ACTIONS    "Actions" /* strings */
  97. #define PURPLE_DESKTOP_ITEM_ICON        "Icon" /* string */
  98. #define PURPLE_DESKTOP_ITEM_MINI_ICON    "MiniIcon" /* string */
  99. #define PURPLE_DESKTOP_ITEM_HIDDEN    "Hidden" /* boolean */
  100. #define PURPLE_DESKTOP_ITEM_PATH        "Path" /* string */
  101. #define PURPLE_DESKTOP_ITEM_TERMINAL    "Terminal" /* boolean */
  102. #define PURPLE_DESKTOP_ITEM_TERMINAL_OPTIONS "TerminalOptions" /* string */
  103. #define PURPLE_DESKTOP_ITEM_SWALLOW_TITLE "SwallowTitle" /* string */
  104. #define PURPLE_DESKTOP_ITEM_SWALLOW_EXEC    "SwallowExec" /* string */
  105. #define PURPLE_DESKTOP_ITEM_MIME_TYPE    "MimeType" /* regexp(s) */
  106. #define PURPLE_DESKTOP_ITEM_PATTERNS    "Patterns" /* regexp(s) */
  107. #define PURPLE_DESKTOP_ITEM_DEFAULT_APP    "DefaultApp" /* string */
  108. #define PURPLE_DESKTOP_ITEM_DEV        "Dev" /* string */
  109. #define PURPLE_DESKTOP_ITEM_FS_TYPE    "FSType" /* string */
  110. #define PURPLE_DESKTOP_ITEM_MOUNT_POINT    "MountPoint" /* string */
  111. #define PURPLE_DESKTOP_ITEM_READ_ONLY    "ReadOnly" /* boolean */
  112. #define PURPLE_DESKTOP_ITEM_UNMOUNT_ICON "UnmountIcon" /* string */
  113. #define PURPLE_DESKTOP_ITEM_SORT_ORDER    "SortOrder" /* strings */
  114. #define PURPLE_DESKTOP_ITEM_URL        "URL" /* string */
  115. #define PURPLE_DESKTOP_ITEM_DOC_PATH    "X-GNOME-DocPath" /* string */
  116.  
  117. /**
  118.  * This function loads 'filename' and turns it into a PurpleDesktopItem.
  119.  *
  120.  * @param filename The filename or directory path to load the PurpleDesktopItem from
  121.  *
  122.  * @return The newly loaded item, or NULL on error.
  123.  */
  124. PurpleDesktopItem *purple_desktop_item_new_from_file (const char *filename);
  125.  
  126. /**
  127.  * Gets the type attribute (the 'Type' field) of the item.  This should
  128.  * usually be 'Application' for an application, but it can be 'Directory'
  129.  * for a directory description.  There are other types available as well.
  130.  * The type usually indicates how the desktop item should be handeled and
  131.  * how the 'Exec' field should be handeled.
  132.  *
  133.  * @param item A desktop item
  134.  *
  135.  * @return The type of the specified 'item'. The returned memory
  136.  * remains owned by the PurpleDesktopItem and should not be freed.
  137.  */
  138. PurpleDesktopItemType purple_desktop_item_get_entry_type (const PurpleDesktopItem *item);
  139.  
  140. /**
  141.  * Gets the value of an attribute of the item, as a string.
  142.  *
  143.  * @param item A desktop item
  144.  * @param attr The attribute to look for
  145.  *
  146.  * @return The value of the specified item attribute.
  147.  */
  148. const char *purple_desktop_item_get_string (const PurpleDesktopItem *item,
  149.                       const char *attr);
  150.  
  151. /**
  152.  * Creates a copy of a PurpleDesktopItem.  The new copy has a refcount of 1.
  153.  * Note: Section stack is NOT copied.
  154.  *
  155.  * @param item The item to be copied
  156.  *
  157.  * @return The new copy 
  158.  */
  159. PurpleDesktopItem *purple_desktop_item_copy (const PurpleDesktopItem *item);
  160.  
  161. /**
  162.  * Decreases the reference count of the specified item, and destroys
  163.  * the item if there are no more references left.
  164.  *
  165.  * @param item A desktop item
  166.  */
  167. void purple_desktop_item_unref (PurpleDesktopItem *item);
  168.  
  169. G_END_DECLS
  170.  
  171. #endif /* _PURPLE_DESKTOP_ITEM_H_ */
  172.