+++ /dev/null
-Makefile
-Makefile.in
-aclocal.m4
-autom4te.cache
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-depcomp
-install-sh
-libtool
-ltmain.sh
-missing
-stamp-h1
-*.pc
-e_dbus.spec
+++ /dev/null
-# Doxyfile 1.4.7
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = e_dbus
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = 0.1.0
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = doc
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
-# Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = YES
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH = src/
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 4
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = YES
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = YES
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE = e_dbus_doxy_warnings.txt
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = src/lib
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH = doc/images/
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX = e_ E_
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER = doc/head.html
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER = doc/foot.html
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET = doc/e.css
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = YES
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =__UNUSED__=
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that a graph may be further truncated if the graph's
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
-# the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
+++ /dev/null
-# get rid of that stupid cache mechanism
-rm -f config.cache
-
-AC_INIT(e_dbus, 0.5.0.043, enlightenment-devel@lists.sourceforge.net)
-AC_PREREQ(2.52)
-AC_CONFIG_SRCDIR(configure.in)
-AC_CANONICAL_BUILD
-AC_CANONICAL_HOST
-
-AM_INIT_AUTOMAKE(1.6 dist-bzip2)
-AM_CONFIG_HEADER(config.h)
-
-AC_PROG_CC
-AC_HEADER_STDC
-AM_PROG_CC_C_O
-
-define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl
-define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
-AC_PROG_LIBTOOL
-
-VMAJ=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $1);}'`
-VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
-VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
-SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
-version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
-AC_SUBST(version_info)
-
-dnl Check enabled modules to build
-AC_ARG_ENABLE(ehal,
- AC_HELP_STRING([--disable-ehal],
- [Disable ehal build]),
- [enable_ehal=$enableval],
- [enable_ehal="yes"])
-AC_ARG_ENABLE(enm,
- AC_HELP_STRING([--disable-enm],
- [Disable enm build]),
- [enable_enm=$enableval],
- [enable_enm="yes"])
-AC_ARG_ENABLE(enotify,
- AC_HELP_STRING([--disable-enotify],
- [Disable enotify build]),
- [enable_enotify=$enableval],
- [enable_enotify="yes"])
-
-
-PKG_CHECK_MODULES([EDBUS], [
- dbus-1 >= 0.62
- ecore >= 0.9.9
-])
-
-
-dnl evas
-if test "x${enable_enotify}" = "xyes"
-then
- PKG_CHECK_MODULES(EVAS, [evas >= 0.9.9], [], [enable_enotify="no"])
-fi
-
-AC_ARG_ENABLE(build-test-gui,
- AS_HELP_STRING([--enable-build-test-gui], [Build with gui for testing]),
- [ PKG_CHECK_MODULES([HAL_TEST_GUI], [
- ewl
- efreet
- ],
- # temporarily disable until update to newer tree2 api
- [AC_DEFINE([EWL_GUI], 0, [An ewl gui for e_dbus_hal])],
- [AC_DEFINE([EWL_GUI], 0, [An ewl gui for e_dbus_hal])]
- )
- ]
-)
-
-AM_CONDITIONAL([BUILD_EHAL], [test "x${enable_ehal}" = "xyes"])
-AM_CONDITIONAL([BUILD_ENM], [test "x${enable_enm}" = "xyes"])
-AM_CONDITIONAL([BUILD_ENOTIFY], [test "x${enable_enotify}" = "xyes"])
-
-AC_OUTPUT([
-e_dbus.spec
-Makefile
-src/Makefile
-src/lib/Makefile
-src/lib/dbus/Makefile
-src/lib/hal/Makefile
-src/lib/nm/Makefile
-src/lib/notification/Makefile
-src/bin/Makefile
-edbus.pc
-ehal.pc
-enotify.pc
-enm.pc
-])
-
-
-#####################################################################
-## Info
-
-echo
-echo
-echo
-echo "------------------------------------------------------------------------"
-echo "$PACKAGE $VERSION"
-echo "------------------------------------------------------------------------"
-echo
-echo "Modules:"
-echo
-echo " EHal.................: $enable_ehal"
-echo " ENM..................: $enable_enm"
-echo " ENotify..............: $enable_enotify"
-echo
-echo "Configuration Options Summary:"
-echo
-echo " Compilation..........: make"
-echo
-echo " Installation.........: make install"
-echo
-echo " prefix.............: $prefix"
-echo
+++ /dev/null
-edbus (@VERSION@-1) unstable; urgency=low
-
- * CVS snapshot.
-
- -- Falko Schmidt <falko@alphagemini.org> Mon, 28 Apr 2008 15:53:27 +0000
-
+++ /dev/null
-debian/tmp/usr/lib/*.so.*
+++ /dev/null
-body {
- background: url("images/b.png");
- background-repeat: repeat-x;
- background-position: top left;
- background-color: #f4f4f4;
- text-align: center;
- font-family: sans-serif;
- padding: 0;
- margin: 0;
-}
-
-div.main {
- margin: 1em auto;
- vertical-align: top;
- font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
- color: #444444;
- font-size: 0.8em;
- text-align: justify;
- width: 80%;
-}
-
-td.t { background-image:url("images/t.gif"); }
-td.t[class] { background-image:url("images/t.png"); }
-td.tl { background-image:url("images/tl.gif"); }
-td.tl[class] { background-image:url("images/tl.png"); }
-
-td.nav, td.lnav, td.rnav {
- align: middle;
- text-align: center;
- vertical-align: middle;
- width: 100px;
- height: 25px;
- font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
- color: #000000;
- font-size: 9px;
- font-weight: bold;
- white-space: no-wrap;
-}
-
-td.lnav[class] { background-image:url("images/n.png"); }
-td.lnav[class] { background-image:url("images/n.png"); }
-td.rnav { background-image:url("images/n.gif"); }
-td.rnav[class] { background-image:url("images/n.png"); }
-
-hr {
- width: 200px;
- height: 1px;
- background: #dddddd;
- border: 0;
-}
-
-p { color: #444444 ;}
-p.tiny, small {
- color: #888888;
- font-size: 0.5em;
-}
-
-h1 {
- text-align: center;
- font-size: 1.3em;
-}
-
-h2 { font-size: 1.1em; }
-h3 { font-size: 0.9em; }
-
-span.keyword { color: #008000; }
-span.keywordtype { color: #604020; }
-span.keywordflow { color: #e08000; }
-span.comment { color: #800000; }
-span.preprocessor { color: #806020; }
-span.stringliteral { color: #002080; }
-span.charliteral { color: #008080; }
-
-a:link {
- color: #445566;
- text-decoration: underline;
-}
-
-a:visited {
- color: #667788;
- text-decoration: underline;
-}
-
-a:active {
- color: #88cccc;
- text-decoration: none;
-}
-
-a:hover {
- color: #112266;
- text-decoration: underline;
-}
-
-a.nav {
- text-decoration: none;
- display: block;
-}
-
-a.nav:link, a.nav:visited { color: #888888; }
-a.nav:active { color: #000000; }
-a.nav:hover { color: #444444; }
-a.code:link, a.code:visited { text-decoration: none; }
-
-div.fragment {
- font-size: 1em;
- border: 1px dotted #cccccc;
- background-color: #ffffff;
- text-align: left;
- vertical-align: middle;
- padding: 2px;
- margin-left: 25px;
- margin-right: 25px;
- overflow: auto;
-}
-
-td.indexkey {
- font-weight: bold;
- padding-left: 10px;
- padding-right: 0;
- padding-top: 2px;
- padding-bottom: 0px;
- margin: 0;
- margin-top: 2px;
- margin-bottom: 2px;
- border: 1px dotted #cccccc;
- border-right: 0px dotted #cccccc;
-}
-
-td.indexvalue {
- font-style: italic;
- padding-right: 10px;
- padding-left: 0;
- padding-top: 2px;
- padding-bottom: 2px;
- margin: 0;
- margin-top: 2px;
- margin-bottom: 2px;
- border: 1px dotted #cccccc;
- border-left: 0px dotted #cccccc;
-}
-
-.mdescRight { font-style: italic; }
-.memitem {
- padding-left: 2px;
- padding-right: 2px;
- border: 1px dotted #cccccc;
- background-color: #ffffff;
-}
-.memname {
- white-space: nowrap;
- font-weight: bold;
-}
-.paramname { font-weight: normal; }
-
-div.ah {
- border: thin solid #888888;
- font-weight: bold;
- margin-bottom: 3px;
- margin-top: 3px;
-}
-
+++ /dev/null
- </div>
- <hr />
- <p class="tiny">Copyright © Enlightenment.org</p>
- <p class="tiny">$projectname Documentation Generated: $datetime</p>
- </body>
-</html>
+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html>
- <head>
- <title>$title</title>
- <link href="e.css" rel="stylesheet" type="text/css" />
- </head>
-
-<body>
- <table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td class="t" width="50%" valign="top" align="left">
- <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
- <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=index">Home</a></td></tr>
- <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=news">News</a></td></tr>
- <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=about">About</a></td></tr>
- <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=download">Download</a></td></tr>
- </table>
- </td>
- <td class="tl" width="612" height="250" valign="bottom" align="center">
- <img src="images/_.gif" width="612" height="1"/>
- <table border="0" cellpadding="0" cellspacing="4px">
- <tr>
- <td class='nav'><a class='nav' href="index.html">Main Page</a></td>
- <td class="nav"><a class="nav" href="annotated.html">Data Structures</a></td>
- <td class="nav"><a class="nav" href="classes.html">Index</a></td>
- </tr>
- </table>
- <hr />
- </td>
- <td class="t" width="50%" valign="top" align="right">
- <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
- <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=support">Support</a></td></tr>
- <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contribute">Contribute</a></td></tr>
- <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contact">Contact</a></td></tr>
- <tr><td class="lnav"><a class="nav" href="http://trac.enlightenment.org/e">Tracker</a></td></tr>
- </table>
- </td>
- </tr>
- </table>
-
- <div class="main">
+++ /dev/null
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: enotify
-Description: Network Manager convenience library
-Requires: ecore edbus
-Version: @VERSION@
-Libs: -L${libdir} -lenm
-Cflags: -I${includedir}
+++ /dev/null
-#!/bin/sh
-
-doxygen
-
-if [ ! -e doc/html/images ]; then
- mkdir -p doc/html/images
-fi
-
-cp doc/images/*.png doc/images/*.gif doc/html/images
-
+++ /dev/null
-Makefile
-Makefile.in
+++ /dev/null
-.deps
-Makefile
-Makefile.in
-.libs
-e_dbus_hal
-e_dbus_test
-e_dbus_test_client
-e_dbus_nm
-e_dbus_notify
-e_dbus_notification_daemon
-e-notify-send
+++ /dev/null
-#include "E_Hal.h"
-#include <config.h>
-
-#if EWL_GUI
-#include <Ewl.h>
-#include <Efreet.h>
-#endif
-
-#include <string.h>
-
-/* test app */
-
-static E_DBus_Connection *conn;
-#if EWL_GUI
-static int mount_id = 0;
-#endif
-
-#define DEVICE_TYPE_STORAGE 1
-#define DEVICE_TYPE_VOLUME 2
-typedef struct Device Device;
-struct Device {
- int type;
- char *udi;
-};
-
-typedef struct Storage Storage;
-struct Storage {
- int type;
- char *udi;
- char *bus;
- char *drive_type;
-
- char *model;
- char *vendor;
- char *serial;
-
- char removable;
- char media_available;
- unsigned long media_size;
-
- char requires_eject;
- char hotpluggable;
- char media_check_enabled;
-
- struct {
- char *drive;
- char *volume;
- } icon;
-
- Ecore_List *volumes;
-};
-
-
-typedef struct Volume Volume;
-struct Volume {
- int type;
- char *udi;
- char *uuid;
- char *label;
- char *fstype;
-
- char partition;
- char *partition_label;
- char mounted;
- char *mount_point;
-
- Storage *storage;
-};
-
-static Ecore_List *storage_devices;
-static Ecore_List *volumes;
-
-void
-devices_dirty(void)
-{
-#if EWL_GUI
- Ewl_Widget *mvc;
-
- mvc = ewl_widget_name_find("device_mvc");
- ewl_mvc_dirty_set(EWL_MVC(mvc), 1);
-#endif
-}
-
-
-Storage *
-storage_new(void)
-{
- Storage *s;
- s = calloc(1, sizeof(Storage));
- s->type = DEVICE_TYPE_STORAGE;
- s->volumes = ecore_list_new();
- return s;
-}
-
-void
-storage_free(Storage *storage)
-{
- Volume *v;
- printf("storage_free: %s\n", storage->udi);
-
- /* disconnect storage from volume */
- ecore_list_first_goto(storage->volumes);
- while ((v = ecore_list_next(storage->volumes)))
- v->storage = NULL;
- ecore_list_destroy(storage->volumes);
-
- if (storage->udi) free(storage->udi);
- if (storage->bus) free(storage->bus);
- if (storage->drive_type) free(storage->drive_type);
-
- if (storage->model) free(storage->model);
- if (storage->vendor) free(storage->vendor);
- if (storage->serial) free(storage->serial);
- if (storage->icon.drive) free(storage->icon.drive);
- if (storage->icon.volume) free(storage->icon.volume);
-
- free(storage);
-}
-
-static int
-storage_find_helper(Storage *s, const char *udi)
-{
- if (!s->udi) return -1;
- return strcmp(s->udi, udi);
-}
-
-Storage *
-storage_find(const char *udi)
-{
- Storage *s = NULL;
- if (!udi) return NULL;
- s = ecore_list_find(storage_devices, ECORE_COMPARE_CB(storage_find_helper), udi);
- return s;
-}
-
-void
-storage_remove(const char *udi)
-{
- if (storage_find(udi))
- {
- ecore_list_remove_destroy(storage_devices);
- devices_dirty();
- }
-}
-
-static void
-cb_storage_properties(void *data, void *reply_data, DBusError *error)
-{
- Storage *s = data;
- E_Hal_Properties *ret = reply_data;
- int err = 0;
-
- if (dbus_error_is_set(error))
- {
- // XXX handle...
- dbus_error_free(error);
- goto error;
- }
-
- s->bus = e_hal_property_string_get(ret, "storage.bus", &err);
- if (err) goto error;
- s->drive_type = e_hal_property_string_get(ret, "storage.drive_type", &err);
- if (err) goto error;
- s->model = e_hal_property_string_get(ret, "storage.model", &err);
- if (err) goto error;
- s->vendor = e_hal_property_string_get(ret, "storage.vendor", &err);
- if (err) goto error;
- s->serial = e_hal_property_string_get(ret, "storage.serial", &err);
-
- s->removable = e_hal_property_bool_get(ret, "storage.removable", &err);
- if (err) goto error;
-
- if (s->removable)
- {
- s->media_available = e_hal_property_bool_get(ret, "storage.removable.media_available", &err);
- s->media_size = e_hal_property_uint64_get(ret, "storage.removable.media_size", &err);
- }
-
- s->requires_eject = e_hal_property_bool_get(ret, "storage.requires_eject", &err);
- s->hotpluggable = e_hal_property_bool_get(ret, "storage.hotpluggable", &err);
- s->media_check_enabled = e_hal_property_bool_get(ret, "storage.media_check_enabled", &err);
-
- s->icon.drive = e_hal_property_string_get(ret, "storage.icon.drive", &err);
- s->icon.volume = e_hal_property_string_get(ret, "storage.icon.volume", &err);
-
- devices_dirty();
- /* now fetch the children (volumes?) */
-
- //printf("Got storage:\n udi: %s\n bus: %s\n drive_type: %s\n model: %s\n vendor: %s\n serial: %s\n icon.drive: %s\n icon.volume: %s\n\n", s->udi, s->bus, s->drive_type, s->model, s->vendor, s->serial, s->icon.drive, s->icon.volume);
- return;
-
-error:
- storage_remove(s->udi);
-}
-
-Storage *
-storage_append(const char *udi)
-{
- Storage *s;
- if (!udi) return NULL;
- s = storage_new();
- s->udi = strdup(udi);
- ecore_list_append(storage_devices, s);
- e_hal_device_get_all_properties(conn, s->udi, cb_storage_properties, s);
- devices_dirty();
- return s;
-}
-
-Volume *
-volume_new(void)
-{
- Volume *v;
- v = calloc(1, sizeof(Volume));
- v->type = DEVICE_TYPE_VOLUME;
- return v;
-}
-
-void
-volume_free(Volume *volume)
-{
- if (!volume) return;
-
- /* disconnect volume from storage */
- if (volume->storage)
- {
- if (ecore_list_goto(volume->storage->volumes, volume))
- ecore_list_remove(volume->storage->volumes);
- }
-
- if (volume->udi) free(volume->udi);
- if (volume->uuid) free(volume->uuid);
- if (volume->label) free(volume->label);
- if (volume->fstype) free(volume->fstype);
- if (volume->partition_label) free(volume->partition_label);
- if (volume->mount_point) free(volume->mount_point);
-
- free(volume);
-}
-
-static int
-volume_find_helper(Volume *v, const char *udi)
-{
- if (!v->udi) return -1;
- return strcmp(v->udi, udi);
-}
-
-Volume *
-volume_find(const char *udi)
-{
- if (!udi) return NULL;
- return ecore_list_find(volumes, ECORE_COMPARE_CB(volume_find_helper), udi);
-}
-
-void
-volume_remove(const char *udi)
-{
- if (volume_find(udi))
- {
- ecore_list_remove_destroy(volumes);
- devices_dirty();
- }
-}
-
-static void
-cb_volume_properties(void *data, void *reply_data, DBusError *error)
-{
- Volume *v = data;
- Storage *s = NULL;
- E_Hal_Device_Get_All_Properties_Return *ret = reply_data;
- int err = 0;
- char *str = NULL;
-
- if (dbus_error_is_set(error))
- {
- // XXX handle...
- dbus_error_free(error);
- goto error;
- }
-
- /* skip volumes with volume.ignore set */
- if (e_hal_property_bool_get(ret, "volume.ignore", &err) || err)
- goto error;
-
- /* skip volumes that aren't filesystems */
- str = e_hal_property_string_get(ret, "volume.fsusage", &err);
- if (err || !str) goto error;
- if (strcmp(str, "filesystem")) goto error;
- free(str);
- str = NULL;
-
- v->uuid = e_hal_property_string_get(ret, "volume.uuid", &err);
- if (err) goto error;
-
- v->label = e_hal_property_string_get(ret, "volume.label", &err);
- if (err) goto error;
-
- v->fstype = e_hal_property_string_get(ret, "volume.fstype", &err);
- if (err) goto error;
-
- v->mounted = e_hal_property_bool_get(ret, "volume.is_mounted", &err);
- if (err) goto error;
-
- v->partition = e_hal_property_bool_get(ret, "volume.is_partition", &err);
- if (err) goto error;
-
- v->mount_point = e_hal_property_string_get(ret, "volume.mount_point", &err);
- if (err) goto error;
-
- if (v->partition)
- {
- v->partition_label = e_hal_property_string_get(ret, "volume.partition.label", &err);
- if (err) goto error;
- }
-
- str = e_hal_property_string_get(ret, "info.parent", &err);
- if (!err && str)
- {
- s = storage_find(str);
- if (s)
- {
- v->storage = s;
- ecore_list_append(s->volumes, v);
- }
- free(str);
- str = NULL;
- }
-
- //printf("Got volume\n udi: %s\n uuid: %s\n fstype: %s\n label: %s\n partition: %d\n partition_label: %s\n mounted: %d\n mount_point: %s\n\n", v->udi, v->uuid, v->fstype, v->label, v->partition, v->partition ? v->partition_label : "(not a partition)", v->mounted, v->mount_point);
- //if (s) printf(" for storage: %s\n", s->udi);
- //else printf(" storage unknown\n");
-
- devices_dirty();
- return;
-
-error:
- if (str) free(str);
- volume_remove(v->udi);
- return;
-
-}
-
-void
-volume_setup(Volume *v)
-{
- e_hal_device_get_all_properties(conn, v->udi, cb_volume_properties, v);
-}
-
-Volume *
-volume_append(const char *udi)
-{
- Volume *v;
- if (!udi) return NULL;
- printf("ADDING %s\n", udi);
- v = volume_new();
- v->udi = strdup(udi);
- ecore_list_append(volumes, v);
- volume_setup(v);
-
- //this will get called when volume_setup() returns, which is more important
- //devices_dirty();
-
- return v;
-}
-
-static void
-cb_test_get_all_devices(void *user_data, void *reply_data, DBusError *error)
-{
- E_Hal_Manager_Get_All_Devices_Return *ret = reply_data;
- char *device;
-
- if (!ret || !ret->strings) return;
-
- if (dbus_error_is_set(error))
- {
- // XXX handle...
- dbus_error_free(error);
- return;
- }
-
- ecore_list_first_goto(ret->strings);
- while ((device = ecore_list_next(ret->strings)))
- {
- printf("device: %s\n", device);
- }
-}
-
-static void
-cb_test_find_device_by_capability_storage(void *user_data, void *reply_data, DBusError *error)
-{
- E_Hal_Manager_Find_Device_By_Capability_Return *ret = reply_data;
- char *device;
-
- if (!ret || !ret->strings) return;
-
- if (dbus_error_is_set(error))
- {
- // XXX handle...
- dbus_error_free(error);
- return;
- }
-
- ecore_list_first_goto(ret->strings);
- while ((device = ecore_list_next(ret->strings)))
- storage_append(device);
-}
-
-static void
-cb_test_find_device_by_capability_volume(void *user_data, void *reply_data, DBusError *error)
-{
- E_Hal_Manager_Find_Device_By_Capability_Return *ret = reply_data;
- char *device;
-
- if (!ret || !ret->strings) return;
-
- if (dbus_error_is_set(error))
- {
- // XXX handle...
- dbus_error_free(error);
- return;
- }
-
- ecore_list_first_goto(ret->strings);
- while ((device = ecore_list_next(ret->strings)))
- volume_append(device);
-}
-
-static void
-cb_is_storage(void *user_data, void *reply_data, DBusError *error)
-{
- char *udi = user_data;
- E_Hal_Device_Query_Capability_Return *ret = reply_data;
-
- if (dbus_error_is_set(error))
- {
- // XXX handle...
- dbus_error_free(error);
- goto error;
- }
-
- if (ret && ret->boolean)
- storage_append(udi);
-
-error:
- free(udi);
-}
-
-static void
-cb_is_volume(void *user_data, void *reply_data, DBusError *error)
-{
- char *udi = user_data;
- E_Hal_Device_Query_Capability_Return *ret = reply_data;
-
- if (dbus_error_is_set(error))
- {
- // XXX handle...
- dbus_error_free(error);
- goto error;
- }
-
- if (ret && ret->boolean)
- volume_append(udi);
-
-error:
- free(udi);
-}
-
-static void
-cb_signal_device_added(void *data, DBusMessage *msg)
-{
- DBusError err;
- char *udi;
- int ret;
-
- dbus_error_init(&err);
- dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi, DBUS_TYPE_INVALID);
- udi = strdup(udi);
- printf("Device added: %s\n", udi);
- ret = e_hal_device_query_capability(conn, udi, "storage", cb_is_storage, strdup(udi));
- e_hal_device_query_capability(conn, udi, "volume", cb_is_volume, strdup(udi));
-}
-
-void
-cb_signal_device_removed(void *data, DBusMessage *msg)
-{
- DBusError err;
- char *udi;
-
- dbus_error_init(&err);
-
- dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi, DBUS_TYPE_INVALID);
- printf("Removed: %s\n", udi);
- storage_remove(udi);
- volume_remove(udi);
-}
-
-void
-cb_signal_new_capability(void *data, DBusMessage *msg)
-{
- DBusError err;
- char *udi, *capability;
-
- dbus_error_init(&err);
-
- dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &udi, DBUS_TYPE_STRING, &capability, DBUS_TYPE_INVALID);
- if (!strcmp(capability, "storage"))
- storage_append(udi);
-
-}
-
-/*** gui ***/
-
-#if EWL_GUI
-static void
-cb_window_destroy(Ewl_Widget *w, void *ev, void *data)
-{
- ewl_main_quit();
-}
-
-static void
-cb_window_close(Ewl_Widget *w, void *ev, void *data)
-{
- ewl_widget_destroy(w);
-}
-
-static void
-cb_volume_unmounted(void *user_data, void *method_return, DBusError *error)
-{
- Volume *vol = user_data;
- vol->mounted = 0;
- printf("Volume unmounted reply: %s\n", vol->udi);
-}
-
-static void
-cb_volume_mounted(void *user_data, void *method_return, DBusError *error)
-{
- Volume *vol = user_data;
- vol->mounted = 1;
- printf("Volume mounted reply: %s\n", vol->udi);
-}
-
-static void
-cb_device_view_clicked(Ewl_Widget *w, void *ev, void *data)
-{
- Device *dev = data;
- char buf[4096];
-
- printf("Device clicked: %s\n", dev->udi);
- if (dev->type == DEVICE_TYPE_VOLUME)
- {
- Volume *vol = (Volume *)dev;
- if (vol->mounted)
- {
- e_hal_device_volume_unmount(conn, vol->udi, NULL, cb_volume_unmounted, vol);
- }
- else
- {
- char *mount_point;
-#if 0
- if (vol->mount_point && vol->mount_point[0])
- mount_point = vol->mount_point;
-#endif
- if (vol->label && vol->label[0])
- mount_point = vol->label;
- else if (vol->uuid && vol->uuid[0])
- mount_point = vol->uuid;
- else
- {
- // XXX need to check this...
- snprintf(buf, sizeof(buf), "%d\n", mount_id++);
- mount_point = buf;
- }
-
- printf("Attempting to mount %s to %s\n", vol->udi, mount_point);
- e_hal_device_volume_mount(conn, vol->udi, mount_point, vol->fstype, NULL, cb_volume_mounted, vol);
- }
- }
-}
-
-
-static Ewl_Widget *
-cb_device_view_constructor(void)
-{
- Ewl_Widget *icon;
-
- icon = ewl_icon_simple_new();
- ewl_box_orientation_set(EWL_BOX(icon), EWL_ORIENTATION_HORIZONTAL);
- return icon;
-}
-
-static void
-device_view_device_set(Ewl_Icon *icon, Device *dev)
-{
- char buf[500];
- const char *path;
- const char *icon_name = NULL;
-
- if (dev->type == DEVICE_TYPE_STORAGE)
- {
- Storage *s = (Storage *)dev;
-
- if (s->icon.drive && s->icon.drive[0])
- icon_name = s->icon.drive;
-
- snprintf(buf, sizeof(buf), "%s", (s->model && s->model[0]) ? s->model : "Unknown drive");
- }
- else if (dev->type == DEVICE_TYPE_VOLUME)
- {
- Volume *v = (Volume *)dev;
- if (v->storage && v->storage->icon.volume && v->storage->icon.volume[0])
- icon_name = v->storage->icon.volume;
- snprintf(buf, sizeof(buf), "%s (%s)", (v->label && v->label[0]) ? v->label : "Unlabeled Volume", v->fstype ? v->fstype : "Unknown");
- }
- else
- {
- fprintf(stderr, "Invalid device type.");
- buf[0] = 0;
- }
-
- ewl_icon_label_set(icon, buf);
- if (icon_name)
- {
- //printf("find icon path: %s\n", icon_name);
- path = efreet_icon_path_find("Tango", icon_name, 32);
- //printf("found: %s\n", path);
- if (path)
- {
- ewl_icon_image_set(icon, path, NULL);
- free(path);
- }
- }
- ewl_callback_append(EWL_WIDGET(icon), EWL_CALLBACK_CLICKED, cb_device_view_clicked, dev);
-
-}
-
-static void
-cb_device_view_assign(Ewl_Widget *w, void *data)
-{
- Device *dev = data;
- device_view_device_set(EWL_ICON(w), dev);
-}
-
-static Ewl_Widget *
-cb_device_view_header_fetch(void *data, int column)
-{
- Ewl_Widget *label;
-
- label = ewl_label_new();
- ewl_label_text_set(EWL_LABEL(label), "Device");
- ewl_widget_show(label);
- return label;
-}
-
-static int
-cb_device_tree_expandable_get(void *data, unsigned int row)
-{
- Ecore_List *devices;
- Device *dev;
-
- devices = data;
- if (!devices) return FALSE;
-
- dev = ecore_list_index_goto(devices, row);
- if (!dev) return FALSE;
-
- if (dev->type == DEVICE_TYPE_STORAGE)
- {
- Storage *s = (Storage *)dev;
- if (ecore_list_count(s->volumes) > 0)
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void *
-cb_device_tree_expansion_data_fetch(void *data, unsigned int parent)
-{
- Ecore_List *devices;
- Device *dev;
- Storage *s;
- dev = data;
-
- devices = data;
- if (!devices) return NULL;
-
- dev = ecore_list_index_goto(devices, parent);
-
- if (!dev) return NULL;
- if (dev->type != DEVICE_TYPE_STORAGE) return NULL;
- s = (Storage *)dev;
- return s->volumes;
-}
-
-#if 0
-Ewl_Widget *
-mountbox_list_new(void)
-{
- Ewl_Widget *list;
- Ewl_Model *model;
- Ewl_View *view;
-
- model = ewl_model_ecore_list_get();
-
- view = ewl_view_new();
- ewl_view_constructor_set(view, cb_device_view_constructor);
- ewl_view_assign_set(view, EWL_VIEW_ASSIGN(cb_device_view_assign));
-
- list = ewl_list_new();
- ewl_mvc_model_set(EWL_MVC(list), model);
- ewl_mvc_view_set(EWL_MVC(list), view);
- ewl_mvc_data_set(EWL_MVC(list), volumes);
-
- ewl_widget_name_set(list, "volume_mvc");
-
- return list;
-}
-#endif
-
-Ewl_Widget *
-mountbox_tree_new(void)
-{
- Ewl_Widget *tree;
- Ewl_Model *model;
- Ewl_View *view;
-
- model = ewl_model_ecore_list_get();
- ewl_model_expandable_set(model, cb_device_tree_expandable_get);
- ewl_model_expansion_data_fetch_set(model, cb_device_tree_expansion_data_fetch);
-
- view = ewl_view_new();
- ewl_view_constructor_set(view, cb_device_view_constructor);
- ewl_view_assign_set(view, EWL_VIEW_ASSIGN(cb_device_view_assign));
- ewl_view_header_fetch_set(view, cb_device_view_header_fetch);
-
- tree = ewl_tree2_new();
- ewl_mvc_model_set(EWL_MVC(tree), model);
- ewl_mvc_data_set(EWL_MVC(tree), storage_devices);
- ewl_tree2_column_append(EWL_TREE2(tree), view, FALSE);
-
- ewl_widget_name_set(tree, "device_mvc");
-
- return tree;
-}
-
-Ewl_Widget *
-mountbox_mainwin_new(void)
-{
- Ewl_Widget *win, *box, *list;
- win = ewl_window_new();
- ewl_window_title_set(EWL_WINDOW(win), "EWL Mountbox");
- ewl_window_class_set(EWL_WINDOW(win), "ewl_mountbox");
- ewl_window_name_set(EWL_WINDOW(win), "ewl_mountbox");
-
- ewl_object_fill_policy_set(EWL_OBJECT(win), EWL_FLAG_FILL_ALL);
- ewl_object_size_request(EWL_OBJECT(win), 400, 400);
-
- ewl_callback_append(win, EWL_CALLBACK_DELETE_WINDOW, cb_window_close, NULL);
- ewl_callback_append(win, EWL_CALLBACK_DESTROY, cb_window_destroy, NULL);
-
- box = ewl_vbox_new();
- ewl_container_child_append(EWL_CONTAINER(win), box);
- ewl_widget_show(box);
-
- list = mountbox_tree_new();
- ewl_container_child_append(EWL_CONTAINER(box), list);
- ewl_widget_show(list);
-
- return win;
-}
-#endif
-int
-main(int argc, char **argv)
-{
-#if EWL_GUI
- Ewl_Widget *win;
-#endif
-
- ecore_init();
- ecore_string_init();
- e_dbus_init();
-
-#if EWL_GUI
- efreet_init();
- if (!ewl_init(&argc, argv))
- {
- fprintf(stderr, "Unable to init EWL.\n");
- return 1;
- }
-#endif
-
- conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
- if (!conn)
- {
- printf("Error connecting to system bus. Is it running?\n");
- return 1;
- }
-
- storage_devices = ecore_list_new();
- ecore_list_free_cb_set(storage_devices, ECORE_FREE_CB(storage_free));
- volumes = ecore_list_new();
- ecore_list_free_cb_set(volumes, ECORE_FREE_CB(volume_free));
-
-#if EWL_GUI
- win = mountbox_mainwin_new();
- ewl_widget_show(win);
-#endif
-
- e_hal_manager_get_all_devices(conn, cb_test_get_all_devices, NULL);
- e_hal_manager_find_device_by_capability(conn, "storage", cb_test_find_device_by_capability_storage, NULL);
- e_hal_manager_find_device_by_capability(conn, "volume", cb_test_find_device_by_capability_volume, NULL);
-
- e_dbus_signal_handler_add(conn, "org.freedesktop.Hal", "/org/freedesktop/Hal/Manager", "org.freedesktop.Hal.Manager", "DeviceAdded", cb_signal_device_added, NULL);
- e_dbus_signal_handler_add(conn, "org.freedesktop.Hal", "/org/freedesktop/Hal/Manager", "org.freedesktop.Hal.Manager", "DeviceRemoved", cb_signal_device_removed, NULL);
- e_dbus_signal_handler_add(conn, "org.freedesktop.Hal", "/org/freedesktop/Hal/Manager", "org.freedesktop.Hal.Manager", "NewCapability", cb_signal_new_capability, NULL);
-
-#if EWL_GUI
- ewl_main();
- efreet_shutdown();
- ewl_shutdown();
-#else
- ecore_main_loop_begin();
-#endif
- ecore_list_destroy(storage_devices);
- ecore_list_destroy(volumes);
- e_dbus_connection_close(conn);
- e_dbus_shutdown();
- ecore_string_shutdown();
- ecore_shutdown();
- return 1;
-}
+++ /dev/null
-#include <E_Nm.h>
-#include <Ecore_Data.h>
-#include <dbus/dbus.h>
-
-#define E_NM_DEVICE_TYPE_WIRED 1
-#define E_NM_DEVICE_TYPE_WIRELESS 2
-
-typedef struct NM_Manager NM_Manager;
-struct NM_Manager
-{
- E_NM_Context *ctx;
- Ecore_List *devices;
-};
-
-void
-cb_manager_get_udi(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- char *udi;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &udi);
-
- printf("Got udi: %s\n", udi);
-}
-
-void
-cb_manager_get_interface(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- char *interface;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &interface);
-
- printf("Got interface: %s\n", interface);
-}
-
-void
-cb_manager_get_driver(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- char *driver;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &driver);
-
- printf("Got driver: %s\n", driver);
-}
-
-void
-cb_manager_get_capabilities(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- dbus_uint32_t caps;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &caps);
-
- printf("Got capabilities: %i\n", caps);
-}
-
-void
-cb_manager_get_ip4address(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- dbus_int32_t ip;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &ip);
-
- printf("Got IPv4 address: %i.%i.%i.%i\n",
- (ip & 0xff),
- ((ip >> 8 ) & 0xff),
- ((ip >> 16) & 0xff),
- ((ip >> 24) & 0xff)
- );
-}
-
-void
-cb_manager_get_state(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- dbus_uint32_t state;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &state);
-
- printf("Got state: %i\n", state);
-}
-
-void
-cb_manager_get_ip4config(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- char *ip4config;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &ip4config);
-
- printf("Got IPv4 config path: %s\n", ip4config);
-}
-
-void
-cb_manager_get_carrier(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- dbus_uint32_t carrier;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &carrier);
-
- printf("Got carrier: %i\n", carrier);
-}
-
-void
-cb_manager_get_type(void *data, void *reply, DBusError *err)
-{
- DBusMessageIter iter, sub;
- dbus_uint32_t type;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- dbus_message_iter_init(reply, &iter);
- dbus_message_iter_recurse(&iter, &sub);
- dbus_message_iter_get_basic(&sub, &type);
-
- printf("Got type: %i (1 = ethernet, 2 = wireless)\n", type);
-}
-
-void
-cb_manager_get_devices(void *data, void *reply, DBusError *err)
-{
- NM_Manager *app = data;
- const char *dev;
-
- if (dbus_error_is_set(err))
- {
- printf("Error: %s - %s\n" ,err->name, err->message);
- return;
- }
-
- app->devices = reply;
- ecore_list_first_goto(app->devices);
- printf("Got devices:\n");
- while ((dev = ecore_list_next(app->devices)))
- {
- printf("%s\n", dev);
- e_nm_device_get_udi(app->ctx, dev, cb_manager_get_udi, app);
- e_nm_device_get_interface(app->ctx, dev, cb_manager_get_interface, app);
- e_nm_device_get_driver(app->ctx, dev, cb_manager_get_driver, app);
- e_nm_device_get_capabilities(app->ctx, dev, cb_manager_get_capabilities, app);
- e_nm_device_get_ip4address(app->ctx, dev, cb_manager_get_ip4address, app);
- e_nm_device_get_state(app->ctx, dev, cb_manager_get_state, app);
- /* FIXME: Getting the ip4config needs fixing */
- //e_nm_device_get_ip4config(app->ctx, dev, cb_manager_get_ip4config, app);
- e_nm_device_get_carrier(app->ctx, dev, cb_manager_get_carrier, app);
- e_nm_device_get_type(app->ctx, dev, cb_manager_get_type, app);
- }
-}
-
-int
-main(int argc, char **argv)
-{
- NM_Manager *app;
- ecore_init();
- ecore_string_init();
- e_dbus_init();
-
- app = calloc(1, sizeof(NM_Manager));
-
- app->ctx = e_nm_new();
- if (!app->ctx)
- {
- printf("Error connecting to system bus. Is it running?\n");
- return 1;
- }
-
- e_nm_get_devices(app->ctx, cb_manager_get_devices, app);
-
- ecore_main_loop_begin();
-
- e_nm_free(app->ctx);
- free(app);
- e_dbus_shutdown();
- ecore_string_shutdown();
- ecore_shutdown();
- return 0;
-}
+++ /dev/null
-.deps
-Makefile
-Makefile.in
+++ /dev/null
-.deps
-Makefile
-Makefile.in
-.libs
-e_dbus.lo
-e_dbus_interfaces.lo
-e_dbus_message.lo
-e_dbus_methods.lo
-e_dbus_object.lo
-e_dbus_signal.lo
-e_dbus_util.lo
-libedbus.la
+++ /dev/null
-.deps
-Makefile
-Makefile.in
-.libs
-e_hal_device.lo
-e_hal_manager.lo
-e_hal_util.lo
-libehal.la
+++ /dev/null
-.deps
-.libs
-Makefile
-Makefile.in
-*.lo
-*.la
+++ /dev/null
-#ifndef E_NM_H
-#define E_NM_H
-
-#include <E_DBus.h>
-#include <Ecore_Data.h>
-
-#ifdef EAPI
-#undef EAPI
-#endif
-#ifdef _MSC_VER
-# ifdef BUILDING_DLL
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI __declspec(dllimport)
-# endif
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif
-
-typedef struct E_NM_Context E_NM_Context;
-
-/**
- * Matching structs for the new "object" based DBus API
- * VPN is missing as this was still missing the redesign for the new 0.7 API
- */
-typedef struct E_NM_Device E_NM_Device;
-struct E_NM_Device
-{
- char *udi; /* object_path */
- char *interface;
- char *driver;
- uint capabilities;
- int ip4address;
- uint state;
- char *ip4config; /* object_path */
- int carrier;
- uint type;
-};
-
-typedef struct E_NM_Device_Wireless E_NM_Device_Wireless;
-struct E_NM_Device_Wireless
-{
- char *hwaddress;
- int mode;
- uint bitrate;
- char *activeaccesspoint; /* object_path */
- uint wirelesscapabilities;
-};
-
-typedef struct E_NM_Device_Wired E_NM_Device_Wired;
-struct E_NM_Device_Wired
-{
- char *hwaddress;
- uint speed;
-};
-
-typedef struct E_NM_Access_Point E_NM_Access_Point;
-struct E_NM_Access_Point
-{
- uint flags;
- uint wpaflags;
- uint rsnflags;
- char *ssid;
- uint frequency;
- char *hwaddress;
- int mode;
- uint rate;
- uint strength;
-};
-
-typedef struct E_NM_IP4Config E_NM_IP4Config;
-struct E_NM_IP4Config
-{
- uint address;
- uint gateway;
- uint netmask;
- uint broadcast;
- char *hostname;
- Ecore_List *nameserver; /* uints */
- Ecore_List *domains; /* char* */
- char *nisdomain;
- Ecore_List *nisserver; /* uints */
-};
-
-typedef struct E_NM_Manager E_NM_Manager;
-struct E_NM_Manager
-{
- int wirelessenabled; /* writeable*/
- int wirelesshardwareenabled;
- uint state;
-};
-
-typedef void (*E_NM_Cb_Manager_State_Change) (void *data, int state);
-typedef void (*E_NM_Cb_Manager_Device_Added) (void *data, const char *device);
-typedef void (*E_NM_Cb_Manager_Device_Removed) (void *data, const char *device);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- EAPI E_NM_Context *e_nm_new(void);
- EAPI void e_nm_free(E_NM_Context *ctx);
-
-
-/**
- * A callback function for a Network Manager call
- * @param user_data the data passed in to the method call
- * @param event_data a struct containing the return data.
- *
- * For method calls, the return structs use the following naming convention:
- * E_NM_<Interface>_<Method_Call_Name>_Return
- */
-
-/* org.freedesktop.NetworkManager api */
-/* methods */
- EAPI int e_nm_get_devices(E_NM_Context *ctx, E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_get_active_device(E_NM_Context *ctx, E_DBus_Callback_Func cb_func, void *data);
-/* TODO: EAPI int e_nm_set_active_device() */
- EAPI int e_nm_status(E_NM_Context *ctx, E_DBus_Callback_Func cb_func, void *data);
-/* signals */
-/* TODO: These have changed! */
- /* deprecated */EAPI void e_nm_callback_manager_state_change_set(E_NM_Context *ctx, E_NM_Cb_Manager_State_Change cb_func, void *user_data);
- /* deprecated */EAPI void e_nm_callback_manager_device_added_set(E_NM_Context *ctx, E_NM_Cb_Manager_Device_Added cb_func, void *user_data);
- /* deprecated */EAPI void e_nm_callback_manager_device_removed_set(E_NM_Context *ctx, E_NM_Cb_Manager_Device_Removed cb_func, void *user_data);
-/* TODO: EAPI void e_nm_callback_device_no_longer_active() */
-/* TODO: EAPI void e_nm_callback_device_now_active() */
-/* TODO: EAPI void e_nm_callback_device_activating() */
-/* TODO: EAPI void e_nm_callback_devices_changed() */
-/* TODO: EAPI void e_nm_callback_device_activation_failed() */
-/* TODO: EAPI void e_nm_callback_device_strength_changed() */
-/* TODO: EAPI void e_nm_callback_device_ipv4_address_changed() */
-/* TODO: EAPI void e_nm_callback_wireless_network_appeared() */
-/* TODO: EAPI void e_nm_callback_wireless_network_disappeared() */
-
-
-/* org.freedesktop.NetworkManager.Device api */
- EAPI int e_nm_device_get_udi(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_interface(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_driver(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_capabilities(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_ip4address(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_state(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_ip4config(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_carrier(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
- EAPI int e_nm_device_get_type(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data);
-
-/* org.freedesktop.NetworkManager.Devices api */
-/* TODO: EAPI int e_nm_network_get_name() */
-/* TODO: EAPI int e_nm_network_get_address() */
-/* TODO: EAPI int e_nm_network_get_strength() */
-/* TODO: EAPI int e_nm_network_get_frequency() */
-/* TODO: EAPI int e_nm_network_get_rate() */
-/* TODO: EAPI int e_nm_network_get_encrypted() */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+++ /dev/null
-MAINTAINERCLEANFILES = Makefile.in
-
-AM_CPPFLAGS = \
--I $(top_srcdir)/src/lib/dbus \
-@EDBUS_CFLAGS@
-
-if BUILD_ENM
-
-lib_LTLIBRARIES = libenm.la
-include_HEADERS = E_Nm.h
-
-libenm_la_SOURCES = \
-e_nm_private.h \
-e_nm.c \
-e_nm_manager.c \
-e_nm_device.c \
-e_nm_network.c \
-e_nm_util.c
-
-
-libenm_la_LIBADD = \
-@EDBUS_LIBS@ \
-$(top_builddir)/src/lib/dbus/libedbus.la
-libenm_la_LDFLAGS = -version-info @version_info@
-
-
-libenm_la_DEPENDENCIES = \
-$(top_builddir)/src/lib/dbus/libedbus.la
-
-endif
+++ /dev/null
-This depends on NetworkManager 0.7, which was unrealeased as of 2007-03-20.
-It is only a start, and can't really be finished until the NetworkManagerInfo interface is reworked. So, for now, ignore it :)
+++ /dev/null
-#include "E_Nm.h"
-#include "e_nm_private.h"
-
-EAPI E_NM_Context *
-e_nm_new(void)
-{
- E_NM_Context *ctx;
-
- ctx = calloc(1, sizeof(E_NM_Context));
- if (!ctx) return NULL;
-
- ctx->conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
- if (!ctx->conn)
- goto error;
-
- return ctx;
-
-error:
- free(ctx);
- return NULL;
-
-}
-
-EAPI void
-e_nm_free(E_NM_Context *ctx)
-{
- e_dbus_connection_close(ctx->conn);
- free(ctx);
-}
-
-static void
-cb_signal_manager_state_change(void *data, DBusMessage *msg)
-{
- E_NM_Context *ctx;
- dbus_uint32_t state;
- DBusError err;
- if (!msg || !data) return;
-
- ctx = data;
- dbus_error_init(&err);
- dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &state, DBUS_TYPE_INVALID);
- if (dbus_error_is_set(&err))
- {
- printf("Error: %s - %s\n", err.name, err.message);
- return;
- }
-
- if (ctx->cb_manager_state_change)
- ctx->cb_manager_state_change(ctx->data_manager_state_change, (int)state);
-}
-
-static void
-cb_signal_manager_device_added(void *data, DBusMessage *msg)
-{
- E_NM_Context *ctx;
- const char *device;
- DBusError err;
- if (!msg || !data) return;
-
- ctx = data;
- dbus_error_init(&err);
- dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID);
- if (dbus_error_is_set(&err))
- {
- printf("Error: %s - %s\n", err.name, err.message);
- return;
- }
-
- if (ctx->cb_manager_device_added)
- ctx->cb_manager_device_added(ctx->data_manager_device_added, device);
-}
-
-static void
-cb_signal_manager_device_removed(void *data, DBusMessage *msg)
-{
- E_NM_Context *ctx;
- const char *device;
- DBusError err;
- if (!msg || !data) return;
-
- ctx = data;
- dbus_error_init(&err);
- dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID);
- if (dbus_error_is_set(&err))
- {
- printf("Error: %s - %s\n", err.name, err.message);
- return;
- }
-
- if (ctx->cb_manager_device_removed)
- ctx->cb_manager_device_removed(ctx->data_manager_device_removed, device);
-}
-
-
-EAPI void
-e_nm_callback_manager_state_change_set(E_NM_Context *ctx, E_NM_Cb_Manager_State_Change cb_func, void *user_data)
-{
- ctx->cb_manager_state_change = cb_func;
- ctx->data_manager_state_change = user_data;
-
- e_dbus_signal_handler_add(ctx->conn, E_NM_SERVICE, E_NM_PATH_NETWORK_MANAGER, E_NM_INTERFACE_NETWORK_MANAGER, "StateChange", cb_signal_manager_state_change, ctx);
-}
-
-EAPI void
-e_nm_callback_manager_device_added_set(E_NM_Context *ctx, E_NM_Cb_Manager_Device_Added cb_func, void *user_data)
-{
- ctx->cb_manager_device_added = cb_func;
- ctx->data_manager_device_added = user_data;
-
- e_dbus_signal_handler_add(ctx->conn, E_NM_SERVICE, E_NM_PATH_NETWORK_MANAGER, E_NM_INTERFACE_NETWORK_MANAGER, "DeviceAdded", cb_signal_manager_device_added, ctx);
-}
-
-EAPI void
-e_nm_callback_manager_device_removed_set(E_NM_Context *ctx, E_NM_Cb_Manager_Device_Removed cb_func, void *user_data)
-{
- ctx->cb_manager_device_removed = cb_func;
- ctx->data_manager_device_removed = user_data;
-
- e_dbus_signal_handler_add(ctx->conn, E_NM_SERVICE, E_NM_PATH_NETWORK_MANAGER, E_NM_INTERFACE_NETWORK_MANAGER, "DeviceRemoved", cb_signal_manager_device_removed, ctx);
-}
+++ /dev/null
-/*
- * This file defines functions that query each of the functions provided by
- * the org.freedesktop.NetworkManager.Device DBus interface.
- */
-
-#include "E_Nm.h"
-#include "e_nm_private.h"
-#include <Ecore_Data.h>
-
-
-/**
- * Get the UDI of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_udi(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "Udi", cb_func, data);
-}
-
-
-/**
- * Get the interface name of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_interface(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "Interface", cb_func, data);
-}
-
-
-/**
- * Get the driver name of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_driver(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "Driver", cb_func, data);
-}
-
-
-/**
- * Get the capabilities of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_capabilities(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "Capabilities", cb_func, data);
-}
-
-
-/**
- * Get the IPv4 address of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_ip4address(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "Ip4Address", cb_func, data);
-}
-
-
-/**
- * Get the state of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_state(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "State", cb_func, data);
-}
-
-
-/**
- * Get the IPv4 config object path of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_ip4config(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "Ip4Config", cb_func, data);
-}
-
-
-/**
- * Get the carrier status of a NetworkManager device
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_carrier(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "Carrier", cb_func, data);
-}
-
-
-/**
- * Return the type of a an NM device:
- *
- * 0: unknown
- * 1: wired
- * 2: wireless
- *
- * @param ctx an e_nm context
- * @param device a NetworkManager device to communicate with
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- */
-EAPI int
-e_nm_device_get_type(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- /* FIXME: Decide how to handle the return value for this functions */
- e_nm_device_properties_get(ctx->conn, device, "DeviceType", cb_func, data);
-}
+++ /dev/null
-#include "E_Nm.h"
-#include "e_nm_private.h"
-
-
-/**
- * Get all network devices.
- *
- * Returns an Ecore_List of dbus object paths for network devices. This list is
- * of const char *, and is freed automatically after the callback returns.
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-EAPI int
-e_nm_get_devices(E_NM_Context *ctx, E_DBus_Callback_Func cb_func, void *data)
-{
- DBusMessage *msg;
- int ret;
-
- msg = e_nm_manager_call_new("GetDevices");
-
- ret = e_dbus_method_call_send(ctx->conn, msg, cb_nm_string_list, cb_func, free_nm_string_list, -1, data) ? 1 : 0;
- dbus_message_unref(msg);
- return ret;
-}
-
-
-/**
- * Find the active device that NM has chosen
- *
- * Returns a single string containing the dbus path to the active device
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-EAPI int
-e_nm_get_active_device(E_NM_Context *ctx, E_DBus_Callback_Func cb_func,
- void *data)
-{
- return e_nm_get_from_nm(ctx, cb_func, data,
- "getActiveDevice", DBUS_TYPE_STRING);
-}
-
-
-/**
- * Query the current state of the network
- *
- * Returns a single string containing the status:
- *
- * "connecting": there is a pending network connection (waiting for a DHCP
- * request to complete, waiting for an encryption
- * key/passphrase, waiting for a wireless network, etc)
- *
- * "connected": there is an active network connection
- *
- * "scanning": there is no active network connection, but NetworkManager
- * is looking for an access point to associate with
- *
- * "disconnected": there is no network connection
- *
- *
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-EAPI int
-e_nm_status(E_NM_Context *ctx, E_DBus_Callback_Func cb_func,
- void *data)
-{
-
- return e_nm_get_from_nm(ctx, cb_func, data,
- "status", DBUS_TYPE_STRING);
-}
+++ /dev/null
-#include "E_Nm.h"
-#include "e_nm_private.h"
-
-/**
- * Get the ESSID of a wireless network
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-int
-e_nm_network_get_name(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- return e_nm_get_from_device(ctx, device, cb_func, data, "getName",
- DBUS_TYPE_STRING);
-}
-
-/**
- * Get the MAC address of a wireless network's AP
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-int
-e_nm_network_get_address(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- return e_nm_get_from_device(ctx, device, cb_func, data, "getAddress",
- DBUS_TYPE_STRING);
-}
-
-
-/**
- * Get the strength of the network; given out of 100
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-int
-e_nm_network_get_strength(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- return e_nm_get_from_device(ctx, device, cb_func, data, "getStrength",
- DBUS_TYPE_INT32);
-}
-
-
-/**
- * Get the frequency of the network; given in GHz
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-int
-e_nm_network_get_frequency(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- return e_nm_get_from_device(ctx, device, cb_func, data, "getFrequency",
- DBUS_TYPE_DOUBLE);
-}
-
-
-/**
- * Get the data rate of the network; given in Mbps
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-int
-e_nm_network_get_rate(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- return e_nm_get_from_device(ctx, device, cb_func, data, "getRate",
- DBUS_TYPE_INT32);
-}
-
-
-/**
- * Return true if the network requires encryption
- *
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- **/
-int
-e_nm_network_get_encryption(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data)
-{
- return e_nm_get_from_device(ctx, device, cb_func, data, "getEncryption",
- DBUS_TYPE_BOOLEAN);
-}
+++ /dev/null
-#ifndef E_NM_PRIVATE_H
-#define E_NM_PRIVATE_H
-
-#define E_NM_SERVICE "org.freedesktop.NetworkManager"
-#define E_NM_PATH_NETWORK_MANAGER "/org/freedesktop/NetworkManager"
-#define E_NM_INTERFACE_NETWORK_MANAGER "org.freedesktop.NetworkManager"
-#define E_NM_INTERFACE_ACCESSPOINT "org.freedesktop.NetworkManager.AccessPoint"
-#define E_NM_INTERFACE_DEVICE "org.freedesktop.NetworkManager.Device"
-#define E_NM_INTERFACE_DEVICE_WIRELESS "org.freedesktop.NetworkManager.Device.Wireless"
-#define E_NM_INTERFACE_DEVICE_WIRED "org.freedesktop.NetworkManager.Device.Wired"
-#define E_NM_INTERFACE_IP4CONFIG "org.freedesktop.NetworkManager.IP4Config"
-
-#define e_nm_manager_call_new(member) dbus_message_new_method_call(E_NM_SERVICE, E_NM_PATH_NETWORK_MANAGER, E_NM_INTERFACE_NETWORK_MANAGER, member)
-
-#define e_nm_device_call_new(path, member) dbus_message_new_method_call(E_NM_SERVICE, path, E_NM_INTERFACE_DEVICE, member)
-
-#define e_nm_network_call_new(member) dbus_message_new_method_call(E_NM_SERVICE, E_NM_PATH_NETWORK_MANAGER, E_NM_INTERFACE_NETWORK_MANAGER, member)
-
-#define e_nm_device_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, E_NM_SERVICE, dev, E_NM_INTERFACE_DEVICE, prop, (E_DBus_Method_Return_Cb) cb, data)
-
-struct E_NM_Context
-{
- E_DBus_Connection *conn;
-
- E_NM_Cb_Manager_State_Change cb_manager_state_change;
- void *data_manager_state_change;
-
- E_NM_Cb_Manager_Device_Added cb_manager_device_added;
- void *data_manager_device_added;
-
- E_NM_Cb_Manager_Device_Removed cb_manager_device_removed;
- void *data_manager_device_removed;
-};
-
-
-int e_nm_get_from_nm(E_NM_Context *ctx, E_DBus_Callback_Func cb_func, void *data,
- const char *method, int rettype);
-int e_nm_get_from_device(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data,
- const char *method, int rettype);
-
-void *cb_nm_generic(DBusMessage *msg, DBusError *err);
-void free_nm_generic(void *data);
-void *cb_nm_int32(DBusMessage *msg, DBusError *err);
-void *cb_nm_uint32(DBusMessage *msg, DBusError *err);
-void *cb_nm_string(DBusMessage *msg, DBusError *err);
-void *cb_nm_boolean(DBusMessage *msg, DBusError *err);
-void *cb_nm_string_list(DBusMessage *msg, DBusError *err);
-void free_nm_string_list(void *data);
-#endif
+++ /dev/null
-#include "E_Nm.h"
-#include "e_nm_private.h"
-#include "E_DBus.h"
-#include <string.h>
-#include <Ecore_Data.h>
-
-/**
- * @internal
- * @brief returns an e_dbus callback for a given dbus type
- * @param rettype the return type we want to find a callback for
- **/
-static E_DBus_Unmarshal_Func
-e_nm_callback_by_type(int rettype)
-{
- switch (rettype)
- {
- case DBUS_TYPE_STRING:
- return cb_nm_string;
-
- case DBUS_TYPE_INT32:
- return cb_nm_int32;
-
- case DBUS_TYPE_UINT32:
- return cb_nm_uint32;
-
- case DBUS_TYPE_BOOLEAN:
- return cb_nm_boolean;
-
- default:
- return cb_nm_generic;
- }
-}
-
-/**
- * @internal
- * @brief returns an e_dbus free for a given dbus type
- * @param rettype the return type we want to find a free for
- **/
-static E_DBus_Free_Func
-e_nm_free_by_type(int rettype)
-{
- switch (rettype)
- {
- case DBUS_TYPE_STRING:
- return NULL;
- case DBUS_TYPE_INT32:
- case DBUS_TYPE_UINT32:
- case DBUS_TYPE_BOOLEAN:
- default:
- return free_nm_generic;
- }
-}
-
-/**
- * @internal
- * @brief Send "get" messages to NetworkManager via e_dbus
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- * @param method the name of the method that should be called
- * @param rettype the type of the data that will be returned to the callback
- **/
-int
-e_nm_get_from_nm(E_NM_Context *ctx, E_DBus_Callback_Func cb_func, void *data,
- const char *method, int rettype)
-{
- DBusMessage *msg;
- int ret;
-
- msg = e_nm_manager_call_new(method);
- ret = e_dbus_method_call_send(ctx->conn, msg, e_nm_callback_by_type(rettype),
- cb_func, e_nm_free_by_type(rettype), -1, data) ? 1 : 0;
- dbus_message_unref(msg);
- return ret;
-}
-
-
-/**
- * @internal
- * @brief Send "get" messages to a Device via e_dbus
- * @param ctx an e_nm context
- * @param cb a callback, used when the method returns (or an error is received)
- * @param data user data to pass to the callback function
- * @param method the name of the method that should be called
- * @param rettype the type of the data that will be returned to the callback
- **/
-int
-e_nm_get_from_device(E_NM_Context *ctx, const char *device,
- E_DBus_Callback_Func cb_func, void *data,
- const char *method, int rettype)
-{
- DBusMessage *msg;
- int ret;
-
- msg = e_nm_device_call_new(device, method);
- ret = e_dbus_method_call_send(ctx->conn, msg, e_nm_callback_by_type(rettype),
- cb_func,
- e_nm_free_by_type(rettype),
- -1, data) ? 1 : 0;
- dbus_message_unref(msg);
- return ret;
-}
-
-/**
- * @internal
- * @brief Generic callback for methods that return nothing
- */
-void *
-cb_nm_generic(DBusMessage *msg, DBusError *err)
-{
- return NULL;
-}
-
-/**
- * @internal
- * @brief Generic free for methods
- */
-void
-free_nm_generic(void *data)
-{
- if (!data) return;
- free(data);
-}
-
-/**
- * @internal
- * @brief Callback for methods that return DBUS_TYPE_INT32
- */
-void *
-cb_nm_int32(DBusMessage *msg, DBusError *err)
-{
- dbus_int32_t *i;
-
- i = malloc(sizeof(dbus_int32_t));
- /* Actually emit the integer */
- dbus_message_get_args(msg, err,
- DBUS_TYPE_INT32, i,
- DBUS_TYPE_INVALID);
-
- return i;
-}
-
-/**
- * @internal
- * @brief Callback for methods that return DBUS_TYPE_UINT32
- */
-void *
-cb_nm_uint32(DBusMessage *msg, DBusError *err)
-{
- dbus_uint32_t *i;
-
- i = malloc(sizeof(dbus_uint32_t));
- /* Actually emit the unsigned integer */
- dbus_message_get_args(msg, err,
- DBUS_TYPE_UINT32, i,
- DBUS_TYPE_INVALID);
-
- return i;
-}
-
-/**
- * @internal
- * @brief Callback for methods that return DBUS_TYPE_BOOLEAN
- */
-void *
-cb_nm_boolean(DBusMessage *msg, DBusError *err)
-{
- dbus_bool_t *i;
-
- i = malloc(sizeof(dbus_bool_t));
- /* Actually emit the unsigned integer */
- dbus_message_get_args(msg, err,
- DBUS_TYPE_BOOLEAN, i,
- DBUS_TYPE_INVALID);
-
- return i;
-}
-
-/**
- * @internal
- * @brief Callback for methods returning a single string
- */
-void *
-cb_nm_string(DBusMessage *msg, DBusError *err)
-{
- char *str;
-
- /* Actually emit the string */
- dbus_message_get_args(msg, err,
- DBUS_TYPE_STRING, &str,
- DBUS_TYPE_INVALID);
-
- return str;
-}
-
-
-/**
- * @internal
- * @brief Callback for methods returning a list of strings or object paths
- */
-void *
-cb_nm_string_list(DBusMessage *msg, DBusError *err)
-{
- Ecore_List *devices;
- DBusMessageIter iter, sub;
-
- dbus_message_iter_init(msg, &iter);
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
- dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_OBJECT_PATH) return NULL;
-
- devices = ecore_list_new();
- dbus_message_iter_recurse(&iter, &sub);
- while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID)
- {
- char *dev = NULL;
-
- dbus_message_iter_get_basic(&sub, &dev);
- if (dev) ecore_list_append(devices, dev);
- dbus_message_iter_next(&sub);
- }
-
- return devices;
-}
-
-void
-free_nm_string_list(void *data)
-{
- Ecore_List *list = data;
-
- if (list) ecore_list_destroy(list);
-}
-
+++ /dev/null
-.deps
-.libs
-Makefile
-Makefile.in
-*.lo
-*.la
+++ /dev/null
- Desktop Notifications Specification
-
- Mike Hearn
-
- <[1]mike@navi.cx>
-
-
- Christian Hammond
-
- <[2]chipx86@chipx86.com>
-
-
- Version 0.9
-
- Revision History
- Revision 0.9 15 January 2006 Revised by: cdh
- Clarify the naming for the application IDs. Put back a number of things
- that probably shouldn't have been removed from the spec.
- Revision 0.8 23 September 2005 Revised by: J5
- Major overhaul of spec to work with the newer D-Bus recursive type system.
- Simplify protocol. Changed the verbage notification type to category
- Revision 0.7 28 July 2005 Revised by: cdh
- Added "x" and "y" hints. Talk about the variant type for hint values.
- Revision 0.6 1 April 2005 Revised by: cdh
- Updated to work with D-BUS 0.31+.
- Revision 0.5 2 October 2004 Revised by: cdh
- Added a "suppress-sound" hint. Added a "sound" capability. Renamed the
- "soundfile" hint to sound-file".
- Revision 0.4 29 September 2004 Revised by: cdh
- Added image support in markup, and made the restrictions on markup more
- clear. Removed the High urgency. Added new notification types. Fixed
- notification expiration.
- Revision 0.3 15 September 2004 Revised by: cdh
- Added hint and notification type sections
- Revision 0.2 foo Revised by: mh
- Added replaces field to protocol
- Revision 0.1 foo Revised by: mh
- Initial version
-
- --------------------------------------------------------------------------
-
- Table of Contents
-
- 1. [3]Introduction
-
- 2. [4]Basic Design
-
- 3. [5]Backwards Compatibility
-
- 4. [6]Markup
-
- 4.1. [7]Hyperlinks
-
- 4.2. [8]Images
-
- 5. [9]Icons
-
- 6. [10]Categories
-
- 7. [11]Urgency Levels
-
- 8. [12]Hints
-
- 9. [13]D-BUS Protocol
-
- 9.1. [14]Message commands
-
- 9.1.1.
- [15]org.freedesktop.Notifications.GetCapabilities
-
- 9.1.2. [16]org.freedesktop.Notifications.Notify
-
- 9.1.3.
- [17]org.freedesktop.Notifications.CloseNotification
-
- 9.1.4.
- [18]org.freedesktop.Notifications.GetServerInformation
-
- 9.2. [19]Signals
-
- 9.2.1.
- [20]org.freedesktop.Notifications.NotificationClosed
-
- 9.2.2.
- [21]org.freedesktop.Notifications.ActionInvoked
-
-1. Introduction
-
- This is a draft standard for a desktop notifications service, through
- which applications can generate passive popups (sometimes known as
- "poptarts") to notify the user in an asynchronous manner of events.
-
- This specification explicitly does not include other types of
- notification presentation such as modal message boxes, window manager
- decorations or window list annotations.
-
- Example use cases include:
-
- * Presence changes in IM programs: for instance, MSN Messenger on
- Windows pioneered the use of passive popups to indicate presence
- changes.
-
- * Scheduled alarm
-
- * Completed file transfer
-
- * New mail notification
-
- * Low disk space/battery warnings
-
- --------------------------------------------------------------------------
-
-2. Basic Design
-
- In order to ensure that multiple notifications can easily be displayed
- at once, and to provide a convenient implementation, all notifications are
- controlled by a single session-scoped service which exposes a D-BUS
- interface.
-
- On startup, a conforming implementation should take the
- org.freedesktop.Notifications service on the session bus. This service
- will be referred to as the "notification server" or just "the server" in
- this document. It can optionally be activated automatically by the bus
- process, however this is not required and notification server clients must
- not assume that it is available.
-
- The server should implement the org.freedesktop.Notifications interface
- on an object with the path "/org/freedesktop/Notifications". This is the
- only interface required by this version of the specification.
-
- A notification has the following components:
-
- Table 1. Notification Components
-
- +------------------------------------------------------------------------+
- | Component | Description |
- |--------------------+---------------------------------------------------|
- | | This is the optional name of the application |
- | | sending the notification. This should be the |
- | Application Name | application's formal name, rather than some sort |
- | | of ID. An example would be "FredApp E-Mail |
- | | Client," rather than "fredapp-email-client." |
- |--------------------+---------------------------------------------------|
- | Replaces ID | An optional ID of an existing notification that |
- | | this notification is intended to replace. |
- |--------------------+---------------------------------------------------|
- | | The notification icon. This is represented |
- | | either as a URI (file:// is the only URI schema |
- | Notification Icon | supported right now) or a name in a |
- | | freedesktop.org-compliant icon theme (not a GTK+ |
- | | stock ID). |
- |--------------------+---------------------------------------------------|
- | | This is a single line overview of the |
- | | notification. For instance, "You have mail" or "A |
- | | friend has come online". It should generally not |
- | Summary | be longer than 40 characters, though this is not |
- | | a requirement, and server implementations should |
- | | word wrap if necessary. The summary must be |
- | | encoded using UTF-8. |
- |--------------------+---------------------------------------------------|
- | | |
- | | |
- | | This is a multi-line body of text. Each line is |
- | | a paragraph, server implementations are free to |
- | | word wrap them as they see fit. |
- | Body | |
- | | The body may contain simple markup as specified |
- | | in [22]Markup. It must be encoded using UTF-8. |
- | | |
- | | If the body is omitted, just the summary is |
- | | displayed. |
- |--------------------+---------------------------------------------------|
- | | |
- | | |
- | | The actions send a request message back to the |
- | | notification client when invoked. This |
- | | functionality may not be implemented by the |
- | | notification server, conforming clients should |
- | | check if it is available before using it (see the |
- | | GetCapabilities message in [23]Protocol). An |
- | | implementation is free to ignore any requested by |
- | | the client. As an example one possible rendering |
- | | of actions would be as buttons in the |
- | Actions | notification popup. |
- | | |
- | | Actions are sent over as a list of pairs. Each |
- | | even element in the list (starting at index 0) |
- | | represents the identifier for the action. Each |
- | | odd element in the list is the localized string |
- | | that will be displayed to the user. |
- | | |
- | | The default action (usually invoked my clicking |
- | | the notification) should have a key named |
- | | "default". The name can be anything, though |
- | | implementations are free not to display it. |
- |--------------------+---------------------------------------------------|
- | | |
- | | |
- | | See [24]Hints. |
- | | |
- | | Beyond the core protocol is the hints table. A |
- | | couple of core elements have been moved to hints |
- | | mostly because in a huge number of cases their |
- | | default values would be sufficent. The elements |
- | | moved to hints are: |
- | | |
- | | Elements Moved to Hints |
- | | |
- | | Element: Category ID |
- | | |
- | Hints | Description: An optional ID representing the type |
- | | of notification (the name has been changed from |
- | | Notification Type ID in pervious versions). See |
- | | [25]Categories. |
- | | |
- | | Element: Urgency Level |
- | | |
- | | Description: The urgency of the notification. See |
- | | [26]Urgency Levels. (Defaults to 1 - Normal) |
- | | |
- | | Element: Icon Data |
- | | |
- | | Description: Instead of overloading the icon |
- | | field we now have an icon_data field that is used |
- | | when icon is blank. |
- |--------------------+---------------------------------------------------|
- | | |
- | | |
- | | The timeout time in milliseconds since the |
- | | display of the notification at which the |
- | | notification should automatically close. |
- | Expiration Timeout | |
- | | If -1, the notification's expiration time is |
- | | dependent on the notification server's settings, |
- | | and may vary for the type of notification. |
- | | |
- | | If 0, the notification never expires. |
- +------------------------------------------------------------------------+
-
- Each notification displayed is allocated a unique ID by the server. This
- is unique within the session. While the notification server is running,
- the ID will not be recycled unless the capacity of a uint32 is exceeded.
-
- This can be used to hide the notification before the expiration timeout
- is reached. It can also be used to atomically replace the notification
- with another. This allows you to (for instance) modify the contents of a
- notification while it's on-screen.
-
- --------------------------------------------------------------------------
-
-3. Backwards Compatibility
-
- Clients should try and avoid making assumptions about the presentation
- and abilities of the notification server. The message content is the most
- important thing.
-
- Clients can check with the server what capabilities are supported using
- the GetCapabilities message. See [27]Protocol.
-
- If a client requires a response from a passive popup, it should be coded
- such that a non-focus-stealing message box can be used in the case that
- the notification server does not support this feature.
-
- --------------------------------------------------------------------------
-
-4. Markup
-
- Body text may contain markup. The markup is XML-based, and consists of a
- small subset of HTML along with a few additional tags.
-
- The following tags should be supported by the notification server.
- Though it is optional, it is recommended. Notification servers that do not
- support these tags should filter them out.
-
- +------------------------------------------+
- | <b> ... </b> | Bold |
- |------------------------------+-----------|
- | <i> ... </i> | Italic |
- |------------------------------+-----------|
- | <u> ... </u> | Underline |
- |------------------------------+-----------|
- | <a href="..."> ... </a> | Hyperlink |
- |------------------------------+-----------|
- | <img src="..." alt="..."/> | Image |
- +------------------------------------------+
-
- A full-blown HTML implementation is not required of this spec, and
- notifications should never take advantage of tags that are not listed
- above. As notifications are not a substitute for web browsers or complex
- dialogs, advanced layout is not necessary, and may in fact limit the
- number of systems that notification services can run on, due to memory
- usage and screen space. Such examples are PDAs, certain cell phones, and
- slow PCs or laptops with little memory.
-
- For the same reason, a full XML or XHTML implementation using XSLT or
- CSS stylesheets is not part of this specification. Information that must
- be presented in a more complex form should use an application-specific
- dialog, a web browser, or some other display mechanism.
-
- The tags specified above mark up the content in a way that allows them
- to be stripped out on some implementations without impacting the actual
- content.
-
- --------------------------------------------------------------------------
-
- 4.1. Hyperlinks
-
- Hyperlinks allow for linking one or more words to a URI. There is no
- requirement to allow for images to be linked, and it is highly suggested
- that implementations do not allow this, as there is no clean-looking,
- standard visual indicator for a hyperlinked image.
-
- Hyperlinked text should appear in the standard blue underline format.
-
- Hyperlinks cannot function as a replacement for actions. They are used
- to link to local directories or remote sites using standard URI schemes.
-
- Implementations are not required to support hyperlinks.
-
- --------------------------------------------------------------------------
-
- 4.2. Images
-
- Images may be placed in the notification, but this should be done with
- caution. The image should never exceed 200x100, but this should be thought
- of as a maximum size. Images should always have alternative text provided
- through the alt="..." attribute.
-
- Image data cannot be embedded in the message itself. Images referenced
- must always be local files.
-
- Implementations are not required to support images.
-
- --------------------------------------------------------------------------
-
-5. Icons
-
- A notification can optionally have an icon specified by the Notification
- Icon field or by the icon_data hint.
-
- The icon_data field should be a raw image data structure of signature
- (iiibiiay) which describes the width, height, rowstride, has alpha, bits
- per sample, channels and image data respectively.
-
- --------------------------------------------------------------------------
-
-6. Categories
-
- Notifications can optionally have a type indicator. Although neither
- client or nor server must support this, some may choose to. Those servers
- implementing categories may use them to intelligently display the
- notification in a certain way, or group notifications of similar types.
-
- Categories are in class.specific form. class specifies the generic type
- of notification, and specific specifies the more specific type of
- notification.
-
- If a specific type of notification does not exist for your notification,
- but the generic kind does, a notification of type class is acceptable.
-
- Third parties, when defining their own categories, should discuss the
- possibility of standardizing on the hint with other parties, preferably in
- a place such as the [28]xdg mailing list at [29]freedesktop.org. If it
- warrants a standard, it will be added to the table above. If no consensus
- is reached, the category should be in the form of "x-vendor.class.name."
-
- The following table lists standard notifications as defined by this
- spec. More will be added in time.
-
- Table 2. Categories
-
- +------------------------------------------------------------------------+
- | Type | Description |
- |------------------------+-----------------------------------------------|
- | "device" | A generic device-related notification that |
- | | doesn't fit into any other category. |
- |------------------------+-----------------------------------------------|
- | "device.added" | A device, such as a USB device, was added to |
- | | the system. |
- |------------------------+-----------------------------------------------|
- | "device.error" | A device had some kind of error. |
- |------------------------+-----------------------------------------------|
- | "device.removed" | A device, such as a USB device, was removed |
- | | from the system. |
- |------------------------+-----------------------------------------------|
- | "email" | A generic e-mail-related notification that |
- | | doesn't fit into any other category. |
- |------------------------+-----------------------------------------------|
- | "email.arrived" | A new e-mail notification. |
- |------------------------+-----------------------------------------------|
- | "email.bounced" | A notification stating that an e-mail has |
- | | bounced. |
- |------------------------+-----------------------------------------------|
- | | A generic instant message-related |
- | "im" | notification that doesn't fit into any other |
- | | category. |
- |------------------------+-----------------------------------------------|
- | "im.error" | An instant message error notification. |
- |------------------------+-----------------------------------------------|
- | "im.received" | A received instant message notification. |
- |------------------------+-----------------------------------------------|
- | "network" | A generic network notification that doesn't |
- | | fit into any other category. |
- |------------------------+-----------------------------------------------|
- | | A network connection notification, such as |
- | "network.connected" | successful sign-on to a network service. This |
- | | should not be confused with device.added for |
- | | new network devices. |
- |------------------------+-----------------------------------------------|
- | | A network disconnected notification. This |
- | "network.disconnected" | should not be confused with device.removed |
- | | for disconnected network devices. |
- |------------------------+-----------------------------------------------|
- | "network.error" | A network-related or connection-related |
- | | error. |
- |------------------------+-----------------------------------------------|
- | | A generic presence change notification that |
- | "presence" | doesn't fit into any other category, such as |
- | | going away or idle. |
- |------------------------+-----------------------------------------------|
- | "presence.offline" | An offline presence change notification. |
- |------------------------+-----------------------------------------------|
- | "presence.online" | An online presence change notification. |
- |------------------------+-----------------------------------------------|
- | | A generic file transfer or download |
- | "transfer" | notification that doesn't fit into any other |
- | | category. |
- |------------------------+-----------------------------------------------|
- | "transfer.complete" | A file transfer or download complete |
- | | notification. |
- |------------------------+-----------------------------------------------|
- | "transfer.error" | A file transfer or download error. |
- +------------------------------------------------------------------------+
-
- --------------------------------------------------------------------------
-
-7. Urgency Levels
-
- Notifications have an urgency level associated with them. This defines
- the importance of the notification. For example, "Joe Bob signed on" would
- be a low urgency. "You have new mail" or "A USB device was unplugged"
- would be a normal urgency. "Your computer is on fire" would be a critical
- urgency.
-
- Urgency levels are defined as follows:
-
- Table 3. Urgency Levels
-
- +--------------------+
- | Type | Description |
- |------+-------------|
- | 0 | Low |
- |------+-------------|
- | 1 | Normal |
- |------+-------------|
- | 2 | Critical |
- +--------------------+
-
- Developers must use their own judgement when deciding the urgency of a
- notification. Typically, if the majority of programs are using the same
- level for a specific type of urgency, other applications should follow
- them.
-
- For low and normal urgencies, server implementations may display the
- notifications how they choose. They should, however, have a sane
- expiration timeout dependent on the urgency level.
-
- Critical notifications should not automatically expire, as they are
- things that the user will most likely want to know about. They should only
- be closed when the user dismisses them, for example, by clicking on the
- notification.
-
- --------------------------------------------------------------------------
-
-8. Hints
-
- Hints are a way to provide extra data to a notification server that the
- server may be able to make use of.
-
- Neither clients nor notification servers are required to support any
- hints. Both sides should assume that hints are not passed, and should
- ignore any hints they do not understand.
-
- Third parties, when defining their own hints, should discuss the
- possibility of standardizing on the hint with other parties, preferably in
- a place such as the [30]xdg mailing list at [31]freedesktop.org. If it
- warrants a standard, it will be added to the table above. If no consensus
- is reached, the hint name should be in the form of "x-vendor-name."
-
- The value type for the hint dictionary in D-BUS is of the
- DBUS_TYPE_VARIANT container type. This allows different data types
- (string, integer, boolean, etc.) to be used for hints. When adding a
- dictionary of hints, this type must be used, rather than putting the
- actual hint value in as the dictionary value.
-
- The following table lists the standard hints as defined by this
- specification. Future hints may be proposed and added to this list over
- time. Once again, implementations are not required to support these.
-
- Table 4. Standard Hints
-
- +------------------------------------------------------------------------+
- | Name | Value Type | Description |
- |------------------+------------+----------------------------------------|
- | "urgency" | byte | The urgency level. |
- |------------------+------------+----------------------------------------|
- | "category" | string | The type of notification this is. |
- |------------------+------------+----------------------------------------|
- | | | This specifies the name of the |
- | | | desktop filename representing the |
- | | | calling program. This should be the |
- | | | same as the prefix used for the |
- | "desktop-entry"> | string | application's .desktop file. An |
- | | | example would be "rhythmbox" from |
- | | | "rhythmbox.desktop". This can be used |
- | | | by the daemon to retrieve the correct |
- | | | icon for the application, for logging |
- | | | purposes, etc. |
- |------------------+------------+----------------------------------------|
- | | | This is a raw data image format |
- | | | which describes the width, height, |
- | "image_data" | (iiibiiay) | rowstride, has alpha, bits per sample, |
- | | | channels and image data respectively. |
- | | | We use this value if the icon field is |
- | | | left blank. |
- |------------------+------------+----------------------------------------|
- | "sound-file" | string | The path to a sound file to play |
- | | | when the notification pops up. |
- |------------------+------------+----------------------------------------|
- | | | Causes the server to suppress |
- | | | playing any sounds, if it has that |
- | "suppress-sound" | boolean | ability. This is usually set when the |
- | | | client itself is going to play its own |
- | | | sound. |
- |------------------+------------+----------------------------------------|
- | | | Specifies the X location on the |
- | "x" | int | screen that the notification should |
- | | | point to. The "y" hint must also be |
- | | | specified. |
- |------------------+------------+----------------------------------------|
- | | | Specifies the Y location on the |
- | "y" | int | screen that the notification should |
- | | | point to. The "x" hint must also be |
- | | | specified. |
- +------------------------------------------------------------------------+
-
- --------------------------------------------------------------------------
-
-9. D-BUS Protocol
-
- The following messages must be supported by all implementations.
-
- --------------------------------------------------------------------------
-
- 9.1. Message commands
-
- 9.1.1. org.freedesktop.Notifications.GetCapabilities
-
- STRING_ARRAY org.freedesktop.Notifications.GetCapabilities (void);
-
- This message takes no parameters.
-
- It returns an array of strings. Each string describes an optional
- capability implemented by the server. The following values are defined by
- this spec:
-
- Table 5. Server Capabilities
-
- +------------------------------------------------------------------------+
- | | The server will provide the specified actions to |
- | "actions" | the user. Even if this cap is missing, actions may |
- | | still be specified by the client, however the |
- | | server is free to ignore them. |
- |-------------------+----------------------------------------------------|
- | | Supports body text. Some implementations may |
- | "body" | only show the summary (for instance, onscreen |
- | | displays, marquee/scrollers) |
- |-------------------+----------------------------------------------------|
- | "body-hyperlinks" | The server supports hyperlinks in the |
- | | notifications. |
- |-------------------+----------------------------------------------------|
- | "body-images" | The server supports images in the notifications. |
- |-------------------+----------------------------------------------------|
- | | Supports markup in the body text. If marked up |
- | "body-markup" | text is sent to a server that does not give this |
- | | cap, the markup will show through as regular text |
- | | so must be stripped clientside. |
- |-------------------+----------------------------------------------------|
- | | The server will render an animation of all the |
- | | frames in a given image array. The client may |
- | "icon-multi" | still specify multiple frames even if this cap |
- | | and/or "icon-static" is missing, however the |
- | | server is free to ignore them and use only the |
- | | primary frame. |
- |-------------------+----------------------------------------------------|
- | | Supports display of exactly 1 frame of any given |
- | "icon-static" | image array. This value is mutually exclusive with |
- | | "icon-multi", it is a protocol error for the |
- | | server to specify both. |
- |-------------------+----------------------------------------------------|
- | | The server supports sounds on notifications. If |
- | "sound" | returned, the server must support the "sound-file" |
- | | and "suppress-sound" hints. |
- +------------------------------------------------------------------------+
-
- New vendor-specific caps may be specified as long as they start with
- "x-vendor". For instance, "x-gnome-foo-cap". Capability names must not
- contain spaces. They are limited to alpha-numeric characters and dashes
- ("-").
-
- --------------------------------------------------------------------------
-
- 9.1.2. org.freedesktop.Notifications.Notify
-
- UINT32 org.freedesktop.Notifications.Notify (STRING app_name, UINT32
- replaces_id, STRING app_icon, STRING summary, STRING body, ARRAY actions,
- DICT hints, INT32 expire_timeout);
-
- Sends a notification to the notification server.
-
- Table 6. Notify Parameters
-
- +------------------------------------------------------------------------+
- | Name | Type | Description |
- |----------------+--------+----------------------------------------------|
- | app_name | STRING | The optional name of the application |
- | | | sending the notification. Can be blank. |
- |----------------+--------+----------------------------------------------|
- | | | The optional notification ID that this |
- | | | notification replaces. The server must |
- | | | atomically (ie with no flicker or other |
- | | | visual cues) replace the given notification |
- | replaces_id | UINT32 | with this one. This allows clients to |
- | | | effectively modify the notification while |
- | | | it's active. A value of value of 0 means |
- | | | that this notification won't replace any |
- | | | existing notifications. |
- |----------------+--------+----------------------------------------------|
- | | | The optional program icon of the calling |
- | app_icon | STRING | application. See [32]Icons. Can be an empty |
- | | | string, indicating no icon. |
- |----------------+--------+----------------------------------------------|
- | summary | STRING | The summary text briefly describing the |
- | | | notification. |
- |----------------+--------+----------------------------------------------|
- | body | STRING | The optional detailed body text. Can be |
- | | | empty. |
- |----------------+--------+----------------------------------------------|
- | | | Actions are sent over as a list of pairs. |
- | | | Each even element in the list (starting at |
- | actions | ARRAY | index 0) represents the identifier for the |
- | | | action. Each odd element in the list is the |
- | | | localized string that will be displayed to |
- | | | the user. |
- |----------------+--------+----------------------------------------------|
- | | | Optional hints that can be passed to the |
- | | | server from the client program. Although |
- | | | clients and servers should never assume each |
- | hints | DICT | other supports any specific hints, they can |
- | | | be used to pass along information, such as |
- | | | the process PID or window ID, that the |
- | | | server may be able to make use of. See |
- | | | [33]Hints. Can be empty. |
- |----------------+--------+----------------------------------------------|
- | | | |
- | | | |
- | | | The timeout time in milliseconds since the |
- | | | display of the notification at which the |
- | expire_timeout | INT32 | notification should automatically close. |
- | | | |
- | | | If -1, the notification's expiration time |
- | | | is dependent on the notification server's |
- | | | settings, and may vary for the type of |
- | | | notification. If 0, never expire. |
- +------------------------------------------------------------------------+
-
- If replaces_id is 0, the return value is a UINT32 that represent the
- notification. It is unique, and will not be reused unless a MAXINT number
- of notifications have been generated. An acceptable implementation may
- just use an incrementing counter for the ID. The returned ID is always
- greater than zero. Servers must make sure not to return zero as an ID.
-
- If replaces_id is not 0, the returned value is the same value as
- replaces_id.
-
- --------------------------------------------------------------------------
-
- 9.1.3. org.freedesktop.Notifications.CloseNotification
-
- void org.freedesktop.Notifications.CloseNotification (UINT32 id);
-
- Causes a notification to be forcefully closed and removed from the
- user's view. It can be used, for example, in the event that what the
- notification pertains to is no longer relevant, or to cancel a
- notification with no expiration time.
-
- The NotificationClosed signal is emitted by this method.
-
- If the notification no longer exists, an empty D-BUS Error message is
- sent back.
-
- --------------------------------------------------------------------------
-
- 9.1.4. org.freedesktop.Notifications.GetServerInformation
-
- void org.freedesktop.Notifications.GetServerInformation (out STRING
- name, out STRING vendor, out STRING version);
-
- This message returns the information on the server. Specifically, the
- server name, vendor, and version number.
-
- Table 7. GetServerInformation Return Values
-
- +------------------------------------------------------------------------+
- | Name | Type | Description |
- |---------+--------+-----------------------------------------------------|
- | name | STRING | The product name of the server. |
- |---------+--------+-----------------------------------------------------|
- | vendor | STRING | The vendor name. For example, "KDE," "GNOME," |
- | | | "freedesktop.org," or "Microsoft." |
- |---------+--------+-----------------------------------------------------|
- | version | STRING | The server's version number. |
- +------------------------------------------------------------------------+
-
- --------------------------------------------------------------------------
-
- 9.2. Signals
-
- 9.2.1. org.freedesktop.Notifications.NotificationClosed
-
- org.freedesktop.Notifications.NotificationClosed (UINT32 id, UINT32
- reason);
-
- A completed notification is one that has timed out, or has been
- dismissed by the user.
-
- Table 8. NotificationClosed Parameters
-
- +------------------------------------------------------------------------+
- | Name | Type | Description |
- |--------+--------+------------------------------------------------------|
- | id | UINT32 | The ID of the notification that was closed. |
- |--------+--------+------------------------------------------------------|
- | | | |
- | | | |
- | | | The reason the notification was closed. |
- | | | |
- | | | 1 - The notification expired. |
- | reason | UINT32 | |
- | | | 2 - The notification was dismissed by the user. |
- | | | |
- | | | 3 - The notification was closed by a call to |
- | | | CloseNotification. |
- | | | |
- | | | 4 - Undefined/reserved reasons. |
- +------------------------------------------------------------------------+
-
- The ID specified in the signal is invalidated before the signal is sent
- and may not be used in any further communications with the server.
-
- --------------------------------------------------------------------------
-
- 9.2.2. org.freedesktop.Notifications.ActionInvoked
-
- org.freedesktop.Notifications.ActionInvoked (UINT32 id, STRING
- action_key);
-
- This signal is emitted when one of the following occurs:
-
- * The user performs some global "invoking" action upon a notification.
- For instance, clicking somewhere on the notification itself.
-
- * The user invokes a specific action as specified in the original
- Notify request. For example, clicking on an action button.
-
- Table 9. ActionInvoked Parameters
-
- +------------------------------------------------------------------------+
- | Name | Type | Description |
- |------------+--------+--------------------------------------------------|
- | id | UINT32 | The ID of the notification emitting the |
- | | | ActionInvoked signal. |
- |------------+--------+--------------------------------------------------|
- | action_key | STRING | The key of the action invoked. These match the |
- | | | keys sent over in the list of actions. |
- +------------------------------------------------------------------------+
-
- [34]Note Clients should not assume the server will generate this signal.
- Some servers may not support user interaction at all, or may not
- support the concept of being able to "invoke" a notification.
-
-References
-
- Visible links
- 1. mailto:mike@navi.cx
- 2. mailto:chipx86@chipx86.com
- 3. file:///tmp/html-A2Tahl#introduction
- 4. file:///tmp/html-A2Tahl#basic-design
- 5. file:///tmp/html-A2Tahl#backwards-compat
- 6. file:///tmp/html-A2Tahl#markup
- 7. file:///tmp/html-A2Tahl#hyperlinks
- 8. file:///tmp/html-A2Tahl#images
- 9. file:///tmp/html-A2Tahl#icons
- 10. file:///tmp/html-A2Tahl#categories
- 11. file:///tmp/html-A2Tahl#urgency-levels
- 12. file:///tmp/html-A2Tahl#hints
- 13. file:///tmp/html-A2Tahl#protocol
- 14. file:///tmp/html-A2Tahl#commands
- 15. file:///tmp/html-A2Tahl#command-get-capabilities
- 16. file:///tmp/html-A2Tahl#command-notify
- 17. file:///tmp/html-A2Tahl#command-close-notification
- 18. file:///tmp/html-A2Tahl#command-get-server-information
- 19. file:///tmp/html-A2Tahl#signals
- 20. file:///tmp/html-A2Tahl#signal-notification-closed
- 21. file:///tmp/html-A2Tahl#signal-action-invoked
- 22. file:///tmp/html-A2Tahl#markup
- 23. file:///tmp/html-A2Tahl#protocol
- 24. file:///tmp/html-A2Tahl#hints
- 25. file:///tmp/html-A2Tahl#categories
- 26. file:///tmp/html-A2Tahl#urgency-levels
- 27. file:///tmp/html-A2Tahl#protocol
- 28. http://freedesktop.org/mailman/listinfo/xdg
- 29. http://freedesktop.org/
- 30. http://freedesktop.org/mailman/listinfo/xdg
- 31. http://freedesktop.org/
- 32. file:///tmp/html-A2Tahl#icons
- 33. file:///tmp/html-A2Tahl#hints