Initial import

This commit is contained in:
Jesse van den Kieboom 2005-10-09 08:53:36 +00:00
commit bad14bdfdd
133 changed files with 33249 additions and 0 deletions

0
.tm_project.cache Normal file
View File

2
AUTHORS Normal file
View File

@ -0,0 +1,2 @@
Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
Sjoerd Simons <sjoerd@luon.net> (Debian package maintainer)

340
COPYING Normal file
View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

479
ChangeLog Normal file
View File

@ -0,0 +1,479 @@
2005-15-06 Jesse van den Kieboom <jesse@icecrew.nl>
* VERSION CHANGED TO 0.9.1
* if_scripts: Fixed write perms checking
* if_main: beautified about dialog
2005-14-06 Jesse van den Kieboom <jesse@icecrew.nl>
* VERSION CHANGED TO 0.9.0
2005-14-06 Jesse van den Kieboom <jesse@icecrew.nl>
* mcp/mcp_userlist: added userlist events for triggering
* mcp/mcp_ice_userlist mcp/mcp_ice_serverinfo: added loading of
image alternatives (following specs), fixed invalid uri detection
* if_triggers: added entrycompletion for scripts instead of dropdown
* if_main: searching now happens while-you-type finding the first
match and coloring the background red (like ff) if none found.
added drag-and-drop tabs (live moving)
* world: added inverse ansi, added invisible ansi
* if_world: improved keeping text window end scrolled
* if_world_listing: list shows world info (server and player) and
uses a custom icon when provided by dns-nl-icecrew-serverinfo.
load on startup is moved to if_world_properties
* if_world_properties: load on startup is now provided by this dialog
rather than by if_world_listing
2005-07-06 Jesse van den Kieboom <jesse@icecrew.nl>
* if_scripts: fixed crashing when one time opened
* scripts/music: added copyright for Simon Gijsen
* if_main: added basic searching firefox style.
searches can take place in worlds, editors and
logs
2005-07-06 Jesse van den Kieboom <jesse@icecrew.nl>
* ui/: seperated interfaces over several single glade
files.
* mcp/mcp_ice_serverinfo: added serverinfo mcp package
(see http://www.icecrew.nl/software/mcp for specs)
* triggers if_triggers world if_world_properties: added trigger support.
gnoemoe now handles two types of triggers for all sorts
of events. Check it out.
* world: removed stale functions, removed transparent background
fixed default charset loading, fixed/improved activity updates,
added reconnect foolproof (fixes problems with multiple
autoreconnects), added basic searching
* debug: loglevel 0 now goes to stdout, > 0 goes to stderr
2005-06-06 Jesse van den Kieboom <jesse@icecrew.nl>
* net: added connect timeout
* if_main world: added log opening support
* if_mcpconsole: fixed crashing, mcp console window is now
reintroduced
* if_main: added serverinfo window, improved notification area
stuff. It's now just a notification icon, showing when there
is activity and interactive in combination with triggers.
added log opening dialog
* if_ editor: fixed some memory leaks (no severe ones)
2005-01-06 Jesse van den Kieboom <jesse@icecrew.nl>
* VERSION CHANGED TO 0.8.2
* Fixed dutch translations
* net.c: Fixed connecting weirdness
* if_scripts.c: Fixed ruby mime type
2005-10-05 Jesse van den Kieboom <jesse@icecrew.nl>
* if_world.c: Added sending of empty lines
* editor.c gnoe_pixbuf.c world.c: Fixed possible
GError problems
2005-27-03 Jesse van den Kieboom <jesse@icecrew.nl>
* scripts/music.rb: Added xmms function (by Simon Gijsen)
2005-18-01 Jesse van den Kieboom <jesse@icecrew.nl>
* if_world_properties.c if_worlds_listing.c script.c
support.c world.c: Changed all declarations to be
at the top of a function (patch for FreeBSD
4.x by Pav Lucistnik)
* if_world.c world.c: Changed int to gsize
(patch for OSX by Christian Luijten)
* if_world_properties.c: Moved encodings declaration
from header to source file (patch for OSX by
Christian Luijten)
2004-29-12 Jesse van den Kieboom <jesse@icecrew.nl>
* world.c: added sane default charset (ISO-8859-15)
* support.c: Added trailing / in url regexp
(e.g. http://www.icecrew.nl/)
2004-14-12 Jesse van den Kieboom <jesse@icecrew.nl>
* VERSION CHANGED TO 0.8.1
* Makefile.am: fixed intltool problems
* gnoemoe.desktop: changed icon to svg (which it already should have
been, the png version doesn't get installed!)
2004-13-12 Jesse van den Kieboom <jesse@icecrew.nl>
* VERSION CHANGED TO 0.8.0
* po: Added/Fixed Dutch (nl) translations
* if_main.c: changed GnoeMoe GTK+ MOO Client to GnoeMoe Gnome MOO Client
* if_world_properties.c: fixed bacause typo
2004-13-12 Jesse van den Kieboom <jesse@icecrew.nl>
* support.c: added a remote file fetcher function which uses gnomevfs
to async fetch files from a remote system
* mcp_ice_userlist.c: added ranks and states messages which handle
remote rank and state icons
* world.c: fixed creation of tags with bold enabled while bold-colors
was set
* if_scripts.c: fixed segmentation fault when loading a second script
in the editor (curEdit wasn't reset to NULL, free didn't like it)
* gnoe_pixbuf.c: added test for loading icons with absolute paths
2004-21-10 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* mcp_ice_userlist.c: the P_NAME property now also has a signal connected
so name changes will be detected by the userlist
2004-21-10 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* world.c: fixed color problems (adding of to much tags and bold problems)
* configure.in: fixed regexp include problem when ruby enabled
2004-13-10 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* Added url matching, underlining and action-taking in the world
* Added notification tray icon (when GnoeMoe is hidden and new text
is added to a world the icon will blink showing there is activity in
one of the worlds, the tooltip will indicate which worlds and how
many lines). Blinking is only done when GnoeMoe is hidden which can
be achieved by clicking on the icon or by activating the Hide GnoeMoe
menu item (in the popup menu of the notification icon). Same goes
for re-showing GnoeMoe
* Added application icon state. The application icon will now show there
is activity in worlds by changing its icon. This only happens when
GnoeMoe is not the top-level activated window
2004-10-10 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.7.1
* Fixed compile error
2004-09-10 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.7.0
* No more Run menu
* Added NL translation (dutch)
* if_worlds_listing.c: fixed SEGV on duplicating world
2004-09-10 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* main.c: Added --load option for loading worlds from the commandline
Improved gnoe_pixbuf initializing and finalizing
Fixed scripts initializing to happen before world auto loading
* world.c: Moved userlist API to the world to abstract it from the
mcp modules
* widgets/mcp_ping: Removed the lagmeter
* gnoe_pixbuf: Added initializing/finalizing,
removed external librsvg
* src/Makefile.am: Mcp packages now reside in mcp/
2004-08-04 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* script.c: scripts directories are now monitored via GnomeVFS to
automagically update changes in scripts
* if_main.c: window title now shows active world
2004-08-04 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.6.4
* world.c: fixed auto-reconnect
fixed on_disconnect script function call which could crash on
unloading a world
* net.c: fixed auto-reconnect
* if_mcpconsole.c: added world loaded check for if_mcpconsole_add
* editor.c: fixed crash on editor_fini
* if_main.c: added editor switch accelerators (Ctrl-<num>)
2004-07-28 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.6.3
* logo: newly very improved logo, veeeery nice one, by Simon Gijsen
* pixmaps/userlist/default.map: fixed inhabitant/inhabitant+ switch
2004-07-28 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* userlist.c: improved sorting
* gnoe_pixbuf.c: database of pixbufs, normal files as well as svg's
* script.c: added host and port functions to world class
improved connect function of world class
* net.c: fixed setting of net status flag on disconnect before calling
world_disconnected
2004-07-27 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.6.2
* userlist.c: now using svg image mapping for icons
* pixmaps/userlist: contains new svg image containing all the userlist
icons and 1 map file for mapping the svg to nameble icons
* script.c: added script function description support
WARNING: ALL SCRIPTS MUST!! HAVE A DESCRIPTION NOW, USERS NEED
TO CHANGE THIS IN THEIR OWN SCRIPTS
* world.c: fixed wrong month in logging
* script.c: added auto-creation of USER scripts directory
2004-07-19 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.6.1
* pixmaps/icons: improved new icons from Simon Gijsen
* gnoemoe.glade: fixed width resize on long input
2004-07-19 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* editor.c: fixed font unref stupid
* gnoemoe.glade: fixed window width stretching
2004-07-19 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.6.0
* scripts/misc.rb: added sendall script
* scripts/editing.rb: added editing scripts (/e, /de, /me, /ne, /he)
* gnoemoe.glade: added mcpconsole interface, added scripts interface
* configure.in: added ruby checking and compile status
2004-07-19 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* userlist.c: improved scroll handler timeout to be removed when
the userlist is destroyed
* packages.c/mcp.c: added callbacks to log messages to the mcpconsole
* if_world_properties.c: fixed renaming problem (the dir wouldn't
get renamed and thus the world got duplicated)
* editor.c: added unref of font description
2004-07-17 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* if_scripts.c: added, interface for manipulating and viewing
scripts (editor/console/overview/flush&reload)
* world.c: improved userlist width saving/restoring
* world.c: added on_connect, on_login, on_disconnect script calls
* world.c: added mcp text buffer
* if_mcpconsole.c: added, interface for viewing mcp messages
2004-07-16 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* script.c: added input method for world class (this gives the
opportunity for recursion)
* script.c: added connect method for world class
* script.c: added disconnect method for world class
* script.c: added quit method for world class
* script.c: improved function run
* script.c: added flush&reload function
* script.c: added script function aliassing
2004-07-14 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.5.0
* script.c: added open method for client class
* script.c: added connected? method for world class
* script.c: added shared scripts dir
* scripts/*: added some scripts
* configure.in/Makefile.am: added installation of scripts
2004-07-14 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* world.c: added some documentation
* world.c: added main_process_input function
* script.c/script.h: added, GnoeMoe now has ruby scripting support
* main.c: added main_get_app_path function
2004-07-12 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.4.3
* if_world.c: added world settings saving on destroy
needed for userlist width saving
2004-07-09 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* pixmap.c: added function to set alpha channel of a pixbuf
* world.c/if_world.c/if_preferences.c/main.c/gnoemoe/glade:
added background transparancy
2004-07-07 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.4.2
* if_main.c: changed Ctrl-<num> to Alt-<num> (used for tab switching) to
match other gnome apps
* net.c: disconnect on sendline fail
2004-07-06 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* net.c: improved connecting (its now non-blocking)
2004-07-03 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.4.1
* packages.c: fixed (added) decimal point conversion in negotiate
package
2004-07-02 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.4
* world.c/world.h: added update_character_metrics function, calculates
character width (changes when font changes, is used to calculate
linelen etc.)
* packages.c: improved linelen calculation, its now more accurate
* support.h/support.c: added function for length calculation of char **
* main.c/if_main.c: added window metrics saving/restoring
* if_preferences.c/editor.c: added builtin editor colors/styles
configuration
2004-07-01 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* support.h: added documentation
* support.c: added functions for decimal point conversion (used mainly
by mcp version number conversions)
* mcp.c/packages.c: added decimal point conversion for package versions
and mcp versions (needed cause some locales use . and some use ,)
2004-06-29 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* world.h/world.c: added documentation for all functions/enums/structs
* world.c: removed functions world_get_by_index, world_paste
added high color support for bold text
* ansi.h: added bold color definitions, added documentation
* editor.c: added editor_init and editor_fini functions to setup the
editor environment and to finish the editor environment
all editors will now use the same GtkSourceLanguage (which is stored
from within editors_init)
* if_world.c: fixed Pageup/Pagedown key bindings to be ignored when
Ctrl or Shift is pressed
* gnoemoe.glade: added editor color configuration in dlgPreferences
2004-06-24 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.3.1
* gnoemoe.glade: removed Properties/Close/Quit/Preferences button
(Dis)Connect label changed to Connect
fixed half sized toolbar
2004-06-24 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.3.0
* gnoemoe.glade: added buttons for easy access to world functions
* if_world.c/if_main.c: added functions to handle new buttons (
world - connect/disconnect/properties/close
main - preferences/quit
* if_world.c/if_world.h: added world_connected function which is now
called from net_do_connect. Autologin now resides in this new function
* if_main.c: added accelerators for cycling through pages (F6/Shift F6)
removed F4 accelerator for connect/disconnect for now
set appropriate sensitivity of world tool buttons (depends whether
a world or a terminal is active)
* if_world_properties.c/if_world_properties.h: added option for
charset selection
* world.c/world.h/editor.c/if_world.c: added better scroll to bottom
functions in world.c/world.h
editor.c and if_world.c make use of these functions to keep scrolling
sticky
* main.c: changed colors to be more natural to the eye
2004-06-24 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* if_world.c: added pageup/pagedown for world text view
2004-06-21 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* all.c/all.h: reformatted
* all.c/all.h: removed profiles, color/font can now be configured
in preferences
2004-06-21 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* world.c: fixed focussing of input widget on world
activation (added doEvents())
* world.c/support.c: replaced \e by \x1B
* if_world.c: removed dos newlines
* if_main.c: added enable/disable of cut/copy/paste
menu items (disabled for terminal tabs, enabled for
world tabs)
2004-06-21 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* if_main.c: implemented cut/copy/paste menu items
* if_world.c/world.c: better implementation for saving
userlist width (now saving hpane position)
* if_world.c: changed active state base color for
userlist and textview (they are unfocus-able but
its nicer to have the same selection colors as if they
can actually focus)
* userlist.c/pixmaps/icons: changed icons from xpm to
png
2004-06-21 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* gnoemoe.glade: replaced input entry widget by textview
widget (for multiline input purposes)
reorganised world view layout
* if_world.c/world.c: replaced input entry widget by
textview widget (for multiline input purposes)
* editor.c: fixed charset conversion for saving editor file
(from current locale to UTF-8)
* world.c: fixed userlist width saving shrinks userlist
by 3 pixels
2004-06-20 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* VERSION CHANGED TO 0.2.4
2004-06-17 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* net.c: fixed 100% CPU problem, removal of channel watch
2004-06-17 Jesse van den Kieboom <troplosti@orcaweb.cjb.met>
* editor.c/support.c/world.c: function to let the main loop
process GUI events is now in support.c
* userlist.c: fixed scrolling problem (scroll to top on
user add if it was already scrolled to the top)
2004-06-17 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* editor.c: corrected charset conversion,
now converting to current locale for external editors
(which use files), and to UTF-8 for the internal editor,
fixed signal connecting. signals for save/save&close/close
buttons were also tried for VTE editors, wrong!
* pixmaps: cleaned up unused pixmaps,
removed different logo size pixmaps
* gnoemoe.glade: use 48x48 for icon
2004-06-17 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* Makefile.am: added install of moo.lang file,
needed to enable code highlighting in gtksourceview
* moo.lang: added
* world.c: the input entry now will use the same font
as the main text window will do
2004-06-17 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* Makefile.am: Removed $(DESTDIR)
* pixmaps/Makefile.am: Removed $(DESTDIR)
* pixmaps/icons/Makefile.am: Removed $(DESTDIR)
2004-06-16 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* Logo: added gnoemoe logo
* Makefile.am: distributed makefile for pixmaps and
pixmaps/icons to seperate Makefile.am's,
pixmaps are now installed in pimaps subdir,
added gnoemoe-logo.png as logo,
* gnoemoe.glade: removed main status bar,
fixed all pixmaps to point to pixmaps/....
* interface: added warning/info/error dialogs to inform
user for faulty actions (or not yet implemented actions)
* all: added gnome support, gnoemoe now accepts session
saving and it uses the gnome command parsing
* net.c: world_send_line now blocks if it can't send
all the data at once
* if_world.c: input widget now has monospace font
* world.c: added logging
* main.c: removed save_size option
* if_world_properties_listing: fixed SEGV problem when
adding a new world
* pixmaps: added gnoemoe_logo_about.png for the aboutbox
* Makefile.am: Added gnoemoe.glade (after removing it)

229
INSTALL Normal file
View File

@ -0,0 +1,229 @@
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You only need
`configure.ac' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
will cause the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

30
Makefile.am Normal file
View File

@ -0,0 +1,30 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = src po pixmaps scripts ui
DISTCLEANFILES = \
intltool-extract \
intltool-merge \
intltool-update
EXTRA_DIST = \
gnoemoe.desktop \
gnoemoe-logo.svg \
moo.lang \
gnoemoe.xml \
autogen.sh \
intltool-extract.in \
intltool-merge.in \
intltool-update.in
Applicationsdir = $(datadir)/applications
Applications_DATA = gnoemoe.desktop
icondir = $(datadir)/pixmaps
icon_DATA = gnoemoe-logo.svg
langdir = $(datadir)/gtksourceview-1.0/language-specs
lang_DATA = moo.lang
mimedir = $(datadir)/mime/packages
mime_DATA = gnoemoe.xml

0
NEWS Normal file
View File

0
README Normal file
View File

1682
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

159
autogen.sh Executable file
View File

@ -0,0 +1,159 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
DIE=0
if [ -n "$GNOME2_DIR" ]; then
ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS"
LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH"
PATH="$GNOME2_DIR/bin:$PATH"
export PATH
export LD_LIBRARY_PATH
fi
(test -f $srcdir/configure.in) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level package directory"
exit 1
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`autoconf' installed."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && {
(intltoolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`intltool' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && {
(xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`xml-i18n-toolize' installed."
echo "You can get it from:"
echo " ftp://ftp.gnome.org/pub/GNOME/"
DIE=1
}
}
(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
(libtool --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`libtool' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
}
(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && {
(grep "sed.*POTFILES" $srcdir/configure.in) > /dev/null || \
(glib-gettextize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`glib' installed."
echo "You can get it from: ftp://ftp.gtk.org/pub/gtk"
DIE=1
}
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`automake' installed."
echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/"
DIE=1
NO_AUTOMAKE=yes
}
# if no automake, don't bother testing for aclocal
test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: Missing \`aclocal'. The version of \`automake'"
echo "installed doesn't appear recent enough."
echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
if test -z "$*"; then
echo "**Warning**: I am going to run \`configure' with no arguments."
echo "If you wish to pass any to it, please specify them on the"
echo \`$0\'" command line."
echo
fi
case $CC in
xlc )
am_opt=--include-deps;;
esac
for coin in `find $srcdir -path $srcdir/CVS -prune -o -name configure.in -print`
do
dr=`dirname $coin`
if test -f $dr/NO-AUTO-GEN; then
echo skipping $dr -- flagged as no auto-gen
else
echo processing $dr
( cd $dr
aclocalinclude="$ACLOCAL_FLAGS"
if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
echo "Running intltoolize..."
intltoolize --copy --force --automake
fi
if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then
echo "Running xml-i18n-toolize..."
xml-i18n-toolize --copy --force --automake
fi
if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
if test -z "$NO_LIBTOOLIZE" ; then
echo "Running libtoolize..."
libtoolize --force --copy
fi
fi
echo "Running aclocal $aclocalinclude ..."
aclocal $aclocalinclude
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
echo "Running autoheader..."
autoheader
fi
echo "Running automake --gnu $am_opt ..."
automake --add-missing --gnu $am_opt
echo "Running autoconf ..."
autoconf
)
fi
done
conf_flags="--enable-maintainer-mode"
if test x$NOCONFIGURE = x; then
echo Running $srcdir/configure $conf_flags "$@" ...
$srcdir/configure $conf_flags "$@" \
&& echo Now type \`make\' to compile. || exit 1
else
echo Skipping configure process.
fi

152
configure.in Normal file
View File

@ -0,0 +1,152 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(configure.in)
AM_INIT_AUTOMAKE(gnoemoe, 0.9.1)
AC_DEFINE_UNQUOTED(IVERSION, "0.9.1", "this is used for internal representation of the version")
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
AC_ISC_POSIX
AC_STDC_HEADERS
AC_PROG_CC
AM_PROG_CC_STDC
AC_HEADER_STDC
AC_PROG_INTLTOOL
pkg_modules="gtk+-2.0 >= 2.0.0 gdk-pixbuf-2.0 libgnome-2.0 libglade-2.0 gtksourceview-1.0 gnome-vfs-2.0 libgnomeui-2.0 vte libxml-2.0 cairo"
PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
AC_SUBST(PACKAGE_CFLAGS)
AC_SUBST(PACKAGE_LIBS)
AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
AC_ARG_ENABLE(rubyen,
[
GnoeMoe specific options:
--disable-ruby disable use of the ruby scripting support],
rubyen=$enableval, rubyen=yes)
#----------------------------------------------------------------
# Look for Ruby
#----------------------------------------------------------------
if test "_$rubyen" = "_yes"; then
RUBYBIN=
AC_ARG_WITH(ruby,[ --with-ruby=path Set location of Ruby executable],[ RUBYBIN="$withval"], [RUBYBIN=])
# First figure out what the name of Ruby is
if test -z "$RUBYBIN"; then
AC_CHECK_PROGS(RUBY, ruby)
else
RUBY="$RUBYBIN"
fi
AC_MSG_CHECKING(for Ruby header files)
if test -n "$RUBY"; then
RUBYDIR=`($RUBY -rmkmf -e 'print Config::CONFIG[["archdir"]] || $archdir') 2>/dev/null`
if test "$RUBYDIR" != ""; then
dirs="$RUBYDIR"
RUBYINCLUDE=none
for i in $dirs; do
if test -r $i/ruby.h; then
AC_MSG_RESULT($i)
RUBYINCLUDE="-idirafter $i"
break;
fi
done
if test "$RUBYINCLUDE" = none; then
AC_MSG_RESULT(could not locate ruby.h, disabling ruby support)
rubymsg="(no headers found, install ruby1.8-dev)"
rubyen="no"
fi
# Find library and path for linking.
AC_MSG_CHECKING(for Ruby library)
RUBYLIB=""
rb_libdir=`($RUBY -rrbconfig -e 'print Config::CONFIG[["libdir"]]') 2>/dev/null`
rb_bindir=`($RUBY -rrbconfig -e 'print Config::CONFIG[["bindir"]]') 2>/dev/null`
dirs="$dirs $rb_libdir $rb_bindir"
rb_libruby=`($RUBY -rrbconfig -e 'print Config::CONFIG[["LIBRUBY_A"]]') 2>/dev/null`
RUBYLINK=`($RUBY -rrbconfig -e '
c = Config::CONFIG
if c.has_key? "LIBRUBYARG_STATIC" # 1.8.x
if c[["LIBRUBY"]] == c[["LIBRUBY_A"]]
link = c[["LIBRUBYARG_STATIC"]]
else
link = c[["LIBRUBYARG_SHARED"]]
end
else # 1.6.x
link = "-l" + c[["RUBY_INSTALL_NAME"]]
end
puts link') 2>/dev/null`
if test "$rb_libruby" != ""; then
for i in $dirs; do
if (test -r $i/$rb_libruby;) then
RUBYLIB="$i"
break;
fi
done
fi
if test "$RUBYLIB" = ""; then
AC_MSG_RESULT(not found... disabling ruby support)
rubymsg="(libs not found)"
rubyen="no"
else
AC_MSG_RESULT($RUBYLINK in $RUBYLIB)
fi
else
AC_MSG_RESULT(unable to determine ruby configuration, disabling ruby support)
rubymsg="(unable to determine configuration)"
rubyen="no"
fi
else
AC_MSG_RESULT(not found.. disabling ruby support)
rubymsg="(no headers found, install ruby1.8-dev)"
rubyen="no"
fi
fi
if test "_$rubyen" == "_no"; then
RUBYINCLUDE=""
RUBYLINK=""
AM_CONDITIONAL(HAVE_SCRIPT, false)
else
rubymsg="enjoy scripting :)"
AC_DEFINE([HAVE_RUBY], [], [Ruby scripting is enabled])
AM_CONDITIONAL(HAVE_SCRIPT, true)
fi
AC_SUBST(RUBYINCLUDE)
AC_SUBST(RUBYLINK)
GETTEXT_PACKAGE=gnoemoe
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", "gettext package")
dnl Add the languages which your application supports here.
ALL_LINGUAS="nl"
AM_GLIB_GNU_GETTEXT
AC_OUTPUT([
Makefile
pixmaps/Makefile
pixmaps/userlist/Makefile
pixmaps/ice-userlist/Makefile
pixmaps/tray/Makefile
src/Makefile
src/test/Makefile
po/Makefile.in
scripts/Makefile
ui/Makefile
])
echo
echo Building with ruby ............. : $rubyen $rubymsg
echo Install prefix ................. : $prefix
echo Install share .................. : $datadir

717
gnoemoe-logo.svg Normal file
View File

@ -0,0 +1,717 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
id="svg1"
sodipodi:version="0.32"
inkscape:version="0.39"
width="48.000000pt"
height="48.000000pt"
sodipodi:docbase="/home/jesse/icecrewcvs/GnoeMoe"
sodipodi:docname="gnoemoe-logo.svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:cc="http://web.resource.org/cc/"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs
id="defs3">
<linearGradient
id="linearGradient2676">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2677" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2678" />
</linearGradient>
<linearGradient
id="linearGradient2665">
<stop
style="stop-color:#2f2f2f;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2666" />
<stop
style="stop-color:#2f2f2f;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2667" />
</linearGradient>
<linearGradient
id="linearGradient2655">
<stop
style="stop-color:#212121;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop2656" />
<stop
style="stop-color:#212121;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2658" />
</linearGradient>
<linearGradient
id="linearGradient2648">
<stop
style="stop-color:#212121;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop2649" />
<stop
style="stop-color:#212121;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop2650" />
<stop
style="stop-color:#212121;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2651" />
</linearGradient>
<linearGradient
id="linearGradient2627">
<stop
style="stop-color:#3f3f3f;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2628" />
<stop
style="stop-color:#3f3f3f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop2630" />
<stop
style="stop-color:#ff3a03;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2629" />
</linearGradient>
<linearGradient
id="linearGradient2619">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2620" />
<stop
style="stop-color:#bb7733;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2621" />
</linearGradient>
<linearGradient
id="linearGradient2614">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2615" />
<stop
style="stop-color:#bb7733;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2616" />
</linearGradient>
<linearGradient
id="linearGradient2610">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2611" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2612" />
</linearGradient>
<linearGradient
id="linearGradient2524">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2525" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2526" />
</linearGradient>
<linearGradient
id="linearGradient2517">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2518" />
<stop
style="stop-color:#ffff00;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop2520" />
<stop
style="stop-color:#ffff00;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop2521" />
<stop
style="stop-color:#7f7f00;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop2522" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2519" />
</linearGradient>
<linearGradient
id="linearGradient2509">
<stop
style="stop-color:#000;stop-opacity:1;"
offset="0"
id="stop2510" />
<stop
style="stop-color:#fff;stop-opacity:1;"
offset="1"
id="stop2511" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2524"
id="linearGradient2512"
x1="0.37719297"
y1="0.32236841"
x2="0.49561402"
y2="0.96052629" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2610"
id="linearGradient2609"
x1="0.44571429"
y1="0.059999999"
x2="0.64857143"
y2="0.75333333" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2614"
id="linearGradient2613"
x1="0.037500001"
y1="0.51973683"
x2="0.55000001"
y2="0.81578946" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2614"
id="linearGradient2617"
x1="-0.069230773"
y1="0.61842108"
x2="0.27692309"
y2="0.86184210" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2619"
id="linearGradient2618"
x1="1.7826087"
y1="0.96052629"
x2="8.3427189e-15"
y2="0.40789473" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2614"
id="linearGradient2622"
x1="-0.35135135"
y1="0.74342108"
x2="0.64864862"
y2="0.65789473" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2614"
id="linearGradient2623"
x1="4.0435971e-14"
y1="0.50000000"
x2="0.36956522"
y2="0.24342105" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2655"
id="linearGradient2624"
x1="0.45454547"
y1="0.35526314"
x2="0.81818181"
y2="0.80263156" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2619"
id="linearGradient2625"
x1="1.3596492"
y1="0.74342108"
x2="0.76315790"
y2="0.52631581" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2610"
id="radialGradient2633"
cx="0.47692308"
cy="0.69078946"
r="0.33903649"
fx="0.48461536"
fy="0.69736838" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2665"
id="radialGradient2664"
cx="0.50000000"
cy="0.50000000"
r="0.50000000"
fx="0.50000000"
fy="0.50000000" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="radialGradient2680"
cx="0.40659341"
cy="0.48684210"
r="0.29306078"
fx="0.40659341"
fy="0.49342105" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2610"
id="radialGradient2682"
cx="0.092307694"
cy="-0.21710527"
r="0.33903649"
fx="0.084615365"
fy="-0.20394737" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="radialGradient2684"
cx="0.65384614"
cy="0.31578946"
r="0.26406428"
fx="0.65384614"
fy="0.32894737" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="linearGradient2686"
x1="-0.024096385"
y1="4.8799825e-15"
x2="0.25903615"
y2="0.35526314" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="radialGradient2688"
cx="0.47252747"
cy="0.40131578"
r="0.32444274"
fx="0.39560434"
fy="0.48684207" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2610"
id="radialGradient2705"
cx="0.10769231"
cy="-0.13815789"
r="0.23086299"
fx="0.13076918"
fy="-0.13157894" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2619"
id="linearGradient2719"
x1="0.23595506"
y1="0.79605263"
x2="0.38202247"
y2="0.96710527" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="linearGradient2721"
x1="-0.057971016"
y1="0.74342108"
x2="0.24637681"
y2="0.42763159"
spreadMethod="pad" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2665"
id="radialGradient2723"
cx="0.49549550"
cy="0.38888890"
r="0.66668981"
fx="0.49999997"
fy="0.38888884" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="linearGradient2725"
x1="-0.33870968"
y1="0.37500000"
x2="0.20967741"
y2="0.80263156" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="linearGradient2759"
x1="0.94674557"
y1="0.93421054"
x2="0.62426037"
y2="0.75657892" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2665"
id="radialGradient2768"
cx="0.32575756"
cy="0.42105263"
r="0.41422856"
fx="0.27272728"
fy="0.44078946" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient2610"
id="radialGradient2771"
cx="0.32307693"
cy="0.67763156"
r="0.34615383"
fx="0.32307690"
fy="0.68421048" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="linearGradient2773"
x1="-0.024096385"
y1="-2.3035188e-14"
x2="0.34337351"
y2="0.17105263" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2665"
id="linearGradient2775"
x1="0.50000000"
y1="-0.046052631"
x2="0.41176471"
y2="0.36842105" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="linearGradient3191"
x1="0.98947370"
y1="-2.1497310e-14"
x2="0.45263159"
y2="0.50555557" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2676"
id="linearGradient3193"
x1="0.82631576"
y1="0.16111112"
x2="0.45263159"
y2="0.50555557" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.4081633"
inkscape:cx="18.500001"
inkscape:cy="32.896697"
inkscape:window-width="603"
inkscape:window-height="525"
inkscape:window-x="198"
inkscape:window-y="105"
showgrid="false"
inkscape:grid-bbox="false" />
<metadata
id="metadata4">
<rdf:RDF
id="RDF5">
<cc:Work
rdf:about=""
id="Work6">
<dc:format
id="format7">image/svg+xml</dc:format>
<dc:type
id="type9"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
style="fill:url(#linearGradient2625);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 16.545811,42.369587 C 17.105294,42.641395 17.103344,43.344089 16.970919,43.862028 C 15.858845,45.608278 17.357053,47.107978 19.175195,46.559592 C 20.993334,46.011206 22.828667,46.121777 21.316488,48.427122 C 19.804309,50.732437 20.553743,53.316430 22.961822,53.782383 C 25.310958,55.156693 25.450099,57.913232 24.654388,59.680300 C 26.612317,58.664072 27.750123,55.977817 27.236539,53.718518 C 28.709795,54.541202 28.267856,55.802061 27.858457,56.910892 C 26.805995,58.253375 28.820610,57.584008 29.165279,56.168692 C 29.982433,54.809380 28.933525,54.080499 30.338265,52.992216 C 32.302545,51.694460 33.326673,49.702260 31.629342,48.355308 C 33.494655,51.071620 33.846741,45.191221 37.730454,43.040004 C 40.278180,44.161914 43.730595,34.955951 43.045086,29.087462 C 45.330702,25.376399 39.637009,8.1218713 36.990451,7.7322623 C 36.290439,7.5688053 35.578605,7.4997213 34.872771,7.5247693 C 32.755269,7.5998523 30.689286,8.4877223 28.842512,10.002840 C 25.129264,8.1526483 20.974906,9.6128123 17.986463,11.730732 C 15.353927,13.504190 13.164908,16.471942 9.7755401,16.670916 C 7.3836931,16.588152 5.6760184,14.067154 5.6189089,11.842443 C 5.2468576,8.6048623 7.4917453,4.9327363 10.594270,3.9732333 C 13.434580,3.0948433 16.540147,2.9888313 19.411365,2.6882863 C 21.618776,2.4572443 17.214858,0.63918030 15.971124,0.46957430 C 15.156335,0.35849230 14.363807,0.31067630 13.585784,0.32594530 C 11.251713,0.37172130 9.0513173,0.97719330 6.7446631,2.1296413 C 3.3333195,3.8339853 2.2985464,5.3869303 1.1158918,8.7139033 C 0.021664847,11.792137 0.0019601721,15.647788 1.3678088,18.706043 C 2.8865263,22.017928 6.3099274,24.345892 9.9487326,24.236850 C 10.251938,24.239220 11.221127,24.223442 11.523214,24.196953 L 11.625554,24.117160 C 11.230810,25.040426 10.834071,25.967772 10.468310,26.870579 C 9.9114693,28.245040 6.7212271,30.549124 9.7597943,30.525876 C 12.239202,30.104559 14.935602,29.867129 16.923684,28.115600 C 17.500470,27.683724 17.073643,28.854290 17.191349,30.206611 C 17.238166,30.431383 17.339718,30.645116 17.474756,30.829151 C 17.609791,31.013157 16.983692,32.219150 15.703460,31.754907 C 14.586535,30.763667 13.111656,32.032085 13.144930,33.319192 C 12.927376,35.017626 14.052238,36.500617 15.317711,37.469270 C 15.670921,37.776955 16.044025,38.069342 16.427724,38.339230 L 16.411978,38.347209 C 16.435007,38.592170 16.534390,38.814632 16.600913,39.049513 L 16.553682,39.057492 C 16.319270,40.002387 13.585748,40.546033 15.073670,41.515616 C 16.561592,42.485258 17.942012,42.507126 18.726470,42.433452"
id="path2581"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccc" />
<path
style="fill:#2f2f2f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 28.570036,10.055036 C 25.132324,8.1529783 20.977921,9.6091823 17.989474,11.727132 C 15.356939,13.500590 13.165301,16.468883 9.7759361,16.667856 C 7.3840891,16.585093 5.6737888,14.064995 5.6166793,11.840283 C 5.2446280,8.6027023 7.4942020,4.9297963 10.596724,3.9702943 C 13.437036,3.0918733 16.538218,2.9918013 19.409439,2.6912563 C 21.616853,2.4602143 17.217524,0.63522130 15.973788,0.46561330 C 12.714640,0.021230304 9.8170271,0.59442330 6.7414888,2.1310213 C 3.3301443,3.8353343 2.2983475,5.3884293 1.1156930,8.7153733 C 0.021465961,11.793607 0.0017711857,15.645239 1.3676198,18.703494 C 2.8863370,22.015378 6.3096979,24.342291 9.9485046,24.233281 C 10.251710,24.235650 11.223026,24.223771 11.525113,24.197283"
id="path2498"
sodipodi:nodetypes="ccccsssssccc" />
<path
style="fill:url(#linearGradient2759);fill-opacity:0.12156863;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 31.697421,36.062292 C 30.948240,37.211530 29.092490,43.577620 24.638238,43.497197 C 22.605936,43.389655 20.843336,41.878557 18.724175,42.429462 C 17.939723,42.503137 16.560941,42.484208 15.073019,41.514596 C 13.585097,40.544983 16.322333,40.002717 16.556739,39.057822"
id="path2486"
sodipodi:nodetypes="ccccc" />
<path
style="fill:url(#radialGradient2768);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 31.700193,36.064632 C 33.856104,34.022756 41.533326,36.960840 30.074415,46.996117 C 27.040566,49.653034 20.084264,46.285384 19.175195,46.559592 C 17.357053,47.107978 15.858845,45.608278 16.970919,43.862028 C 17.971662,42.905884 13.585748,40.546033 15.073670,41.515616 C 16.561592,42.485258 17.942012,42.507126 18.726470,42.433452 C 20.845628,41.882546 22.606344,43.387346 24.638643,43.494887 C 29.092895,43.575311 30.951009,37.213870 31.700193,36.064632 z "
id="path2762"
sodipodi:nodetypes="cscccccc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5364780;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 24.338323,35.708351 C 25.213336,37.815532 24.099717,40.231628 22.787546,41.194311 C 21.200181,42.443921 18.804473,42.233368 17.444968,40.690742 C 16.875417,40.061212 16.498129,39.223439 16.415437,38.343820"
id="path2507"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#radialGradient2723);stroke-width:2.5364780;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 25.486577,36.382217 C 26.361586,38.489398 25.247971,40.905524 23.935800,41.868177 C 22.348434,43.117817 19.952727,42.907264 18.593220,41.364608 C 18.023672,40.735108 17.646385,39.897305 17.563693,39.017716"
id="path2722"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:1.2682390;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 24.180876,35.229469 C 25.292059,38.134766 24.099717,40.231628 22.787546,41.194311 C 21.200181,42.443921 18.804473,42.233368 17.444968,40.690742 C 16.875417,40.061212 16.498129,39.223439 16.415437,38.343820"
id="path2527"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#bbbb00;stroke-width:0.47558972;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 24.653219,34.750617 C 26.315471,38.853029 23.942270,42.546123 20.189652,42.471249"
id="path2529"
sodipodi:nodetypes="cc" />
<path
style="fill:url(#linearGradient2512);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 25.726638,34.939002 C 26.259033,34.143616 25.036793,33.257487 24.467316,34.045314 C 23.870117,34.508957 23.389021,35.103689 22.809760,35.588150"
id="path2492" />
<path
style="fill:url(#linearGradient2775);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 22.533560,50.822910 C 23.278566,52.970318 26.750859,49.253436 25.940066,48.209849 C 24.541141,47.025634 23.044241,46.953490 22.627990,46.333980 C 20.809849,46.882366 22.080077,49.515795 22.533560,50.822910 z "
id="path2774"
sodipodi:nodetypes="cccs" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 25.940066,48.209849 C 24.318476,46.122677 21.485583,46.502026 19.176677,46.559742 C 17.358538,47.108128 15.858452,45.604918 16.970523,43.858668 C 17.102948,43.340729 17.108642,42.639596 16.549158,42.367787"
id="path2493" />
<path
style="fill:url(#linearGradient2623);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 21.315756,48.426222 C 19.803578,50.731567 20.550548,53.314300 22.958627,53.780193 C 25.307763,55.154533 25.451677,57.915902 24.655966,59.682940 C 26.613898,58.666771 27.748749,55.974007 26.329837,54.033943 C 26.271053,53.943770 26.212278,53.853597 26.153495,53.763395"
id="path2494"
sodipodi:nodetypes="ccccc" />
<path
style="fill:url(#linearGradient2624);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 31.631526,48.354108 C 33.328857,49.701060 32.302059,51.692000 30.337779,52.989787 C 28.933042,54.078070 29.983315,54.810250 29.166161,56.169532 C 28.821489,57.584848 26.804882,58.256644 27.857345,56.914162 C 28.266740,55.805331 28.713437,54.544712 28.145506,53.402793"
id="path2495"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 42.729870,31.981899 C 43.562736,35.121838 42.176095,38.420253 40.021617,40.861818 C 37.820067,43.356688 33.914760,45.418783 33.410106,48.931112"
id="path2496"
sodipodi:nodetypes="csc" />
<path
style="fill:#2f2f2f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 49.688641,27.469151 C 52.587946,30.161165 51.610003,35.104229 48.721632,37.398745 C 46.521508,39.752837 43.366005,41.051703 40.169910,40.935822 C 38.686614,41.046423 36.032238,40.575611 35.334753,41.923973 C 38.554026,43.489938 42.086419,45.144845 45.760962,44.684382 C 50.286772,43.779564 55.087495,41.950311 57.853294,38.000557 C 60.138916,34.289524 60.145267,29.433874 58.634389,25.430395 C 57.087283,22.080743 54.260413,19.434414 50.911785,17.997950 C 47.968434,16.558785 45.219423,14.684895 43.122915,12.110831 C 41.438553,10.211653 39.639019,8.1204013 36.992461,7.7307323 C 34.192416,7.0769343 31.212750,7.9995413 29.117757,9.9505543 C 29.039124,10.005240 28.724417,10.223683 28.645699,10.278188"
id="path2497" />
<rect
style="fill:#2f2f2f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect2645"
width="13.359918"
height="5.8691216"
x="21.975943"
y="10.014898" />
<path
style="fill:url(#linearGradient2617);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 20.468021,16.178655 C 18.216267,17.159097 15.288346,16.767928 14.044945,19.309475 C 12.582296,21.605941 11.496840,24.335092 10.468969,26.872169 C 9.9121263,28.246659 6.7244443,30.547354 9.7630130,30.524106 C 12.242421,30.102789 14.937965,29.869229 16.926051,28.117729 C 17.525434,27.668935 18.006003,27.089232 18.541173,26.572613"
id="path2491"
sodipodi:nodetypes="ccsccc" />
<path
style="fill:url(#linearGradient2719);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 9.5078783,30.270446 C 13.167749,27.032566 16.903591,29.286886 18.797319,22.129879 C 18.687056,22.083592 19.963358,25.494319 18.537532,26.575313 C 18.002361,27.091901 17.523067,27.666836 16.923684,28.115600 C 14.935602,29.867129 12.239202,30.104559 9.7597943,30.525876"
id="path2707"
sodipodi:nodetypes="ccccc" />
<path
style="fill:url(#linearGradient2725);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 22.880905,15.537607 C 20.758925,15.520808 19.193335,17.146198 18.519641,19.039257 C 17.678498,21.024497 19.789439,22.707393 19.270774,24.685494 C 18.952083,26.663206 17.011187,28.113110 17.193415,30.206701 C 17.240233,30.431473 17.338986,30.643916 17.474021,30.827921"
id="path2490" />
<path
style="fill:url(#radialGradient2633);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 49.688641,27.469151 C 52.587946,30.161165 51.610003,35.104229 48.721632,37.398745 C 46.521508,39.752837 43.366005,41.051703 40.169910,40.935822 C 38.686614,41.046423 36.032238,40.575611 35.334753,41.923973 C 38.554026,43.489938 42.086419,45.144845 45.760962,44.684382 C 50.286772,43.779564 55.087495,41.950311 57.853294,38.000557 C 60.138916,34.289524 60.145267,29.433874 58.634389,25.430395 C 57.087283,22.080743 54.260413,19.434414 50.911785,17.997950 C 47.968434,16.558785 45.219423,14.684895 43.122915,12.110831 C 41.438553,10.211653 39.639019,8.1204013 36.992461,7.7307323 C 34.192416,7.0769343 31.212750,7.9995413 29.117757,9.9505543 C 29.039124,10.005240 28.724417,10.223683 28.645699,10.278188"
id="path2632" />
<path
style="fill:url(#linearGradient2622);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 24.090337,49.075340 C 24.310673,50.204749 22.710620,50.789853 23.052313,51.923041 C 23.597775,53.278453 25.382482,53.762404 25.655495,55.278033"
id="path2501" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2502"
sodipodi:cx="139.36806"
sodipodi:cy="134.82051"
sodipodi:rx="2.8240740"
sodipodi:ry="2.6828704"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 0 136.54398,134.82051 A 2.8240740 2.6828704 0 1 0 142.19213 134.82051 z"
transform="matrix(-0.503835,0.000000,0.000000,0.510781,101.4230,-44.74339)" />
<path
sodipodi:type="arc"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2503"
sodipodi:cx="139.36806"
sodipodi:cy="134.82051"
sodipodi:rx="2.8240740"
sodipodi:ry="2.6828704"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 0 136.54398,134.82051 A 2.8240740 2.6828704 0 1 0 142.19213 134.82051 z"
transform="matrix(-0.358137,0.000000,0.000000,0.378900,69.94423,-27.11202)" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2504"
sodipodi:cx="139.36806"
sodipodi:cy="134.82051"
sodipodi:rx="2.8240740"
sodipodi:ry="2.6828704"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 0 136.54398,134.82051 A 2.8240740 2.6828704 0 1 0 142.19213 134.82051 z"
transform="matrix(-0.180298,0.000000,0.000000,0.190586,55.82677,-1.905338)" />
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2505"
sodipodi:cx="139.36806"
sodipodi:cy="134.82051"
sodipodi:rx="2.8240740"
sodipodi:ry="2.6828704"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 0 136.54398,134.82051 A 2.8240740 2.6828704 0 1 0 142.19213 134.82051 z"
transform="matrix(-0.131713,0.000000,0.000000,0.138376,37.98490,4.955712)" />
<path
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.47558972;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 16.106765,37.703581 C 15.861548,38.374177 15.951752,38.874867 16.161784,39.278905"
id="path2989"
sodipodi:nodetypes="cc" />
<path
style="fill:url(#linearGradient2613);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 22.179307,21.073183 C 22.624264,22.359990 22.529285,23.826933 21.486786,24.794266 C 20.248461,26.320154 19.514263,28.168846 18.586299,29.888667 C 18.158545,31.014927 16.984856,32.222780 15.704623,31.758567 C 14.587699,30.767326 13.112964,32.033585 13.146238,33.320692 C 12.928684,35.019126 14.051179,36.504067 15.316652,37.472719 C 16.538773,38.537244 17.941733,39.430843 19.537176,39.771315"
id="path2488"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:url(#linearGradient2609);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 28.856938,34.506257 C 29.861221,32.220830 27.728006,29.970201 25.442726,30.280825 C 23.469652,30.462101 22.311810,32.357379 20.568877,33.100480 C 19.893829,33.516636 19.217318,33.945662 18.470027,34.217770"
id="path2487" />
<path
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.47558972;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 24.102150,37.065082 C 24.111200,38.853029 23.560269,40.159184 22.393926,40.954900 C 21.348670,41.667943 19.906608,41.754546 18.547107,40.930152"
id="path2528"
sodipodi:nodetypes="css" />
<path
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 9.5078783,30.267176 C 13.167749,27.029296 16.903591,29.283616 18.797319,22.126609"
id="path2530"
sodipodi:nodetypes="cc" />
<path
style="fill:url(#radialGradient2682);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 49.688641,27.469151 C 52.587946,30.161165 51.610003,35.104229 48.721632,37.398745 C 46.521508,39.752837 43.366005,41.051703 40.169910,40.935822 C 38.686614,41.046423 36.032238,40.575611 35.334753,41.923973 C 38.554026,43.489938 42.086419,45.144845 45.760962,44.684382 C 50.286772,43.779564 55.087495,41.950311 57.853294,38.000557 C 60.138916,34.289524 60.145267,29.433874 58.634389,25.430395 C 57.087283,22.080743 54.260413,19.434414 50.911785,17.997950 C 47.968434,16.558785 45.219423,14.684895 43.122915,12.110831 C 41.438553,10.211653 39.639019,8.1204013 36.992461,7.7307323 C 34.192416,7.0769343 31.212750,7.9995413 29.117757,9.9505543 C 29.039124,10.005240 28.724417,10.223683 28.645699,10.278188"
id="path2690" />
<rect
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect2663"
width="16.811230"
height="5.5305181"
x="20.751286"
y="12.120670" />
<path
style="fill:url(#radialGradient2705);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 49.688641,27.469151 C 52.587946,30.161165 51.610003,35.104229 48.721632,37.398745 C 46.521508,39.752837 43.366005,41.051703 40.169910,40.935822 C 38.686614,41.046423 36.032238,40.575611 35.334753,41.923973 C 38.554026,43.489938 42.086419,45.144845 45.760962,44.684382 C 50.286772,43.779564 55.087495,41.950311 57.853294,38.000557 C 60.138916,34.289524 60.145267,29.433874 58.634389,25.430395 C 57.087283,22.080743 54.260413,19.434414 50.911785,17.997950 C 47.968434,16.558785 45.219423,14.684895 43.122915,12.110831 C 41.438553,10.211653 39.639019,8.1204013 36.992461,7.7307323 C 34.192416,7.0769343 31.212750,7.9995413 29.117757,9.9505543 C 29.039124,10.005240 28.724417,10.223683 28.645699,10.278188"
id="path2681" />
<path
style="fill:#000000;fill-opacity:0.18431373;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.49803922;"
d="M 49.939180,36.537214 C 51.028542,36.817782 49.785208,36.155015 51.749719,37.500107 C 53.206863,38.447581 53.934568,38.033284 53.123088,36.413174 C 51.137586,33.319432 48.879247,36.187562 49.939180,36.537214 z "
id="path2732"
sodipodi:nodetypes="cccc" />
<path
style="fill:#000000;fill-opacity:0.18431373;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 42.574713,31.600630 C 44.190160,33.618298 42.679755,31.628347 42.920829,33.979079 C 39.274590,31.351380 37.638972,26.793605 37.749840,23.222961"
id="path2760"
sodipodi:nodetypes="ccc" />
<path
style="fill:url(#radialGradient2771);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 49.688641,27.469151 C 52.587946,30.161165 51.610003,35.104229 48.721632,37.398745 C 46.521508,39.752837 43.366005,41.051703 40.169910,40.935822 C 38.686614,41.046423 36.032238,40.575611 35.334753,41.923973 C 38.554026,43.489938 42.086419,45.144845 45.760962,44.684382 C 50.286772,43.779564 55.087495,41.950311 57.853294,38.000557 C 60.138916,34.289524 60.145267,29.433874 58.634389,25.430395 C 57.087283,22.080743 54.260413,19.434414 50.911785,17.997950 C 47.968434,16.558785 45.219423,14.684895 43.122915,12.110831 C 41.438553,10.211653 39.639019,8.1204013 36.992461,7.7307323 C 34.192416,7.0769343 31.212750,7.9995413 29.117757,9.9505543 C 29.039124,10.005240 28.724417,10.223683 28.645699,10.278188"
id="path2770" />
<path
style="fill:url(#linearGradient2618);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 34.761822,15.898238 C 39.448558,14.961653 44.503003,17.212103 47.139349,21.220141 C 48.754800,23.237781 49.189534,25.880299 49.462060,28.383478 C 49.622203,29.854470 50.364826,31.124868 50.861928,32.448602 C 51.302809,33.622618 52.958296,34.268196 52.736200,35.710781 C 51.511366,36.271076 50.583675,34.929733 49.547479,34.520296 C 46.873549,33.463630 43.904415,32.873218 41.584839,31.047834 C 38.717925,28.758749 37.638972,24.878199 37.749840,21.307555"
id="path2489"
sodipodi:nodetypes="ccsscscc" />
<path
style="fill:url(#radialGradient2680);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 28.570036,10.693505 C 25.132324,8.7914473 20.977921,10.247680 17.989474,12.365601 C 15.356939,14.139089 13.165301,17.107321 9.7759361,17.306355 C 7.3840891,17.223562 5.6737888,14.703464 5.6166793,12.478782 C 5.2446280,9.2411713 7.4942020,5.5682663 10.596724,4.6087623 C 13.437036,3.7303723 16.538218,3.6303003 19.409439,3.3297553 C 21.616853,3.0987143 17.217524,1.2736593 15.973788,1.1040833 C 12.714640,0.65972930 9.8170271,1.2328933 6.7414888,2.7694893 C 3.3301443,4.4738333 2.2983475,6.0268983 1.1156930,9.3538423 C 0.021465961,12.432076 0.0017711857,16.283707 1.3676198,19.341962 C 2.8863370,22.653847 6.3096979,24.980760 9.9485046,24.871779 C 10.251710,24.874119 11.223026,24.862240 11.525113,24.835782"
id="path2674"
sodipodi:nodetypes="ccccsssssccc" />
<path
style="fill:url(#radialGradient2684);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 28.570036,10.693505 C 25.132324,8.7914473 20.977921,10.247680 17.989474,12.365601 C 15.356939,14.139089 13.165301,17.107321 9.7759361,17.306355 C 7.3840891,17.223562 5.6737888,14.703464 5.6166793,12.478782 C 5.2446280,9.2411713 7.4942020,5.5682663 10.596724,4.6087623 C 13.437036,3.7303723 16.538218,3.6303003 19.409439,3.3297553 C 21.616853,3.0987143 17.217524,1.2736593 15.973788,1.1040833 C 12.714640,0.65972930 9.8170271,1.2328933 6.7414888,2.7694893 C 3.3301443,4.4738333 2.2983475,6.0268983 1.1156930,9.3538423 C 0.021465961,12.432076 0.0017711857,16.283707 1.3676198,19.341962 C 2.8863370,22.653847 6.3096979,24.980760 9.9485046,24.871779 C 10.251710,24.874119 11.223026,24.862240 11.525113,24.835782"
id="path2683"
sodipodi:nodetypes="ccccsssssccc" />
<path
style="fill:url(#linearGradient2686);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 5.6166793,11.840283 C 5.2446280,8.6027023 7.4942020,4.9297963 10.596724,3.9702943 C 13.437036,3.0918733 16.538218,2.9918013 19.409439,2.6912563 C 21.616853,2.4602143 17.217524,0.63522130 15.973788,0.46561330 C 12.714640,0.021230304 9.8170271,0.59442330 6.7414888,2.1310213 C 3.3301443,3.8353343 2.2983475,5.3884293 1.1156930,8.7153733 C 0.021465961,11.793607 0.0017711857,15.645239 1.3676198,18.703494"
id="path2685"
sodipodi:nodetypes="csssssc" />
<path
style="fill:url(#linearGradient2721);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 34.761822,15.898238 C 39.448558,14.961653 44.503003,17.212103 47.139349,21.220141 C 48.754800,23.237781 49.189534,25.880299 49.462060,28.383478 C 49.622203,29.854470 50.364826,31.124868 50.861928,32.448602 C 51.302809,33.622618 52.958296,34.268196 52.736200,35.710781 C 51.511366,36.271076 50.583675,34.929733 49.547479,34.520296 C 46.873549,33.463630 43.904415,32.873218 41.584839,31.047834 C 38.717925,28.758749 37.638972,24.878199 37.749840,21.307555"
id="path2720"
sodipodi:nodetypes="ccsscscc" />
<path
style="fill:url(#linearGradient2773);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 5.6166793,11.840283 C 5.2446280,8.6027023 7.4942020,4.9297963 10.596724,3.9702943 C 13.437036,3.0918733 16.538218,2.9918013 19.409439,2.6912563 C 21.616853,2.4602143 17.217524,0.63522130 15.973788,0.46561330 C 12.714640,0.021230304 9.8170271,0.59442330 6.7414888,2.1310213 C 3.3301443,3.8353343 2.2983475,5.3884293 1.1156930,8.7153733 C 0.021465961,11.793607 0.0017711857,15.645239 1.3676198,18.703494"
id="path2772"
sodipodi:nodetypes="csssssc" />
<path
style="fill:url(#radialGradient2688);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 28.570036,10.055036 C 25.132324,8.1529783 20.977921,9.6091823 17.989474,11.727132 C 15.356939,13.500590 13.165301,16.468883 9.7759361,16.667856 C 7.3840891,16.585093 5.6737888,14.064995 5.6166793,11.840283 C 5.2446280,8.6027023 7.4942020,4.9297963 10.596724,3.9702943 C 13.437036,3.0918733 16.538218,2.9918013 19.409439,2.6912563 C 21.616853,2.4602143 17.217524,0.63522130 15.973788,0.46561330 C 12.714640,0.021230304 9.8170271,0.59442330 6.7414888,2.1310213 C 3.3301443,3.8353343 2.2983475,5.3884293 1.1156930,8.7153733 C 0.021465961,11.793607 0.0017711857,15.645239 1.3676198,18.703494 C 2.8863370,22.015378 6.3096979,24.342291 9.9485046,24.233281 C 10.251710,24.235650 11.223026,24.223771 11.525113,24.197283"
id="path2687"
sodipodi:nodetypes="ccccsssssccc" />
<rect
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3185"
width="16.811230"
height="5.5305181"
x="20.751286"
y="12.120670" />
<rect
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3186"
width="16.811230"
height="5.5305181"
x="20.751286"
y="12.120670" />
<rect
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3187"
width="16.811230"
height="5.5305181"
x="20.751286"
y="12.120670" />
<rect
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3188"
width="16.811230"
height="5.5305181"
x="20.751286"
y="12.759109" />
<path
sodipodi:type="arc"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient3193);stroke-width:0.93750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3190"
sodipodi:cx="139.36806"
sodipodi:cy="134.82051"
sodipodi:rx="2.8240740"
sodipodi:ry="2.6828704"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 0 136.54398,134.82051 A 2.8240740 2.6828704 0 1 0 142.19213 134.82051 z"
transform="matrix(-0.354699,0.000000,0.000000,0.359590,80.63839,-24.35974)" />
<path
sodipodi:type="arc"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient3191);stroke-width:0.72265625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3192"
sodipodi:cx="139.36806"
sodipodi:cy="134.82051"
sodipodi:rx="2.8240740"
sodipodi:ry="2.6828704"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 0 136.54398,134.82051 A 2.8240740 2.6828704 0 1 0 142.19213 134.82051 z"
transform="matrix(-0.312135,0.000000,0.000000,0.316442,63.48142,-18.65480)" />
<path
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.63411951;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 33.858882,23.763818 C 32.750625,23.007489 32.030891,22.787366 30.657417,22.745430 C 30.179103,22.770718 29.577464,22.639838 29.212655,23.038536"
id="path2499"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.47558972;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
d="M 21.537167,23.399137 C 20.730427,22.920585 20.037875,22.800296 19.120029,22.898867 C 18.846788,23.113440 18.942838,22.873159 18.683459,23.110651"
id="path2500"
sodipodi:nodetypes="ccc" />
</svg>

After

Width:  |  Height:  |  Size: 43 KiB

9
gnoemoe.desktop Normal file
View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=GnoeMoe
GenericName=MOO Client
Comment=GnoeMoe Gnome MOO Client
Exec=gnoemoe
Icon=gnoemoe-logo.svg
Terminal=0
Type=Application
Categories=GNOME;GTK;Application;Network

8
gnoemoe.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-moo">
<comment>MOO Code</comment>
<glob pattern="*.moo"/>
</mime-type>
</mime-info>

217
moo.lang Normal file
View File

@ -0,0 +1,217 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language _name="MOO" version="1.0" _section="Sources" mimetypes="text/x-moo">
<escape-char>\</escape-char>
<line-comment _name = "Line Comment" style= "Comment" end-at-line-end = "TRUE">
<start-regex>^[ ]*&quot;</start-regex>
<end-regex>&quot;</end-regex>
</line-comment>
<string _name = "String" style = "String" end-at-line-end = "TRUE">
<start-regex>&quot;</start-regex>
<end-regex>&quot;</end-regex>
</string>
<keyword-list _name = "Keywords" style = "Keyword" case-sensitive="FALSE">
<keyword>if</keyword>
<keyword>else</keyword>
<keyword>elseif</keyword>
<keyword>endif</keyword>
<keyword>for</keyword>
<keyword>endfor</keyword>
<keyword>break</keyword>
<keyword>continue</keyword>
<keyword>while</keyword>
<keyword>endwhile</keyword>
<keyword>in</keyword>
<keyword>return</keyword>
<keyword>try</keyword>
<keyword>except</keyword>
<keyword>endtry</keyword>
<keyword>finally</keyword>
<keyword>fork</keyword>
<keyword>endfork</keyword>
</keyword-list>
<keyword-list _name = "Error" style = "Data Type" case-sensitive="FALSE">
<keyword>E_NONE</keyword>
<keyword>E_TYPE</keyword>
<keyword>E_DIV</keyword>
<keyword>E_PERM</keyword>
<keyword>E_PROPNF</keyword>
<keyword>E_VERBNF</keyword>
<keyword>E_VARNF</keyword>
<keyword>E_INVIND</keyword>
<keyword>E_RECMOVE</keyword>
<keyword>E_MAXREC</keyword>
<keyword>E_RANGE</keyword>
<keyword>E_ARGS</keyword>
<keyword>E_NACC</keyword>
<keyword>E_INVARG</keyword>
<keyword>E_QUOTA</keyword>
<keyword>E_FLOAT</keyword>
</keyword-list>
<keyword-list _name = "Builtin Functions" style = "Function" case-sensitive = "FALSE">
<keyword>abs</keyword>
<keyword>acos</keyword>
<keyword>add_property</keyword>
<keyword>asin</keyword>
<keyword>atan</keyword>
<keyword>binary_hash</keyword>
<keyword>boot_player</keyword>
<keyword>buffered_output_length</keyword>
<keyword>call_function</keyword>
<keyword>caller_perms</keyword>
<keyword>callers</keyword>
<keyword>ceil</keyword>
<keyword>children</keyword>
<keyword>chparent</keyword>
<keyword>clear_property</keyword>
<keyword>connected_players</keyword>
<keyword>connected_seconds</keyword>
<keyword>connection_name</keyword>
<keyword>connection_option</keyword>
<keyword>connection_options</keyword>
<keyword>cos</keyword>
<keyword>cosh</keyword>
<keyword>create</keyword>
<keyword>crypt</keyword>
<keyword>ctime</keyword>
<keyword>db_disk_size</keyword>
<keyword>decode_binary</keyword>
<keyword>delete_property</keyword>
<keyword>delete_verb</keyword>
<keyword>disassemble</keyword>
<keyword>dump_database</keyword>
<keyword>encode_binary</keyword>
<keyword>equal</keyword>
<keyword>eval</keyword>
<keyword>exp</keyword>
<keyword>floatstr</keyword>
<keyword>floor</keyword>
<keyword>flush_input</keyword>
<keyword>force_input</keyword>
<keyword>function_info</keyword>
<keyword>idle_seconds</keyword>
<keyword>index</keyword>
<keyword>is_clear_property</keyword>
<keyword>is_member</keyword>
<keyword>is_player</keyword>
<keyword>kill_task</keyword>
<keyword>length</keyword>
<keyword>listappend</keyword>
<keyword>listdelete</keyword>
<keyword>listen</keyword>
<keyword>listeners</keyword>
<keyword>listinsert</keyword>
<keyword>listset</keyword>
<keyword>log</keyword>
<keyword>log10</keyword>
<keyword>match</keyword>
<keyword>max</keyword>
<keyword>max_object</keyword>
<keyword>memory_usage</keyword>
<keyword>min</keyword>
<keyword>move</keyword>
<keyword>notify</keyword>
<keyword>object_bytes</keyword>
<keyword>open_network_connection</keyword>
<keyword>output_delimiters</keyword>
<keyword>parent</keyword>
<keyword>pass</keyword>
<keyword>players</keyword>
<keyword>properties</keyword>
<keyword>property_info</keyword>
<keyword>queue_info</keyword>
<keyword>queued_tasks</keyword>
<keyword>raise</keyword>
<keyword>random</keyword>
<keyword>read</keyword>
<keyword>recycle</keyword>
<keyword>renumber</keyword>
<keyword>reset_max_object</keyword>
<keyword>resume</keyword>
<keyword>rindex</keyword>
<keyword>rmatch</keyword>
<keyword>seconds_left</keyword>
<keyword>server_log</keyword>
<keyword>server_version</keyword>
<keyword>set_connection_option</keyword>
<keyword>set_player_flag</keyword>
<keyword>set_property_info</keyword>
<keyword>set_task_perms</keyword>
<keyword>set_verb_args</keyword>
<keyword>set_verb_code</keyword>
<keyword>set_verb_info</keyword>
<keyword>setadd</keyword>
<keyword>setremove</keyword>
<keyword>shutdown</keyword>
<keyword>sin</keyword>
<keyword>sinh</keyword>
<keyword>sqrt</keyword>
<keyword>strcmp</keyword>
<keyword>string_hash</keyword>
<keyword>strsub</keyword>
<keyword>substitute</keyword>
<keyword>suspend</keyword>
<keyword>tan</keyword>
<keyword>tanh</keyword>
<keyword>task_id</keyword>
<keyword>task_stack</keyword>
<keyword>ticks_left</keyword>
<keyword>time</keyword>
<keyword>tofloat</keyword>
<keyword>toint</keyword>
<keyword>toliteral</keyword>
<keyword>tonum</keyword>
<keyword>toobj</keyword>
<keyword>tostr</keyword>
<keyword>trunc</keyword>
<keyword>typeof</keyword>
<keyword>unlisten</keyword>
<keyword>valid</keyword>
<keyword>value_bytes</keyword>
<keyword>value_hash</keyword>
<keyword>verb_args</keyword>
<keyword>verb_code</keyword>
<keyword>verb_info</keyword>
<keyword>verbs</keyword>
</keyword-list>
<keyword-list _name = "Builtin Variables" style = "Data Type" case-sensitive = "FALSE">
<keyword>player</keyword>
<keyword>this</keyword>
<keyword>caller</keyword>
<keyword>verb</keyword>
<keyword>argstr</keyword>
<keyword>args</keyword>
<keyword>dobjstr</keyword>
<keyword>dobj</keyword>
<keyword>prepstr</keyword>
<keyword>iobjstr</keyword>
<keyword>iobj</keyword>
</keyword-list>
<keyword-list _name = "Types" style = "Data Type" case-sensitive="FALSE">
<keyword>ERR</keyword>
<keyword>LIST</keyword>
<keyword>STR</keyword>
<keyword>OBJ</keyword>
<keyword>INT</keyword>
<keyword>FLOAT</keyword>
<keyword>ANY</keyword>
</keyword-list>
<pattern-item _name = "S-Ref" style = "Data Type" case-sensitive="FALSE">
<regex>\$[A-Za-z0-9_]+</regex>
</pattern-item>
<pattern-item _name = "Object Number" style = "Base-N Integer">
<regex>#[-]?[0-9]+</regex>
</pattern-item>
</language>

14
pixmaps/Makefile.am Normal file
View File

@ -0,0 +1,14 @@
SUBDIRS = userlist ice-userlist tray
pixmapsdir = $(pkgdatadir)/pixmaps
pixmaps_DATA = close.xpm \
editor.xpm \
editor_text.xpm \
editor_verb.xpm \
gnoemoe_logo.svg \
saveclose.xpm \
terminal.png \
world.svg \
world_activity.svg
EXTRA_DIST = $(pixmaps_DATA)

74
pixmaps/editor.xpm Normal file
View File

@ -0,0 +1,74 @@
/* XPM */
static char * editor_xpm[] = {
"16 16 55 1",
" c None",
". c #000000",
"+ c #FEFEFE",
"@ c #FDFDFD",
"# c #E0E0E0",
"$ c #C1C1C1",
"% c #F1F1F1",
"& c #C3C3C3",
"* c #FBFBFB",
"= c #A8A8A8",
"- c #BEBEBE",
"; c #B5B5B5",
"> c #CACACA",
", c #ADADAD",
"' c #767676",
") c #5D5D5D",
"! c #404040",
"~ c #F0F0F0",
"{ c #E2E2E2",
"] c #858585",
"^ c #4B4B49",
"/ c #161616",
"( c #B3B3B3",
"_ c #C8C8C8",
": c #BDBDBD",
"< c #EFEFEF",
"[ c #EEEEEE",
"} c #C5C5C5",
"| c #ECECEC",
"1 c #C4C4C4",
"2 c #D3D3D3",
"3 c #BCBCBC",
"4 c #C7C7C7",
"5 c #EBEBEB",
"6 c #EDEDED",
"7 c #EAEAEA",
"8 c #C2C2C2",
"9 c #E8E8E8",
"0 c #686E83",
"a c #C0C0C0",
"b c #E9E9E9",
"c c #878BA5",
"d c #7C84A3",
"e c #E7E7E7",
"f c #BFBFBF",
"g c #E6E6E6",
"h c #A7A2A6",
"i c #9795A1",
"j c #E5E5E5",
"k c #686D83",
"l c #676D82",
"m c #E4E4E4",
"n c #E3E3E3",
"o c #BBBBBB",
"p c #A0A0A0",
" ......... ",
" .++++++@#$. ",
" .+%%%%%%&*=. ",
" .+%-;->%,')!. ",
" .+%%%%%~{]^/. ",
" .+%(_:(#<[[}. ",
" .+<#<[[[[[|1. ",
" .@[(2(33445&. ",
" .@6|||55777$. ",
" .@588900009a. ",
" .@77bb0cd0ef. ",
" .@9$$g0hi0j-. ",
" .@eegg0kklm:. ",
" .@gjjjmmnnno. ",
" .8:::33oooop. ",
" ........... "};

80
pixmaps/editor_text.xpm Normal file
View File

@ -0,0 +1,80 @@
/* XPM */
static char * editor_text_xpm[] = {
"16 16 61 1",
" c None",
". c #000000",
"+ c #FEFEFE",
"@ c #FDFDFD",
"# c #E0E0E0",
"$ c #C1C1C1",
"% c #F1F1F1",
"& c #C3C3C3",
"* c #FBFBFB",
"= c #A8A8A8",
"- c #CCCCCC",
"; c #ADADAD",
"> c #767676",
", c #5D5D5D",
"' c #404040",
") c #F0F0F0",
"! c #E2E2E2",
"~ c #858585",
"{ c #4B4B49",
"] c #FBE73B",
"^ c #F2B64D",
"/ c #CACACA",
"( c #EFEFEF",
"_ c #C9C9C9",
": c #FCEB3D",
"< c #F7B544",
"[ c #675A36",
"} c #EEEEEE",
"| c #FCE93B",
"1 c #F7B545",
"2 c #6C5F34",
"3 c #F9DF39",
"4 c #F4B244",
"5 c #665D3E",
"6 c #EDEDED",
"7 c #ECECEC",
"8 c #EBEBEB",
"9 c #F6D236",
"0 c #EFB44D",
"a c #5C4F2B",
"b c #C4C4C4",
"c c #E8E8E8",
"d c #D7AE74",
"e c #655930",
"f c #C0C0C0",
"g c #EAEAEA",
"h c #E9E9E9",
"i c #4F4115",
"j c #E7E7E7",
"k c #BFBFBF",
"l c #C2C2C2",
"m c #E6E6E6",
"n c #E5E5E5",
"o c #BEBEBE",
"p c #E4E4E4",
"q c #BDBDBD",
"r c #E3E3E3",
"s c #BBBBBB",
"t c #BCBCBC",
"u c #A0A0A0",
"v c #2A2A2A",
" ......... ",
".++++++@#$. ",
".+%%%%%%&*=. ",
".+%---%%;>,'.. ",
".+%%%%%)!~{.]^. ",
".+%////(/_.:<[. ",
".+(((}}}}.|12. ",
".@}__}__.345. ",
".@67778.90a.. ",
".@8bbbc.de.f. ",
".@gghh.i..jk. ",
".@clml..mmno. ",
".@jjmmmnnppq. ",
".@mnnnpprrrs. ",
".lqqqttssssuv ",
" ........... "};

83
pixmaps/editor_verb.xpm Normal file
View File

@ -0,0 +1,83 @@
/* XPM */
static char * editor_verb_xpm[] = {
"16 16 64 1",
" c None",
". c #000000",
"+ c #FEFEFE",
"@ c #FDFDFD",
"# c #E0E0E0",
"$ c #C1C1C1",
"% c #F1F1F1",
"& c #C3C3C3",
"* c #FBFBFB",
"= c #A8A8A8",
"- c #0000FF",
"; c #00FF00",
"> c #ADADAD",
", c #767676",
"' c #5D5D5D",
") c #404040",
"! c #F0F0F0",
"~ c #E2E2E2",
"{ c #858585",
"] c #4B4B49",
"^ c #FBE73B",
"/ c #F2B64D",
"( c #FF0000",
"_ c #EFEFEF",
": c #CACACA",
"< c #C9C9C9",
"[ c #FCEB3D",
"} c #F7B544",
"| c #675A36",
"1 c #EEEEEE",
"2 c #FCE93B",
"3 c #F7B545",
"4 c #6C5F34",
"5 c #000080",
"6 c #F9DF39",
"7 c #F4B244",
"8 c #665D3E",
"9 c #EDEDED",
"0 c #ECECEC",
"a c #EBEBEB",
"b c #F6D236",
"c c #EFB44D",
"d c #5C4F2B",
"e c #E8E8E8",
"f c #D7AE74",
"g c #655930",
"h c #C0C0C0",
"i c #EAEAEA",
"j c #E9E9E9",
"k c #4F4115",
"l c #E7E7E7",
"m c #BFBFBF",
"n c #FFFF00",
"o c #E6E6E6",
"p c #E5E5E5",
"q c #BEBEBE",
"r c #E4E4E4",
"s c #BDBDBD",
"t c #E3E3E3",
"u c #BBBBBB",
"v c #C2C2C2",
"w c #BCBCBC",
"x c #A0A0A0",
"y c #2A2A2A",
" ......... ",
".++++++@#$. ",
".+%%%%%%&*=. ",
".+%---;;>,').. ",
".+%%%%%!~{].^/. ",
".+%;;((_:<.[}|. ",
".+___1111.234. ",
".@155;--.678. ",
".@9000a.bcd.. ",
".@a-((e.fg.h. ",
".@iijj.k..lm. ",
".@en;;..oopq. ",
".@llooopprrs. ",
".@o((--((;tu. ",
".vssswwuuuuxy ",
" ........... "};

592
pixmaps/gnoemoe_logo.svg Normal file
View File

@ -0,0 +1,592 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg1"
height="250.00000"
width="250.00000"
y="0.0000000"
x="0.0000000"
version="1.0">
<defs
id="defs3">
<linearGradient
id="linearGradient2676">
<stop
id="stop2677"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
id="stop2678"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2665">
<stop
id="stop2666"
offset="0.0000000"
style="stop-color:#2f2f2f;stop-opacity:1.0000000;" />
<stop
id="stop2667"
offset="1.0000000"
style="stop-color:#2f2f2f;stop-opacity:0.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2655">
<stop
id="stop2656"
offset="0.0000000"
style="stop-color:#212121;stop-opacity:0.0000000;" />
<stop
id="stop2658"
offset="1.0000000"
style="stop-color:#212121;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2648">
<stop
id="stop2649"
offset="0.0000000"
style="stop-color:#212121;stop-opacity:0.0000000;" />
<stop
id="stop2650"
offset="0.50000000"
style="stop-color:#212121;stop-opacity:1.0000000;" />
<stop
id="stop2651"
offset="1.0000000"
style="stop-color:#212121;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2627">
<stop
id="stop2628"
offset="0.0000000"
style="stop-color:#3f3f3f;stop-opacity:1.0000000;" />
<stop
id="stop2630"
offset="0.50000000"
style="stop-color:#3f3f3f;stop-opacity:1.0000000;" />
<stop
id="stop2629"
offset="1.0000000"
style="stop-color:#ff3a03;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2619">
<stop
id="stop2620"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
<stop
id="stop2621"
offset="1.0000000"
style="stop-color:#bb7733;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2614">
<stop
id="stop2615"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
id="stop2616"
offset="1.0000000"
style="stop-color:#bb7733;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2610">
<stop
id="stop2611"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
id="stop2612"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2524">
<stop
id="stop2525"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
<stop
id="stop2526"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:0.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2517">
<stop
id="stop2518"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
id="stop2520"
offset="0.50000000"
style="stop-color:#ffff00;stop-opacity:1.0000000;" />
<stop
id="stop2521"
offset="0.75000000"
style="stop-color:#ffff00;stop-opacity:1.0000000;" />
<stop
id="stop2522"
offset="0.75000000"
style="stop-color:#7f7f00;stop-opacity:1.0000000;" />
<stop
id="stop2519"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2509">
<stop
id="stop2510"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
<stop
id="stop2511"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient2524"
id="linearGradient2512"
y2="0.96052629"
x2="0.49561402"
y1="0.32236841"
x1="0.37719297" />
<linearGradient
xlink:href="#linearGradient2610"
id="linearGradient2609"
y2="0.75333333"
x2="0.64857143"
y1="0.059999999"
x1="0.44571429" />
<linearGradient
xlink:href="#linearGradient2614"
id="linearGradient2613"
y2="0.81578946"
x2="0.55000001"
y1="0.51973683"
x1="0.037500001" />
<linearGradient
xlink:href="#linearGradient2614"
id="linearGradient2617"
y2="0.86184210"
x2="0.27692309"
y1="0.61842108"
x1="-0.069230773" />
<linearGradient
xlink:href="#linearGradient2619"
id="linearGradient2618"
y2="0.40789473"
x2="8.3427189e-15"
y1="0.96052629"
x1="1.7826087" />
<linearGradient
xlink:href="#linearGradient2614"
id="linearGradient2622"
y2="0.65789473"
x2="0.64864862"
y1="0.74342108"
x1="-0.35135135" />
<linearGradient
xlink:href="#linearGradient2614"
id="linearGradient2623"
y2="0.24342105"
x2="0.36956522"
y1="0.50000000"
x1="4.0435971e-14" />
<linearGradient
xlink:href="#linearGradient2655"
id="linearGradient2624"
y2="0.80263156"
x2="0.81818181"
y1="0.35526314"
x1="0.45454547" />
<linearGradient
xlink:href="#linearGradient2619"
id="linearGradient2625"
y2="0.52631581"
x2="0.76315790"
y1="0.74342108"
x1="1.3596492" />
<radialGradient
xlink:href="#linearGradient2610"
id="radialGradient2633"
fy="0.69736838"
fx="0.48461536"
r="0.33903649"
cy="0.69078946"
cx="0.47692308" />
<radialGradient
xlink:href="#linearGradient2665"
id="radialGradient2664"
fy="0.50000000"
fx="0.50000000"
r="0.50000000"
cy="0.50000000"
cx="0.50000000" />
<radialGradient
xlink:href="#linearGradient2676"
id="radialGradient2680"
fy="0.49342105"
fx="0.40659341"
r="0.29306078"
cy="0.48684210"
cx="0.40659341" />
<radialGradient
xlink:href="#linearGradient2610"
id="radialGradient2682"
fy="-0.20394737"
fx="0.084615365"
r="0.33903649"
cy="-0.21710527"
cx="0.092307694" />
<radialGradient
xlink:href="#linearGradient2676"
id="radialGradient2684"
fy="0.32894737"
fx="0.65384614"
r="0.26406428"
cy="0.31578946"
cx="0.65384614" />
<linearGradient
xlink:href="#linearGradient2676"
id="linearGradient2686"
y2="0.35526314"
x2="0.25903615"
y1="4.8799825e-15"
x1="-0.024096385" />
<radialGradient
xlink:href="#linearGradient2676"
id="radialGradient2688"
fy="0.48684207"
fx="0.39560434"
r="0.32444274"
cy="0.40131578"
cx="0.47252747" />
<radialGradient
xlink:href="#linearGradient2610"
id="radialGradient2705"
fy="-0.13157894"
fx="0.13076918"
r="0.23086299"
cy="-0.13815789"
cx="0.10769231" />
<linearGradient
xlink:href="#linearGradient2619"
id="linearGradient2719"
y2="0.96710527"
x2="0.38202247"
y1="0.79605263"
x1="0.23595506" />
<linearGradient
spreadMethod="pad"
xlink:href="#linearGradient2676"
id="linearGradient2721"
y2="0.42763159"
x2="0.24637681"
y1="0.74342108"
x1="-0.057971016" />
<radialGradient
xlink:href="#linearGradient2665"
id="radialGradient2723"
fy="0.38888884"
fx="0.49999997"
r="0.66668981"
cy="0.38888890"
cx="0.49549550" />
<linearGradient
xlink:href="#linearGradient2676"
id="linearGradient2725"
y2="0.80263156"
x2="0.20967741"
y1="0.37500000"
x1="-0.33870968" />
<linearGradient
xlink:href="#linearGradient2676"
id="linearGradient2759"
y2="0.75657892"
x2="0.62426037"
y1="0.93421054"
x1="0.94674557" />
<radialGradient
xlink:href="#linearGradient2665"
id="radialGradient2768"
fy="0.44078946"
fx="0.27272728"
r="0.41422856"
cy="0.42105263"
cx="0.32575756" />
<radialGradient
xlink:href="#linearGradient2610"
id="radialGradient2771"
fy="0.68421048"
fx="0.32307690"
r="0.34615383"
cy="0.67763156"
cx="0.32307693" />
<linearGradient
xlink:href="#linearGradient2676"
id="linearGradient2773"
y2="0.17105263"
x2="0.34337351"
y1="-2.3035188e-14"
x1="-0.024096385" />
<linearGradient
xlink:href="#linearGradient2665"
id="linearGradient2775"
y2="0.36842105"
x2="0.41176471"
y1="-0.046052631"
x1="0.50000000" />
<linearGradient
xlink:href="#linearGradient2676"
id="linearGradient3191"
y2="0.50555557"
x2="0.45263159"
y1="-2.1497310e-14"
x1="0.98947370" />
<linearGradient
xlink:href="#linearGradient2676"
id="linearGradient3193"
y2="0.50555557"
x2="0.45263159"
y1="0.16111112"
x1="0.82631576" />
</defs>
<path
id="path2581"
style="fill:url(#linearGradient2625);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 73.251670,175.06379 C 75.472630,176.12805 75.464890,178.87938 74.939210,180.90744 C 70.524660,187.74481 76.472040,193.61695 83.689440,191.46974 C 90.906840,189.32253 98.192490,189.75552 92.189660,198.78205 C 86.186820,207.80858 89.161810,217.92619 98.721070,219.75046 C 108.04635,225.13166 108.59869,235.92485 105.43999,242.84382 C 113.21231,238.86480 117.72901,228.34670 115.69025,219.50046 C 121.53858,222.72170 119.78423,227.65851 118.15906,232.00023 C 113.98114,237.25673 121.97848,234.63578 123.34670,229.09408 C 126.59052,223.77168 122.42672,220.91783 128.00307,216.65671 C 135.80059,211.57531 139.86603,203.77486 133.12820,198.50086 C 140.53287,209.13646 141.93053,186.11186 157.34756,177.68875 C 167.46117,182.08170 181.16609,146.03561 178.44485,123.05762 C 187.51798,108.52704 164.91593,40.966970 154.40999,39.441340 C 151.63118,38.801340 148.80544,38.530830 146.00352,38.628850 C 137.59775,38.922940 129.39650,42.399310 122.06542,48.331790 C 107.32508,41.087380 90.833690,46.804540 78.970570,55.097290 C 68.520300,62.041350 59.830630,73.661560 46.375988,74.440680 C 36.881164,74.116570 30.102274,64.245600 29.875568,55.534790 C 28.398651,42.857970 37.310097,28.479790 49.626070,24.722860 C 60.901140,21.283480 73.229190,20.868490 84.626960,19.691710 C 93.389640,18.787000 75.907570,11.668360 70.970360,11.004370 C 67.735930,10.569390 64.589860,10.382150 61.501370,10.441880 C 52.235894,10.621070 43.501070,12.991880 34.344432,17.504250 C 20.802551,24.177650 16.694852,30.258280 12.000113,43.285020 C 7.6564020,55.337780 7.5781800,70.434610 13.000138,82.409280 C 19.028933,95.376880 32.618678,104.49202 47.063506,104.06513 C 48.267134,104.07431 52.114474,104.01250 53.313660,103.90888 L 53.719920,103.59639 C 52.152924,107.21154 50.578002,110.84247 49.126058,114.37743 C 46.915583,119.75910 34.251399,128.78072 46.313487,128.68966 C 56.155900,127.04008 66.859690,126.11039 74.751710,119.25234 C 77.041350,117.56136 75.346990,122.14465 75.814240,127.43969 C 76.000090,128.31976 76.403220,129.15664 76.939270,129.87714 C 77.475320,130.59765 74.989920,135.31974 69.907830,133.50207 C 65.474020,129.62085 59.619240,134.58733 59.751330,139.62696 C 58.887710,146.27725 63.353040,152.08385 68.376540,155.87665 C 69.778660,157.08130 71.259760,158.22613 72.782910,159.28284 L 72.720400,159.31409 C 72.811830,160.27333 73.206340,161.14428 73.470420,162.06404 L 73.282920,162.09529 C 72.352390,165.79494 61.501220,167.92358 67.407770,171.72011 C 73.314320,175.51666 78.794120,175.60238 81.908150,175.31379" />
<path
id="path2498"
style="fill:#2f2f2f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 120.98378,48.536170 C 107.33723,41.088600 90.845650,46.790510 78.982530,55.083270 C 68.532260,62.027310 59.832200,73.649520 46.377558,74.428640 C 36.882736,74.104550 30.093423,64.237210 29.866718,55.526400 C 28.389800,42.849610 37.319848,28.468260 49.635821,24.711330 C 60.910890,21.271940 73.221540,20.880150 84.619310,19.703370 C 93.382000,18.798660 75.918150,11.652800 70.980940,10.988810 C 58.043230,9.2488900 46.540682,11.493130 34.331831,17.509620 C 20.789946,24.183020 16.694062,30.264040 11.999323,43.290780 C 7.6556120,55.343520 7.5774300,70.424600 12.999388,82.399270 C 19.028182,95.366870 32.617768,104.47796 47.062596,104.05107 C 48.266226,104.06027 52.122014,104.01375 53.321200,103.91013" />
<path
id="path2486"
style="fill:url(#linearGradient2759);fill-opacity:0.12156863;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 133.39846,150.36760 C 130.42446,154.86741 123.05775,179.79375 105.37588,179.47891 C 97.308330,179.05784 90.311400,173.14109 81.899050,175.29819 C 78.785030,175.58677 73.311740,175.51259 67.405190,171.71604 C 61.498640,167.91949 72.364540,165.79619 73.295060,162.09654" />
<path
id="path2762"
style="fill:url(#radialGradient2768);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 133.40946,150.37676 C 141.96770,142.38172 172.44368,153.88590 126.95567,193.17890 C 114.91231,203.58207 87.298140,190.39614 83.689440,191.46974 C 76.472040,193.61694 70.524660,187.74481 74.939210,180.90744 C 78.911820,177.16360 61.501220,167.92356 67.407770,171.72011 C 73.314320,175.51666 78.794120,175.60238 81.908150,175.31379 C 90.320500,173.15669 97.309950,179.04887 105.37749,179.46996 C 123.05936,179.78480 130.43546,154.87657 133.40946,150.37676 z " />
<path
id="path2507"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:10.000033;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 104.18532,148.98160 C 107.65882,157.23228 103.23813,166.69261 98.029260,170.46198 C 91.727950,175.35479 82.217800,174.53043 76.821030,168.49016 C 74.560100,166.02538 73.062400,162.74500 72.734140,159.30096" />
<path
id="path2722"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:url(#radialGradient2723);stroke-width:10.000033;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 108.74349,151.62019 C 112.21699,159.87087 107.79631,169.33120 102.58744,173.10057 C 96.286130,177.99338 86.775980,177.16903 81.379200,171.12875 C 79.118290,168.66397 77.620590,165.38359 77.292330,161.93955" />
<path
id="path2527"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:5.0000167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 103.56030,147.10664 C 107.97132,158.48226 103.23813,166.69261 98.029260,170.46198 C 91.727950,175.35479 82.217800,174.53043 76.821030,168.49016 C 74.560100,166.02538 73.062400,162.74500 72.734140,159.30096" />
<path
id="path2529"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#bbbb00;stroke-width:1.8750064;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 105.43535,145.23167 C 112.03393,161.29470 102.61312,175.75494 87.716500,175.46189" />
<path
id="path2492"
style="fill:url(#linearGradient2512);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 109.69645,145.96936 C 111.80988,142.85496 106.95800,139.38538 104.69738,142.47019 C 102.32670,144.28557 100.41691,146.61417 98.117440,148.51097" />
<path
id="path2774"
style="fill:url(#linearGradient2775);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 97.021020,208.16272 C 99.978440,216.57092 113.76227,202.01750 110.54369,197.93135 C 104.99043,193.29450 99.048250,193.01209 97.395880,190.58640 C 90.178470,192.73362 95.220840,203.04467 97.021020,208.16272 z " />
<path
id="path2493"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 110.54369,197.93135 C 104.10653,189.75904 92.860900,191.24435 83.695330,191.47027 C 76.477930,193.61749 70.523090,187.73166 74.937640,180.89429 C 75.463320,178.86626 75.485920,176.12104 73.264960,175.05677" />
<path
id="path2494"
style="fill:url(#linearGradient2623);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 92.186750,198.77855 C 86.183910,207.80508 89.149130,217.91777 98.708390,219.74202 C 108.03367,225.12326 108.60496,235.93537 105.44626,242.85422 C 113.21858,238.87534 117.72355,228.33178 112.09095,220.73554 C 111.85760,220.38246 111.62428,220.02937 111.39093,219.67630" />
<path
id="path2495"
style="fill:url(#linearGradient2624);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 133.13687,198.49616 C 139.87470,203.77014 135.79866,211.56565 128.00114,216.64715 C 122.42480,220.90828 126.59402,223.77506 123.35020,229.09742 C 121.98197,234.63904 113.97672,237.26949 118.15464,232.01305 C 119.77980,227.67135 121.55304,222.73546 119.29855,218.26428" />
<path
id="path2496"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 177.19355,134.39086 C 180.49975,146.68525 174.99524,159.60022 166.44270,169.16005 C 157.70329,178.92874 142.20054,187.00285 140.19723,200.75537" />
<path
id="path2497"
style="fill:#2f2f2f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 204.81752,116.72114 C 216.32678,127.26171 212.44467,146.61619 200.97882,155.60046 C 192.24506,164.81793 179.71879,169.90365 167.03137,169.44991 C 161.14319,169.88291 150.60621,168.03947 147.83743,173.31893 C 160.61686,179.45040 174.63926,185.93022 189.22596,184.12736 C 207.19189,180.58458 226.24914,173.42201 237.22844,157.95689 C 246.30158,143.42630 246.32679,124.41390 240.32911,108.73831 C 234.18763,95.622730 222.96591,85.261190 209.67299,79.636570 C 197.98888,74.001690 187.07624,66.664440 178.75380,56.585650 C 172.06746,49.149370 164.92391,40.961050 154.41797,39.435420 C 143.30274,36.875430 131.47447,40.487870 123.15806,48.127030 C 122.84591,48.341200 121.59663,49.196450 121.28415,49.409900" />
<rect
id="rect2645"
style="fill:#2f2f2f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
y="48.379028"
x="94.807465"
height="22.980539"
width="53.034359" />
<path
id="path2491"
style="fill:url(#linearGradient2617);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 88.821520,72.513160 C 79.882820,76.352190 68.259970,74.820510 63.324090,84.771910 C 57.517860,93.763780 53.208970,104.44964 49.128668,114.38371 C 46.918192,119.76539 34.264170,128.77388 46.326257,128.68282 C 56.168670,127.03324 66.869080,126.11861 74.761100,119.26056 C 77.140450,117.50335 79.048150,115.23356 81.172590,113.21071" />
<path
id="path2707"
style="fill:url(#linearGradient2719);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 45.313460,127.68968 C 59.841910,115.01165 74.671950,123.83846 82.189400,95.815280 C 81.751690,95.633910 86.818180,108.98869 81.158130,113.22120 C 79.033690,115.24405 77.131060,117.49511 74.751710,119.25234 C 66.859690,126.11039 56.155900,127.04008 46.313487,128.68966" />
<path
id="path2490"
style="fill:url(#linearGradient2725);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 98.399860,70.003190 C 89.976310,69.937430 83.761450,76.301570 81.087110,83.713910 C 77.748060,91.487080 86.127790,98.076400 84.068860,105.82177 C 82.803770,113.56541 75.099060,119.24254 75.822450,127.44007 C 76.008300,128.32013 76.400310,129.15194 76.936360,129.87244" />
<path
id="path2632"
style="fill:url(#radialGradient2633);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 204.81752,116.72114 C 216.32678,127.26171 212.44467,146.61619 200.97882,155.60046 C 192.24506,164.81793 179.71879,169.90365 167.03137,169.44991 C 161.14319,169.88291 150.60621,168.03947 147.83743,173.31893 C 160.61686,179.45040 174.63926,185.93022 189.22596,184.12736 C 207.19189,180.58458 226.24914,173.42201 237.22844,157.95689 C 246.30158,143.42630 246.32679,124.41390 240.32911,108.73831 C 234.18763,95.622730 222.96591,85.261190 209.67299,79.636570 C 197.98888,74.001690 187.07624,66.664440 178.75380,56.585650 C 172.06746,49.149370 164.92391,40.961050 154.41797,39.435420 C 143.30274,36.875430 131.47447,40.487870 123.15806,48.127030 C 122.84591,48.341200 121.59663,49.196450 121.28415,49.409900" />
<path
id="path2501"
style="fill:url(#linearGradient2622);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 103.20089,201.32015 C 104.07556,205.74235 97.723880,208.03336 99.080290,212.47027 C 101.24559,217.77738 108.33027,219.67227 109.41404,225.60675" />
<path
id="path2502"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
transform="matrix(-2.000050,0.000000,0.000000,1.999962,410.1856,-166.0270)"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 1 136.54398,134.82051 A 2.8240740 2.6828704 0 1 1 142.19213 134.82051 z" />
<path
id="path2503"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
transform="matrix(-1.421688,0.000000,0.000000,1.483592,285.2254,-96.99050)"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 1 136.54398,134.82051 A 2.8240740 2.6828704 0 1 1 142.19213 134.82051 z" />
<path
id="path2504"
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
transform="matrix(-0.715722,0.000000,0.000000,0.746242,229.1839,1.705700)"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 1 136.54398,134.82051 A 2.8240740 2.6828704 0 1 1 142.19213 134.82051 z" />
<path
id="path2505"
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
transform="matrix(-0.522858,0.000000,0.000000,0.541812,158.3577,28.56880)"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 1 136.54398,134.82051 A 2.8240740 2.6828704 0 1 1 142.19213 134.82051 z" />
<path
id="path2989"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.8750064;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 71.508810,156.79396 C 70.535380,159.41974 70.893460,161.38021 71.727220,162.96212" />
<path
id="path2488"
style="fill:url(#linearGradient2613);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 95.614750,91.677620 C 97.381080,96.716160 97.004050,102.46006 92.865680,106.24755 C 87.949940,112.22229 85.035430,119.46072 81.351730,126.19477 C 79.653690,130.60467 74.994540,135.33400 69.912450,133.51633 C 65.478640,129.63513 59.624430,134.59315 59.756520,139.63278 C 58.892900,146.28305 63.348830,152.09729 68.372330,155.89009 C 73.223740,160.05824 78.793010,163.55709 85.126390,164.89029" />
<path
id="path2487"
style="fill:url(#linearGradient2609);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 122.12269,144.27495 C 126.10935,135.32626 117.64121,126.51395 108.56942,127.73028 C 100.73698,128.43993 96.140750,135.86093 89.221890,138.77056 C 86.542180,140.40002 83.856660,142.07991 80.890160,143.14533" />
<path
id="path2528"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.8750064;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 103.24779,154.29400 C 103.28371,161.29470 101.09670,166.40902 96.466720,169.52450 C 92.317410,172.31655 86.592910,172.65547 81.196140,169.42764" />
<path
id="path2530"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 45.313460,127.67686 C 59.841910,114.99883 74.671950,123.82564 82.189400,95.802460" />
<path
id="path2690"
style="fill:url(#radialGradient2682);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 204.81752,116.72114 C 216.32678,127.26171 212.44467,146.61619 200.97882,155.60046 C 192.24506,164.81793 179.71879,169.90365 167.03137,169.44991 C 161.14319,169.88291 150.60621,168.03947 147.83743,173.31893 C 160.61686,179.45040 174.63926,185.93022 189.22596,184.12736 C 207.19189,180.58458 226.24914,173.42201 237.22844,157.95689 C 246.30158,143.42630 246.32679,124.41390 240.32911,108.73831 C 234.18763,95.622730 222.96591,85.261190 209.67299,79.636570 C 197.98888,74.001690 187.07624,66.664440 178.75380,56.585650 C 172.06746,49.149370 164.92391,40.961050 154.41797,39.435420 C 143.30274,36.875430 131.47447,40.487870 123.15806,48.127030 C 122.84591,48.341200 121.59663,49.196450 121.28415,49.409900" />
<rect
id="rect2663"
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
y="56.624146"
x="89.945984"
height="21.654737"
width="66.734901" />
<path
id="path2681"
style="fill:url(#radialGradient2705);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 204.81752,116.72114 C 216.32678,127.26171 212.44467,146.61619 200.97882,155.60046 C 192.24506,164.81793 179.71879,169.90365 167.03137,169.44991 C 161.14319,169.88291 150.60621,168.03947 147.83743,173.31893 C 160.61686,179.45040 174.63926,185.93022 189.22596,184.12736 C 207.19189,180.58458 226.24914,173.42201 237.22844,157.95689 C 246.30158,143.42630 246.32679,124.41390 240.32911,108.73831 C 234.18763,95.622730 222.96591,85.261190 209.67299,79.636570 C 197.98888,74.001690 187.07624,66.664440 178.75380,56.585650 C 172.06746,49.149370 164.92391,40.961050 154.41797,39.435420 C 143.30274,36.875430 131.47447,40.487870 123.15806,48.127030 C 122.84591,48.341200 121.59663,49.196450 121.28415,49.409900" />
<path
id="path2732"
style="fill:#000000;fill-opacity:0.18431373;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.49803922"
d="M 205.81207,152.22714 C 210.13648,153.32568 205.20085,150.73062 212.99930,155.99737 C 218.78368,159.70709 221.67241,158.08496 218.45112,151.74145 C 210.56935,139.62791 201.60449,150.85798 205.81207,152.22714 z " />
<path
id="path2760"
style="fill:#000000;fill-opacity:0.18431373;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 176.57763,132.89792 C 182.99041,140.79813 176.99461,133.00644 177.95159,142.21069 C 163.47725,131.92199 156.98441,114.07606 157.42452,100.09522" />
<path
id="path2770"
style="fill:url(#radialGradient2771);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 204.81752,116.72114 C 216.32678,127.26171 212.44467,146.61619 200.97882,155.60046 C 192.24506,164.81793 179.71879,169.90365 167.03137,169.44991 C 161.14319,169.88291 150.60621,168.03947 147.83743,173.31893 C 160.61686,179.45040 174.63926,185.93022 189.22596,184.12736 C 207.19189,180.58458 226.24914,173.42201 237.22844,157.95689 C 246.30158,143.42630 246.32679,124.41390 240.32911,108.73831 C 234.18763,95.622730 222.96591,85.261190 209.67299,79.636570 C 197.98888,74.001690 187.07624,66.664440 178.75380,56.585650 C 172.06746,49.149370 164.92391,40.961050 154.41797,39.435420 C 143.30274,36.875430 131.47447,40.487870 123.15806,48.127030 C 122.84591,48.341200 121.59663,49.196450 121.28415,49.409900" />
<path
id="path2489"
style="fill:url(#linearGradient2618);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 145.56310,71.415200 C 164.16785,67.747970 184.23229,76.559720 194.69769,92.253050 C 201.11048,100.15326 202.83624,110.50001 203.91807,120.30126 C 204.55378,126.06093 207.50174,131.03500 209.47507,136.21816 C 211.22522,140.81506 217.79695,143.34277 216.91530,148.99122 C 212.05312,151.18508 208.37050,145.93312 204.25715,144.32983 C 193.64255,140.19249 181.85609,137.88071 172.64816,130.73343 C 161.26748,121.77053 156.98441,106.57620 157.42452,92.595360" />
<path
id="path2674"
style="fill:url(#radialGradient2680);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 120.98378,51.036120 C 107.33723,43.588550 90.845650,49.290460 78.982530,57.583220 C 68.532260,64.527270 59.832200,76.149470 46.377558,76.928600 C 36.882736,76.604500 30.093423,66.737170 29.866718,58.026350 C 28.389800,45.349570 37.319848,30.968220 49.635821,27.211290 C 60.910890,23.771890 73.221540,23.380100 84.619310,22.203320 C 93.382000,21.298610 75.918150,14.152750 70.980940,13.488770 C 58.043230,11.748850 46.540682,13.993090 34.331831,20.009570 C 20.789946,26.682980 16.694062,32.763990 11.999323,45.790730 C 7.6556120,57.843470 7.5774300,72.924550 12.999388,84.899230 C 19.028182,97.866820 32.617768,106.97791 47.062596,106.55102 C 48.266226,106.56022 52.122014,106.51370 53.321200,106.41008" />
<path
id="path2683"
style="fill:url(#radialGradient2684);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 120.98378,51.036120 C 107.33723,43.588550 90.845650,49.290460 78.982530,57.583220 C 68.532260,64.527270 59.832200,76.149470 46.377558,76.928600 C 36.882736,76.604500 30.093423,66.737170 29.866718,58.026350 C 28.389800,45.349570 37.319848,30.968220 49.635821,27.211290 C 60.910890,23.771890 73.221540,23.380100 84.619310,22.203320 C 93.382000,21.298610 75.918150,14.152750 70.980940,13.488770 C 58.043230,11.748850 46.540682,13.993090 34.331831,20.009570 C 20.789946,26.682980 16.694062,32.763990 11.999323,45.790730 C 7.6556120,57.843470 7.5774300,72.924550 12.999388,84.899230 C 19.028182,97.866820 32.617768,106.97791 47.062596,106.55102 C 48.266226,106.56022 52.122014,106.51370 53.321200,106.41008" />
<path
id="path2685"
style="fill:url(#linearGradient2686);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 29.866718,55.526400 C 28.389800,42.849610 37.319848,28.468260 49.635821,24.711330 C 60.910890,21.271940 73.221540,20.880150 84.619310,19.703370 C 93.382000,18.798660 75.918150,11.652800 70.980940,10.988810 C 58.043230,9.2488900 46.540682,11.493130 34.331831,17.509620 C 20.789946,24.183020 16.694062,30.264040 11.999323,43.290780 C 7.6556120,55.343520 7.5774300,70.424600 12.999388,82.399270" />
<path
id="path2720"
style="fill:url(#linearGradient2721);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 145.56310,71.415200 C 164.16785,67.747970 184.23229,76.559720 194.69769,92.253050 C 201.11048,100.15326 202.83624,110.50001 203.91807,120.30126 C 204.55378,126.06093 207.50174,131.03500 209.47507,136.21816 C 211.22522,140.81506 217.79695,143.34277 216.91530,148.99122 C 212.05312,151.18508 208.37050,145.93312 204.25715,144.32983 C 193.64255,140.19249 181.85609,137.88071 172.64816,130.73343 C 161.26748,121.77053 156.98441,106.57620 157.42452,92.595360" />
<path
id="path2772"
style="fill:url(#linearGradient2773);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:2.5000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 29.866718,55.526400 C 28.389800,42.849610 37.319848,28.468260 49.635821,24.711330 C 60.910890,21.271940 73.221540,20.880150 84.619310,19.703370 C 93.382000,18.798660 75.918150,11.652800 70.980940,10.988810 C 58.043230,9.2488900 46.540682,11.493130 34.331831,17.509620 C 20.789946,24.183020 16.694062,30.264040 11.999323,43.290780 C 7.6556120,55.343520 7.5774300,70.424600 12.999388,82.399270" />
<path
id="path2687"
style="fill:url(#radialGradient2688);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 120.98378,48.536170 C 107.33723,41.088600 90.845650,46.790510 78.982530,55.083270 C 68.532260,62.027310 59.832200,73.649520 46.377558,74.428640 C 36.882736,74.104550 30.093423,64.237210 29.866718,55.526400 C 28.389800,42.849610 37.319848,28.468260 49.635821,24.711330 C 60.910890,21.271940 73.221540,20.880150 84.619310,19.703370 C 93.382000,18.798660 75.918150,11.652800 70.980940,10.988810 C 58.043230,9.2488900 46.540682,11.493130 34.331831,17.509620 C 20.789946,24.183020 16.694062,30.264040 11.999323,43.290780 C 7.6556120,55.343520 7.5774300,70.424600 12.999388,82.399270 C 19.028182,95.366870 32.617768,104.47796 47.062596,104.05107 C 48.266226,104.06027 52.122014,104.01375 53.321200,103.91013" />
<rect
id="rect3185"
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
y="56.624146"
x="89.945984"
height="21.654737"
width="66.734901" />
<rect
id="rect3186"
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
y="56.624146"
x="89.945984"
height="21.654737"
width="66.734901" />
<rect
id="rect3187"
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
y="56.624146"
x="89.945984"
height="21.654737"
width="66.734901" />
<rect
id="rect3188"
style="fill:url(#radialGradient2664);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
y="59.124084"
x="89.945984"
height="21.654737"
width="66.734901" />
<path
id="path3190"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient3193);stroke-width:0.93750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="matrix(-1.408036,0.000000,0.000000,1.407974,327.6776,-86.21470)"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 1 136.54398,134.82051 A 2.8240740 2.6828704 0 1 1 142.19213 134.82051 z" />
<path
id="path3192"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient3191);stroke-width:0.72265625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="matrix(-1.239071,0.000000,0.000000,1.239017,259.5702,-63.87770)"
d="M 142.19213 134.82051 A 2.8240740 2.6828704 0 1 1 136.54398,134.82051 A 2.8240740 2.6828704 0 1 1 142.19213 134.82051 z" />
<path
id="path2499"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.5000083;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 141.97873,102.21284 C 137.57932,99.251480 134.72223,98.389550 129.26999,98.225440 C 127.37124,98.324410 124.98294,97.811880 123.53477,99.373010" />
<path
id="path2500"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.8750064;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 93.065670,100.78501 C 89.863190,98.911180 87.114000,98.440230 83.470450,98.826220 C 82.385780,99.666430 82.767070,98.725570 81.737420,99.655410" />
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -0,0 +1,11 @@
iconsdir = $(pkgdatadir)/pixmaps/ice-userlist
icons_DATA = inhabitant.svg \
programmer.svg \
wizard.svg \
avail+idle.svg \
busy.svg \
busy+idle.svg \
away.svg \
away+idle.svg
EXTRA_DIST = $(icons_DATA)

View File

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 3.7499495,0.69047613 C 2.7564195,0.70692713 1.9539395,1.5148171 1.9374495,2.5057001 L 1.8749495,2.5057001 L 1.8749495,12.520733 L 1.9374495,12.520733 C 1.9372795,12.531081 1.9374495,12.541642 1.9374495,12.552031 C 1.9374495,13.557377 2.7458095,14.382204 3.7499495,14.398553 C 3.7601495,14.398718 3.7709595,14.398553 3.7811995,14.398553 L 17.499950,14.398553 L 17.499950,14.304661 C 18.478900,14.288451 19.242330,13.491474 19.281200,12.520733 L 19.374950,12.520733 L 19.374950,2.5057001 L 19.312450,2.5057001 C 19.295950,1.5148141 18.493470,0.70692713 17.499950,0.69047613 L 17.499950,0.62788213 L 3.7499495,0.69047613 z "
style="fill:#e7e7e7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1582" />
<path
d="M 4.9081495,9.4541103 C 4.9081495,9.0620203 4.9081495,8.6699303 4.9081495,8.2778403 C 5.8332495,7.2249683 6.7382695,6.1541593 7.6813095,5.1172891 C 8.0169095,4.8586881 7.4112895,5.0277891 7.2366095,4.9892221 C 6.5302895,4.9951521 5.8239495,4.9971101 5.1176295,5.0014731 C 5.1176295,4.5843181 5.1176295,4.1671631 5.1176295,3.7500081 C 6.6895695,3.7500081 8.2615095,3.7500081 9.8334495,3.7500081 C 9.8334495,4.1062911 9.8334495,4.4625731 9.8334495,4.8188561 C 9.0552495,5.7093271 8.2899695,6.6113433 7.5034595,7.4943773 C 7.2972095,7.7179343 7.0909595,7.9414913 6.8847195,8.1650473 C 7.8341295,8.0994263 8.7862995,8.1376173 9.7371495,8.1274493 C 9.8215195,8.1551413 10.029060,8.0596733 9.9999495,8.2008523 C 9.9999495,8.6186043 9.9999495,9.0363573 9.9999495,9.4541103 C 8.3026795,9.4541103 6.6054195,9.4541103 4.9081495,9.4541103 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text1516" />
<path
d="M 11.158150,10.704110 C 11.158150,10.312020 11.158150,9.9199303 11.158150,9.5278403 C 12.083250,8.4749683 12.988270,7.4041593 13.931310,6.3672893 C 14.266910,6.1086881 13.661290,6.2777893 13.486610,6.2392223 C 12.780290,6.2451523 12.073950,6.2471103 11.367630,6.2514733 C 11.367630,5.8343181 11.367630,5.4171631 11.367630,5.0000081 C 12.939570,5.0000081 14.511510,5.0000081 16.083450,5.0000081 C 16.083450,5.3562911 16.083450,5.7125731 16.083450,6.0688561 C 15.305250,6.9593273 14.539970,7.8613433 13.753460,8.7443773 C 13.547210,8.9679343 13.340960,9.1914913 13.134720,9.4150473 C 14.084130,9.3494263 15.036300,9.3876173 15.987150,9.3774493 C 16.071520,9.4051413 16.279060,9.3096733 16.249950,9.4508523 C 16.249950,9.8686043 16.249950,10.286357 16.249950,10.704110 C 14.552680,10.704110 12.855420,10.704110 11.158150,10.704110 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text1519" />
<path
d="M 4.2186995,13.158392 L 16.249950,13.158392 C 18.102860,13.220066 18.045960,12.334051 18.062450,11.343168 L 18.124950,3.0468851"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1635" />
<path
d="M 7.0812795,13.750031 C 7.1032495,14.791984 2.9365195,13.841465 2.9561295,13.593936 C 2.9757395,13.346408 3.0378995,13.102543 3.1366995,12.875715 C 3.3343095,12.422061 3.6784995,12.036557 4.1221295,11.826198 C 4.9949595,11.370192 6.1499895,11.679048 6.7002495,12.514711 C 6.9476195,12.872340 7.0825695,13.310386 7.0812795,13.750031 z "
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.2805939;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1616" />
<path
d="M 228.70486 67.715950 A 2.5411651 2.5411651 0 1 0 223.62253,67.715950 A 2.5411651 2.5411651 0 1 0 228.70486 67.715950 z"
transform="matrix(0.545196,0.000000,0.000000,0.545198,-121.4181,-18.80404)"
style="fill:#e7e7e7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.8341994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1615" />
<path
d="M 228.70486 67.715950 A 2.5411651 2.5411651 0 1 0 223.62253,67.715950 A 2.5411651 2.5411651 0 1 0 228.70486 67.715950 z"
transform="matrix(0.741589,0.000000,0.000000,0.743692,-162.7301,-36.62463)"
style="fill:#e7e7e7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.6831849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1617" />
<path
d="M 17.031200,1.9376041 L 4.9999495,1.9376041 C 3.1470395,1.8759301 3.2039395,2.7619451 3.1874495,3.7528281 L 3.1249495,10.720986"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1620" />
</svg>

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -0,0 +1,314 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient3124"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<radialGradient
cx="0.81666684"
cy="0.86111093"
r="0.63335794"
fx="0.82222235"
fy="0.85555542"
id="radialGradient2957"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="0.98351645"
y1="0.98333335"
x2="0.23076923"
y2="0.17777778"
id="linearGradient2915"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient2952"
inkscape:collect="always"
xlink:href="#linearGradient2946" />
<linearGradient
x1="0.34615386"
y1="0.27222222"
x2="0.98901099"
y2="0.99444443"
id="linearGradient2913"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.870990,0.000000,0.000000,0.874807,-179.5880,-31.53432)"
style="stroke-linecap:round;stroke-linejoin:round;"
id="g842">
<path
d="M 124.36267 57.778187 A 7.7183714 7.7684908 0 1 0 108.92593,57.778187 A 7.7183714 7.7684908 0 1 0 124.36267 57.778187 z"
transform="matrix(1.198851,0.000000,0.000000,1.191107,79.31174,-20.62342)"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path824" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.301979,0.000000,0.000000,1.301288,67.79584,-28.07474)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:1.5865387;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path825" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2913);stroke-width:0.54178977;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path826" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.25333717;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path827" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.191763,0.000000,0.000000,1.184580,80.60843,-21.23427)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2915);stroke-width:0.60939527;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path828" />
<path
d="M 123.79466 57.694656 A 5.7135997 5.6801867 0 1 0 112.36746,57.694656 A 5.7135997 5.6801867 0 1 0 123.79466 57.694656 z"
transform="matrix(1.211269,0.000000,0.000000,1.218512,76.12298,-22.10502)"
style="fill:#ececf3;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path829" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2957);stroke-width:0.25333717;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path830" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.179335,0.000000,0.000000,1.179308,82.05316,-20.92520)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient3124);stroke-width:0.21919590;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path831" />
<rect
width="1.0204374"
height="4.0817494"
x="-184.82507"
y="115.64051"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect832" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,116.1740,1.567967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path833" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,127.4240,1.567967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path834" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,121.7990,7.192967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path835" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,121.7990,-4.057033)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path836" />
<rect
width="1.0204374"
height="4.0817494"
x="-184.84271"
y="112.10372"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect837" />
<rect
width="1.0204378"
height="4.0817513"
x="112.95801"
y="-188.59544"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect838" />
<rect
width="1.0204381"
height="4.0817523"
x="112.97358"
y="-187.03423"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect839" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(0.970462,0.000000,0.000000,0.970463,106.2717,-8.747276)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.64402282;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path840" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(-1.179335,0.000000,0.000000,-1.179308,356.2486,117.3184)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.21919590;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path841" />
</g>
<path
d="M 8.3354651,4.4211148 C 8.5569944,5.1059582 8.7834603,5.7956727 8.8937870,6.5088281 C 8.7560403,5.3737095 8.8687557,4.2233891 9.0197197,3.0952896 C 8.0225194,4.1700147 7.0944412,5.3063488 6.1271889,6.4077896 C 6.1782268,6.7788595 6.0238789,7.3562929 6.2063733,7.5952896 C 7.8698833,7.5952896 9.5333834,7.5952896 11.196893,7.5952896 C 11.135146,7.1775163 11.322378,6.5072977 11.099973,6.2524280 C 10.095577,6.2599689 9.0899267,6.2174400 8.0866452,6.2827896 C 9.0152310,5.2944373 9.9301018,4.2929446 10.821454,3.2704959 C 10.447219,3.3424473 10.102723,3.5931982 9.7475078,3.7522748 C 9.2825033,3.9867014 8.8198775,4.2289247 8.3354651,4.4211148 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ff0000;fill-opacity:1.0000000;stroke:#ffffff;stroke-width:2.4940922;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text818" />
<path
d="M -1.7763568e-15,6.3306406 C -1.7763568e-15,5.9385506 -1.7763568e-15,5.5464606 -1.7763568e-15,5.1543716 C 0.96806847,4.0519846 1.9049449,2.9211866 2.9027424,1.8457776 C 2.0052591,1.8832936 1.1065616,1.8673056 0.20849113,1.8780036 C 0.20849113,1.4608496 0.20849113,1.0436946 0.20849113,0.62653957 C 1.7730107,0.62653957 3.3375302,0.62653957 4.9020497,0.62653957 C 4.9020497,0.98282157 4.9020497,1.3391046 4.9020497,1.6953866 C 3.9254218,2.8122656 2.9819168,3.9589156 1.9672394,5.0415786 C 2.9993143,4.9741756 4.0342457,5.0152336 5.0677637,5.0039806 C 5.0677637,5.4462006 5.0677637,5.8884206 5.0677637,6.3306406 C 3.3785058,6.3306406 1.6892579,6.3306406 -1.7763568e-15,6.3306406 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text821" />
<path
d="M 6.2204963,7.5806406 C 6.2204963,7.1885506 6.2204963,6.7964606 6.2204963,6.4043716 C 7.1885648,5.3019846 8.1254412,4.1711866 9.1232387,3.0957776 C 8.2257554,3.1332936 7.3270579,3.1173056 6.4289875,3.1280036 C 6.4289875,2.7108496 6.4289875,2.2936946 6.4289875,1.8765396 C 7.9935070,1.8765396 9.5580265,1.8765396 11.122546,1.8765396 C 11.122546,2.2328216 11.122546,2.5891046 11.122546,2.9453866 C 10.145918,4.0622656 9.2024132,5.2089156 8.1877358,6.2915786 C 9.2198107,6.2241756 10.254742,6.2652336 11.288260,6.2539806 C 11.288260,6.6962006 11.288260,7.1384206 11.288260,7.5806406 C 9.5990022,7.5806406 7.9097542,7.5806406 6.2204963,7.5806406 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text870" />
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,301 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient3124"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<radialGradient
cx="0.81666684"
cy="0.86111093"
r="0.63335794"
fx="0.82222235"
fy="0.85555542"
id="radialGradient2957"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="0.98351645"
y1="0.98333335"
x2="0.23076923"
y2="0.17777778"
id="linearGradient2915"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient2952"
inkscape:collect="always"
xlink:href="#linearGradient2946" />
<linearGradient
x1="0.34615386"
y1="0.27222222"
x2="0.98901099"
y2="0.99444443"
id="linearGradient2913"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-100.0014,-48.29105)"
id="g983">
<path
d="M 124.36267 57.778187 A 7.7183714 7.7684908 0 1 0 108.92593,57.778187 A 7.7183714 7.7684908 0 1 0 124.36267 57.778187 z"
transform="matrix(1.198851,0.000000,0.000000,1.191107,-29.83768,-10.52891)"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2938" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.301979,0.000000,0.000000,1.301288,-41.35358,-17.98022)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:1.5865387;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1664" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2913);stroke-width:0.54178977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2911" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.25333717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2950" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.191763,0.000000,0.000000,1.184580,-28.54099,-11.13975)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2915);stroke-width:0.60939527;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2914" />
<path
d="M 123.79466 57.694656 A 5.7135997 5.6801867 0 1 0 112.36746,57.694656 A 5.7135997 5.6801867 0 1 0 123.79466 57.694656 z"
transform="matrix(1.211269,0.000000,0.000000,1.218512,-33.02644,-12.01050)"
style="fill:#ececf3;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2924" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2957);stroke-width:0.25333717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2953" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.179335,0.000000,0.000000,1.179308,-27.09626,-10.83068)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient3124);stroke-width:0.21919590;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3123" />
<rect
width="1.0204374"
height="4.0817494"
x="-118.01519"
y="33.943893"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect2958" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,7.024595,11.66249)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2976" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,18.27460,11.66249)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3024" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,12.64960,17.28749)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3025" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,12.64960,6.037485)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3026" />
<rect
width="1.0204374"
height="4.0817494"
x="-118.03284"
y="30.407104"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3028" />
<rect
width="1.0204378"
height="4.0817513"
x="31.261391"
y="-121.78556"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3029" />
<rect
width="1.0204381"
height="4.0817523"
x="31.276966"
y="-120.22436"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3118" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(0.970462,0.000000,0.000000,0.970463,-2.877711,1.347242)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.64402282;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3120" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(-1.179335,0.000000,0.000000,-1.179308,247.0991,127.4130)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.21919590;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3122" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,314 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient3124"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<radialGradient
cx="0.81666684"
cy="0.86111093"
r="0.63335794"
fx="0.82222235"
fy="0.85555542"
id="radialGradient2957"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="0.98351645"
y1="0.98333335"
x2="0.23076923"
y2="0.17777778"
id="linearGradient2915"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient2952"
inkscape:collect="always"
xlink:href="#linearGradient2946" />
<linearGradient
x1="0.34615386"
y1="0.27222222"
x2="0.98901099"
y2="0.99444443"
id="linearGradient2913"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.870990,0.000000,0.000000,0.874807,-179.5880,-31.53432)"
style="stroke-linecap:round;stroke-linejoin:round;"
id="g842">
<path
d="M 124.36267 57.778187 A 7.7183714 7.7684908 0 1 0 108.92593,57.778187 A 7.7183714 7.7684908 0 1 0 124.36267 57.778187 z"
transform="matrix(1.198851,0.000000,0.000000,1.191107,79.31174,-20.62342)"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path824" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.301979,0.000000,0.000000,1.301288,67.79584,-28.07474)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:1.5865387;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path825" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2913);stroke-width:0.54178977;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path826" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.25333717;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path827" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.191763,0.000000,0.000000,1.184580,80.60843,-21.23427)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2915);stroke-width:0.60939527;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path828" />
<path
d="M 123.79466 57.694656 A 5.7135997 5.6801867 0 1 0 112.36746,57.694656 A 5.7135997 5.6801867 0 1 0 123.79466 57.694656 z"
transform="matrix(1.211269,0.000000,0.000000,1.218512,76.12298,-22.10502)"
style="fill:#ececf3;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path829" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2957);stroke-width:0.25333717;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path830" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.179335,0.000000,0.000000,1.179308,82.05316,-20.92520)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient3124);stroke-width:0.21919590;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path831" />
<rect
width="1.0204374"
height="4.0817494"
x="-184.82507"
y="115.64051"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect832" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,116.1740,1.567967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path833" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,127.4240,1.567967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path834" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,121.7990,7.192967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path835" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,121.7990,-4.057033)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path836" />
<rect
width="1.0204374"
height="4.0817494"
x="-184.84271"
y="112.10372"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect837" />
<rect
width="1.0204378"
height="4.0817513"
x="112.95801"
y="-188.59544"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect838" />
<rect
width="1.0204381"
height="4.0817523"
x="112.97358"
y="-187.03423"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect839" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(0.970462,0.000000,0.000000,0.970463,106.2717,-8.747276)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.64402282;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path840" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(-1.179335,0.000000,0.000000,-1.179308,356.2486,117.3184)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.21919590;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path841" />
</g>
<path
d="M 8.3354651,4.4211148 C 8.5569944,5.1059582 8.7834603,5.7956727 8.8937870,6.5088281 C 8.7560403,5.3737095 8.8687557,4.2233891 9.0197197,3.0952896 C 8.0225194,4.1700147 7.0944412,5.3063488 6.1271889,6.4077896 C 6.1782268,6.7788595 6.0238789,7.3562929 6.2063733,7.5952896 C 7.8698833,7.5952896 9.5333834,7.5952896 11.196893,7.5952896 C 11.135146,7.1775163 11.322378,6.5072977 11.099973,6.2524280 C 10.095577,6.2599689 9.0899267,6.2174400 8.0866452,6.2827896 C 9.0152310,5.2944373 9.9301018,4.2929446 10.821454,3.2704959 C 10.447219,3.3424473 10.102723,3.5931982 9.7475078,3.7522748 C 9.2825033,3.9867014 8.8198775,4.2289247 8.3354651,4.4211148 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ff0000;fill-opacity:1.0000000;stroke:#ffffff;stroke-width:2.4940922;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text818" />
<path
d="M -1.7763568e-15,6.3306406 C -1.7763568e-15,5.9385506 -1.7763568e-15,5.5464606 -1.7763568e-15,5.1543716 C 0.96806847,4.0519846 1.9049449,2.9211866 2.9027424,1.8457776 C 2.0052591,1.8832936 1.1065616,1.8673056 0.20849113,1.8780036 C 0.20849113,1.4608496 0.20849113,1.0436946 0.20849113,0.62653957 C 1.7730107,0.62653957 3.3375302,0.62653957 4.9020497,0.62653957 C 4.9020497,0.98282157 4.9020497,1.3391046 4.9020497,1.6953866 C 3.9254218,2.8122656 2.9819168,3.9589156 1.9672394,5.0415786 C 2.9993143,4.9741756 4.0342457,5.0152336 5.0677637,5.0039806 C 5.0677637,5.4462006 5.0677637,5.8884206 5.0677637,6.3306406 C 3.3785058,6.3306406 1.6892579,6.3306406 -1.7763568e-15,6.3306406 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text821" />
<path
d="M 6.2204963,7.5806406 C 6.2204963,7.1885506 6.2204963,6.7964606 6.2204963,6.4043716 C 7.1885648,5.3019846 8.1254412,4.1711866 9.1232387,3.0957776 C 8.2257554,3.1332936 7.3270579,3.1173056 6.4289875,3.1280036 C 6.4289875,2.7108496 6.4289875,2.2936946 6.4289875,1.8765396 C 7.9935070,1.8765396 9.5580265,1.8765396 11.122546,1.8765396 C 11.122546,2.2328216 11.122546,2.5891046 11.122546,2.9453866 C 10.145918,4.0622656 9.2024132,5.2089156 8.1877358,6.2915786 C 9.2198107,6.2241756 10.254742,6.2652336 11.288260,6.2539806 C 11.288260,6.6962006 11.288260,7.1384206 11.288260,7.5806406 C 9.5990022,7.5806406 7.9097542,7.5806406 6.2204963,7.5806406 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text870" />
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,301 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient3124"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<radialGradient
cx="0.81666684"
cy="0.86111093"
r="0.63335794"
fx="0.82222235"
fy="0.85555542"
id="radialGradient2957"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="0.98351645"
y1="0.98333335"
x2="0.23076923"
y2="0.17777778"
id="linearGradient2915"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient2952"
inkscape:collect="always"
xlink:href="#linearGradient2946" />
<linearGradient
x1="0.34615386"
y1="0.27222222"
x2="0.98901099"
y2="0.99444443"
id="linearGradient2913"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-100.0014,-48.29105)"
id="g983">
<path
d="M 124.36267 57.778187 A 7.7183714 7.7684908 0 1 0 108.92593,57.778187 A 7.7183714 7.7684908 0 1 0 124.36267 57.778187 z"
transform="matrix(1.198851,0.000000,0.000000,1.191107,-29.83768,-10.52891)"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2938" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.301979,0.000000,0.000000,1.301288,-41.35358,-17.98022)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:1.5865387;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1664" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2913);stroke-width:0.54178977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2911" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.25333717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2950" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.191763,0.000000,0.000000,1.184580,-28.54099,-11.13975)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2915);stroke-width:0.60939527;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2914" />
<path
d="M 123.79466 57.694656 A 5.7135997 5.6801867 0 1 0 112.36746,57.694656 A 5.7135997 5.6801867 0 1 0 123.79466 57.694656 z"
transform="matrix(1.211269,0.000000,0.000000,1.218512,-33.02644,-12.01050)"
style="fill:#ececf3;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2924" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2957);stroke-width:0.25333717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2953" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.179335,0.000000,0.000000,1.179308,-27.09626,-10.83068)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient3124);stroke-width:0.21919590;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3123" />
<rect
width="1.0204374"
height="4.0817494"
x="-118.01519"
y="33.943893"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect2958" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,7.024595,11.66249)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2976" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,18.27460,11.66249)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3024" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,12.64960,17.28749)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3025" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,12.64960,6.037485)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3026" />
<rect
width="1.0204374"
height="4.0817494"
x="-118.03284"
y="30.407104"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3028" />
<rect
width="1.0204378"
height="4.0817513"
x="31.261391"
y="-121.78556"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3029" />
<rect
width="1.0204381"
height="4.0817523"
x="31.276966"
y="-120.22436"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3118" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(0.970462,0.000000,0.000000,0.970463,-2.877711,1.347242)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.64402282;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3120" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(-1.179335,0.000000,0.000000,-1.179308,247.0991,127.4130)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.21919590;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3122" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 5.6024550,5.8992082 L 5.6024550,16.720614 L 17.799951,16.720614 L 17.799951,14.517686 C 18.642953,13.928521 19.324638,12.982768 19.324638,11.657742 C 19.324638,10.332716 18.642953,9.4256112 17.799951,8.8364462 L 17.799951,5.8992082 L 5.6024550,5.8992082 z "
style="fill:#44e704;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1329" />
<path
d="M 310.68503,54.236767 C 311.27106,54.831541 310.17241,55.320161 309.69647,55.210784 C 308.40672,54.914378 308.21130,53.258102 308.73699,52.259661 C 309.67734,50.473683 312.08630,50.281482 313.65069,51.314716 C 315.94650,52.831027 316.13664,56.079643 314.58110,58.190979 C 312.50780,61.005059 308.39379,61.191022 305.74226,59.106852 C 302.40559,56.484138 302.22487,51.493943 304.84093,48.305448 C 308.00932,44.443754 313.88125,44.268817 317.60490,47.418647 C 320.07424,49.507459 321.35017,52.753471 321.08983,55.963815"
transform="matrix(1.015408,0.000000,0.000000,1.046821,-306.9678,-45.92515)"
style="fill:#44e704;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4399315;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1330" />
<path
d="M 19.391341,12.983581 C 17.009041,15.301132 20.519011,16.092121 17.782246,17.074763 L 8.8693068,17.168538"
style="fill:#44e704;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2282115;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1331" />
<path
d="M 7.6036177,10.640254 C 6.2693604,8.5099522 9.6443859,7.9109192 10.129759,8.4977562 M 4.1615614,14.971187 C 2.4580597,13.481965 1.4553061,12.047713 1.6437322,9.4915422 C 1.7722789,6.7292222 3.6541491,4.4305522 6.1081613,3.2933912 C 9.3879471,1.6983032 13.191789,2.7460062 15.602060,5.5145812"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.2449100;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1333" />
<path
d="M 14.521722,10.496187 C 15.061797,12.958370 14.510891,13.730650 13.378033,15.535256"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.2449100;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1334" />
<path
d="M 11.957612,10.334997 C 13.306281,12.911391 10.194846,17.157833 6.9057658,16.055205"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#1e5c1e;stroke-width:1.2449100;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1335" />
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
x1="0.29298297"
y1="0.23977646"
x2="0.62951213"
y2="0.86258322"
id="linearGradient1252"
xlink:href="#linearGradient1243" />
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<RDF
id="RDF1118">
<Work
about=""
id="Work1119">
<format
id="format1120">image/svg+xml</format>
<type
id="type1122"
resource="http://purl.org/dc/dcmitype/StillImage" />
</Work>
</RDF>
<rdf:RDF
id="RDF1034">
<cc:Work
rdf:about=""
id="Work1035">
<dc:format
id="format1036">image/svg+xml</dc:format>
<dc:type
id="type1038"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 191.63699,67.494974 L 186.23800,64.595877 L 180.78903,67.399890 L 181.87785,61.369279 L 177.52725,57.053485 L 183.59917,56.225459 L 186.35933,50.754139 L 189.02315,56.273001 L 195.07962,57.207334 L 190.65404,61.446204 L 191.63699,67.494974 z "
transform="matrix(1.059916,-0.275504,0.284004,1.028195,-203.6913,-0.166886)"
style="fill:#769abe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;"
id="path1399" />
<path
d="M 191.63699,67.494974 L 186.23800,64.595877 L 180.78903,67.399890 L 181.87785,61.369279 L 177.52725,57.053485 L 183.59917,56.225459 L 186.35933,50.754139 L 189.02315,56.273001 L 195.07962,57.207334 L 190.65404,61.446204 L 191.63699,67.494974 z "
transform="matrix(0.847932,-0.220404,0.227204,0.822555,-160.9527,1.625846)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient1252);stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1400" />
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1,383 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1">
<defs
id="defs3">
<linearGradient
id="linearGradient1351">
<stop
style="stop-color:#44e704;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1352" />
<stop
style="stop-color:#1e5c1e;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1353" />
</linearGradient>
<linearGradient
id="linearGradient1276">
<stop
style="stop-color:#04ff00;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1277" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="0.50000000"
id="stop1281" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1279" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient1210">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1211" />
<stop
style="stop-color:#ffa619;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1212" />
<stop
style="stop-color:#bb7200;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1213" />
</linearGradient>
<linearGradient
id="linearGradient1206">
<stop
style="stop-color:#ff0000;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1207" />
<stop
style="stop-color:#ff0000;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1208" />
<stop
style="stop-color:#ff0000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1209" />
</linearGradient>
<linearGradient
id="linearGradient1115">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1116" />
<stop
style="stop-color:#000000;stop-opacity:0.062745102;"
offset="0.34999999"
id="stop1117" />
<stop
style="stop-color:#000000;stop-opacity:0.18431373;"
offset="0.69999999"
id="stop1118" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="1.0000000"
id="stop1119" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient1100">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1101" />
<stop
style="stop-color:#ffffff;stop-opacity:0.62352943;"
offset="0.34999999"
id="stop1102" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1103" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1104" />
</linearGradient>
<linearGradient
id="linearGradient1048">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1049" />
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.34999999"
id="stop1050" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1051" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1052" />
</linearGradient>
<linearGradient
id="linearGradient1042">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1043" />
<stop
style="stop-color:#000000;stop-opacity:0.12549020;"
offset="0.34999999"
id="stop1044" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="0.69999999"
id="stop1045" />
<stop
style="stop-color:#000000;stop-opacity:0.74901962;"
offset="1.0000000"
id="stop1046" />
</linearGradient>
<linearGradient
id="linearGradient1035">
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1036" />
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1037" />
<stop
style="stop-color:#3a44b3;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1038" />
<stop
style="stop-color:#111464;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1039" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1623">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1624" />
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1626" />
<stop
style="stop-color:#bbbb00;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1625" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
<linearGradient
id="linearGradient3172">
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3173" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3174" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3152">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3153" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3154" />
</linearGradient>
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
x1="0.34868422"
y1="0.74342108"
x2="0.11184210"
y2="0.50000000"
id="linearGradient3149"
inkscape:collect="always"
xlink:href="#linearGradient3175"
spreadMethod="pad" />
<linearGradient
x1="-0.18888889"
y1="0.25000000"
x2="0.92222220"
y2="0.84210527"
id="linearGradient3164"
inkscape:collect="always"
xlink:href="#linearGradient3165" />
<radialGradient
cx="0.29651532"
cy="0.44973168"
r="0.44808188"
fx="0.30226764"
fy="0.45367077"
id="radialGradient3179"
inkscape:collect="always"
xlink:href="#linearGradient3175" />
</defs>
<metadata
id="metadata4">
<rdf:RDF
id="RDF5">
<cc:Work
rdf:about=""
id="Work6">
<dc:format
id="format7">image/svg+xml</dc:format>
<dc:type
id="type9"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.990854,0.000000,0.000000,0.990711,-126.3339,-47.97486)"
id="g1373">
<path
d="M 133.28125 64.998901 A 2.9296875 1.6210938 0 1 0 127.42188,64.998901 A 2.9296875 1.6210938 0 1 0 133.28125 64.998901 z"
transform="matrix(2.295720,1.768142,-0.610189,0.792257,-124.9777,-219.0142)"
style="fill:url(#radialGradient3179);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.36715820;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3144" />
<path
d="M 130.77344,59.440308 L 133.07812,58.463746 L 144.87500,48.737183 L 147.37500,51.237183 L 144.99219,49.909055 L 139.13281,62.819212 L 138.78125,65.299681 C 138.78125,65.338743 134.13281,64.518435 130.77344,59.440308 z "
style="fill:url(#linearGradient3149);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.62500000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3147" />
<path
d="M 134.51247,56.782032 L 133.03487,58.012331 C 134.15310,60.486423 137.37121,62.433195 139.56918,62.958630 L 140.36116,61.077423 C 138.20884,60.533310 135.78372,59.153083 134.51247,56.782032 z "
style="fill:url(#linearGradient3164);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.25000000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3163" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

243
pixmaps/saveclose.xpm Normal file
View File

@ -0,0 +1,243 @@
/* XPM */
static char * saveclose_xpm[] = {
"24 24 216 2",
" c None",
". c #000000",
"+ c #C3D7F4",
"@ c #A9CDE5",
"# c #75757A",
"$ c #EFC5BB",
"% c #F1C8BE",
"& c #F0C6BC",
"* c #EEBCB2",
"= c #EEBEB5",
"- c #EEC1B8",
"; c #EDBFB6",
"> c #E9B7AD",
", c #755D58",
"' c #C49B93",
") c #E9B9B1",
"! c #E5BFBA",
"~ c #737277",
"{ c #BBD6E8",
"] c #8AAAC5",
"^ c #605F68",
"/ c #E08D7E",
"( c #E0826E",
"_ c #E0806E",
": c #DC7A68",
"< c #DC8171",
"[ c #DA7868",
"} c #D48173",
"| c #D47D6E",
"1 c #AD6055",
"2 c #C4675B",
"3 c #C36558",
"4 c #BAD5E9",
"5 c #88A7C3",
"6 c #686670",
"7 c #C8817B",
"8 c #CB7C74",
"9 c #CB7A73",
"0 c #CB7B73",
"a c #CC7C72",
"b c #CB7D73",
"c c #BF6B64",
"d c #CC7A70",
"e c #C16A62",
"f c #7A4A45",
"g c #6F403F",
"h c #B6D3E7",
"i c #87ABC1",
"j c #737373",
"k c #FFFFFF",
"l c #3A4C5A",
"m c #B9D3E7",
"n c #85A4BF",
"o c #999999",
"p c #6E869B",
"q c #4F697C",
"r c #B9D3E6",
"s c #84A3BF",
"t c #CECECE",
"u c #CDCDCD",
"v c #919191",
"w c #232323",
"x c #3C5263",
"y c #B7D2E7",
"z c #82A0BB",
"A c #636363",
"B c #D7D7D7",
"C c #4E4E4E",
"D c #B5CAE5",
"E c #7FA2B9",
"F c #5C5C5C",
"G c #AECCE5",
"H c #7DA0B6",
"I c #494949",
"J c #ACACAC",
"K c #C5C5C5",
"L c #515151",
"M c #B0D1E4",
"N c #83A1B6",
"O c #735B5B",
"P c #4E606E",
"Q c #AACEE3",
"R c #7B9BB2",
"S c #7A8E9A",
"T c #7A7A7A",
"U c #6B6F72",
"V c #6F6F6F",
"W c #696969",
"X c #6F777E",
"Y c #86A2B9",
"Z c #3A515D",
"` c #A9C9E2",
" . c #7494AF",
".. c #819EB6",
"+. c #83A0B8",
"@. c #829FB7",
"#. c #7F9DB6",
"$. c #7E9CB5",
"%. c #7998B2",
"&. c #85A1B8",
"*. c #87A3BA",
"=. c #8CA7BD",
"-. c #8AA5BB",
";. c #364A59",
">. c #ABC4E2",
",. c #7294AD",
"'. c #6F90AC",
"). c #7192AE",
"!. c #414A4E",
"~. c #424A51",
"{. c #525B63",
"]. c #626F79",
"^. c #5F6C76",
"/. c #5C6971",
"(. c #5A666F",
"_. c #58636B",
":. c #57636A",
"<. c #3B5360",
"[. c #39424B",
"}. c #7897B3",
"|. c #A4B9CB",
"1. c #364853",
"2. c #AAC9E2",
"3. c #7091AA",
"4. c #6F8FA7",
"5. c #4A5359",
"6. c #97938C",
"7. c #DFDDDA",
"8. c #E3E1DE",
"9. c #EBEAE8",
"0. c #EAE9E7",
"a. c #CFCEC9",
"b. c #C9C6C0",
"c. c #9B968E",
"d. c #566168",
"e. c #4B657A",
"f. c #54738C",
"g. c #AAC6DD",
"h. c #34464E",
"i. c #AAC9E1",
"j. c #6C8EA6",
"k. c #6C8CA4",
"l. c #40474D",
"m. c #DAD8D3",
"n. c #E7E6E2",
"o. c #67655E",
"p. c #524F47",
"q. c #D9D7D4",
"r. c #C7C5BF",
"s. c #C0BCB5",
"t. c #B8B3AB",
"u. c #434C54",
"v. c #4D697F",
"w. c #4F6F84",
"x. c #B3CADC",
"y. c #313E49",
"z. c #A8C8E1",
"A. c #6B8DA6",
"B. c #728FA4",
"C. c #E2E1DD",
"D. c #F0EFEC",
"E. c #CDCAC6",
"F. c #C2BFB9",
"G. c #CAC6C0",
"H. c #DCDAD7",
"I. c #4B555D",
"J. c #4E697F",
"K. c #BACCDC",
"L. c #A4C4DE",
"M. c #698BA3",
"N. c #708AA1",
"O. c #383E43",
"P. c #E0DEDA",
"Q. c #514E46",
"R. c #4F4C44",
"S. c #C7C4BE",
"T. c #CBC8C2",
"U. c #E1E0DC",
"V. c #E9E8E6",
"W. c #475158",
"X. c #4E6879",
"Y. c #4D6C80",
"Z. c #A3C3DB",
"`. c #383F43",
" + c #778999",
".+ c #6E899E",
"++ c #65859C",
"@+ c #33383C",
"#+ c #D7D4D0",
"$+ c #D6D4D0",
"%+ c #4E4A43",
"&+ c #4D4942",
"*+ c #D1CEC9",
"=+ c #E6E5E2",
"-+ c #EDECEA",
";+ c #454F55",
">+ c #486173",
",+ c #4D6678",
"'+ c #A1C1DA",
")+ c #373C40",
"!+ c #0C0D0F",
"~+ c #4E5E6A",
"{+ c #5B6E7C",
"]+ c #4F5B62",
"^+ c #A4A099",
"/+ c #CCC9C3",
"(+ c #D7D5D1",
"_+ c #E4E2E0",
":+ c #DDDBD7",
"<+ c #B8B5B0",
"[+ c #3E474D",
"}+ c #4A6176",
"|+ c #4A6070",
"1+ c #9BC3D8",
"2+ c #363C41",
"3+ c #28323E",
" ",
" . . . . . . . . . . . . . . . . . . . . ",
" . + @ # $ % & * = - ; > , . ' ) ! ~ . . . ",
" . { ] ^ / ( _ : < [ } | 1 . . 2 3 . . . . ",
" . 4 5 6 7 8 9 0 a b c d e f . . g . . . . ",
" . h i j k k k k k k k k k k . . . . . l . ",
" . m n j k k k k k k k k k k o . . . p q . ",
" . r s j t u u u u u u u u v . . w . . x . ",
" . y z A k k k k k k k k B . . . C . . . . ",
" . D E j k k k k k k k k F . . B B . . . . . ",
" . G H j t u u u u u u I . . J u K L . . . . ",
" . M N O k k k k k k C F . B k k k j P . . ",
" . Q R S T j j j j j U V j j j j W X Y Z . ",
" . ` ...+.Y @.#.$.@.%.Y &.&.*.@.=.+.-.;.. ",
" . >.,.'.).!.~.{.].^./.(._.:.{.<.[.}.|.1.. ",
" . 2.3.4.5.6.7.8.9.9.0.7.a.b.c.d.e.f.g.h.. ",
" . i.j.k.l.m.n.o.p.p.q.r.s.t.a.u.v.w.x.y.. ",
" . z.A.B.l.C.D.o.p.p.E.F.s.G.H.I.J.w.K.y.. ",
" . L.M.N.O.P.9.Q.R.R.S.s.T.U.V.W.X.Y.Z.`.. ",
" . +.+++@+#+$+%+&+&+s.*+=+-+=+;+>+,+'+)+. ",
" !+~+{+]+^+s.t./+/+(+_+0.:+<+[+}+|+1+2+. ",
" . . . . . . . . . . . . . . . . 3+. ",
" ",
" "};

BIN
pixmaps/terminal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 B

7
pixmaps/tray/Makefile.am Normal file
View File

@ -0,0 +1,7 @@
traydir = $(pkgdatadir)/pixmaps/tray
tray_DATA = default.svg \
active.svg \
activate.svg \
notify.svg
EXTRA_DIST = $(tray_DATA)

210
pixmaps/tray/activate.svg Normal file
View File

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg1383"
height="20.000000"
width="20.000000"
y="0.0000000"
x="0.0000000"
version="1.0">
<defs
id="defs3">
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2401"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2399"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2329">
<stop
id="stop2331"
offset="0.0000000"
style="stop-color:#c0dcbb;stop-opacity:1.0000000;" />
<stop
id="stop2333"
offset="0.60000002"
style="stop-color:#9bd591;stop-opacity:1.0000000;" />
<stop
id="stop2335"
offset="1.0000000"
style="stop-color:#6fc461;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2329"
id="radialGradient2397"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2407"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2405"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2099">
<stop
id="stop2101"
offset="0.0000000"
style="stop-color:#babbdc;stop-opacity:1.0000000;" />
<stop
id="stop2103"
offset="0.60000002"
style="stop-color:#9193d5;stop-opacity:1.0000000;" />
<stop
id="stop2105"
offset="1.0000000"
style="stop-color:#6164c4;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2099"
id="radialGradient2403"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
<linearGradient
id="linearGradient2170">
<stop
id="stop2172"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:0.62352943;" />
<stop
id="stop2174"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2389"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<linearGradient
id="linearGradient2156">
<stop
id="stop2158"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:0.0000000;" />
<stop
id="stop2162"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2387"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2183">
<stop
id="stop2185"
offset="0.0000000"
style="stop-color:#dcbbbb;stop-opacity:1.0000000;" />
<stop
id="stop2187"
offset="0.60000002"
style="stop-color:#d59191;stop-opacity:1.0000000;" />
<stop
id="stop2189"
offset="1.0000000"
style="stop-color:#c46161;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2183"
id="radialGradient2385"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
</defs>
<g
id="layer1">
<g
id="g2341"
transform="matrix(3.960176e-2,0.000000,0.000000,3.960176e-2,8.583018e-2,-21.13536)">
<path
id="path1291"
style="fill:url(#radialGradient2397);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2204"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 49.437500,636.68750 C 9.5976600,689.60788 -7.6271960,758.90434 2.9105100,824.39310 C 10.308170,874.10552 33.551850,921.19028 68.005840,957.74812 C 101.74452,993.63467 146.21320,1019.2699 194.24680,1030.2516 C 199.99153,1029.7800 204.92357,1024.0806 210.37445,1021.5583 C 215.90779,1017.6712 223.83362,1014.3732 226.03125,1007.8438 C 214.71347,1003.0390 201.26103,1009.5796 190.31449,1002.7652 C 183.05001,1000.4023 172.18692,993.68002 177.21875,984.71875 C 181.84751,975.69206 188.37504,966.27587 187.84375,955.81250 C 182.27407,952.29351 176.75441,959.84769 171.85169,962.23271 C 163.44133,968.75531 155.02010,959.49404 147.83592,955.54196 C 141.04333,951.13375 133.90750,943.08322 138.65546,934.63331 C 140.43113,929.52457 144.56495,924.72912 145.00000,919.43750 C 132.04760,907.74827 112.42524,901.33455 106.61503,883.19063 C 103.49587,877.85237 108.14552,870.98603 114.32775,873.19001 C 130.59663,876.43830 144.14277,887.19756 159.53125,892.59375 C 159.03403,882.21575 150.46649,873.36290 151.00000,862.90625 C 155.25471,858.23625 163.21295,860.61619 168.81504,858.17213 C 180.29677,855.24106 192.71966,852.03960 202.34375,845.43750 C 197.91139,834.26859 189.38937,825.02268 182.04158,815.62421 C 172.08277,806.05686 164.87883,792.96910 166.22505,778.78312 C 167.59111,771.89486 161.52097,768.10257 155.68750,766.71875 C 147.36821,762.57850 137.13811,760.61477 130.75000,753.56250 C 127.56405,745.44229 132.68058,737.37859 134.65625,729.68750 C 127.81109,714.34143 110.02988,707.49041 94.103600,707.62518 C 85.825620,707.08688 71.951440,707.44949 71.187500,696.34375 C 69.469880,688.39415 71.102430,679.54252 78.320230,674.80574 C 84.761240,668.88834 97.483650,663.82876 93.788660,652.90201 C 88.703610,638.40413 76.709880,626.47826 62.687500,620.50000 C 58.270830,625.89583 53.854170,631.29167 49.437500,636.68750 z " />
<path
id="path2434"
style="opacity:0.24999996;fill:url(#radialGradient2399);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2166"
style="fill:url(#radialGradient2401);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2401"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 399.65625,582.65625 C 382.54719,585.80937 363.97591,602.23601 344.21875,637.96875 C 348.41098,651.94283 317.84416,650.43163 304.56250,656.46875 C 294.03305,661.25487 292.40506,671.23182 291.34375,682.90625 C 289.64992,701.53839 312.27807,694.90784 286.03125,708.03125 C 274.43186,713.83095 288.05331,736.68222 279.43750,746.37500 C 268.46058,758.72403 284.65807,765.38859 292.65625,770.18750 C 308.12778,779.47042 324.86886,739.77254 327.03125,731.84375 C 331.91737,713.92794 337.00795,711.37256 345.53125,705.40625 C 355.16461,698.66291 350.37475,728.43658 353.46875,739.78125 C 356.05583,749.26718 347.30719,766.40211 346.84375,771.50000 C 346.16847,778.92820 378.05172,773.87859 345.53125,784.71875 C 338.97503,786.90416 346.08936,793.95213 342.90625,804.56250 C 340.81195,811.54352 334.17822,815.45725 332.31250,825.71875 C 330.62965,834.97443 323.54941,844.44727 319.09375,850.81250 C 314.49539,857.38158 341.49218,861.03906 345.53125,861.40625 C 353.24994,862.10796 363.33867,869.86047 371.96875,873.31250 C 386.54655,879.14361 374.74782,894.74768 371.96875,899.75000 C 366.61834,909.38075 365.35096,932.81610 375.93750,920.90625 C 387.25289,908.17646 407.94039,903.69590 414.28125,887.84375 C 420.27486,872.85972 405.96038,867.20200 399.75000,854.78125 C 392.94162,841.16450 405.78361,833.60281 411.62500,827.03125 C 475.09922,835.11177 404.24911,880.92665 448.65625,879.90625 C 455.23268,876.25268 452.86072,803.91891 460.56250,803.21875 C 469.26117,802.42797 488.86303,807.73014 501.84375,808.34375 C 502.47868,801.04649 502.87500,793.67982 502.87500,786.21875 C 502.87500,702.69263 462.20861,628.63106 399.65625,582.65625 z " />
<path
id="path2399"
style="fill:#18551f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 135.32722,630.03897 C 121.98710,640.71107 152.08415,655.15817 159.12436,655.15817 C 180.96110,655.15817 190.38957,660.12381 194.82006,637.97135 C 197.74779,623.33269 216.13712,619.81201 223.90545,615.49628 C 232.84080,610.53219 224.93446,594.87941 227.87163,585.08883 C 232.15017,570.82704 213.12453,571.33170 205.39656,569.22407 C 189.97641,565.01857 178.92989,578.50392 171.02292,586.41089 C 164.35819,593.07562 149.22800,590.10502 141.93754,593.02121 C 126.36521,599.25014 155.35654,606.24183 161.76848,606.24183 C 175.52283,603.59770 146.88983,620.78888 135.32722,630.03897 z " />
<path
id="path2423"
style="opacity:0.099999972;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 48.187500,644.40625 C -1.6207600,710.56969 -13.978323,802.87199 17.061220,879.72647 C 45.173010,951.33820 108.99006,1008.7189 184.04223,1026.5028 C 192.51780,1029.0206 199.09197,1020.9521 206.03285,1017.2641 C 207.81574,1014.6500 195.65768,1016.8206 191.70916,1015.0703 C 181.71784,1013.3284 170.39424,1009.0878 165.71875,999.34375 C 160.37898,988.30241 171.08569,979.31509 174.05637,969.35193 C 174.19270,966.36595 166.58063,973.68019 162.92103,973.77971 C 153.25451,976.30241 145.14979,968.17720 137.37784,963.68475 C 127.72164,957.44422 121.62953,944.16910 128.41304,933.67460 C 132.57168,928.29626 132.27474,923.55922 125.50063,920.97969 C 112.16569,911.68729 96.881990,901.45420 93.916170,884.16335 C 92.510810,873.38952 106.59067,867.62877 114.88882,872.84504 C 125.12373,875.88026 134.30336,881.42984 144.03125,885.68750 C 141.05661,878.45086 135.93602,868.03258 142.49324,861.47261 C 152.70468,855.90215 165.03357,857.03535 175.60779,852.16962 C 179.36902,850.54499 186.85772,849.57638 187.86265,846.15458 C 177.52178,826.86016 156.08045,813.01972 154.39657,789.58757 C 154.51617,784.46394 154.76014,777.60868 148.25153,776.59640 C 137.09561,771.36225 120.80599,768.33845 117.81250,754.31250 C 116.76895,747.02308 121.90199,739.97546 121.21549,733.14418 C 111.90553,718.11962 92.413510,717.54866 76.656250,716.78125 C 65.970910,715.62856 57.235050,705.95527 58.647090,695.00645 C 57.974580,682.52727 67.873420,673.19094 77.613480,667.14427 C 82.764790,663.79110 83.101260,657.23780 79.128590,652.86860 C 74.583390,643.95207 66.930840,636.87622 58.156250,632.18750 C 54.833330,636.26042 51.510420,640.33333 48.187500,644.40625 z " />
<path
id="path2226"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 399.37500,590.09375 C 378.29141,600.08693 364.72487,620.70788 354.20936,640.52866 C 353.54971,652.87632 338.98983,655.47392 329.25510,657.47334 C 319.33904,659.48865 305.10504,660.60223 303.10159,673.00100 C 300.88136,680.28952 300.24041,689.50025 307.00000,694.59375 C 311.74293,703.44393 301.30223,709.41807 294.53125,712.40625 C 287.43904,718.49610 293.62889,728.51152 292.31906,736.40610 C 293.44124,743.41168 287.01197,748.87655 286.62500,755.18750 C 289.61107,760.51338 296.32367,763.57831 301.93679,764.89706 C 310.40467,762.68375 313.71627,752.88257 318.43750,746.37500 C 326.31132,730.65509 328.73782,709.78081 345.89502,700.88085 C 352.80806,695.61900 360.86666,702.13224 361.56250,709.62500 C 361.77949,721.78476 363.24024,733.92725 363.36635,746.08849 C 363.80310,754.50241 359.13324,761.77081 357.90625,769.75000 C 363.21804,770.01381 371.15411,773.44787 369.40625,780.31250 C 366.43351,786.61567 358.54840,787.05580 353.03125,790.00000 C 355.05234,800.86303 351.24782,811.82104 344.88544,820.47050 C 340.45931,830.86159 337.52199,842.30876 330.12500,851.00000 C 340.60124,854.85022 352.97436,854.77049 363.35368,859.97934 C 372.19442,865.51028 385.29528,868.26033 388.62062,879.45184 C 390.35779,892.21800 379.28802,902.23593 377.81250,914.53125 C 388.27941,904.30020 404.25153,899.87559 411.73404,886.79806 C 417.15865,876.81953 405.91795,869.69951 401.46737,862.06510 C 393.55808,853.15402 394.91462,839.32929 403.13220,831.11574 C 407.95921,826.11871 413.93296,819.01026 421.68561,822.25164 C 435.22896,823.19276 450.88128,832.82483 449.53125,848.09375 C 448.83115,856.51118 443.23641,864.00746 443.81250,872.56250 C 448.83380,876.72366 450.77585,869.70056 450.01113,865.75989 C 452.99959,844.39633 451.01999,822.02173 458.25000,801.46875 C 466.01067,792.90788 477.96689,799.58417 487.58569,799.80942 C 493.09157,799.85509 502.84925,805.04161 500.50923,795.60079 C 504.07415,718.78507 468.47279,641.54970 408.28591,593.81944 C 405.84158,591.81764 402.79052,588.51735 399.37500,590.09375 z " />
<path
id="path2232"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 196.03125,572.90625 C 182.00437,577.21624 175.15670,594.98492 159.18750,594.81250 C 151.16243,594.84622 147.23312,596.19819 157.48405,597.43962 C 162.27451,598.71366 169.80722,595.91811 170.87803,602.65496 C 172.32034,611.69758 161.43665,615.74735 155.74416,620.54906 C 149.86694,624.68076 143.92700,628.77405 138.71875,633.75000 C 141.15812,641.11726 150.07831,643.83205 156.71540,646.12510 C 165.40474,647.98036 175.16304,648.43926 183.50914,645.87681 C 190.54103,638.43112 189.02421,625.44226 198.57500,619.72268 C 205.09564,613.40123 216.48303,613.05725 221.56332,605.69198 C 222.94075,596.91328 220.18862,588.05072 221.90625,579.28125 C 217.78697,573.22676 208.89717,575.02229 202.62390,572.95074 C 200.44632,572.45909 198.23369,572.88570 196.03125,572.90625 z " />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

198
pixmaps/tray/active.svg Normal file
View File

@ -0,0 +1,198 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg1383"
height="20.000000"
width="20.000000"
y="0.0000000"
x="0.0000000"
version="1.0">
<defs
id="defs3">
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2395"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2393"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2147">
<stop
id="stop2149"
offset="0.0000000"
style="stop-color:#dcdcbb;stop-opacity:1.0000000;" />
<stop
id="stop2153"
offset="0.60000002"
style="stop-color:#d5d591;stop-opacity:1.0000000;" />
<stop
id="stop2151"
offset="1.0000000"
style="stop-color:#c4c361;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2147"
id="radialGradient2391"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2401"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2399"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2329">
<stop
id="stop2331"
offset="0.0000000"
style="stop-color:#c0dcbb;stop-opacity:1.0000000;" />
<stop
id="stop2333"
offset="0.60000002"
style="stop-color:#9bd591;stop-opacity:1.0000000;" />
<stop
id="stop2335"
offset="1.0000000"
style="stop-color:#6fc461;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2329"
id="radialGradient2397"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
<linearGradient
id="linearGradient2099">
<stop
id="stop2101"
offset="0.0000000"
style="stop-color:#babbdc;stop-opacity:1.0000000;" />
<stop
id="stop2103"
offset="0.60000002"
style="stop-color:#9193d5;stop-opacity:1.0000000;" />
<stop
id="stop2105"
offset="1.0000000"
style="stop-color:#6164c4;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2170">
<stop
id="stop2172"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:0.62352943;" />
<stop
id="stop2174"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2156">
<stop
id="stop2158"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:0.0000000;" />
<stop
id="stop2162"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2183">
<stop
id="stop2185"
offset="0.0000000"
style="stop-color:#dcbbbb;stop-opacity:1.0000000;" />
<stop
id="stop2187"
offset="0.60000002"
style="stop-color:#d59191;stop-opacity:1.0000000;" />
<stop
id="stop2189"
offset="1.0000000"
style="stop-color:#c46161;stop-opacity:1.0000000;" />
</linearGradient>
</defs>
<g
id="layer1">
<g
id="g2363"
transform="matrix(3.960064e-2,0.000000,0.000000,3.960176e-2,-20.50650,-0.542442)">
<path
id="path2237"
style="fill:url(#radialGradient2391);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2239"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 569.43750,116.68750 C 529.59766,169.60788 512.37280,238.90434 522.91051,304.39310 C 530.30817,354.10552 553.55185,401.19028 588.00584,437.74812 C 621.74452,473.63467 666.21320,499.26985 714.24680,510.25156 C 719.99153,509.77997 724.92357,504.08065 730.37445,501.55834 C 735.90779,497.67119 743.83362,494.37316 746.03125,487.84375 C 734.71347,483.03902 721.26103,489.57962 710.31449,482.76524 C 703.05001,480.40226 692.18692,473.68002 697.21875,464.71875 C 701.84751,455.69206 708.37504,446.27587 707.84375,435.81250 C 702.27407,432.29351 696.75441,439.84769 691.85169,442.23271 C 683.44133,448.75531 675.02010,439.49404 667.83592,435.54196 C 661.04333,431.13375 653.90750,423.08322 658.65546,414.63331 C 660.43113,409.52457 664.56495,404.72912 665.00000,399.43750 C 652.04760,387.74827 632.42524,381.33455 626.61503,363.19063 C 623.49587,357.85237 628.14552,350.98603 634.32775,353.19001 C 650.59663,356.43830 664.14277,367.19756 679.53125,372.59375 C 679.03403,362.21575 670.46649,353.36290 671.00000,342.90625 C 675.25471,338.23625 683.21295,340.61619 688.81504,338.17213 C 700.29677,335.24106 712.71966,332.03960 722.34375,325.43750 C 717.91139,314.26859 709.38937,305.02268 702.04158,295.62421 C 692.08277,286.05686 684.87883,272.96910 686.22505,258.78312 C 687.59111,251.89486 681.52097,248.10257 675.68750,246.71875 C 667.36821,242.57850 657.13811,240.61477 650.75000,233.56250 C 647.56405,225.44229 652.68058,217.37859 654.65625,209.68750 C 647.81109,194.34143 630.02988,187.49041 614.10360,187.62518 C 605.82562,187.08688 591.95144,187.44949 591.18750,176.34375 C 589.46988,168.39415 591.10243,159.54252 598.32023,154.80574 C 604.76124,148.88834 617.48365,143.82876 613.78866,132.90201 C 608.70361,118.40413 596.70988,106.47826 582.68750,100.50000 C 578.27083,105.89583 573.85417,111.29167 569.43750,116.68750 z " />
<path
id="path2241"
style="opacity:0.24999996;fill:url(#radialGradient2393);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2243"
style="fill:url(#radialGradient2395);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2245"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 919.65625,62.656250 C 902.54719,65.809370 883.97591,82.236010 864.21875,117.96875 C 868.41098,131.94283 837.84416,130.43163 824.56250,136.46875 C 814.03305,141.25487 812.40506,151.23182 811.34375,162.90625 C 809.64992,181.53839 832.27807,174.90784 806.03125,188.03125 C 794.43186,193.83095 808.05331,216.68222 799.43750,226.37500 C 788.46058,238.72403 804.65807,245.38859 812.65625,250.18750 C 828.12778,259.47042 844.86886,219.77254 847.03125,211.84375 C 851.91737,193.92794 857.00795,191.37256 865.53125,185.40625 C 875.16461,178.66291 870.37475,208.43658 873.46875,219.78125 C 876.05583,229.26718 867.30719,246.40211 866.84375,251.50000 C 866.16847,258.92820 898.05172,253.87859 865.53125,264.71875 C 858.97503,266.90416 866.08936,273.95213 862.90625,284.56250 C 860.81195,291.54352 854.17822,295.45725 852.31250,305.71875 C 850.62965,314.97443 843.54941,324.44727 839.09375,330.81250 C 834.49539,337.38158 861.49218,341.03906 865.53125,341.40625 C 873.24994,342.10796 883.33867,349.86047 891.96875,353.31250 C 906.54655,359.14361 894.74782,374.74768 891.96875,379.75000 C 886.61834,389.38075 885.35096,412.81610 895.93750,400.90625 C 907.25289,388.17646 927.94039,383.69590 934.28125,367.84375 C 940.27486,352.85972 925.96038,347.20200 919.75000,334.78125 C 912.94162,321.16450 925.78361,313.60281 931.62500,307.03125 C 995.09922,315.11177 924.24911,360.92665 968.65625,359.90625 C 975.23268,356.25268 972.86072,283.91891 980.56250,283.21875 C 989.26117,282.42797 1008.8630,287.73014 1021.8438,288.34375 C 1022.4787,281.04649 1022.8750,273.67982 1022.8750,266.21875 C 1022.8750,182.69263 982.20861,108.63106 919.65625,62.656250 z " />
<path
id="path2247"
style="fill:#18551f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 655.32722,110.03897 C 641.98710,120.71107 672.08415,135.15817 679.12436,135.15817 C 700.96110,135.15817 710.38957,140.12381 714.82006,117.97135 C 717.74779,103.33269 736.13712,99.812010 743.90545,95.496280 C 752.84080,90.532190 744.93446,74.879410 747.87163,65.088830 C 752.15017,50.827040 733.12453,51.331700 725.39656,49.224070 C 709.97641,45.018570 698.92989,58.503920 691.02292,66.410890 C 684.35819,73.075620 669.22800,70.105020 661.93754,73.021210 C 646.36521,79.250140 675.35654,86.241830 681.76848,86.241830 C 695.52283,83.597700 666.88983,100.78888 655.32722,110.03897 z " />
<path
id="path2249"
style="opacity:0.099999972;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 568.18750,124.40625 C 518.37924,190.56969 506.02168,282.87199 537.06122,359.72647 C 565.17301,431.33820 628.99006,488.71895 704.04223,506.50276 C 712.51780,509.02061 719.09197,500.95210 726.03285,497.26410 C 727.81574,494.65005 715.65768,496.82064 711.70916,495.07030 C 701.71784,493.32843 690.39424,489.08779 685.71875,479.34375 C 680.37898,468.30241 691.08569,459.31509 694.05637,449.35193 C 694.19270,446.36595 686.58063,453.68019 682.92103,453.77971 C 673.25451,456.30241 665.14979,448.17720 657.37784,443.68475 C 647.72164,437.44422 641.62953,424.16910 648.41304,413.67460 C 652.57168,408.29626 652.27474,403.55922 645.50063,400.97969 C 632.16569,391.68729 616.88199,381.45420 613.91617,364.16335 C 612.51081,353.38952 626.59067,347.62877 634.88882,352.84504 C 645.12373,355.88026 654.30336,361.42984 664.03125,365.68750 C 661.05661,358.45086 655.93602,348.03258 662.49324,341.47261 C 672.70468,335.90215 685.03357,337.03535 695.60779,332.16962 C 699.36902,330.54499 706.85772,329.57638 707.86265,326.15458 C 697.52178,306.86016 676.08045,293.01972 674.39657,269.58757 C 674.51617,264.46394 674.76014,257.60868 668.25153,256.59640 C 657.09561,251.36225 640.80599,248.33845 637.81250,234.31250 C 636.76895,227.02308 641.90199,219.97546 641.21549,213.14418 C 631.90553,198.11962 612.41351,197.54866 596.65625,196.78125 C 585.97091,195.62856 577.23505,185.95527 578.64709,175.00645 C 577.97458,162.52727 587.87342,153.19094 597.61348,147.14427 C 602.76479,143.79110 603.10126,137.23780 599.12859,132.86860 C 594.58339,123.95207 586.93084,116.87622 578.15625,112.18750 C 574.83333,116.26042 571.51042,120.33333 568.18750,124.40625 z " />
<path
id="path2251"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 919.37500,70.093750 C 898.29141,80.086930 884.72487,100.70788 874.20936,120.52866 C 873.54971,132.87632 858.98983,135.47392 849.25510,137.47334 C 839.33904,139.48865 825.10504,140.60223 823.10159,153.00100 C 820.88136,160.28952 820.24041,169.50025 827.00000,174.59375 C 831.74293,183.44393 821.30223,189.41807 814.53125,192.40625 C 807.43904,198.49610 813.62889,208.51152 812.31906,216.40610 C 813.44124,223.41168 807.01197,228.87655 806.62500,235.18750 C 809.61107,240.51338 816.32367,243.57831 821.93679,244.89706 C 830.40467,242.68375 833.71627,232.88257 838.43750,226.37500 C 846.31132,210.65509 848.73782,189.78081 865.89502,180.88085 C 872.80806,175.61900 880.86666,182.13224 881.56250,189.62500 C 881.77949,201.78476 883.24024,213.92725 883.36635,226.08849 C 883.80310,234.50241 879.13324,241.77081 877.90625,249.75000 C 883.21804,250.01381 891.15411,253.44787 889.40625,260.31250 C 886.43351,266.61567 878.54840,267.05580 873.03125,270.00000 C 875.05234,280.86303 871.24782,291.82104 864.88544,300.47050 C 860.45931,310.86159 857.52199,322.30876 850.12500,331.00000 C 860.60124,334.85022 872.97436,334.77049 883.35368,339.97934 C 892.19442,345.51028 905.29528,348.26033 908.62062,359.45184 C 910.35779,372.21800 899.28802,382.23593 897.81250,394.53125 C 908.27941,384.30020 924.25153,379.87559 931.73404,366.79806 C 937.15865,356.81953 925.91795,349.69951 921.46737,342.06510 C 913.55808,333.15402 914.91462,319.32929 923.13220,311.11574 C 927.95921,306.11871 933.93296,299.01026 941.68561,302.25164 C 955.22896,303.19276 970.88128,312.82483 969.53125,328.09375 C 968.83115,336.51118 963.23641,344.00746 963.81250,352.56250 C 968.83380,356.72366 970.77585,349.70056 970.01113,345.75989 C 972.99959,324.39633 971.01999,302.02173 978.25000,281.46875 C 986.01067,272.90788 997.96689,279.58417 1007.5857,279.80942 C 1013.0916,279.85509 1022.8492,285.04161 1020.5092,275.60079 C 1024.0741,198.78507 988.47279,121.54970 928.28591,73.819440 C 925.84158,71.817640 922.79052,68.517350 919.37500,70.093750 z " />
<path
id="path2253"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 716.03125,52.906250 C 702.00437,57.216240 695.15670,74.984920 679.18750,74.812500 C 671.16243,74.846220 667.23312,76.198190 677.48405,77.439620 C 682.27451,78.713660 689.80722,75.918110 690.87803,82.654960 C 692.32034,91.697580 681.43665,95.747350 675.74416,100.54906 C 669.86694,104.68076 663.92700,108.77405 658.71875,113.75000 C 661.15812,121.11726 670.07831,123.83205 676.71540,126.12510 C 685.40474,127.98036 695.16304,128.43926 703.50914,125.87681 C 710.54103,118.43112 709.02421,105.44226 718.57500,99.722680 C 725.09564,93.401230 736.48303,93.057250 741.56332,85.691980 C 742.94075,76.913280 740.18862,68.050720 741.90625,59.281250 C 737.78697,53.226760 728.89717,55.022290 722.62390,52.950740 C 720.44632,52.459090 718.23369,52.885700 716.03125,52.906250 z " />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

168
pixmaps/tray/default.svg Normal file
View File

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg1383"
height="20.000000"
width="20.000000"
y="0.0000000"
x="0.0000000"
version="1.0">
<defs
id="defs3">
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2407"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2405"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2099">
<stop
id="stop2101"
offset="0.0000000"
style="stop-color:#babbdc;stop-opacity:1.0000000;" />
<stop
id="stop2103"
offset="0.60000002"
style="stop-color:#9193d5;stop-opacity:1.0000000;" />
<stop
id="stop2105"
offset="1.0000000"
style="stop-color:#6164c4;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2099"
id="radialGradient2403"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
<linearGradient
id="linearGradient2170">
<stop
id="stop2172"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:0.62352943;" />
<stop
id="stop2174"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2389"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<linearGradient
id="linearGradient2156">
<stop
id="stop2158"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:0.0000000;" />
<stop
id="stop2162"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2387"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2183">
<stop
id="stop2185"
offset="0.0000000"
style="stop-color:#dcbbbb;stop-opacity:1.0000000;" />
<stop
id="stop2187"
offset="0.60000002"
style="stop-color:#d59191;stop-opacity:1.0000000;" />
<stop
id="stop2189"
offset="1.0000000"
style="stop-color:#c46161;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2183"
id="radialGradient2385"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
</defs>
<g
id="layer1">
<g
id="g2352"
transform="matrix(3.960176e-2,0.000000,0.000000,3.960176e-2,8.583018e-2,-0.542443)">
<path
id="path2205"
style="fill:url(#radialGradient2403);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2207"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 49.437500,116.68750 C 9.5976600,169.60788 -7.6271960,238.90434 2.9105100,304.39310 C 10.308170,354.10552 33.551850,401.19028 68.005840,437.74812 C 101.74452,473.63467 146.21320,499.26985 194.24680,510.25156 C 199.99153,509.77997 204.92357,504.08065 210.37445,501.55834 C 215.90779,497.67119 223.83362,494.37316 226.03125,487.84375 C 214.71347,483.03902 201.26103,489.57962 190.31449,482.76524 C 183.05001,480.40226 172.18692,473.68002 177.21875,464.71875 C 181.84751,455.69206 188.37504,446.27587 187.84375,435.81250 C 182.27407,432.29351 176.75441,439.84769 171.85169,442.23271 C 163.44133,448.75531 155.02010,439.49404 147.83592,435.54196 C 141.04333,431.13375 133.90750,423.08322 138.65546,414.63331 C 140.43113,409.52457 144.56495,404.72912 145.00000,399.43750 C 132.04760,387.74827 112.42524,381.33455 106.61503,363.19063 C 103.49587,357.85237 108.14552,350.98603 114.32775,353.19001 C 130.59663,356.43830 144.14277,367.19756 159.53125,372.59375 C 159.03403,362.21575 150.46649,353.36290 151.00000,342.90625 C 155.25471,338.23625 163.21295,340.61619 168.81504,338.17213 C 180.29677,335.24106 192.71966,332.03960 202.34375,325.43750 C 197.91139,314.26859 189.38937,305.02268 182.04158,295.62421 C 172.08277,286.05686 164.87883,272.96910 166.22505,258.78312 C 167.59111,251.89486 161.52097,248.10257 155.68750,246.71875 C 147.36821,242.57850 137.13811,240.61477 130.75000,233.56250 C 127.56405,225.44229 132.68058,217.37859 134.65625,209.68750 C 127.81109,194.34143 110.02988,187.49041 94.103600,187.62518 C 85.825620,187.08688 71.951440,187.44949 71.187500,176.34375 C 69.469880,168.39415 71.102430,159.54252 78.320230,154.80574 C 84.761240,148.88834 97.483650,143.82876 93.788660,132.90201 C 88.703610,118.40413 76.709880,106.47826 62.687500,100.50000 C 58.270830,105.89583 53.854170,111.29167 49.437500,116.68750 z " />
<path
id="path2209"
style="opacity:0.24999996;fill:url(#radialGradient2405);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2211"
style="fill:url(#radialGradient2407);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2213"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 399.65625,62.656250 C 382.54719,65.809370 363.97591,82.236010 344.21875,117.96875 C 348.41098,131.94283 317.84416,130.43163 304.56250,136.46875 C 294.03305,141.25487 292.40506,151.23182 291.34375,162.90625 C 289.64992,181.53839 312.27807,174.90784 286.03125,188.03125 C 274.43186,193.83095 288.05331,216.68222 279.43750,226.37500 C 268.46058,238.72403 284.65807,245.38859 292.65625,250.18750 C 308.12778,259.47042 324.86886,219.77254 327.03125,211.84375 C 331.91737,193.92794 337.00795,191.37256 345.53125,185.40625 C 355.16461,178.66291 350.37475,208.43658 353.46875,219.78125 C 356.05583,229.26718 347.30719,246.40211 346.84375,251.50000 C 346.16847,258.92820 378.05172,253.87859 345.53125,264.71875 C 338.97503,266.90416 346.08936,273.95213 342.90625,284.56250 C 340.81195,291.54352 334.17822,295.45725 332.31250,305.71875 C 330.62965,314.97443 323.54941,324.44727 319.09375,330.81250 C 314.49539,337.38158 341.49218,341.03906 345.53125,341.40625 C 353.24994,342.10796 363.33867,349.86047 371.96875,353.31250 C 386.54655,359.14361 374.74782,374.74768 371.96875,379.75000 C 366.61834,389.38075 365.35096,412.81610 375.93750,400.90625 C 387.25289,388.17646 407.94039,383.69590 414.28125,367.84375 C 420.27486,352.85972 405.96038,347.20200 399.75000,334.78125 C 392.94162,321.16450 405.78361,313.60281 411.62500,307.03125 C 475.09922,315.11177 404.24911,360.92665 448.65625,359.90625 C 455.23268,356.25268 452.86072,283.91891 460.56250,283.21875 C 469.26117,282.42797 488.86303,287.73014 501.84375,288.34375 C 502.47868,281.04649 502.87500,273.67982 502.87500,266.21875 C 502.87500,182.69263 462.20861,108.63106 399.65625,62.656250 z " />
<path
id="path2215"
style="fill:#18551f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 135.32722,110.03897 C 121.98710,120.71107 152.08415,135.15817 159.12436,135.15817 C 180.96110,135.15817 190.38957,140.12381 194.82006,117.97135 C 197.74779,103.33269 216.13712,99.812010 223.90545,95.496280 C 232.84080,90.532190 224.93446,74.879410 227.87163,65.088830 C 232.15017,50.827040 213.12453,51.331700 205.39656,49.224070 C 189.97641,45.018570 178.92989,58.503920 171.02292,66.410890 C 164.35819,73.075620 149.22800,70.105020 141.93754,73.021210 C 126.36521,79.250140 155.35654,86.241830 161.76848,86.241830 C 175.52283,83.597700 146.88983,100.78888 135.32722,110.03897 z " />
<path
id="path2217"
style="opacity:0.099999972;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 48.187500,124.40625 C -1.6207600,190.56969 -13.978323,282.87199 17.061220,359.72647 C 45.173010,431.33820 108.99006,488.71895 184.04223,506.50276 C 192.51780,509.02061 199.09197,500.95210 206.03285,497.26410 C 207.81574,494.65005 195.65768,496.82064 191.70916,495.07030 C 181.71784,493.32843 170.39424,489.08779 165.71875,479.34375 C 160.37898,468.30241 171.08569,459.31509 174.05637,449.35193 C 174.19270,446.36595 166.58063,453.68019 162.92103,453.77971 C 153.25451,456.30241 145.14979,448.17720 137.37784,443.68475 C 127.72164,437.44422 121.62953,424.16910 128.41304,413.67460 C 132.57168,408.29626 132.27474,403.55922 125.50063,400.97969 C 112.16569,391.68729 96.881990,381.45420 93.916170,364.16335 C 92.510810,353.38952 106.59067,347.62877 114.88882,352.84504 C 125.12373,355.88026 134.30336,361.42984 144.03125,365.68750 C 141.05661,358.45086 135.93602,348.03258 142.49324,341.47261 C 152.70468,335.90215 165.03357,337.03535 175.60779,332.16962 C 179.36902,330.54499 186.85772,329.57638 187.86265,326.15458 C 177.52178,306.86016 156.08045,293.01972 154.39657,269.58757 C 154.51617,264.46394 154.76014,257.60868 148.25153,256.59640 C 137.09561,251.36225 120.80599,248.33845 117.81250,234.31250 C 116.76895,227.02308 121.90199,219.97546 121.21549,213.14418 C 111.90553,198.11962 92.413510,197.54866 76.656250,196.78125 C 65.970910,195.62856 57.235050,185.95527 58.647090,175.00645 C 57.974580,162.52727 67.873420,153.19094 77.613480,147.14427 C 82.764790,143.79110 83.101260,137.23780 79.128590,132.86860 C 74.583390,123.95207 66.930840,116.87622 58.156250,112.18750 C 54.833330,116.26042 51.510420,120.33333 48.187500,124.40625 z " />
<path
id="path2219"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 399.37500,70.093750 C 378.29141,80.086930 364.72487,100.70788 354.20936,120.52866 C 353.54971,132.87632 338.98983,135.47392 329.25510,137.47334 C 319.33904,139.48865 305.10504,140.60223 303.10159,153.00100 C 300.88136,160.28952 300.24041,169.50025 307.00000,174.59375 C 311.74293,183.44393 301.30223,189.41807 294.53125,192.40625 C 287.43904,198.49610 293.62889,208.51152 292.31906,216.40610 C 293.44124,223.41168 287.01197,228.87655 286.62500,235.18750 C 289.61107,240.51338 296.32367,243.57831 301.93679,244.89706 C 310.40467,242.68375 313.71627,232.88257 318.43750,226.37500 C 326.31132,210.65509 328.73782,189.78081 345.89502,180.88085 C 352.80806,175.61900 360.86666,182.13224 361.56250,189.62500 C 361.77949,201.78476 363.24024,213.92725 363.36635,226.08849 C 363.80310,234.50241 359.13324,241.77081 357.90625,249.75000 C 363.21804,250.01381 371.15411,253.44787 369.40625,260.31250 C 366.43351,266.61567 358.54840,267.05580 353.03125,270.00000 C 355.05234,280.86303 351.24782,291.82104 344.88544,300.47050 C 340.45931,310.86159 337.52199,322.30876 330.12500,331.00000 C 340.60124,334.85022 352.97436,334.77049 363.35368,339.97934 C 372.19442,345.51028 385.29528,348.26033 388.62062,359.45184 C 390.35779,372.21800 379.28802,382.23593 377.81250,394.53125 C 388.27941,384.30020 404.25153,379.87559 411.73404,366.79806 C 417.15865,356.81953 405.91795,349.69951 401.46737,342.06510 C 393.55808,333.15402 394.91462,319.32929 403.13220,311.11574 C 407.95921,306.11871 413.93296,299.01026 421.68561,302.25164 C 435.22896,303.19276 450.88128,312.82483 449.53125,328.09375 C 448.83115,336.51118 443.23641,344.00746 443.81250,352.56250 C 448.83380,356.72366 450.77585,349.70056 450.01113,345.75989 C 452.99959,324.39633 451.01999,302.02173 458.25000,281.46875 C 466.01067,272.90788 477.96689,279.58417 487.58569,279.80942 C 493.09157,279.85509 502.84925,285.04161 500.50923,275.60079 C 504.07415,198.78507 468.47279,121.54970 408.28591,73.819440 C 405.84158,71.817640 402.79052,68.517350 399.37500,70.093750 z " />
<path
id="path2221"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 196.03125,52.906250 C 182.00437,57.216240 175.15670,74.984920 159.18750,74.812500 C 151.16243,74.846220 147.23312,76.198190 157.48405,77.439620 C 162.27451,78.713660 169.80722,75.918110 170.87803,82.654960 C 172.32034,91.697580 161.43665,95.747350 155.74416,100.54906 C 149.86694,104.68076 143.92700,108.77405 138.71875,113.75000 C 141.15812,121.11726 150.07831,123.83205 156.71540,126.12510 C 165.40474,127.98036 175.16304,128.43926 183.50914,125.87681 C 190.54103,118.43112 189.02421,105.44226 198.57500,99.722680 C 205.09564,93.401230 216.48303,93.057250 221.56332,85.691980 C 222.94075,76.913280 220.18862,68.050720 221.90625,59.281250 C 217.78697,53.226760 208.89717,55.022290 202.62390,52.950740 C 200.44632,52.459090 198.23369,52.885700 196.03125,52.906250 z " />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

126
pixmaps/tray/notify.svg Normal file
View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg1383"
height="20.000000"
width="20.000000"
y="0.0000000"
x="0.0000000"
version="1.0">
<defs
id="defs3">
<linearGradient
id="linearGradient2170">
<stop
id="stop2172"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:0.62352943;" />
<stop
id="stop2174"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2389"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<linearGradient
id="linearGradient2156">
<stop
id="stop2158"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:0.0000000;" />
<stop
id="stop2162"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2387"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2183">
<stop
id="stop2185"
offset="0.0000000"
style="stop-color:#dcbbbb;stop-opacity:1.0000000;" />
<stop
id="stop2187"
offset="0.60000002"
style="stop-color:#d59191;stop-opacity:1.0000000;" />
<stop
id="stop2189"
offset="1.0000000"
style="stop-color:#c46161;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2183"
id="radialGradient2385"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
</defs>
<g
id="layer1">
<g
id="g2374"
transform="matrix(3.960176e-2,0.000000,0.000000,3.960176e-2,-20.50708,-21.13536)">
<path
id="path2263"
style="fill:url(#radialGradient2385);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2265"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 569.43750,636.68750 C 529.59766,689.60788 512.37280,758.90434 522.91051,824.39310 C 530.30817,874.10552 553.55185,921.19028 588.00584,957.74812 C 621.74452,993.63467 666.21320,1019.2699 714.24680,1030.2516 C 719.99153,1029.7800 724.92357,1024.0806 730.37445,1021.5583 C 735.90779,1017.6712 743.83362,1014.3732 746.03125,1007.8438 C 734.71347,1003.0390 721.26103,1009.5796 710.31449,1002.7652 C 703.05001,1000.4023 692.18692,993.68002 697.21875,984.71875 C 701.84751,975.69206 708.37504,966.27587 707.84375,955.81250 C 702.27407,952.29351 696.75441,959.84769 691.85169,962.23271 C 683.44133,968.75531 675.02010,959.49404 667.83592,955.54196 C 661.04333,951.13375 653.90750,943.08322 658.65546,934.63331 C 660.43113,929.52457 664.56495,924.72912 665.00000,919.43750 C 652.04760,907.74827 632.42524,901.33455 626.61503,883.19063 C 623.49587,877.85237 628.14552,870.98603 634.32775,873.19001 C 650.59663,876.43830 664.14277,887.19756 679.53125,892.59375 C 679.03403,882.21575 670.46649,873.36290 671.00000,862.90625 C 675.25471,858.23625 683.21295,860.61619 688.81504,858.17213 C 700.29677,855.24106 712.71966,852.03960 722.34375,845.43750 C 717.91139,834.26859 709.38937,825.02268 702.04158,815.62421 C 692.08277,806.05686 684.87883,792.96910 686.22505,778.78312 C 687.59111,771.89486 681.52097,768.10257 675.68750,766.71875 C 667.36821,762.57850 657.13811,760.61477 650.75000,753.56250 C 647.56405,745.44229 652.68058,737.37859 654.65625,729.68750 C 647.81109,714.34143 630.02988,707.49041 614.10360,707.62518 C 605.82562,707.08688 591.95144,707.44949 591.18750,696.34375 C 589.46988,688.39415 591.10243,679.54252 598.32023,674.80574 C 604.76124,668.88834 617.48365,663.82876 613.78866,652.90201 C 608.70361,638.40413 596.70988,626.47826 582.68750,620.50000 C 578.27083,625.89583 573.85417,631.29167 569.43750,636.68750 z " />
<path
id="path2267"
style="opacity:0.24999996;fill:url(#radialGradient2387);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2269"
style="fill:url(#radialGradient2389);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2271"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 919.65625,582.65625 C 902.54719,585.80937 883.97591,602.23601 864.21875,637.96875 C 868.41098,651.94283 837.84416,650.43163 824.56250,656.46875 C 814.03305,661.25487 812.40506,671.23182 811.34375,682.90625 C 809.64992,701.53839 832.27807,694.90784 806.03125,708.03125 C 794.43186,713.83095 808.05331,736.68222 799.43750,746.37500 C 788.46058,758.72403 804.65807,765.38859 812.65625,770.18750 C 828.12778,779.47042 844.86886,739.77254 847.03125,731.84375 C 851.91737,713.92794 857.00795,711.37256 865.53125,705.40625 C 875.16461,698.66291 870.37475,728.43658 873.46875,739.78125 C 876.05583,749.26718 867.30719,766.40211 866.84375,771.50000 C 866.16847,778.92820 898.05172,773.87859 865.53125,784.71875 C 858.97503,786.90416 866.08936,793.95213 862.90625,804.56250 C 860.81195,811.54352 854.17822,815.45725 852.31250,825.71875 C 850.62965,834.97443 843.54941,844.44727 839.09375,850.81250 C 834.49539,857.38158 861.49218,861.03906 865.53125,861.40625 C 873.24994,862.10796 883.33867,869.86047 891.96875,873.31250 C 906.54655,879.14361 894.74782,894.74768 891.96875,899.75000 C 886.61834,909.38075 885.35096,932.81610 895.93750,920.90625 C 907.25289,908.17646 927.94039,903.69590 934.28125,887.84375 C 940.27486,872.85972 925.96038,867.20200 919.75000,854.78125 C 912.94162,841.16450 925.78361,833.60281 931.62500,827.03125 C 995.09922,835.11177 924.24911,880.92665 968.65625,879.90625 C 975.23268,876.25268 972.86072,803.91891 980.56250,803.21875 C 989.26117,802.42797 1008.8630,807.73014 1021.8438,808.34375 C 1022.4787,801.04649 1022.8750,793.67982 1022.8750,786.21875 C 1022.8750,702.69263 982.20861,628.63106 919.65625,582.65625 z " />
<path
id="path2273"
style="fill:#18551f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 655.32722,630.03897 C 641.98710,640.71107 672.08415,655.15817 679.12436,655.15817 C 700.96110,655.15817 710.38957,660.12381 714.82006,637.97135 C 717.74779,623.33269 736.13712,619.81201 743.90545,615.49628 C 752.84080,610.53219 744.93446,594.87941 747.87163,585.08883 C 752.15017,570.82704 733.12453,571.33170 725.39656,569.22407 C 709.97641,565.01857 698.92989,578.50392 691.02292,586.41089 C 684.35819,593.07562 669.22800,590.10502 661.93754,593.02121 C 646.36521,599.25014 675.35654,606.24183 681.76848,606.24183 C 695.52283,603.59770 666.88983,620.78888 655.32722,630.03897 z " />
<path
id="path2275"
style="opacity:0.099999972;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 568.18750,644.40625 C 518.37924,710.56969 506.02168,802.87199 537.06122,879.72647 C 565.17301,951.33820 628.99006,1008.7189 704.04223,1026.5028 C 712.51780,1029.0206 719.09197,1020.9521 726.03285,1017.2641 C 727.81574,1014.6500 715.65768,1016.8206 711.70916,1015.0703 C 701.71784,1013.3284 690.39424,1009.0878 685.71875,999.34375 C 680.37898,988.30241 691.08569,979.31509 694.05637,969.35193 C 694.19270,966.36595 686.58063,973.68019 682.92103,973.77971 C 673.25451,976.30241 665.14979,968.17720 657.37784,963.68475 C 647.72164,957.44422 641.62953,944.16910 648.41304,933.67460 C 652.57168,928.29626 652.27474,923.55922 645.50063,920.97969 C 632.16569,911.68729 616.88199,901.45420 613.91617,884.16335 C 612.51081,873.38952 626.59067,867.62877 634.88882,872.84504 C 645.12373,875.88026 654.30336,881.42984 664.03125,885.68750 C 661.05661,878.45086 655.93602,868.03258 662.49324,861.47261 C 672.70468,855.90215 685.03357,857.03535 695.60779,852.16962 C 699.36902,850.54499 706.85772,849.57638 707.86265,846.15458 C 697.52178,826.86016 676.08045,813.01972 674.39657,789.58757 C 674.51617,784.46394 674.76014,777.60868 668.25153,776.59640 C 657.09561,771.36225 640.80599,768.33845 637.81250,754.31250 C 636.76895,747.02308 641.90199,739.97546 641.21549,733.14418 C 631.90553,718.11962 612.41351,717.54866 596.65625,716.78125 C 585.97091,715.62856 577.23505,705.95527 578.64709,695.00645 C 577.97458,682.52727 587.87342,673.19094 597.61348,667.14427 C 602.76479,663.79110 603.10126,657.23780 599.12859,652.86860 C 594.58339,643.95207 586.93084,636.87622 578.15625,632.18750 C 574.83333,636.26042 571.51042,640.33333 568.18750,644.40625 z " />
<path
id="path2277"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 919.37500,590.09375 C 898.29141,600.08693 884.72487,620.70788 874.20936,640.52866 C 873.54971,652.87632 858.98983,655.47392 849.25510,657.47334 C 839.33904,659.48865 825.10504,660.60223 823.10159,673.00100 C 820.88136,680.28952 820.24041,689.50025 827.00000,694.59375 C 831.74293,703.44393 821.30223,709.41807 814.53125,712.40625 C 807.43904,718.49610 813.62889,728.51152 812.31906,736.40610 C 813.44124,743.41168 807.01197,748.87655 806.62500,755.18750 C 809.61107,760.51338 816.32367,763.57831 821.93679,764.89706 C 830.40467,762.68375 833.71627,752.88257 838.43750,746.37500 C 846.31132,730.65509 848.73782,709.78081 865.89502,700.88085 C 872.80806,695.61900 880.86666,702.13224 881.56250,709.62500 C 881.77949,721.78476 883.24024,733.92725 883.36635,746.08849 C 883.80310,754.50241 879.13324,761.77081 877.90625,769.75000 C 883.21804,770.01381 891.15411,773.44787 889.40625,780.31250 C 886.43351,786.61567 878.54840,787.05580 873.03125,790.00000 C 875.05234,800.86303 871.24782,811.82104 864.88544,820.47050 C 860.45931,830.86159 857.52199,842.30876 850.12500,851.00000 C 860.60124,854.85022 872.97436,854.77049 883.35368,859.97934 C 892.19442,865.51028 905.29528,868.26033 908.62062,879.45184 C 910.35779,892.21800 899.28802,902.23593 897.81250,914.53125 C 908.27941,904.30020 924.25153,899.87559 931.73404,886.79806 C 937.15865,876.81953 925.91795,869.69951 921.46737,862.06510 C 913.55808,853.15402 914.91462,839.32929 923.13220,831.11574 C 927.95921,826.11871 933.93296,819.01026 941.68561,822.25164 C 955.22896,823.19276 970.88128,832.82483 969.53125,848.09375 C 968.83115,856.51118 963.23641,864.00746 963.81250,872.56250 C 968.83380,876.72366 970.77585,869.70056 970.01113,865.75989 C 972.99959,844.39633 971.01999,822.02173 978.25000,801.46875 C 986.01067,792.90788 997.96689,799.58417 1007.5857,799.80942 C 1013.0916,799.85509 1022.8492,805.04161 1020.5092,795.60079 C 1024.0741,718.78507 988.47279,641.54970 928.28591,593.81944 C 925.84158,591.81764 922.79052,588.51735 919.37500,590.09375 z " />
<path
id="path2279"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 716.03125,572.90625 C 702.00437,577.21624 695.15670,594.98492 679.18750,594.81250 C 671.16243,594.84622 667.23312,596.19819 677.48405,597.43962 C 682.27451,598.71366 689.80722,595.91811 690.87803,602.65496 C 692.32034,611.69758 681.43665,615.74735 675.74416,620.54906 C 669.86694,624.68076 663.92700,628.77405 658.71875,633.75000 C 661.15812,641.11726 670.07831,643.83205 676.71540,646.12510 C 685.40474,647.98036 695.16304,648.43926 703.50914,645.87681 C 710.54103,638.43112 709.02421,625.44226 718.57500,619.72268 C 725.09564,613.40123 736.48303,613.05725 741.56332,605.69198 C 742.94075,596.91328 740.18862,588.05072 741.90625,579.28125 C 737.78697,573.22676 728.89717,575.02229 722.62390,572.95074 C 720.44632,572.45909 718.23369,572.88570 716.03125,572.90625 z " />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,14 @@
iconsdir = $(pkgdatadir)/pixmaps/userlist
icons_DATA = idleaway.svg \
idle.svg \
away.svg \
friend.svg \
inhabitant.svg \
inhabitantplus.svg \
key.svg \
newbie.svg \
schooled.svg \
star.svg \
wizard.svg
EXTRA_DIST = $(icons_DATA)

1568
pixmaps/userlist/all.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 77 KiB

301
pixmaps/userlist/away.svg Normal file
View File

@ -0,0 +1,301 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient3124"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<radialGradient
cx="0.81666684"
cy="0.86111093"
r="0.63335794"
fx="0.82222235"
fy="0.85555542"
id="radialGradient2957"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="0.98351645"
y1="0.98333335"
x2="0.23076923"
y2="0.17777778"
id="linearGradient2915"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient2952"
inkscape:collect="always"
xlink:href="#linearGradient2946" />
<linearGradient
x1="0.34615386"
y1="0.27222222"
x2="0.98901099"
y2="0.99444443"
id="linearGradient2913"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-100.0014,-48.29105)"
id="g983">
<path
d="M 124.36267 57.778187 A 7.7183714 7.7684908 0 1 0 108.92593,57.778187 A 7.7183714 7.7684908 0 1 0 124.36267 57.778187 z"
transform="matrix(1.198851,0.000000,0.000000,1.191107,-29.83768,-10.52891)"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2938" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.301979,0.000000,0.000000,1.301288,-41.35358,-17.98022)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:1.5865387;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1664" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2913);stroke-width:0.54178977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2911" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.25333717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2950" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.191763,0.000000,0.000000,1.184580,-28.54099,-11.13975)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2915);stroke-width:0.60939527;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2914" />
<path
d="M 123.79466 57.694656 A 5.7135997 5.6801867 0 1 0 112.36746,57.694656 A 5.7135997 5.6801867 0 1 0 123.79466 57.694656 z"
transform="matrix(1.211269,0.000000,0.000000,1.218512,-33.02644,-12.01050)"
style="fill:#ececf3;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2924" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,-66.42380,-30.67413)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2957);stroke-width:0.25333717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path2953" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.179335,0.000000,0.000000,1.179308,-27.09626,-10.83068)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient3124);stroke-width:0.21919590;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3123" />
<rect
width="1.0204374"
height="4.0817494"
x="-118.01519"
y="33.943893"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect2958" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,7.024595,11.66249)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path2976" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,18.27460,11.66249)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3024" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,12.64960,17.28749)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3025" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,12.64960,6.037485)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3026" />
<rect
width="1.0204374"
height="4.0817494"
x="-118.03284"
y="30.407104"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3028" />
<rect
width="1.0204378"
height="4.0817513"
x="31.261391"
y="-121.78556"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3029" />
<rect
width="1.0204381"
height="4.0817523"
x="31.276966"
y="-120.22436"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect3118" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(0.970462,0.000000,0.000000,0.970463,-2.877711,1.347242)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.64402282;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3120" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(-1.179335,0.000000,0.000000,-1.179308,247.0991,127.4130)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.21919590;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3122" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

432
pixmaps/userlist/friend.svg Normal file
View File

@ -0,0 +1,432 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1">
<defs
id="defs3">
<linearGradient
id="linearGradient1351">
<stop
style="stop-color:#44e704;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1352" />
<stop
style="stop-color:#1e5c1e;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1353" />
</linearGradient>
<linearGradient
id="linearGradient1276">
<stop
style="stop-color:#04ff00;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1277" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="0.50000000"
id="stop1281" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1279" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient1210">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1211" />
<stop
style="stop-color:#ffa619;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1212" />
<stop
style="stop-color:#bb7200;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1213" />
</linearGradient>
<linearGradient
id="linearGradient1206">
<stop
style="stop-color:#ff0000;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1207" />
<stop
style="stop-color:#ff0000;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1208" />
<stop
style="stop-color:#ff0000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1209" />
</linearGradient>
<linearGradient
id="linearGradient1115">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1116" />
<stop
style="stop-color:#000000;stop-opacity:0.062745102;"
offset="0.34999999"
id="stop1117" />
<stop
style="stop-color:#000000;stop-opacity:0.18431373;"
offset="0.69999999"
id="stop1118" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="1.0000000"
id="stop1119" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient1100">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1101" />
<stop
style="stop-color:#ffffff;stop-opacity:0.62352943;"
offset="0.34999999"
id="stop1102" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1103" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1104" />
</linearGradient>
<linearGradient
id="linearGradient1048">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1049" />
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.34999999"
id="stop1050" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1051" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1052" />
</linearGradient>
<linearGradient
id="linearGradient1042">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1043" />
<stop
style="stop-color:#000000;stop-opacity:0.12549020;"
offset="0.34999999"
id="stop1044" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="0.69999999"
id="stop1045" />
<stop
style="stop-color:#000000;stop-opacity:0.74901962;"
offset="1.0000000"
id="stop1046" />
</linearGradient>
<linearGradient
id="linearGradient1035">
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1036" />
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1037" />
<stop
style="stop-color:#3a44b3;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1038" />
<stop
style="stop-color:#111464;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1039" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1623">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1624" />
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1626" />
<stop
style="stop-color:#bbbb00;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1625" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
<linearGradient
id="linearGradient3172">
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3173" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3174" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3152">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3153" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3154" />
</linearGradient>
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
x1="-0.10416666"
y1="0.63157892"
x2="0.83333331"
y2="0.73026317"
id="linearGradient1123"
inkscape:collect="always"
xlink:href="#linearGradient1005" />
<linearGradient
x1="1.1037736"
y1="0.55921054"
x2="0.71698111"
y2="0.53947371"
id="linearGradient1129"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="-0.20754717"
y1="0.57894737"
x2="0.32075471"
y2="0.54605263"
id="linearGradient1131"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="0.011428571"
y1="0.50000000"
x2="1.0085714"
y2="0.50000000"
id="linearGradient1133"
inkscape:collect="always"
xlink:href="#linearGradient1005" />
<linearGradient
x1="-0.020000000"
y1="0.46875000"
x2="0.28857142"
y2="0.46875000"
id="linearGradient1135"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="-0.020000000"
y1="0.44000000"
x2="0.29714286"
y2="0.44000000"
id="linearGradient1137"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
</defs>
<metadata
id="metadata4">
<rdf:RDF
id="RDF5">
<cc:Work
rdf:about=""
id="Work6">
<dc:format
id="format7">image/svg+xml</dc:format>
<dc:type
id="type9"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 3.1250000,3.0000000e-06 L 3.1250000,4.7337310 L 4.2091400,7.9053280 L 5.2932700,19.905328 L 14.891830,20.000003 L 15.790860,7.9526660 L 16.875000,4.7337310 L 16.875000,3.0000000e-06 L 3.1250000,3.0000000e-06 z "
style="fill:url(#linearGradient1123);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:0.69542289pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1074" />
<path
d="M 4.3750000,3.0000000e-06 L 4.3750000,4.4378730 L 5.2620200,7.4112450 L 6.1490400,18.661245 L 14.002410,18.750003 L 14.737980,7.4556240 L 15.625000,4.4378730 L 15.625000,3.0000000e-06 L 4.3750000,3.0000000e-06 z "
style="fill:#f8e519;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.69542289pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1126" />
<rect
width="11.250000"
height="5.0000000"
x="4.3750000"
y="2.6171874e-06"
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1121" />
<path
d="M 16.875000,3.0000000e-06 L 16.875000,4.7337310 L 15.790860,7.9053280 L 14.706730,19.905328 L 5.1081700,20.000003 L 4.2091400,7.9526660 L 3.1250000,4.7337310 L 3.1250000,3.0000000e-06 L 16.875000,3.0000000e-06 z "
style="fill:url(#linearGradient1129);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:0.69542289pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1128" />
<path
d="M 16.875000,3.0000000e-06 L 16.875000,4.7337310 L 15.790860,7.9053280 L 14.706730,19.905328 L 5.1081700,20.000003 L 4.2091400,7.9526660 L 3.1250000,4.7337310 L 3.1250000,3.0000000e-06 L 16.875000,3.0000000e-06 z "
style="fill:url(#linearGradient1131);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:0.69542289pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1130" />
<rect
width="13.750000"
height="1.2500000"
x="3.1250000"
y="2.6171874e-06"
style="fill:url(#linearGradient1133);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1132" />
<rect
width="13.750000"
height="1.2500000"
x="3.1250000"
y="2.6171874e-06"
style="fill:url(#linearGradient1135);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1134" />
<rect
width="8.7500000"
height="1.2500000"
x="5.6250000"
y="18.750002"
style="fill:url(#linearGradient1137);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1136" />
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

186
pixmaps/userlist/idle.svg Normal file
View File

@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 3.7499495,0.69047613 C 2.7564195,0.70692713 1.9539395,1.5148171 1.9374495,2.5057001 L 1.8749495,2.5057001 L 1.8749495,12.520733 L 1.9374495,12.520733 C 1.9372795,12.531081 1.9374495,12.541642 1.9374495,12.552031 C 1.9374495,13.557377 2.7458095,14.382204 3.7499495,14.398553 C 3.7601495,14.398718 3.7709595,14.398553 3.7811995,14.398553 L 17.499950,14.398553 L 17.499950,14.304661 C 18.478900,14.288451 19.242330,13.491474 19.281200,12.520733 L 19.374950,12.520733 L 19.374950,2.5057001 L 19.312450,2.5057001 C 19.295950,1.5148141 18.493470,0.70692713 17.499950,0.69047613 L 17.499950,0.62788213 L 3.7499495,0.69047613 z "
style="fill:#e7e7e7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1582" />
<path
d="M 4.9081495,9.4541103 C 4.9081495,9.0620203 4.9081495,8.6699303 4.9081495,8.2778403 C 5.8332495,7.2249683 6.7382695,6.1541593 7.6813095,5.1172891 C 8.0169095,4.8586881 7.4112895,5.0277891 7.2366095,4.9892221 C 6.5302895,4.9951521 5.8239495,4.9971101 5.1176295,5.0014731 C 5.1176295,4.5843181 5.1176295,4.1671631 5.1176295,3.7500081 C 6.6895695,3.7500081 8.2615095,3.7500081 9.8334495,3.7500081 C 9.8334495,4.1062911 9.8334495,4.4625731 9.8334495,4.8188561 C 9.0552495,5.7093271 8.2899695,6.6113433 7.5034595,7.4943773 C 7.2972095,7.7179343 7.0909595,7.9414913 6.8847195,8.1650473 C 7.8341295,8.0994263 8.7862995,8.1376173 9.7371495,8.1274493 C 9.8215195,8.1551413 10.029060,8.0596733 9.9999495,8.2008523 C 9.9999495,8.6186043 9.9999495,9.0363573 9.9999495,9.4541103 C 8.3026795,9.4541103 6.6054195,9.4541103 4.9081495,9.4541103 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text1516" />
<path
d="M 11.158150,10.704110 C 11.158150,10.312020 11.158150,9.9199303 11.158150,9.5278403 C 12.083250,8.4749683 12.988270,7.4041593 13.931310,6.3672893 C 14.266910,6.1086881 13.661290,6.2777893 13.486610,6.2392223 C 12.780290,6.2451523 12.073950,6.2471103 11.367630,6.2514733 C 11.367630,5.8343181 11.367630,5.4171631 11.367630,5.0000081 C 12.939570,5.0000081 14.511510,5.0000081 16.083450,5.0000081 C 16.083450,5.3562911 16.083450,5.7125731 16.083450,6.0688561 C 15.305250,6.9593273 14.539970,7.8613433 13.753460,8.7443773 C 13.547210,8.9679343 13.340960,9.1914913 13.134720,9.4150473 C 14.084130,9.3494263 15.036300,9.3876173 15.987150,9.3774493 C 16.071520,9.4051413 16.279060,9.3096733 16.249950,9.4508523 C 16.249950,9.8686043 16.249950,10.286357 16.249950,10.704110 C 14.552680,10.704110 12.855420,10.704110 11.158150,10.704110 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text1519" />
<path
d="M 4.2186995,13.158392 L 16.249950,13.158392 C 18.102860,13.220066 18.045960,12.334051 18.062450,11.343168 L 18.124950,3.0468851"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1635" />
<path
d="M 7.0812795,13.750031 C 7.1032495,14.791984 2.9365195,13.841465 2.9561295,13.593936 C 2.9757395,13.346408 3.0378995,13.102543 3.1366995,12.875715 C 3.3343095,12.422061 3.6784995,12.036557 4.1221295,11.826198 C 4.9949595,11.370192 6.1499895,11.679048 6.7002495,12.514711 C 6.9476195,12.872340 7.0825695,13.310386 7.0812795,13.750031 z "
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.2805939;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1616" />
<path
d="M 228.70486 67.715950 A 2.5411651 2.5411651 0 1 0 223.62253,67.715950 A 2.5411651 2.5411651 0 1 0 228.70486 67.715950 z"
transform="matrix(0.545196,0.000000,0.000000,0.545198,-121.4181,-18.80404)"
style="fill:#e7e7e7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.8341994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1615" />
<path
d="M 228.70486 67.715950 A 2.5411651 2.5411651 0 1 0 223.62253,67.715950 A 2.5411651 2.5411651 0 1 0 228.70486 67.715950 z"
transform="matrix(0.741589,0.000000,0.000000,0.743692,-162.7301,-36.62463)"
style="fill:#e7e7e7;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.6831849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1617" />
<path
d="M 17.031200,1.9376041 L 4.9999495,1.9376041 C 3.1470395,1.8759301 3.2039395,2.7619451 3.1874495,3.7528281 L 3.1249495,10.720986"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1620" />
</svg>

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -0,0 +1,314 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient3124"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<radialGradient
cx="0.81666684"
cy="0.86111093"
r="0.63335794"
fx="0.82222235"
fy="0.85555542"
id="radialGradient2957"
inkscape:collect="always"
xlink:href="#linearGradient2954" />
<linearGradient
x1="0.98351645"
y1="0.98333335"
x2="0.23076923"
y2="0.17777778"
id="linearGradient2915"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<radialGradient
cx="0.19444431"
cy="0.22777788"
r="0.63335794"
fx="0.18888874"
fy="0.21666677"
id="radialGradient2952"
inkscape:collect="always"
xlink:href="#linearGradient2946" />
<linearGradient
x1="0.34615386"
y1="0.27222222"
x2="0.98901099"
y2="0.99444443"
id="linearGradient2913"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.870990,0.000000,0.000000,0.874807,-179.5880,-31.53432)"
style="stroke-linecap:round;stroke-linejoin:round;"
id="g842">
<path
d="M 124.36267 57.778187 A 7.7183714 7.7684908 0 1 0 108.92593,57.778187 A 7.7183714 7.7684908 0 1 0 124.36267 57.778187 z"
transform="matrix(1.198851,0.000000,0.000000,1.191107,79.31174,-20.62342)"
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path824" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.301979,0.000000,0.000000,1.301288,67.79584,-28.07474)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#f8e519;stroke-width:1.5865387;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path825" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2913);stroke-width:0.54178977;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path826" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.25333717;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path827" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.191763,0.000000,0.000000,1.184580,80.60843,-21.23427)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2915);stroke-width:0.60939527;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path828" />
<path
d="M 123.79466 57.694656 A 5.7135997 5.6801867 0 1 0 112.36746,57.694656 A 5.7135997 5.6801867 0 1 0 123.79466 57.694656 z"
transform="matrix(1.211269,0.000000,0.000000,1.218512,76.12298,-22.10502)"
style="fill:#ececf3;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path829" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.517637,0.000000,0.000000,1.517862,42.72562,-40.76865)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2957);stroke-width:0.25333717;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path830" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(1.179335,0.000000,0.000000,1.179308,82.05316,-20.92520)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient3124);stroke-width:0.21919590;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path831" />
<rect
width="1.0204374"
height="4.0817494"
x="-184.82507"
y="115.64051"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect832" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,116.1740,1.567967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path833" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,127.4240,1.567967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path834" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,121.7990,7.192967)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path835" />
<path
d="M 116.57747 61.269833 A 0.15035789 0.16706431 0 1 0 116.27676,61.269833 A 0.15035789 0.16706431 0 1 0 116.57747 61.269833 z"
transform="matrix(0.836155,0.000000,0.000000,0.761026,121.7990,-4.057033)"
style="fill:#ff0000;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-opacity:1.0000000;"
id="path836" />
<rect
width="1.0204374"
height="4.0817494"
x="-184.84271"
y="112.10372"
transform="matrix(-0.734981,-0.678088,0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect837" />
<rect
width="1.0204378"
height="4.0817513"
x="112.95801"
y="-188.59544"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect838" />
<rect
width="1.0204381"
height="4.0817523"
x="112.97358"
y="-187.03423"
transform="matrix(0.734981,-0.678088,-0.734981,-0.678088,0.000000,0.000000)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:0.42491827pt;stroke-opacity:1.0000000;"
id="rect839" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(0.970462,0.000000,0.000000,0.970463,106.2717,-8.747276)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.64402282;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path840" />
<path
d="M 122.50000 58.612183 A 6.2500000 6.2500000 0 1 0 110.00000,58.612183 A 6.2500000 6.2500000 0 1 0 122.50000 58.612183 z"
transform="matrix(-1.179335,0.000000,0.000000,-1.179308,356.2486,117.3184)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#radialGradient2952);stroke-width:0.21919590;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path841" />
</g>
<path
d="M 8.3354651,4.4211148 C 8.5569944,5.1059582 8.7834603,5.7956727 8.8937870,6.5088281 C 8.7560403,5.3737095 8.8687557,4.2233891 9.0197197,3.0952896 C 8.0225194,4.1700147 7.0944412,5.3063488 6.1271889,6.4077896 C 6.1782268,6.7788595 6.0238789,7.3562929 6.2063733,7.5952896 C 7.8698833,7.5952896 9.5333834,7.5952896 11.196893,7.5952896 C 11.135146,7.1775163 11.322378,6.5072977 11.099973,6.2524280 C 10.095577,6.2599689 9.0899267,6.2174400 8.0866452,6.2827896 C 9.0152310,5.2944373 9.9301018,4.2929446 10.821454,3.2704959 C 10.447219,3.3424473 10.102723,3.5931982 9.7475078,3.7522748 C 9.2825033,3.9867014 8.8198775,4.2289247 8.3354651,4.4211148 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ff0000;fill-opacity:1.0000000;stroke:#ffffff;stroke-width:2.4940922;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text818" />
<path
d="M -1.7763568e-15,6.3306406 C -1.7763568e-15,5.9385506 -1.7763568e-15,5.5464606 -1.7763568e-15,5.1543716 C 0.96806847,4.0519846 1.9049449,2.9211866 2.9027424,1.8457776 C 2.0052591,1.8832936 1.1065616,1.8673056 0.20849113,1.8780036 C 0.20849113,1.4608496 0.20849113,1.0436946 0.20849113,0.62653957 C 1.7730107,0.62653957 3.3375302,0.62653957 4.9020497,0.62653957 C 4.9020497,0.98282157 4.9020497,1.3391046 4.9020497,1.6953866 C 3.9254218,2.8122656 2.9819168,3.9589156 1.9672394,5.0415786 C 2.9993143,4.9741756 4.0342457,5.0152336 5.0677637,5.0039806 C 5.0677637,5.4462006 5.0677637,5.8884206 5.0677637,6.3306406 C 3.3785058,6.3306406 1.6892579,6.3306406 -1.7763568e-15,6.3306406 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text821" />
<path
d="M 6.2204963,7.5806406 C 6.2204963,7.1885506 6.2204963,6.7964606 6.2204963,6.4043716 C 7.1885648,5.3019846 8.1254412,4.1711866 9.1232387,3.0957776 C 8.2257554,3.1332936 7.3270579,3.1173056 6.4289875,3.1280036 C 6.4289875,2.7108496 6.4289875,2.2936946 6.4289875,1.8765396 C 7.9935070,1.8765396 9.5580265,1.8765396 11.122546,1.8765396 C 11.122546,2.2328216 11.122546,2.5891046 11.122546,2.9453866 C 10.145918,4.0622656 9.2024132,5.2089156 8.1877358,6.2915786 C 9.2198107,6.2241756 10.254742,6.2652336 11.288260,6.2539806 C 11.288260,6.6962006 11.288260,7.1384206 11.288260,7.5806406 C 9.5990022,7.5806406 7.9097542,7.5806406 6.2204963,7.5806406 z "
style="font-size:11.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;font-family:Arial;text-anchor:start;writing-mode:lr;"
id="text870" />
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
x1="0.29298297"
y1="0.23977646"
x2="0.62951213"
y2="0.86258322"
id="linearGradient1252"
xlink:href="#linearGradient1243" />
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<RDF
id="RDF1118">
<Work
about=""
id="Work1119">
<format
id="format1120">image/svg+xml</format>
<type
id="type1122"
resource="http://purl.org/dc/dcmitype/StillImage" />
</Work>
</RDF>
<rdf:RDF
id="RDF1034">
<cc:Work
rdf:about=""
id="Work1035">
<dc:format
id="format1036">image/svg+xml</dc:format>
<dc:type
id="type1038"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 191.63699,67.494974 L 186.23800,64.595877 L 180.78903,67.399890 L 181.87785,61.369279 L 177.52725,57.053485 L 183.59917,56.225459 L 186.35933,50.754139 L 189.02315,56.273001 L 195.07962,57.207334 L 190.65404,61.446204 L 191.63699,67.494974 z "
transform="matrix(1.059916,-0.275504,0.284004,1.028195,-203.6913,-0.166886)"
style="fill:#769abe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;"
id="path1399" />
<path
d="M 191.63699,67.494974 L 186.23800,64.595877 L 180.78903,67.399890 L 181.87785,61.369279 L 177.52725,57.053485 L 183.59917,56.225459 L 186.35933,50.754139 L 189.02315,56.273001 L 195.07962,57.207334 L 190.65404,61.446204 L 191.63699,67.494974 z "
transform="matrix(0.847932,-0.220404,0.227204,0.822555,-160.9527,1.625846)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient1252);stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1400" />
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
x1="0.29298297"
y1="0.23977646"
x2="0.62951213"
y2="0.86258322"
id="linearGradient1252"
inkscape:collect="always"
xlink:href="#linearGradient1243" />
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 191.63699,67.494974 L 186.23800,64.595877 L 180.78903,67.399890 L 181.87785,61.369279 L 177.52725,57.053485 L 183.59917,56.225459 L 186.35933,50.754139 L 189.02315,56.273001 L 195.07962,57.207334 L 190.65404,61.446204 L 191.63699,67.494974 z "
transform="matrix(1.059916,-0.275504,0.284004,1.028195,-203.6913,-0.166886)"
style="fill:#769abe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;"
id="path1399" />
<path
d="M 191.63699,67.494974 L 186.23800,64.595877 L 180.78903,67.399890 L 181.87785,61.369279 L 177.52725,57.053485 L 183.59917,56.225459 L 186.35933,50.754139 L 189.02315,56.273001 L 195.07962,57.207334 L 190.65404,61.446204 L 191.63699,67.494974 z "
transform="matrix(0.847932,-0.220404,0.227204,0.822555,-160.9527,1.625846)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient1252);stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1400" />
<path
d="M 191.63699,67.494974 L 186.23800,64.595877 L 180.78903,67.399890 L 181.87785,61.369279 L 177.52725,57.053485 L 183.59917,56.225459 L 186.35933,50.754139 L 189.02315,56.273001 L 195.07962,57.207334 L 190.65404,61.446204 L 191.63699,67.494974 z "
transform="matrix(0.317976,-8.265093e-2,8.520083e-2,0.308459,-54.03724,6.514604)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.1666641;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1276" />
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

415
pixmaps/userlist/key.svg Normal file
View File

@ -0,0 +1,415 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1">
<defs
id="defs3">
<linearGradient
id="linearGradient1351">
<stop
style="stop-color:#44e704;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1352" />
<stop
style="stop-color:#1e5c1e;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1353" />
</linearGradient>
<linearGradient
id="linearGradient1276">
<stop
style="stop-color:#04ff00;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1277" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="0.50000000"
id="stop1281" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1279" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient1210">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1211" />
<stop
style="stop-color:#ffa619;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1212" />
<stop
style="stop-color:#bb7200;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1213" />
</linearGradient>
<linearGradient
id="linearGradient1206">
<stop
style="stop-color:#ff0000;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1207" />
<stop
style="stop-color:#ff0000;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1208" />
<stop
style="stop-color:#ff0000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1209" />
</linearGradient>
<linearGradient
id="linearGradient1115">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1116" />
<stop
style="stop-color:#000000;stop-opacity:0.062745102;"
offset="0.34999999"
id="stop1117" />
<stop
style="stop-color:#000000;stop-opacity:0.18431373;"
offset="0.69999999"
id="stop1118" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="1.0000000"
id="stop1119" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient1100">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1101" />
<stop
style="stop-color:#ffffff;stop-opacity:0.62352943;"
offset="0.34999999"
id="stop1102" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1103" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1104" />
</linearGradient>
<linearGradient
id="linearGradient1048">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1049" />
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.34999999"
id="stop1050" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1051" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1052" />
</linearGradient>
<linearGradient
id="linearGradient1042">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1043" />
<stop
style="stop-color:#000000;stop-opacity:0.12549020;"
offset="0.34999999"
id="stop1044" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="0.69999999"
id="stop1045" />
<stop
style="stop-color:#000000;stop-opacity:0.74901962;"
offset="1.0000000"
id="stop1046" />
</linearGradient>
<linearGradient
id="linearGradient1035">
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1036" />
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1037" />
<stop
style="stop-color:#3a44b3;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1038" />
<stop
style="stop-color:#111464;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1039" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1623">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1624" />
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1626" />
<stop
style="stop-color:#bbbb00;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1625" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
<linearGradient
id="linearGradient3172">
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3173" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3174" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3152">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3153" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3154" />
</linearGradient>
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
x1="-1.1449175e-16"
y1="0.50000000"
x2="1.0000000"
y2="0.50000000"
id="linearGradient1083"
inkscape:collect="always"
xlink:href="#linearGradient3175" />
<linearGradient
x1="3.2612801e-15"
y1="0.50000000"
x2="1.0000000"
y2="0.50000000"
id="linearGradient1084"
inkscape:collect="always"
xlink:href="#linearGradient3175" />
<linearGradient
x1="1.0560997e-14"
y1="0.50000000"
x2="1.0000000"
y2="0.50000000"
id="linearGradient1085"
inkscape:collect="always"
xlink:href="#linearGradient3175" />
<linearGradient
x1="-1.0624939"
y1="-0.74989635"
x2="-0.43110916"
y2="-0.73004663"
id="linearGradient1087"
inkscape:collect="always"
xlink:href="#linearGradient3175"
gradientTransform="matrix(-1.174076,1.573924e-2,8.270293e-2,-0.852842,-1.179612e-16,-6.473988e-15)" />
</defs>
<metadata
id="metadata4">
<rdf:RDF
id="RDF5">
<cc:Work
rdf:about=""
id="Work6">
<dc:format
id="format7">image/svg+xml</dc:format>
<dc:type
id="type9"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<rect
width="1.4153235"
height="16.106644"
x="13.215102"
y="-3.6870356"
transform="matrix(0.707107,0.707107,-0.707107,0.707107,0.000000,0.000000)"
style="fill:url(#linearGradient1084);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.50000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="rect1077" />
<path
d="M 293.22835 52.745213 A 4.4194174 3.3698058 0 1 0 284.38951,52.745213 A 4.4194174 3.3698058 0 1 0 293.22835 52.745213 z"
transform="matrix(0.613545,0.613545,-0.651541,0.651541,-127.5683,-207.1369)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:2.0969698;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1076" />
<path
d="M 293.22835 52.745213 A 4.4194174 3.3698058 0 1 0 284.38951,52.745213 A 4.4194174 3.3698058 0 1 0 293.22835 52.745213 z"
transform="matrix(0.613545,0.613545,-0.651541,0.651541,-127.5911,-207.2619)"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient1083);stroke-width:1.5377779;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1089" />
<rect
width="1.4153264"
height="2.9310091"
x="-9.0651045"
y="14.978394"
transform="matrix(0.707107,-0.707107,0.707107,0.707107,0.000000,0.000000)"
style="fill:url(#linearGradient1087);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.33259907pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1078" />
<rect
width="1.4686625"
height="2.0691783"
x="8.2835970"
y="-17.159742"
transform="matrix(-0.689574,0.724215,-0.668650,-0.743577,0.000000,0.000000)"
style="fill:url(#linearGradient1085);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.28467178pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1080" />
<rect
width="1.3760998"
height="2.8497746"
x="-8.2051229"
y="15.313398"
transform="matrix(0.727320,-0.686299,0.727320,0.686299,0.000000,0.000000)"
style="fill:url(#linearGradient1087);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.32338102pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="rect1093" />
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

110
pixmaps/userlist/newbie.svg Normal file
View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 5.6024550,5.8992082 L 5.6024550,16.720614 L 17.799951,16.720614 L 17.799951,14.517686 C 18.642953,13.928521 19.324638,12.982768 19.324638,11.657742 C 19.324638,10.332716 18.642953,9.4256112 17.799951,8.8364462 L 17.799951,5.8992082 L 5.6024550,5.8992082 z "
style="fill:#44e704;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path1329" />
<path
d="M 310.68503,54.236767 C 311.27106,54.831541 310.17241,55.320161 309.69647,55.210784 C 308.40672,54.914378 308.21130,53.258102 308.73699,52.259661 C 309.67734,50.473683 312.08630,50.281482 313.65069,51.314716 C 315.94650,52.831027 316.13664,56.079643 314.58110,58.190979 C 312.50780,61.005059 308.39379,61.191022 305.74226,59.106852 C 302.40559,56.484138 302.22487,51.493943 304.84093,48.305448 C 308.00932,44.443754 313.88125,44.268817 317.60490,47.418647 C 320.07424,49.507459 321.35017,52.753471 321.08983,55.963815"
transform="matrix(1.015408,0.000000,0.000000,1.046821,-306.9678,-45.92515)"
style="fill:#44e704;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.4399315;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1330" />
<path
d="M 19.391341,12.983581 C 17.009041,15.301132 20.519011,16.092121 17.782246,17.074763 L 8.8693068,17.168538"
style="fill:#44e704;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2282115;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1331" />
<path
d="M 7.6036177,10.640254 C 6.2693604,8.5099522 9.6443859,7.9109192 10.129759,8.4977562 M 4.1615614,14.971187 C 2.4580597,13.481965 1.4553061,12.047713 1.6437322,9.4915422 C 1.7722789,6.7292222 3.6541491,4.4305522 6.1081613,3.2933912 C 9.3879471,1.6983032 13.191789,2.7460062 15.602060,5.5145812"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.2449100;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1333" />
<path
d="M 14.521722,10.496187 C 15.061797,12.958370 14.510891,13.730650 13.378033,15.535256"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.2449100;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1334" />
<path
d="M 11.957612,10.334997 C 13.306281,12.911391 10.194846,17.157833 6.9057658,16.055205"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#1e5c1e;stroke-width:1.2449100;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1335" />
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,201 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<radialGradient
cx="0.29884115"
cy="0.31566316"
r="0.37779850"
fx="0.30547899"
fy="0.30235189"
id="radialGradient1210"
inkscape:collect="always"
xlink:href="#linearGradient1105" />
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<radialGradient
cx="0.36492822"
cy="0.36232752"
r="0.65115207"
fx="0.37136021"
fy="0.35577169"
id="radialGradient1015"
inkscape:collect="always"
xlink:href="#linearGradient2907" />
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<radialGradient
cx="0.37594351"
cy="0.41496417"
r="0.54327917"
fx="0.38247278"
fy="0.39534050"
id="radialGradient1004"
inkscape:collect="always"
xlink:href="#linearGradient1005" />
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<path
d="M 358.52524 59.871521 A 5.1375728 4.6403885 0 1 0 348.25009,59.871521 A 5.1375728 4.6403885 0 1 0 358.52524 59.871521 z"
transform="matrix(1.105911,0.000000,0.000000,1.224354,-384.5647,-65.95213)"
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.97714454;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1850" />
<path
d="M 358.52524 59.871521 A 5.1375728 4.6403885 0 1 0 348.25009,59.871521 A 5.1375728 4.6403885 0 1 0 358.52524 59.871521 z"
transform="matrix(1.105911,0.000000,0.000000,1.224354,-384.5651,-65.95214)"
style="fill:url(#radialGradient1004);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.97714454;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1318" />
<path
d="M 354.65826 61.363075 A 1.9334952 1.9334952 0 1 0 350.79127,61.363075 A 1.9334952 1.9334952 0 1 0 354.65826 61.363075 z"
transform="matrix(0.976755,0.000000,0.000000,0.978381,-339.5254,-51.43144)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#6497c9;stroke-width:1.2511200;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.74901962;"
id="path1320" />
<g
transform="matrix(0.868224,-0.501269,0.500000,0.866025,-351.5901,112.9847)"
id="g1359">
<path
d="M 360.29300 66.555893 A 2.5411651 2.3754368 0 1 0 355.21067,66.555893 A 2.5411651 2.3754368 0 1 0 360.29300 66.555893 z"
transform="matrix(1.469920,0.000000,0.000000,1.300493,-168.3633,7.042330)"
style="fill:url(#radialGradient1015);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.93501318;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1355" />
<path
d="M 204.17709 91.083618 A 9.3912621 9.6674757 0 1 0 185.39457,91.083618 A 9.3912621 9.6674757 0 1 0 204.17709 91.083618 z"
transform="matrix(0.398204,0.000000,0.000000,0.322125,279.9459,64.25723)"
style="fill:url(#radialGradient1210);fill-opacity:0.75000000;fill-rule:evenodd;stroke:none;stroke-width:3.5494294;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1358" />
</g>
<path
d="M 358.52524 59.871521 A 5.1375728 4.6403885 0 1 0 348.25009,59.871521 A 5.1375728 4.6403885 0 1 0 358.52524 59.871521 z"
transform="matrix(1.105911,0.000000,0.000000,1.224354,-377.0647,-60.95213)"
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.97714454;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1852" />
<path
d="M 358.52524 59.871521 A 5.1375728 4.6403885 0 1 0 348.25009,59.871521 A 5.1375728 4.6403885 0 1 0 358.52524 59.871521 z"
transform="matrix(1.105867,0.000000,0.000000,1.224354,-377.0494,-60.95212)"
style="fill:url(#radialGradient1004);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.97714454;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path1317" />
<path
d="M 354.65826 61.363075 A 1.9334952 1.9334952 0 1 0 350.79127,61.363075 A 1.9334952 1.9334952 0 1 0 354.65826 61.363075 z"
transform="matrix(0.954700,0.000000,0.000000,0.976928,-324.1960,-47.58852)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#6497c9;stroke-width:1.2511200;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:0.74901962;"
id="path1319" />
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

91
pixmaps/userlist/star.svg Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1114">
<defs
id="defs1116">
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
</defs>
<metadata
id="metadata1117">
<rdf:RDF
id="RDF1118">
<cc:Work
rdf:about=""
id="Work1119">
<dc:format
id="format1120">image/svg+xml</dc:format>
<dc:type
id="type1122"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.2566,-49.86218)"
id="g1377">
<path
d="M 160.84388,50.490043 C 158.16790,50.607034 155.52869,51.913796 153.86691,54.004251 C 157.45375,52.080542 158.50627,52.653172 160.12104,52.977978 C 160.86422,53.127465 163.25726,54.277849 163.89118,55.881845 C 164.44124,57.273597 164.02091,59.870049 159.76237,59.970876 C 159.96760,60.393148 161.76806,62.282017 163.52565,62.504815 C 161.80296,62.175187 161.30797,61.505315 161.06552,62.555345 C 159.91356,65.304460 156.01932,64.361159 154.18119,62.991916 C 151.28451,60.834154 151.76944,59.476556 152.23266,62.618726 C 153.41643,66.588716 157.52250,69.541709 161.72386,69.211754 C 166.19724,68.947948 170.27361,65.227410 170.58651,60.752775 C 171.00591,56.321977 167.93122,51.790379 163.48382,50.801035 C 162.61590,50.567918 161.73588,50.451046 160.84388,50.490043 z "
style="fill:#f8e519;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0004182pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;"
id="path3252" />
<path
d="M 166.61204 58.131374 A 0.69053400 0.69053400 0 1 0 165.23097,58.131374 A 0.69053400 0.69053400 0 1 0 166.61204 58.131374 z"
transform="matrix(0.854362,0.299031,-0.598008,1.708568,58.72609,-89.02283)"
style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
id="path3306" />
<path
d="M 160.30313,51.762937 C 162.67464,52.048938 164.82819,53.916044 165.30032,55.739755 C 165.83329,57.798468 165.04335,59.948930 162.49733,60.767913 M 162.14320,63.462867 C 160.32833,66.156740 157.92945,66.184563 154.96762,64.962559"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3312" />
<path
d="M 157.88800,67.113969 C 159.23750,67.935124 160.30522,67.794525 160.97104,67.961754 C 165.44442,67.697948 169.48581,64.602669 169.22602,59.392290 C 169.14588,57.784788 167.95180,54.462612 165.60363,53.197054"
style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#bbbb00;stroke-width:1.0004182pt;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1.0000000;"
id="path3313" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

383
pixmaps/userlist/wizard.svg Normal file
View File

@ -0,0 +1,383 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
x="0.0000000"
y="0.0000000"
width="20.000000"
height="20.000000"
id="svg1">
<defs
id="defs3">
<linearGradient
id="linearGradient1351">
<stop
style="stop-color:#44e704;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1352" />
<stop
style="stop-color:#1e5c1e;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1353" />
</linearGradient>
<linearGradient
id="linearGradient1276">
<stop
style="stop-color:#04ff00;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1277" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="0.50000000"
id="stop1281" />
<stop
style="stop-color:#04ff00;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1279" />
</linearGradient>
<linearGradient
id="linearGradient1243">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1244" />
<stop
style="stop-color:#5f8ebe;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1245" />
<stop
style="stop-color:#3a5775;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1246" />
</linearGradient>
<linearGradient
id="linearGradient1210">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1211" />
<stop
style="stop-color:#ffa619;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1212" />
<stop
style="stop-color:#bb7200;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1213" />
</linearGradient>
<linearGradient
id="linearGradient1206">
<stop
style="stop-color:#ff0000;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1207" />
<stop
style="stop-color:#ff0000;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1208" />
<stop
style="stop-color:#ff0000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1209" />
</linearGradient>
<linearGradient
id="linearGradient1115">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1116" />
<stop
style="stop-color:#000000;stop-opacity:0.062745102;"
offset="0.34999999"
id="stop1117" />
<stop
style="stop-color:#000000;stop-opacity:0.18431373;"
offset="0.69999999"
id="stop1118" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="1.0000000"
id="stop1119" />
</linearGradient>
<linearGradient
id="linearGradient1105">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1106" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.50000000"
id="stop1110" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1109" />
</linearGradient>
<linearGradient
id="linearGradient1100">
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.0000000"
id="stop1101" />
<stop
style="stop-color:#ffffff;stop-opacity:0.62352943;"
offset="0.34999999"
id="stop1102" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1103" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1104" />
</linearGradient>
<linearGradient
id="linearGradient1048">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1049" />
<stop
style="stop-color:#ffffff;stop-opacity:0.74901962;"
offset="0.34999999"
id="stop1050" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25098041;"
offset="0.69999999"
id="stop1051" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop1052" />
</linearGradient>
<linearGradient
id="linearGradient1042">
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="0.0000000"
id="stop1043" />
<stop
style="stop-color:#000000;stop-opacity:0.12549020;"
offset="0.34999999"
id="stop1044" />
<stop
style="stop-color:#000000;stop-opacity:0.37254903;"
offset="0.69999999"
id="stop1045" />
<stop
style="stop-color:#000000;stop-opacity:0.74901962;"
offset="1.0000000"
id="stop1046" />
</linearGradient>
<linearGradient
id="linearGradient1035">
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1036" />
<stop
style="stop-color:#8aa2fc;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1037" />
<stop
style="stop-color:#3a44b3;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1038" />
<stop
style="stop-color:#111464;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1039" />
</linearGradient>
<linearGradient
id="linearGradient1005">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1006" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.34999999"
id="stop1009" />
<stop
style="stop-color:#bfbfbf;stop-opacity:1.0000000;"
offset="0.69999999"
id="stop1008" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1007" />
</linearGradient>
<linearGradient
id="linearGradient1623">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop1624" />
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop1626" />
<stop
style="stop-color:#bbbb00;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop1625" />
</linearGradient>
<linearGradient
id="linearGradient3175">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3176" />
<stop
style="stop-color:#7f7f7f;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3178" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3177" />
</linearGradient>
<linearGradient
id="linearGradient3172">
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3173" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3174" />
</linearGradient>
<linearGradient
id="linearGradient3165">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3166" />
<stop
style="stop-color:#ff7f7f;stop-opacity:1.0000000;"
offset="0.25000000"
id="stop3180" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop3168" />
<stop
style="stop-color:#ff0000;stop-opacity:1.0000000;"
offset="0.75000000"
id="stop3169" />
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3167" />
</linearGradient>
<linearGradient
id="linearGradient3152">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop3153" />
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop3154" />
</linearGradient>
<linearGradient
id="linearGradient2954">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2955" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2956" />
</linearGradient>
<linearGradient
id="linearGradient2946">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2947" />
<stop
style="stop-color:#ffffff;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop2948" />
</linearGradient>
<linearGradient
id="linearGradient2907">
<stop
style="stop-color:#ffff19;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2908" />
<stop
style="stop-color:#705319;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2909" />
</linearGradient>
<linearGradient
x1="0.34868422"
y1="0.74342108"
x2="0.11184210"
y2="0.50000000"
id="linearGradient3149"
inkscape:collect="always"
xlink:href="#linearGradient3175"
spreadMethod="pad" />
<linearGradient
x1="-0.18888889"
y1="0.25000000"
x2="0.92222220"
y2="0.84210527"
id="linearGradient3164"
inkscape:collect="always"
xlink:href="#linearGradient3165" />
<radialGradient
cx="0.29651532"
cy="0.44973168"
r="0.44808188"
fx="0.30226764"
fy="0.45367077"
id="radialGradient3179"
inkscape:collect="always"
xlink:href="#linearGradient3175" />
</defs>
<metadata
id="metadata4">
<rdf:RDF
id="RDF5">
<cc:Work
rdf:about=""
id="Work6">
<dc:format
id="format7">image/svg+xml</dc:format>
<dc:type
id="type9"
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="matrix(0.990854,0.000000,0.000000,0.990711,-126.3339,-47.97486)"
id="g1373">
<path
d="M 133.28125 64.998901 A 2.9296875 1.6210938 0 1 0 127.42188,64.998901 A 2.9296875 1.6210938 0 1 0 133.28125 64.998901 z"
transform="matrix(2.295720,1.768142,-0.610189,0.792257,-124.9777,-219.0142)"
style="fill:url(#radialGradient3179);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.36715820;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3144" />
<path
d="M 130.77344,59.440308 L 133.07812,58.463746 L 144.87500,48.737183 L 147.37500,51.237183 L 144.99219,49.909055 L 139.13281,62.819212 L 138.78125,65.299681 C 138.78125,65.338743 134.13281,64.518435 130.77344,59.440308 z "
style="fill:url(#linearGradient3149);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.62500000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3147" />
<path
d="M 134.51247,56.782032 L 133.03487,58.012331 C 134.15310,60.486423 137.37121,62.433195 139.56918,62.958630 L 140.36116,61.077423 C 138.20884,60.533310 135.78372,59.153083 134.51247,56.782032 z "
style="fill:url(#linearGradient3164);fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.25000000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
id="path3163" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

168
pixmaps/world.svg Normal file
View File

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg1383"
height="20.000000"
width="20.000000"
y="0.0000000"
x="0.0000000"
version="1.0">
<defs
id="defs3">
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2407"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2405"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2099">
<stop
id="stop2101"
offset="0.0000000"
style="stop-color:#babbdc;stop-opacity:1.0000000;" />
<stop
id="stop2103"
offset="0.60000002"
style="stop-color:#9193d5;stop-opacity:1.0000000;" />
<stop
id="stop2105"
offset="1.0000000"
style="stop-color:#6164c4;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2099"
id="radialGradient2403"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
<linearGradient
id="linearGradient2170">
<stop
id="stop2172"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:0.62352943;" />
<stop
id="stop2174"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2389"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<linearGradient
id="linearGradient2156">
<stop
id="stop2158"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:0.0000000;" />
<stop
id="stop2162"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2387"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2183">
<stop
id="stop2185"
offset="0.0000000"
style="stop-color:#dcbbbb;stop-opacity:1.0000000;" />
<stop
id="stop2187"
offset="0.60000002"
style="stop-color:#d59191;stop-opacity:1.0000000;" />
<stop
id="stop2189"
offset="1.0000000"
style="stop-color:#c46161;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2183"
id="radialGradient2385"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
</defs>
<g
id="layer1">
<g
id="g2352"
transform="matrix(3.960176e-2,0.000000,0.000000,3.960176e-2,8.583018e-2,-0.542443)">
<path
id="path2205"
style="fill:url(#radialGradient2403);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2207"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 49.437500,116.68750 C 9.5976600,169.60788 -7.6271960,238.90434 2.9105100,304.39310 C 10.308170,354.10552 33.551850,401.19028 68.005840,437.74812 C 101.74452,473.63467 146.21320,499.26985 194.24680,510.25156 C 199.99153,509.77997 204.92357,504.08065 210.37445,501.55834 C 215.90779,497.67119 223.83362,494.37316 226.03125,487.84375 C 214.71347,483.03902 201.26103,489.57962 190.31449,482.76524 C 183.05001,480.40226 172.18692,473.68002 177.21875,464.71875 C 181.84751,455.69206 188.37504,446.27587 187.84375,435.81250 C 182.27407,432.29351 176.75441,439.84769 171.85169,442.23271 C 163.44133,448.75531 155.02010,439.49404 147.83592,435.54196 C 141.04333,431.13375 133.90750,423.08322 138.65546,414.63331 C 140.43113,409.52457 144.56495,404.72912 145.00000,399.43750 C 132.04760,387.74827 112.42524,381.33455 106.61503,363.19063 C 103.49587,357.85237 108.14552,350.98603 114.32775,353.19001 C 130.59663,356.43830 144.14277,367.19756 159.53125,372.59375 C 159.03403,362.21575 150.46649,353.36290 151.00000,342.90625 C 155.25471,338.23625 163.21295,340.61619 168.81504,338.17213 C 180.29677,335.24106 192.71966,332.03960 202.34375,325.43750 C 197.91139,314.26859 189.38937,305.02268 182.04158,295.62421 C 172.08277,286.05686 164.87883,272.96910 166.22505,258.78312 C 167.59111,251.89486 161.52097,248.10257 155.68750,246.71875 C 147.36821,242.57850 137.13811,240.61477 130.75000,233.56250 C 127.56405,225.44229 132.68058,217.37859 134.65625,209.68750 C 127.81109,194.34143 110.02988,187.49041 94.103600,187.62518 C 85.825620,187.08688 71.951440,187.44949 71.187500,176.34375 C 69.469880,168.39415 71.102430,159.54252 78.320230,154.80574 C 84.761240,148.88834 97.483650,143.82876 93.788660,132.90201 C 88.703610,118.40413 76.709880,106.47826 62.687500,100.50000 C 58.270830,105.89583 53.854170,111.29167 49.437500,116.68750 z " />
<path
id="path2209"
style="opacity:0.24999996;fill:url(#radialGradient2405);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2211"
style="fill:url(#radialGradient2407);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(-97.35587,-100.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2213"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 399.65625,62.656250 C 382.54719,65.809370 363.97591,82.236010 344.21875,117.96875 C 348.41098,131.94283 317.84416,130.43163 304.56250,136.46875 C 294.03305,141.25487 292.40506,151.23182 291.34375,162.90625 C 289.64992,181.53839 312.27807,174.90784 286.03125,188.03125 C 274.43186,193.83095 288.05331,216.68222 279.43750,226.37500 C 268.46058,238.72403 284.65807,245.38859 292.65625,250.18750 C 308.12778,259.47042 324.86886,219.77254 327.03125,211.84375 C 331.91737,193.92794 337.00795,191.37256 345.53125,185.40625 C 355.16461,178.66291 350.37475,208.43658 353.46875,219.78125 C 356.05583,229.26718 347.30719,246.40211 346.84375,251.50000 C 346.16847,258.92820 378.05172,253.87859 345.53125,264.71875 C 338.97503,266.90416 346.08936,273.95213 342.90625,284.56250 C 340.81195,291.54352 334.17822,295.45725 332.31250,305.71875 C 330.62965,314.97443 323.54941,324.44727 319.09375,330.81250 C 314.49539,337.38158 341.49218,341.03906 345.53125,341.40625 C 353.24994,342.10796 363.33867,349.86047 371.96875,353.31250 C 386.54655,359.14361 374.74782,374.74768 371.96875,379.75000 C 366.61834,389.38075 365.35096,412.81610 375.93750,400.90625 C 387.25289,388.17646 407.94039,383.69590 414.28125,367.84375 C 420.27486,352.85972 405.96038,347.20200 399.75000,334.78125 C 392.94162,321.16450 405.78361,313.60281 411.62500,307.03125 C 475.09922,315.11177 404.24911,360.92665 448.65625,359.90625 C 455.23268,356.25268 452.86072,283.91891 460.56250,283.21875 C 469.26117,282.42797 488.86303,287.73014 501.84375,288.34375 C 502.47868,281.04649 502.87500,273.67982 502.87500,266.21875 C 502.87500,182.69263 462.20861,108.63106 399.65625,62.656250 z " />
<path
id="path2215"
style="fill:#18551f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 135.32722,110.03897 C 121.98710,120.71107 152.08415,135.15817 159.12436,135.15817 C 180.96110,135.15817 190.38957,140.12381 194.82006,117.97135 C 197.74779,103.33269 216.13712,99.812010 223.90545,95.496280 C 232.84080,90.532190 224.93446,74.879410 227.87163,65.088830 C 232.15017,50.827040 213.12453,51.331700 205.39656,49.224070 C 189.97641,45.018570 178.92989,58.503920 171.02292,66.410890 C 164.35819,73.075620 149.22800,70.105020 141.93754,73.021210 C 126.36521,79.250140 155.35654,86.241830 161.76848,86.241830 C 175.52283,83.597700 146.88983,100.78888 135.32722,110.03897 z " />
<path
id="path2217"
style="opacity:0.099999972;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 48.187500,124.40625 C -1.6207600,190.56969 -13.978323,282.87199 17.061220,359.72647 C 45.173010,431.33820 108.99006,488.71895 184.04223,506.50276 C 192.51780,509.02061 199.09197,500.95210 206.03285,497.26410 C 207.81574,494.65005 195.65768,496.82064 191.70916,495.07030 C 181.71784,493.32843 170.39424,489.08779 165.71875,479.34375 C 160.37898,468.30241 171.08569,459.31509 174.05637,449.35193 C 174.19270,446.36595 166.58063,453.68019 162.92103,453.77971 C 153.25451,456.30241 145.14979,448.17720 137.37784,443.68475 C 127.72164,437.44422 121.62953,424.16910 128.41304,413.67460 C 132.57168,408.29626 132.27474,403.55922 125.50063,400.97969 C 112.16569,391.68729 96.881990,381.45420 93.916170,364.16335 C 92.510810,353.38952 106.59067,347.62877 114.88882,352.84504 C 125.12373,355.88026 134.30336,361.42984 144.03125,365.68750 C 141.05661,358.45086 135.93602,348.03258 142.49324,341.47261 C 152.70468,335.90215 165.03357,337.03535 175.60779,332.16962 C 179.36902,330.54499 186.85772,329.57638 187.86265,326.15458 C 177.52178,306.86016 156.08045,293.01972 154.39657,269.58757 C 154.51617,264.46394 154.76014,257.60868 148.25153,256.59640 C 137.09561,251.36225 120.80599,248.33845 117.81250,234.31250 C 116.76895,227.02308 121.90199,219.97546 121.21549,213.14418 C 111.90553,198.11962 92.413510,197.54866 76.656250,196.78125 C 65.970910,195.62856 57.235050,185.95527 58.647090,175.00645 C 57.974580,162.52727 67.873420,153.19094 77.613480,147.14427 C 82.764790,143.79110 83.101260,137.23780 79.128590,132.86860 C 74.583390,123.95207 66.930840,116.87622 58.156250,112.18750 C 54.833330,116.26042 51.510420,120.33333 48.187500,124.40625 z " />
<path
id="path2219"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 399.37500,70.093750 C 378.29141,80.086930 364.72487,100.70788 354.20936,120.52866 C 353.54971,132.87632 338.98983,135.47392 329.25510,137.47334 C 319.33904,139.48865 305.10504,140.60223 303.10159,153.00100 C 300.88136,160.28952 300.24041,169.50025 307.00000,174.59375 C 311.74293,183.44393 301.30223,189.41807 294.53125,192.40625 C 287.43904,198.49610 293.62889,208.51152 292.31906,216.40610 C 293.44124,223.41168 287.01197,228.87655 286.62500,235.18750 C 289.61107,240.51338 296.32367,243.57831 301.93679,244.89706 C 310.40467,242.68375 313.71627,232.88257 318.43750,226.37500 C 326.31132,210.65509 328.73782,189.78081 345.89502,180.88085 C 352.80806,175.61900 360.86666,182.13224 361.56250,189.62500 C 361.77949,201.78476 363.24024,213.92725 363.36635,226.08849 C 363.80310,234.50241 359.13324,241.77081 357.90625,249.75000 C 363.21804,250.01381 371.15411,253.44787 369.40625,260.31250 C 366.43351,266.61567 358.54840,267.05580 353.03125,270.00000 C 355.05234,280.86303 351.24782,291.82104 344.88544,300.47050 C 340.45931,310.86159 337.52199,322.30876 330.12500,331.00000 C 340.60124,334.85022 352.97436,334.77049 363.35368,339.97934 C 372.19442,345.51028 385.29528,348.26033 388.62062,359.45184 C 390.35779,372.21800 379.28802,382.23593 377.81250,394.53125 C 388.27941,384.30020 404.25153,379.87559 411.73404,366.79806 C 417.15865,356.81953 405.91795,349.69951 401.46737,342.06510 C 393.55808,333.15402 394.91462,319.32929 403.13220,311.11574 C 407.95921,306.11871 413.93296,299.01026 421.68561,302.25164 C 435.22896,303.19276 450.88128,312.82483 449.53125,328.09375 C 448.83115,336.51118 443.23641,344.00746 443.81250,352.56250 C 448.83380,356.72366 450.77585,349.70056 450.01113,345.75989 C 452.99959,324.39633 451.01999,302.02173 458.25000,281.46875 C 466.01067,272.90788 477.96689,279.58417 487.58569,279.80942 C 493.09157,279.85509 502.84925,285.04161 500.50923,275.60079 C 504.07415,198.78507 468.47279,121.54970 408.28591,73.819440 C 405.84158,71.817640 402.79052,68.517350 399.37500,70.093750 z " />
<path
id="path2221"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 196.03125,52.906250 C 182.00437,57.216240 175.15670,74.984920 159.18750,74.812500 C 151.16243,74.846220 147.23312,76.198190 157.48405,77.439620 C 162.27451,78.713660 169.80722,75.918110 170.87803,82.654960 C 172.32034,91.697580 161.43665,95.747350 155.74416,100.54906 C 149.86694,104.68076 143.92700,108.77405 138.71875,113.75000 C 141.15812,121.11726 150.07831,123.83205 156.71540,126.12510 C 165.40474,127.98036 175.16304,128.43926 183.50914,125.87681 C 190.54103,118.43112 189.02421,105.44226 198.57500,99.722680 C 205.09564,93.401230 216.48303,93.057250 221.56332,85.691980 C 222.94075,76.913280 220.18862,68.050720 221.90625,59.281250 C 217.78697,53.226760 208.89717,55.022290 202.62390,52.950740 C 200.44632,52.459090 198.23369,52.885700 196.03125,52.906250 z " />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

126
pixmaps/world_activity.svg Normal file
View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg1383"
height="20.000000"
width="20.000000"
y="0.0000000"
x="0.0000000"
version="1.0">
<defs
id="defs3">
<linearGradient
id="linearGradient2170">
<stop
id="stop2172"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:0.62352943;" />
<stop
id="stop2174"
offset="1.0000000"
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2170"
id="radialGradient2389"
fy="261.72299"
fx="239.48222"
r="54.908401"
cy="273.33273"
cx="253.91165" />
<linearGradient
id="linearGradient2156">
<stop
id="stop2158"
offset="0.0000000"
style="stop-color:#000000;stop-opacity:0.0000000;" />
<stop
id="stop2162"
offset="1.0000000"
style="stop-color:#000000;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2156"
id="radialGradient2387"
fy="473.60248"
fx="421.29236"
r="225.21623"
cy="354.60162"
cx="317.40088" />
<linearGradient
id="linearGradient2183">
<stop
id="stop2185"
offset="0.0000000"
style="stop-color:#dcbbbb;stop-opacity:1.0000000;" />
<stop
id="stop2187"
offset="0.60000002"
style="stop-color:#d59191;stop-opacity:1.0000000;" />
<stop
id="stop2189"
offset="1.0000000"
style="stop-color:#c46161;stop-opacity:1.0000000;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient2183"
id="radialGradient2385"
fy="247.21059"
fx="213.50940"
r="252.51404"
cy="374.91882"
cx="360.68903" />
</defs>
<g
id="layer1">
<g
id="g2374"
transform="matrix(3.960176e-2,0.000000,0.000000,3.960176e-2,-20.50708,-21.13536)">
<path
id="path2263"
style="fill:url(#radialGradient2385);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2265"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 569.43750,636.68750 C 529.59766,689.60788 512.37280,758.90434 522.91051,824.39310 C 530.30817,874.10552 553.55185,921.19028 588.00584,957.74812 C 621.74452,993.63467 666.21320,1019.2699 714.24680,1030.2516 C 719.99153,1029.7800 724.92357,1024.0806 730.37445,1021.5583 C 735.90779,1017.6712 743.83362,1014.3732 746.03125,1007.8438 C 734.71347,1003.0390 721.26103,1009.5796 710.31449,1002.7652 C 703.05001,1000.4023 692.18692,993.68002 697.21875,984.71875 C 701.84751,975.69206 708.37504,966.27587 707.84375,955.81250 C 702.27407,952.29351 696.75441,959.84769 691.85169,962.23271 C 683.44133,968.75531 675.02010,959.49404 667.83592,955.54196 C 661.04333,951.13375 653.90750,943.08322 658.65546,934.63331 C 660.43113,929.52457 664.56495,924.72912 665.00000,919.43750 C 652.04760,907.74827 632.42524,901.33455 626.61503,883.19063 C 623.49587,877.85237 628.14552,870.98603 634.32775,873.19001 C 650.59663,876.43830 664.14277,887.19756 679.53125,892.59375 C 679.03403,882.21575 670.46649,873.36290 671.00000,862.90625 C 675.25471,858.23625 683.21295,860.61619 688.81504,858.17213 C 700.29677,855.24106 712.71966,852.03960 722.34375,845.43750 C 717.91139,834.26859 709.38937,825.02268 702.04158,815.62421 C 692.08277,806.05686 684.87883,792.96910 686.22505,778.78312 C 687.59111,771.89486 681.52097,768.10257 675.68750,766.71875 C 667.36821,762.57850 657.13811,760.61477 650.75000,753.56250 C 647.56405,745.44229 652.68058,737.37859 654.65625,729.68750 C 647.81109,714.34143 630.02988,707.49041 614.10360,707.62518 C 605.82562,707.08688 591.95144,707.44949 591.18750,696.34375 C 589.46988,688.39415 591.10243,679.54252 598.32023,674.80574 C 604.76124,668.88834 617.48365,663.82876 613.78866,652.90201 C 608.70361,638.40413 596.70988,626.47826 582.68750,620.50000 C 578.27083,625.89583 573.85417,631.29167 569.43750,636.68750 z " />
<path
id="path2267"
style="opacity:0.24999996;fill:url(#radialGradient2387);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2269"
style="fill:url(#radialGradient2389);fill-opacity:1.0000000;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
transform="translate(422.6441,420.0000)"
d="M 600.21661 366.21146 A 252.51404 252.51404 0 1 1 95.188538,366.21146 A 252.51404 252.51404 0 1 1 600.21661 366.21146 z" />
<path
id="path2271"
style="fill:#18551f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 919.65625,582.65625 C 902.54719,585.80937 883.97591,602.23601 864.21875,637.96875 C 868.41098,651.94283 837.84416,650.43163 824.56250,656.46875 C 814.03305,661.25487 812.40506,671.23182 811.34375,682.90625 C 809.64992,701.53839 832.27807,694.90784 806.03125,708.03125 C 794.43186,713.83095 808.05331,736.68222 799.43750,746.37500 C 788.46058,758.72403 804.65807,765.38859 812.65625,770.18750 C 828.12778,779.47042 844.86886,739.77254 847.03125,731.84375 C 851.91737,713.92794 857.00795,711.37256 865.53125,705.40625 C 875.16461,698.66291 870.37475,728.43658 873.46875,739.78125 C 876.05583,749.26718 867.30719,766.40211 866.84375,771.50000 C 866.16847,778.92820 898.05172,773.87859 865.53125,784.71875 C 858.97503,786.90416 866.08936,793.95213 862.90625,804.56250 C 860.81195,811.54352 854.17822,815.45725 852.31250,825.71875 C 850.62965,834.97443 843.54941,844.44727 839.09375,850.81250 C 834.49539,857.38158 861.49218,861.03906 865.53125,861.40625 C 873.24994,862.10796 883.33867,869.86047 891.96875,873.31250 C 906.54655,879.14361 894.74782,894.74768 891.96875,899.75000 C 886.61834,909.38075 885.35096,932.81610 895.93750,920.90625 C 907.25289,908.17646 927.94039,903.69590 934.28125,887.84375 C 940.27486,872.85972 925.96038,867.20200 919.75000,854.78125 C 912.94162,841.16450 925.78361,833.60281 931.62500,827.03125 C 995.09922,835.11177 924.24911,880.92665 968.65625,879.90625 C 975.23268,876.25268 972.86072,803.91891 980.56250,803.21875 C 989.26117,802.42797 1008.8630,807.73014 1021.8438,808.34375 C 1022.4787,801.04649 1022.8750,793.67982 1022.8750,786.21875 C 1022.8750,702.69263 982.20861,628.63106 919.65625,582.65625 z " />
<path
id="path2273"
style="fill:#18551f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 655.32722,630.03897 C 641.98710,640.71107 672.08415,655.15817 679.12436,655.15817 C 700.96110,655.15817 710.38957,660.12381 714.82006,637.97135 C 717.74779,623.33269 736.13712,619.81201 743.90545,615.49628 C 752.84080,610.53219 744.93446,594.87941 747.87163,585.08883 C 752.15017,570.82704 733.12453,571.33170 725.39656,569.22407 C 709.97641,565.01857 698.92989,578.50392 691.02292,586.41089 C 684.35819,593.07562 669.22800,590.10502 661.93754,593.02121 C 646.36521,599.25014 675.35654,606.24183 681.76848,606.24183 C 695.52283,603.59770 666.88983,620.78888 655.32722,630.03897 z " />
<path
id="path2275"
style="opacity:0.099999972;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 568.18750,644.40625 C 518.37924,710.56969 506.02168,802.87199 537.06122,879.72647 C 565.17301,951.33820 628.99006,1008.7189 704.04223,1026.5028 C 712.51780,1029.0206 719.09197,1020.9521 726.03285,1017.2641 C 727.81574,1014.6500 715.65768,1016.8206 711.70916,1015.0703 C 701.71784,1013.3284 690.39424,1009.0878 685.71875,999.34375 C 680.37898,988.30241 691.08569,979.31509 694.05637,969.35193 C 694.19270,966.36595 686.58063,973.68019 682.92103,973.77971 C 673.25451,976.30241 665.14979,968.17720 657.37784,963.68475 C 647.72164,957.44422 641.62953,944.16910 648.41304,933.67460 C 652.57168,928.29626 652.27474,923.55922 645.50063,920.97969 C 632.16569,911.68729 616.88199,901.45420 613.91617,884.16335 C 612.51081,873.38952 626.59067,867.62877 634.88882,872.84504 C 645.12373,875.88026 654.30336,881.42984 664.03125,885.68750 C 661.05661,878.45086 655.93602,868.03258 662.49324,861.47261 C 672.70468,855.90215 685.03357,857.03535 695.60779,852.16962 C 699.36902,850.54499 706.85772,849.57638 707.86265,846.15458 C 697.52178,826.86016 676.08045,813.01972 674.39657,789.58757 C 674.51617,784.46394 674.76014,777.60868 668.25153,776.59640 C 657.09561,771.36225 640.80599,768.33845 637.81250,754.31250 C 636.76895,747.02308 641.90199,739.97546 641.21549,733.14418 C 631.90553,718.11962 612.41351,717.54866 596.65625,716.78125 C 585.97091,715.62856 577.23505,705.95527 578.64709,695.00645 C 577.97458,682.52727 587.87342,673.19094 597.61348,667.14427 C 602.76479,663.79110 603.10126,657.23780 599.12859,652.86860 C 594.58339,643.95207 586.93084,636.87622 578.15625,632.18750 C 574.83333,636.26042 571.51042,640.33333 568.18750,644.40625 z " />
<path
id="path2277"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;stroke:none;stroke-width:0.35230049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 919.37500,590.09375 C 898.29141,600.08693 884.72487,620.70788 874.20936,640.52866 C 873.54971,652.87632 858.98983,655.47392 849.25510,657.47334 C 839.33904,659.48865 825.10504,660.60223 823.10159,673.00100 C 820.88136,680.28952 820.24041,689.50025 827.00000,694.59375 C 831.74293,703.44393 821.30223,709.41807 814.53125,712.40625 C 807.43904,718.49610 813.62889,728.51152 812.31906,736.40610 C 813.44124,743.41168 807.01197,748.87655 806.62500,755.18750 C 809.61107,760.51338 816.32367,763.57831 821.93679,764.89706 C 830.40467,762.68375 833.71627,752.88257 838.43750,746.37500 C 846.31132,730.65509 848.73782,709.78081 865.89502,700.88085 C 872.80806,695.61900 880.86666,702.13224 881.56250,709.62500 C 881.77949,721.78476 883.24024,733.92725 883.36635,746.08849 C 883.80310,754.50241 879.13324,761.77081 877.90625,769.75000 C 883.21804,770.01381 891.15411,773.44787 889.40625,780.31250 C 886.43351,786.61567 878.54840,787.05580 873.03125,790.00000 C 875.05234,800.86303 871.24782,811.82104 864.88544,820.47050 C 860.45931,830.86159 857.52199,842.30876 850.12500,851.00000 C 860.60124,854.85022 872.97436,854.77049 883.35368,859.97934 C 892.19442,865.51028 905.29528,868.26033 908.62062,879.45184 C 910.35779,892.21800 899.28802,902.23593 897.81250,914.53125 C 908.27941,904.30020 924.25153,899.87559 931.73404,886.79806 C 937.15865,876.81953 925.91795,869.69951 921.46737,862.06510 C 913.55808,853.15402 914.91462,839.32929 923.13220,831.11574 C 927.95921,826.11871 933.93296,819.01026 941.68561,822.25164 C 955.22896,823.19276 970.88128,832.82483 969.53125,848.09375 C 968.83115,856.51118 963.23641,864.00746 963.81250,872.56250 C 968.83380,876.72366 970.77585,869.70056 970.01113,865.75989 C 972.99959,844.39633 971.01999,822.02173 978.25000,801.46875 C 986.01067,792.90788 997.96689,799.58417 1007.5857,799.80942 C 1013.0916,799.85509 1022.8492,805.04161 1020.5092,795.60079 C 1024.0741,718.78507 988.47279,641.54970 928.28591,593.81944 C 925.84158,591.81764 922.79052,588.51735 919.37500,590.09375 z " />
<path
id="path2279"
style="opacity:0.20000000;fill:#18001f;fill-opacity:0.62352943;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
d="M 716.03125,572.90625 C 702.00437,577.21624 695.15670,594.98492 679.18750,594.81250 C 671.16243,594.84622 667.23312,596.19819 677.48405,597.43962 C 682.27451,598.71366 689.80722,595.91811 690.87803,602.65496 C 692.32034,611.69758 681.43665,615.74735 675.74416,620.54906 C 669.86694,624.68076 663.92700,628.77405 658.71875,633.75000 C 661.15812,641.11726 670.07831,643.83205 676.71540,646.12510 C 685.40474,647.98036 695.16304,648.43926 703.50914,645.87681 C 710.54103,638.43112 709.02421,625.44226 718.57500,619.72268 C 725.09564,613.40123 736.48303,613.05725 741.56332,605.69198 C 742.94075,596.91328 740.18862,588.05072 741.90625,579.28125 C 737.78697,573.22676 728.89717,575.02229 722.62390,572.95074 C 720.44632,572.45909 718.23369,572.88570 716.03125,572.90625 z " />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

7
po/ChangeLog Normal file
View File

@ -0,0 +1,7 @@
2004-13-12 Jesse van den Kieboom <jesse@icecrew.nl>
* Added/Fixed Dutch (nl) translations
2004-09-10 Jesse van den Kieboom <troplosti@orcaweb.cjb.net>
* Added Dutch (nl) translations

256
po/Makefile.in.in Normal file
View File

@ -0,0 +1,256 @@
# Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
#
# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
# instead of PACKAGE and to look for po2tbl in ./ not in intl/
#
# - Modified by jacob berkman <jacob@ximian.com> to install
# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
PACKAGE = @PACKAGE@
VERSION = @VERSION@
SHELL = /bin/sh
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = ..
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
datadir = @datadir@
libdir = @libdir@
localedir = $(libdir)/locale
gnulocaledir = $(datadir)/locale
gettextsrcdir = $(datadir)/glib-2.0/gettext/po
subdir = po
install_sh = @install_sh@
mkdir_p = @mkdir_p@
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
CC = @CC@
GENCAT = @GENCAT@
GMSGFMT = @GMSGFMT@
MSGFMT = @MSGFMT@
XGETTEXT = @XGETTEXT@
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
DEFS = @DEFS@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
SOURCES =
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = ChangeLog Makefile.in.in POTFILES.in \
$(POFILES) $(GMOFILES) $(SOURCES)
POTFILES = \
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
INSTOBJEXT = @INSTOBJEXT@
.SUFFIXES:
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
.c.o:
$(COMPILE) $<
.po.pox:
$(MAKE) $(GETTEXT_PACKAGE).pot
$(MSGMERGE) $< $(top_builddir)/po/$(GETTEXT_PACKAGE).pot -o $*pox
.po.mo:
$(MSGFMT) -o $@ $<
.po.gmo:
file=`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && $(GMSGFMT) -o $$file $<
.po.cat:
sed -f ../intl/po2msg.sed < $< > $*.msg \
&& rm -f $@ && $(GENCAT) $@ $*.msg
all: all-@USE_NLS@
all-yes: $(CATALOGS)
all-no:
$(GETTEXT_PACKAGE).pot: $(POTFILES)
$(GENPOT)
install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
install-data-no: all
install-data-yes: all
if test -n "$(MKINSTALLDIRS)"; then \
$(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
else \
$(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
fi
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
case "$$cat" in \
*.gmo) destdir=$(gnulocaledir);; \
*) destdir=$(localedir);; \
esac; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
if test -n "$(MKINSTALLDIRS)"; then \
$(MKINSTALLDIRS) $$dir; \
else \
$(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
fi; \
if test -r $$cat; then \
$(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
else \
$(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
fi; \
if test -r $$cat.m; then \
$(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
else \
if test -r $(srcdir)/$$cat.m ; then \
$(INSTALL_DATA) $(srcdir)/$$cat.m \
$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
echo "installing $(srcdir)/$$cat as" \
"$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
else \
true; \
fi; \
fi; \
done
if test "$(PACKAGE)" = "glib"; then \
if test -n "$(MKINSTALLDIRS)"; then \
$(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
else \
$(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
fi; \
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \
$(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
else \
: ; \
fi
# Define this as empty until I found a useful application.
installcheck:
uninstall:
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
done
if test "$(PACKAGE)" = "glib"; then \
rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
fi
check: all
dvi info tags TAGS ID:
mostlyclean:
rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
rm -fr *.o
rm -f .intltool-merge-cache
clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f $(GMOFILES)
distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
dist distdir: $(DISTFILES) $(GETTEXT_PACKAGE).pot
dists="$(DISTFILES)"; \
for file in $$dists; do \
ln $(srcdir)/$$file $(distdir) 2> /dev/null \
|| cp -p $(srcdir)/$$file $(distdir); \
done
update-po: Makefile
$(MAKE) $(GETTEXT_PACKAGE).pot
tmpdir=`pwd`; \
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
echo "$$lang:"; \
result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
if $$result; then \
if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
:; \
else \
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
rm -f $$tmpdir/$$lang.new.po; \
exit 1; \
fi; \
fi; \
else \
echo "msgmerge for $$cat failed!"; \
rm -f $$tmpdir/$$lang.new.po; \
fi; \
done
# POTFILES is created from POTFILES.in by stripping comments, empty lines
# and Intltool tags (enclosed in square brackets), and appending a full
# relative path to them
POTFILES: POTFILES.in
( if test 'x$(srcdir)' != 'x.'; then \
posrcprefix='$(top_srcdir)/'; \
else \
posrcprefix="../"; \
fi; \
rm -f $@-t $@ \
&& (sed -e '/^#/d' \
-e "s/^\[.*\] +//" \
-e '/^[ ]*$$/d' \
-e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
| sed -e '$$s/\\$$//') > $@-t \
&& chmod a-w $@-t \
&& mv $@-t $@ )
Makefile: Makefile.in.in ../config.status POTFILES
cd .. \
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
$(SHELL) ./config.status
# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

21
po/POTFILES.in Normal file
View File

@ -0,0 +1,21 @@
# List of source files containing translatable strings.
src/gm-app.c
src/gm-app-view.c
src/gm-net.c
src/gm-scripts.c
src/gm-scripts-dialog.c
src/gm-triggers-dialog.c
src/gm-world.c
src/gm-world-info-dialog.c
src/gm-world-logs-dialog.c
src/gm-world-properties-dialog.c
src/gm-worlds-list-dialog.c
src/gm-world-view.c
src/gm-ui.h
ui/gm-scripts.glade
ui/gm-preferences.glade
ui/gm-worlds-list.glade
ui/gm-world-properties.glade
ui/gm-triggers.glade
ui/gm-world.glade

BIN
po/nl.gmo Normal file

Binary file not shown.

973
po/nl.po Normal file
View File

@ -0,0 +1,973 @@
# GnoeMoe Gnome MOO Client.
# Copyright (C) 2004
# This file is distributed under the same license as the gnoemoe package.
# Jesse van den Kieboom, 2004.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: gnoemoe 0.8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-10-08 14:41+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Jesse van den Kieboom <jesse@icecrew.nl>\n"
"Language-Team: Dutch <NL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../src/gm-app.c:43
msgid ""
"Enable debugging. Debugging can be done in different depth levels, each "
"level inherits all messages from the levels below: 0 = None, 1 = Default and "
"2 = MCP"
msgstr ""
"Activeer debugging. Je kunt op verschillende niveau's debuggen, elk niveau "
"erft alle berichten van de niveau's eronder: 0 = None, 1 = Default en 2 = MCP"
#: ../src/gm-app.c:46
msgid "DBGGLEVEL"
msgstr "DBGNIVEAU"
#: ../src/gm-app.c:54
msgid "Show application version"
msgstr "Toon applicatie versie"
#: ../src/gm-app.c:62
msgid "Load specified worlds, seperated by a `,'"
msgstr "Laad gespecificeerde werelden, gescheiden door een `,'"
#: ../src/gm-app.c:63
msgid "WORLDS"
msgstr "WERELDEN"
#: ../src/gm-app.c:70
msgid "Recover from previous session (used with gnome session)"
msgstr ""
"Herstel van de vorige opgeslagen sessie (wordt gebruikt door gnome sessies)"
#: ../src/gm-app.c:419
#, c-format
msgid ""
"GnoeMoe Application: there is no application directory, this is very bad!!!\n"
msgstr "GnoeMoe Applicatie: er is geen applicatie map, dit is heel erg!!!\n"
#: ../src/gm-app.c:437
#, c-format
msgid "Current version of GnoeMoe is %s\n"
msgstr "Huidige versie van GnoeMoe is %s\n"
#: ../src/gm-app-view.c:213
msgid "Find:"
msgstr "Zoek: "
#: ../src/gm-app-view.c:219
msgid "Search backwards"
msgstr "Zoek achterwaarts"
#: ../src/gm-app-view.c:232 ../src/gm-ui.h:70
msgid "Find next"
msgstr "Zoek volgende"
#. File menu
#: ../src/gm-app-view.c:521 ../src/gm-ui.h:49
msgid "Connect"
msgstr "Verbinden"
#: ../src/gm-app-view.c:524
msgid "Disconnect"
msgstr "Verbinding verbreken"
#: ../src/gm-app-view.c:740
msgid "Open world "
msgstr "Open wereld "
#: ../src/gm-app-view.c:1210
msgid "Jesse van den Kieboom"
msgstr ""
#: ../src/gm-app-view.c:1211
msgid "Sjoerd Simons (debian package)"
msgstr "Sjoerd Simons (debian pakket)"
#: ../src/gm-app-view.c:1216
msgid "Simon Gijsen"
msgstr ""
#: ../src/gm-app-view.c:1223
msgid "GnoeMoe"
msgstr ""
#: ../src/gm-app-view.c:1225
msgid "(C) 2004-2005 Icecrew.nl"
msgstr ""
#: ../src/gm-app-view.c:1226
msgid "GnoeMoe Gnome MOO Client"
msgstr ""
#: ../src/gm-app-view.c:1385
msgid "You didn't select a log file"
msgstr "Je hebt geen log bestand geselecteerd"
#: ../src/gm-net.c:184
#, c-format
msgid "Connection lost... (%s)"
msgstr "Connectie verloren... (%s)"
#: ../src/gm-net.c:395
msgid "No addresses available"
msgstr "Geen adressen beschikbaar"
#: ../src/gm-net.c:439
msgid "Not connected"
msgstr "Niet verbonden"
#: ../src/gm-net.c:535
msgid "Connect timeout (5)"
msgstr "Verbinden timeout (5)"
#: ../src/gm-scripts.c:316
#, c-format
msgid "Error in execution: %s"
msgstr "Error bij het uitvoeren van: %s"
#: ../src/gm-scripts.c:323
msgid "Ruby backtrace:"
msgstr ""
#: ../src/gm-scripts.c:329
#, c-format
msgid "\tfrom %s"
msgstr "\tuit %s"
#: ../src/gm-scripts.c:388
#, c-format
msgid "Run script '%s' from '%s' (%s)"
msgstr "Script '%s' uit '%s' (%s) uitvoeren"
#: ../src/gm-scripts.c:392
#, c-format
msgid "Run script '%s' from '%s' ()"
msgstr "Script '%s' uit '%s' () uitvoeren"
#: ../src/gm-scripts.c:436
#, c-format
msgid "Registering functions from '%s'"
msgstr "Functies registreren uit '%s'"
#: ../src/gm-scripts.c:492
#, c-format
msgid "File `%s' already loaded"
msgstr "Bestand `%s' is al toegevoegd"
#: ../src/gm-scripts.c:502
#, c-format
msgid "File `%s' added"
msgstr "Bestand `%s' toegevoegd"
#: ../src/gm-scripts.c:806
#, c-format
msgid "Register function '%s' from '%s'"
msgstr "Registreer functie '%s' uit '%s"
#: ../src/gm-scripts.c:814
#, c-format
msgid "Script '%s' is already defined"
msgstr "Script '%s' is al gedefinieerd"
#: ../src/gm-scripts-dialog.c:133
msgid "Saved "
msgstr "Opgeslagen "
#: ../src/gm-scripts-dialog.c:146
msgid "Saving failed: "
msgstr "Opslaan mislukt: "
#: ../src/gm-scripts-dialog.c:190
msgid "Loaded "
msgstr "Ingeladen "
#: ../src/gm-scripts-dialog.c:201 ../src/gm-scripts-dialog.c:597
msgid "New <untitled>"
msgstr "Nieuw <naamloos>"
#: ../src/gm-scripts-dialog.c:294
msgid "<b>User:</b> "
msgstr "<b>Gebruiker:</b>"
#: ../src/gm-scripts-dialog.c:296
msgid "<b>Share:</b> "
msgstr "<b>Gedeeld:</b>"
#: ../src/gm-scripts-dialog.c:330 ../src/gm-ui.h:38 ../ui/gm-scripts.glade.h:4
msgid "Scripts"
msgstr ""
#: ../src/gm-scripts-dialog.c:393 ../src/gm-scripts-dialog.c:665
msgid "Share"
msgstr "Gedeeld"
#: ../src/gm-scripts-dialog.c:396
msgid "User"
msgstr "Gebruiker"
#: ../src/gm-scripts-dialog.c:437
msgid "Filename"
msgstr "Bestandsnaam"
#: ../src/gm-scripts-dialog.c:729
msgid "Changed "
msgstr "Veranderd "
#: ../src/gm-scripts-dialog.c:731
msgid "Changed <untitled>"
msgstr "Veranderd <niet opgeslagen>"
#: ../src/gm-scripts-dialog.c:758
msgid "Save file"
msgstr "Bestand opslaan"
#: ../src/gm-triggers-dialog.c:104 ../ui/gm-preferences.glade.h:3
msgid "Black"
msgstr "Zwart"
#: ../src/gm-triggers-dialog.c:105 ../ui/gm-preferences.glade.h:27
msgid "Red"
msgstr "Rood"
#: ../src/gm-triggers-dialog.c:106 ../ui/gm-preferences.glade.h:19
msgid "Green"
msgstr "Groen"
#: ../src/gm-triggers-dialog.c:107 ../ui/gm-preferences.glade.h:35
msgid "Yellow"
msgstr "Geel"
#: ../src/gm-triggers-dialog.c:108 ../ui/gm-preferences.glade.h:5
msgid "Blue"
msgstr "Blauw"
#: ../src/gm-triggers-dialog.c:109 ../ui/gm-preferences.glade.h:25
msgid "Purple"
msgstr "Paars"
#: ../src/gm-triggers-dialog.c:110 ../ui/gm-preferences.glade.h:9
msgid "Cyan"
msgstr "Cyaan"
#: ../src/gm-triggers-dialog.c:111 ../ui/gm-preferences.glade.h:33
msgid "White"
msgstr "Wit"
#: ../src/gm-triggers-dialog.c:116
msgid "Contains"
msgstr "Bevat:"
#: ../src/gm-triggers-dialog.c:117
msgid "Not contains"
msgstr "Bevat niet"
#: ../src/gm-triggers-dialog.c:118
msgid "Begins with"
msgstr "Begint met"
#: ../src/gm-triggers-dialog.c:119
msgid "Not begins with"
msgstr "Begint niet met"
#: ../src/gm-triggers-dialog.c:120
msgid "Ends with"
msgstr "Eindigt met"
#: ../src/gm-triggers-dialog.c:121
msgid "Not ends with"
msgstr "Eindigt niet met"
#: ../src/gm-triggers-dialog.c:122
msgid "Matches"
msgstr "Matched"
#: ../src/gm-triggers-dialog.c:123
msgid "Not matches"
msgstr "Matched niet"
#: ../src/gm-triggers-dialog.c:128
msgid "Online"
msgstr "Verbonden"
#: ../src/gm-triggers-dialog.c:129
msgid "Offline"
msgstr "Niet verbonden"
#: ../src/gm-triggers-dialog.c:130
msgid "Idle"
msgstr "Luieren"
#: ../src/gm-triggers-dialog.c:131
msgid "No longer idle"
msgstr "Niet langer inactief"
#: ../src/gm-triggers-dialog.c:132
msgid "Away"
msgstr "Afwezig"
#: ../src/gm-triggers-dialog.c:133
msgid "No longer away"
msgstr "Niet langer afwezig"
#: ../src/gm-triggers-dialog.c:138
msgid "Highlight line"
msgstr "Markeer regel"
#: ../src/gm-triggers-dialog.c:140
msgid "Highlight match"
msgstr "Markeer match"
#: ../src/gm-triggers-dialog.c:142 ../src/gm-triggers-dialog.c:156
msgid "Beep"
msgstr "Beep"
#: ../src/gm-triggers-dialog.c:143 ../src/gm-triggers-dialog.c:157
msgid "Play sound"
msgstr "Geluid afspelen"
#: ../src/gm-triggers-dialog.c:145 ../src/gm-triggers-dialog.c:159
msgid "Notify"
msgstr "Notificeren"
#: ../src/gm-triggers-dialog.c:147 ../src/gm-triggers-dialog.c:161
msgid "Run script"
msgstr "Script uitvoeren"
#: ../src/gm-triggers-dialog.c:150 ../src/gm-triggers-dialog.c:164
msgid "Run"
msgstr "Uitvoeren"
#: ../src/gm-triggers-dialog.c:329
msgid "Please fill in a trigger name"
msgstr "Vul alstublieft een trigger naam in"
#: ../src/gm-triggers-dialog.c:339
msgid "Please specify at least one condition"
msgstr "Specificeer alstublieft ten minste één conditie"
#: ../src/gm-triggers-dialog.c:348
msgid "Please specify at least one action"
msgstr "Specificeer alstublieft ten minste één actie"
#: ../src/gm-triggers-dialog.c:388
msgid ""
"<b>Player event</b>\n"
"Player events are triggered on userlist activity"
msgstr ""
"<b>Speler event</b>\n"
"Speler events worden getriggered door\n"
"spelerlijst activiteit"
#: ../src/gm-triggers-dialog.c:394
msgid ""
"<b>World event</b>\n"
"World events are triggered on incoming lines of text"
msgstr ""
"<b>Wereld event</b>\n"
"Wereld events worden getriggered door\n"
"binnenkomende regels tekst"
#: ../src/gm-triggers-dialog.c:685
msgid "Select a event type first"
msgstr "Selecteer eerst een event type"
#: ../src/gm-triggers-dialog.c:825
msgid "Select file"
msgstr "Selecteer bestand"
#: ../src/gm-triggers-dialog.c:863
msgid "Browse"
msgstr "Bladeren"
#: ../src/gm-world-info-dialog.c:24 ../src/gm-worlds-list-dialog.c:79
msgid "<i>unspecified</i>"
msgstr "<i>niet gespecificeerd</i>"
#: ../src/gm-world-logs-dialog.c:41 ../src/gm-ui.h:54
msgid "Logs"
msgstr ""
#: ../src/gm-world-logs-dialog.c:91
msgid "There are no log files for this world"
msgstr "Er zijn geen log bestanden voor deze wereld"
#: ../src/gm-world-logs-dialog.c:96
#, c-format
msgid "Couldn't open the log directory: %s"
msgstr "Kon log directory niet openen: %s"
#: ../src/gm-world-properties-dialog.c:36
#: ../src/gm-world-properties-dialog.c:49
#: ../src/gm-world-properties-dialog.c:70
#: ../src/gm-world-properties-dialog.c:93
msgid "Western"
msgstr "Westers"
#: ../src/gm-world-properties-dialog.c:37
#: ../src/gm-world-properties-dialog.c:71
#: ../src/gm-world-properties-dialog.c:91
msgid "Central European"
msgstr "Centraal-Europees"
#: ../src/gm-world-properties-dialog.c:38
msgid "South European"
msgstr "Zuid-Europees"
#: ../src/gm-world-properties-dialog.c:39
#: ../src/gm-world-properties-dialog.c:47
#: ../src/gm-world-properties-dialog.c:98
msgid "Baltic"
msgstr "Baltisch"
#: ../src/gm-world-properties-dialog.c:40
#: ../src/gm-world-properties-dialog.c:72
#: ../src/gm-world-properties-dialog.c:79
#: ../src/gm-world-properties-dialog.c:81
#: ../src/gm-world-properties-dialog.c:82
#: ../src/gm-world-properties-dialog.c:92
msgid "Cyrillic"
msgstr "Cyrillisch"
#: ../src/gm-world-properties-dialog.c:41
#: ../src/gm-world-properties-dialog.c:75
#: ../src/gm-world-properties-dialog.c:97
msgid "Arabic"
msgstr "Arabisch"
#: ../src/gm-world-properties-dialog.c:42
#: ../src/gm-world-properties-dialog.c:94
msgid "Greek"
msgstr "Grieks"
#: ../src/gm-world-properties-dialog.c:43
msgid "Hebrew Visual"
msgstr "Hebreeuws visueel"
#: ../src/gm-world-properties-dialog.c:44
#: ../src/gm-world-properties-dialog.c:74
#: ../src/gm-world-properties-dialog.c:96
msgid "Hebrew"
msgstr "Hebreeuws"
#: ../src/gm-world-properties-dialog.c:45
#: ../src/gm-world-properties-dialog.c:73
#: ../src/gm-world-properties-dialog.c:95
msgid "Turkish"
msgstr "Turks"
#: ../src/gm-world-properties-dialog.c:46
msgid "Nordic"
msgstr "Noors"
#: ../src/gm-world-properties-dialog.c:48
msgid "Celtic"
msgstr "Celtisch"
#: ../src/gm-world-properties-dialog.c:50
msgid "Romanian"
msgstr "Roemeens"
#: ../src/gm-world-properties-dialog.c:51
#: ../src/gm-world-properties-dialog.c:52
#: ../src/gm-world-properties-dialog.c:53
#: ../src/gm-world-properties-dialog.c:54
#: ../src/gm-world-properties-dialog.c:55
msgid "Unicode"
msgstr ""
#: ../src/gm-world-properties-dialog.c:56
msgid "Armenian"
msgstr "Armeens"
#: ../src/gm-world-properties-dialog.c:57
#: ../src/gm-world-properties-dialog.c:58
#: ../src/gm-world-properties-dialog.c:63
msgid "Chinese Traditional"
msgstr "Chinees-traditioneel"
#: ../src/gm-world-properties-dialog.c:59
msgid "Cyrillic/Russian"
msgstr "Cyrillisch/Russisch"
#: ../src/gm-world-properties-dialog.c:61
#: ../src/gm-world-properties-dialog.c:77
#: ../src/gm-world-properties-dialog.c:85
msgid "Japanese"
msgstr "Japans"
#: ../src/gm-world-properties-dialog.c:62
#: ../src/gm-world-properties-dialog.c:78
#: ../src/gm-world-properties-dialog.c:80
#: ../src/gm-world-properties-dialog.c:88
msgid "Korean"
msgstr "Koreaans"
#: ../src/gm-world-properties-dialog.c:64
#: ../src/gm-world-properties-dialog.c:65
#: ../src/gm-world-properties-dialog.c:66
#: ../src/gm-world-properties-dialog.c:68
msgid "Chinese Simplified"
msgstr "Chinees-vereenvoudigd"
#: ../src/gm-world-properties-dialog.c:67
msgid "Georgian"
msgstr "Georgisch"
#: ../src/gm-world-properties-dialog.c:83
msgid "Cyrillic/Ukrainian"
msgstr "Cyrillisch/Oekraïens"
#: ../src/gm-world-properties-dialog.c:86
#: ../src/gm-world-properties-dialog.c:89
#: ../src/gm-world-properties-dialog.c:99
msgid "Vietnamese"
msgstr "Vietnamees"
#: ../src/gm-world-properties-dialog.c:87
msgid "Thai"
msgstr "Thais"
#: ../src/gm-world-properties-dialog.c:171
#, c-format
msgid ""
"<b>%s</b>\n"
"Conditions: %d\n"
"Actions: %d"
msgstr ""
"<b>%s</b>\n"
"Condities: %d\n"
"Acties: %d"
#: ../src/gm-world-properties-dialog.c:341
msgid "World properties - "
msgstr "Wereld eigenschappen - "
#: ../src/gm-world-properties-dialog.c:471
#, c-format
msgid "Name can not be %s because a world with that name already exists."
msgstr "Naam kan niet %s zijn omdat er al een wereld bestaat met die naam."
#: ../src/gm-world-properties-dialog.c:490
msgid "Host can not be empty, please fill in a host."
msgstr "Host kan niet leeg zijn, vul alsjeblieft een host in."
#: ../src/gm-world-properties-dialog.c:630
msgid "First select a trigger to remove"
msgstr "Selecteer eerst een trigger om te verwijderen"
#: ../src/gm-worlds-list-dialog.c:73
msgid ""
"</b>\n"
"Server: "
msgstr ""
#: ../src/gm-worlds-list-dialog.c:74
msgid ""
"\n"
"Player: "
msgstr ""
"\n"
"Speler: "
#: ../src/gm-worlds-list-dialog.c:144
msgid "Logo"
msgstr ""
#: ../src/gm-worlds-list-dialog.c:150 ../src/gm-world-view.c:109
msgid "Name"
msgstr "Naam"
#: ../src/gm-worlds-list-dialog.c:238
#, c-format
msgid ""
"Can't remove the world %s because it is loaded. First close the world and "
"then try again."
msgstr ""
"De wereld %s kan niet verwijderd worden omdat de wereld nog geladen is. "
"Sluit eerst de wereld en probeer dan opnieuw."
#: ../src/gm-worlds-list-dialog.c:251
msgid "You first need to select a world to delete."
msgstr "Je moet eerst de wereld die je wilt verwijderen selecteren."
#: ../src/gm-worlds-list-dialog.c:274
msgid "You first need to select a world to modify."
msgstr "Je moet eerst de wereld die je wilt wijzigen selecteren!"
#: ../src/gm-worlds-list-dialog.c:377
msgid "You first need to select a world to duplicate."
msgstr "Je moet eerst de wereld die je wilt dupliceren selecteren!"
#: ../src/gm-worlds-list-dialog.c:401
msgid "You first need to select a world to connect to."
msgstr "Je moet eerst de wereld waarmee je wilt verbinden selecteren."
#: ../src/gm-world-view.c:103
msgid "I"
msgstr ""
#: ../src/gm-world-view.c:174
msgid "Welcome to GnoeMoe, explorer of new worlds!"
msgstr "Welkom bij GnoeMoe, verkenner van nieuwe werelden!"
#: ../src/gm-world-view.c:198 ../ui/gm-world-properties.glade.h:15
#: ../ui/gm-world.glade.h:1
msgid "World"
msgstr "Wereld"
#: ../src/gm-world-view.c:357
#, c-format
msgid "# Connect failed: %s"
msgstr "# Connectie faalde: %s"
#: ../src/gm-world-view.c:360
#, c-format
msgid "# Connection lost... (%s)"
msgstr "# Connectie verloren... (%s)"
#: ../src/gm-world-view.c:363
#, c-format
msgid "# Error: %s"
msgstr "# Fout: %s"
#: ../src/gm-world-view.c:378
#, c-format
msgid "# Trying %s port %s"
msgstr "# Probeer %s poort %s"
#: ../src/gm-world-view.c:382
#, c-format
msgid "# Connecting to %s port %s"
msgstr "# Verbinding maken naar %s poort %s"
#: ../src/gm-world-view.c:385
msgid "# Connected"
msgstr "# Verbonden"
#: ../src/gm-world-view.c:388
msgid "# Disconnected"
msgstr "# Verbinding verbroken"
#: ../src/gm-world-view.c:391
msgid "# Disconnecting"
msgstr "# Verbinding verbreken"
#. Toplevel
#: ../src/gm-ui.h:17
msgid "_World"
msgstr "_Wereld"
#: ../src/gm-ui.h:18
msgid "_Edit"
msgstr "_Bewerken"
#: ../src/gm-ui.h:19
msgid "_View"
msgstr "Beel_d"
#: ../src/gm-ui.h:20
msgid "_Help"
msgstr "_Hulp"
#. World menu
#: ../src/gm-ui.h:23
msgid "New World..."
msgstr "Nieuwe Wereld..."
#: ../src/gm-ui.h:24
msgid "Create a new world"
msgstr "Maak een nieuwe wereld"
#: ../src/gm-ui.h:26
msgid "Quit the program"
msgstr "Sluit het programma af"
#. Edit menu
#: ../src/gm-ui.h:29
msgid "Worlds..."
msgstr "Werelden..."
#: ../src/gm-ui.h:30
msgid "Edit worlds"
msgstr "Bewerk werelden"
#: ../src/gm-ui.h:32
msgid "Configure the application"
msgstr "Configureer de applicatie"
#. View menu
#: ../src/gm-ui.h:36
msgid "MCP"
msgstr ""
#: ../src/gm-ui.h:37
msgid "View MCP console"
msgstr "Bekijk MCP console"
#: ../src/gm-ui.h:39
#, fuzzy
msgid "View scripts"
msgstr "Bekijk scripts"
#: ../src/gm-ui.h:43
msgid "About this application"
msgstr "Over deze applicatie"
#: ../src/gm-ui.h:50
msgid "Connect or disconnect the current world"
msgstr "Maak of verbreek verbinding met de huidige wereld"
#: ../src/gm-ui.h:53
msgid "Close current world"
msgstr "Sluit de huidige wereld"
#: ../src/gm-ui.h:55
msgid "View current world logs"
msgstr "Bekijk logs van de huidige wereld"
#: ../src/gm-ui.h:56
msgid "In_fo"
msgstr "In_fo"
#: ../src/gm-ui.h:57
msgid "View current world info"
msgstr "Bekijk info van de huidige wereld"
#: ../src/gm-ui.h:61
msgid "Cut the selection"
msgstr "Knip de selectie"
#: ../src/gm-ui.h:63
msgid "Copy the selection"
msgstr "Kopieër de selectie"
#: ../src/gm-ui.h:65
msgid "Paste the clipboard"
msgstr "Plak het klembord"
#: ../src/gm-ui.h:66
msgid "Current world..."
msgstr "Huidige wereld..."
#: ../src/gm-ui.h:67
msgid "Edit the current world"
msgstr "Bewerk de huidige wereld"
#: ../src/gm-ui.h:69
msgid "Find text"
msgstr "Zoek naar tekst"
#: ../src/gm-ui.h:71
msgid "Search for the next occurence"
msgstr "Zoek verder"
#: ../ui/gm-scripts.glade.h:1
msgid "Console"
msgstr ""
#: ../ui/gm-scripts.glade.h:2 ../ui/gm-preferences.glade.h:12
msgid "Editor"
msgstr ""
#: ../ui/gm-scripts.glade.h:3
msgid "Overview"
msgstr "Overzicht"
#: ../ui/gm-preferences.glade.h:1
msgid "Background"
msgstr "Achtergrond"
#: ../ui/gm-preferences.glade.h:2
msgid "Background:"
msgstr "Achtergrond:"
#: ../ui/gm-preferences.glade.h:4
msgid "Black High"
msgstr "Zwart Fel"
#: ../ui/gm-preferences.glade.h:6
msgid "Blue High"
msgstr "Blauw Fel"
#: ../ui/gm-preferences.glade.h:7
msgid "Bold"
msgstr "Vet"
#: ../ui/gm-preferences.glade.h:8
msgid "Colors"
msgstr "Kleuren"
#: ../ui/gm-preferences.glade.h:10
msgid "Cyan High"
msgstr "Cyaan Fel"
#: ../ui/gm-preferences.glade.h:11
msgid "Default"
msgstr "Standaard"
#: ../ui/gm-preferences.glade.h:13
msgid "Embed editor into GnoeMoe (implies terminal)"
msgstr "Geëmbedde editor (impliceert terminal)"
#: ../ui/gm-preferences.glade.h:14
msgid "Font"
msgstr "Lettertype"
#: ../ui/gm-preferences.glade.h:15
msgid "Font-family:"
msgstr "Lettertype:"
#: ../ui/gm-preferences.glade.h:16
msgid "Foreground"
msgstr "Voorgrond"
#: ../ui/gm-preferences.glade.h:17
msgid "Foreground High"
msgstr "Voorgrond Fel"
#: ../ui/gm-preferences.glade.h:18
msgid "Foreground:"
msgstr "Voorgrond:"
#: ../ui/gm-preferences.glade.h:20
msgid "Green High"
msgstr "Groen Fel"
#: ../ui/gm-preferences.glade.h:21
msgid "Italic"
msgstr "Schuin"
#: ../ui/gm-preferences.glade.h:22
msgid "Needs terminal"
msgstr "Terminal nodig"
#: ../ui/gm-preferences.glade.h:23
msgid "Preferences"
msgstr "Voorkeuren"
#: ../ui/gm-preferences.glade.h:24
msgid "Program"
msgstr "Programma"
#: ../ui/gm-preferences.glade.h:26
msgid "Purple High"
msgstr "Paars Fel"
#: ../ui/gm-preferences.glade.h:28
msgid "Red High"
msgstr "Rood Fel"
#: ../ui/gm-preferences.glade.h:29
msgid "Strikethrough"
msgstr "Doorstreept"
#: ../ui/gm-preferences.glade.h:30
msgid "Underline"
msgstr "Onderstreept"
#: ../ui/gm-preferences.glade.h:31
msgid "Use alternative editor"
msgstr "Gebruik alternatieve editor"
#: ../ui/gm-preferences.glade.h:32
msgid "Use high colors for bold text"
msgstr "Gebruik felle kleuren voor vette tekst"
#: ../ui/gm-preferences.glade.h:34
msgid "White High"
msgstr "Wit Fel"
#: ../ui/gm-preferences.glade.h:36
msgid "Yellow High"
msgstr "Geel Fel"
#: ../ui/gm-worlds-list.glade.h:1
msgid "Worlds listing"
msgstr "Werelden lijst"
#: ../ui/gm-worlds-list.glade.h:2
msgid "_Connect"
msgstr "_Verbinden"
#: ../ui/gm-worlds-list.glade.h:3
msgid "_Duplicate"
msgstr "_Dupliceren"
#: ../ui/gm-world-properties.glade.h:1
msgid "Auto-login"
msgstr "Auto-inloggen"
#: ../ui/gm-world-properties.glade.h:2
msgid "Autologin"
msgstr "Autoinloggen"
#: ../ui/gm-world-properties.glade.h:3
msgid "Charset:"
msgstr "Karakterset:"
#: ../ui/gm-world-properties.glade.h:4
msgid "General"
msgstr "Algemeen"
#: ../ui/gm-world-properties.glade.h:5
msgid "Host:"
msgstr ""
#: ../ui/gm-world-properties.glade.h:6
msgid "Language"
msgstr "Taal"
#: ../ui/gm-world-properties.glade.h:7
msgid "Load on startup"
msgstr "Laden bij opstarten"
#: ../ui/gm-world-properties.glade.h:8 ../ui/gm-triggers.glade.h:4
msgid "Name:"
msgstr "Naam:"
#: ../ui/gm-world-properties.glade.h:9
msgid "Password:"
msgstr "Wachtwoord:"
#: ../ui/gm-world-properties.glade.h:10
msgid "Player name:"
msgstr "Speler naam:"
#: ../ui/gm-world-properties.glade.h:11
msgid "Port:"
msgstr "Poort:"
#: ../ui/gm-world-properties.glade.h:12
msgid "Server"
msgstr ""
#: ../ui/gm-world-properties.glade.h:13 ../ui/gm-triggers.glade.h:5
msgid "Triggers"
msgstr ""
#: ../ui/gm-world-properties.glade.h:14
msgid "Use autoreconnect"
msgstr "Gebruik auto-herverbinden"
#: ../ui/gm-world-properties.glade.h:16
msgid "World properties"
msgstr "Wereld eigenschappen"
#: ../ui/gm-triggers.glade.h:1
msgid "Actions:"
msgstr "Acties:"
#: ../ui/gm-triggers.glade.h:2
msgid "Choose which type of event you want to create a trigger for."
msgstr "Kies voor welk type event je een trigger wilt aanmaken."
#: ../ui/gm-triggers.glade.h:3
msgid "Conditions:"
msgstr "Condities:"

7
scripts/Makefile.am Normal file
View File

@ -0,0 +1,7 @@
scriptsdir = $(pkgdatadir)/scripts
scripts_DATA = misc.rb \
run.rb \
editing.rb \
music.rb
EXTRA_DIST = $(scripts_DATA)

53
scripts/editing.rb Normal file
View File

@ -0,0 +1,53 @@
=begin
editing.rb
Copyright (c) 2004 by Jesse van den Kieboom <jesse@icecrew.nl>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Defines:
e - edit a verb
me - edit your description
he - edit your locations description
de - edit a objects description
ne - edit a property
=end
def register_functions
$scripts.register("e", "use: /e <obj>:<verb>\nedit a verb", "edit_e")
$scripts.register("me", "use: /me\nedit your description", "edit_me")
$scripts.register("he", "use: /he\nedit your locations description", "edit_he")
$scripts.register("de", "use: /de <obj>\nedit a objects description", "edit_de")
$scripts.register("ne", "use: /ne <obj>.<prop>\nedit a property", "edit_ne")
end
def edit_e(argstr)
$world.sendln("@edit " + argstr)
end
def edit_me(argstr)
$world.sendln("@notedit me.description")
end
def edit_he(argstr)
$world.sendln("@notedit here.description")
end
def edit_ne(argstr)
$world.sendln("@notedit " + argstr)
end
def edit_de(argstr)
$world.sendln("@notedit " + argstr + ".description")
end

39
scripts/misc.rb Normal file
View File

@ -0,0 +1,39 @@
=begin
misc.rb
Copyright (c) 2004 by Jesse van den Kieboom <jesse@icecrew.nl>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Defines:
open - open a world
sendall - send all connected worlds the same text
=end
def register_functions
$scripts.register("open", "use: /open <worldname>\nopen a world")
$scripts.register("sendall", "use: /sendall <some>\nsends <some> to all currently connected worlds")
end
def open(argstr)
$client.open(argstr)
end
def sendall(argstr)
$client.worlds.each {|wld|
if (wld.loaded? && wld.connected?)
wld.sendln(argstr)
end
}
end

171
scripts/music.rb Normal file
View File

@ -0,0 +1,171 @@
=begin
music.rb
Copyright (c) 2004 by Jesse van den Kieboom <jesse@icecrew.nl>
Copyright (c) 2004/07/29 by Simon Gijsen <simon@gijsen.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Defines:
rb/rhythmbox - show which song rb is currenly playing, control rb
xmms/beep - show which song xmms is playing, control xmms (thanks to Simon Gijsen)
=end
def register_functions
$scripts.register("rhythmbox", "use: /rhythmbox <prefix>|next|prev|play|pause\nsends the song Rhythmbox is currently playing to the world prefixed by <prefix> or performs the action specified if pause, play, next or prev is specified")
$scripts.register("rb", "alias for rhythmbox", "rhythmbox")
$scripts.register("xmms", "use: /xmms <prefix>|prev|play|pause|stop|next\nsends the song XMMS is currently playing to the world prefixed by <prefix> or performs the action specified if prev, play, pause, stop or next is specified")
$scripts.register("beep", "alias for xmms", "xmms")
end
def getOgginfo(filename)
if (!File.exists?("/usr/bin/ogginfo"))
return nil
end
info = `/usr/bin/ogginfo "#{filename}" 2> /dev/null`
artist = nil
title = nil
if (!info.empty?)
info.split("\n").each {|line|
line = line.strip
if (line[/^artist=/i])
artist = line[7..-1]
elsif (line[/^title=/i])
title = line[6..-1]
end
}
return "#{artist} - #{title}"
else
return nil
end
end
def getID3info(filename)
if (!File.exists?("/usr/bin/id3info"))
nil
end
info = `/usr/bin/id3info "#{filename}" 2> /dev/null`.split("\n")
artist = nil
title = nil
if (info.length == 1 && info[0].empty? == 0)
return nil
end
info.each {|line|
line = line.strip
if (line.index(/TPE[1|2]/) != nil)
artist = line[line.index(":") + 1..-1].strip
elsif (line.index("TIT2") != nil)
title = line[line.index(":") + 1..-1].strip
end
}
if (title && artist)
return "#{artist} - #{title}"
else
return nil
end
end
def getMP3info(filename)
if ((info = getID3info(filename)))
return info
end
if (!File.exists?("/usr/bin/mp3info"))
return nil
end
info = `/usr/bin/mp3info -p "%a - %t" "#{filename}" 2> /dev/null`
if (!info.empty?)
return info
else
return nil
end
end
def rhythmbox(argstr)
isopen = !(`/bin/ps -ae | /bin/grep rhythmbox`.empty?)
if (!isopen)
$world.writeln("Script error: rhythmbox is not running!")
return
end
if (argstr == "next")
`/usr/bin/rhythmbox --next`
elsif (argstr == "prev")
`/usr/bin/rhythmbox --previous`
elsif (argstr == "play" || argstr == "pause")
`/usr/bin/rhythmbox --play-pause`
else
path = `/usr/bin/rhythmbox --print-playing-path 2> /dev/null`
info = nil
if (!path.empty?)
filename = path.split("\n")[0].gsub(/%20/, " ")[7..-1]
if (filename[-3..-1] == "mp3" && (info = getMP3info(filename)))
elsif (filename[-3..-1] == "ogg" && (info = getOgginfo(filename)))
else
info = `/usr/bin/rhythmbox --print-playing 2> /dev/null`
if (!info.empty?)
info = info.split("\n")[0]
else
info = nil
end
end
if (info)
$world.sendln(argstr + " :luistert op dit moment naar [ #{info} ]")
else
$world.writeln("Script error: cannot retrieve rhythmbox file play")
end
else
$world.writeln("Script error: can not execute /usr/bin/rhythmbox!")
end
end
end
def xmms(argstr)
case argstr
when "prev", "play", "pause", "stop", "next"
io = IO.popen("/usr/bin/xmms-shell -e " + argstr + " 2>&1")
line = io.gets
io.close
else
line = `/usr/bin/xmms-shell -e current-track 2>&1`
end
if (line[0..18] === "XMMS is not running")
$world.writeln("Script error: " + line[0..-2])
elsif(line[0..3] === "sh: ")
$world.writeln("Script error: " + line[12..-2])
elsif(line[0..12] === "Current song:")
index = line.index('.') + 2
$world.sendln(argstr + " emote luistert op dit moment naar [ " + line[index..-2] + " ]")
else
line2 = `/usr/bin/xmms-shell -e current-track 2>&1`
index = line2.index('.') + 2
$world.writeln(line[0..-2] + " [ " + line2[index..-2] + " ]")
end
end

65
scripts/run.rb Normal file
View File

@ -0,0 +1,65 @@
=begin
run.rb
Copyright (c) 2004 by Jesse van den Kieboom <jesse@icecrew.nl>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Defines:
run - open a world
crun - send all connected worlds the same text
=end
def register_functions
$scripts.register("run", "use: /run <command>\nruns <command> in a subshell and sends output to the world")
$scripts.register("crun", "use: /crun <channel> <command>\nsame as /run except it sends output to a channel")
end
def run(argstr)
io = IO.popen(argstr)
if (io)
$world.sendln(":LINUXes `" + argstr + "`")
while ((l = io.gets))
$world.sendln("emote | " + l[0..-2])
end
io.close
else
$world.writeln("Script error: can not execute #{argstr}!")
end
end
def crun(argstr)
ar = argstr.split(" ", 2)
if (ar.length != 2)
$world.writeln("Script error: use /crun <chanalias> <command>")
else
io = IO.popen(ar[1])
if (io)
$world.sendln(ar[0] + " :LINUXes `" + ar[1] + "`")
while ((l = io.gets))
$world.sendln(ar[0] + " :| " + l[0..-2])
end
io.close
else
$world.writeln("Script error: can not execute #{ar[1]}!")
end
end
end

BIN
src/.swp Normal file

Binary file not shown.

47
src/Makefile.am Normal file
View File

@ -0,0 +1,47 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = test
INCLUDES = \
-DPACKAGE_DATA_DIR=\""$(datadir)"\" \
-DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
@PACKAGE_CFLAGS@ \
@RUBYINCLUDE@
bin_PROGRAMS = gnoemoe
BUILT_SOURCES = gm-marshal.c gm-marshal.h
gnoemoe_SOURCES = $(BUILT_SOURCES) \
gm-app.c gm-app.h gm-app-view.c gm-app-view.h \
gm-options.c gm-options.h gm-color-table.c gm-color-table.h \
gm-net.c gm-net.h gm-triggers.c gm-triggers.h \
gm-world.c gm-world.h gm-world-view.c gm-world-view.h \
gm-world-tab.c gm-world-tab.h \
gm-world-text-view.c gm-world-text-view.h \
gm-string.c gm-string.h gm-support.c gm-support.h \
gm-editor.c gm-editor.h \
gm-world-input-view.c gm-world-input-view.h \
gm-pixbuf.c gm-pixbuf.h debug.c debug.h \
gm-world-info-dialog.c gm-world-info-dialog.h \
gm-world-logs-dialog.c gm-world-logs-dialog.h \
gm-worlds-list-dialog.c gm-worlds-list-dialog.h \
gm-world-properties-dialog.c gm-world-properties-dialog.h \
gm-triggers-dialog.c gm-triggers-dialog.h \
gm-scripts-dialog.c gm-scripts-dialog.h
if HAVE_SCRIPT
gnoemoe_SOURCES += gm-scripts.c gm-scripts.h
endif
gm-marshal.h: gm-marshal.list $(GLIB_GENMARSHAL)
$(GLIB_GENMARSHAL) $< --header --prefix=gm_marshal > $@
gm-marshal.c: gm-marshal.list $(GLIB_GENMARSHAL)
echo "#include \"gm-marshal.h\"" > $@ && \
$(GLIB_GENMARSHAL) $< --body --prefix=gm_marshal >> $@
gnoemoe_LDADD = @PACKAGE_LIBS@ $(INTLLIBS) @RUBYLINK@
CLEANFILES = $(BUILT_SOURCES)
dist-hook:
cd $(distdir); rm -f $(BUILT_SOURCES)
AM_CFLAGS = -Werror -Wall -Wsign-compare

124
src/ansi.h Normal file
View File

@ -0,0 +1,124 @@
#ifndef ANSI_H
#define ANSI_H
/** \defgroup ansi
* @{
*/
/** \brief enum indicating ansi code
*
* Enumeration which indicates the ansi code
*/
typedef enum _ansi_code {
A_DEFAULT = 0, /**< default (reset all attributes) */
A_BOLD = 1, /**< bold text */
A_FAINT = 2, /**< faint text */
A_ITALIC = 3, /**< italic text */
A_UNDERLINE = 4, /**< underlined text */
A_INVERSE = 7, /**< inverse foreground/background colors */
A_INVISIBLE = 8, /**< invisible text */
A_CROSSOUT = 9, /**< crossed out text */
A_DOUBLE_UNDERLINE = 21, /**< double underlined text */
A_BOLD_OFF = 22, /**< text no longer bold */
A_ITALIC_OFF = 23, /**< text no longer italic */
A_UNDERLINE_OFF = 24, /**< text no longer underlined */
A_INVERSE_OFF = 27, /**< text no longer inversed */
A_INVISIBLE_OFF = 28, /**< text no longer invisible */
A_CROSSOUT_OFF = 29, /**< text no longer crossed out */
A_FG_BLACK = 30, /**< foreground color black */
A_FG_RED = 31, /**< foreground color red */
A_FG_GREEN = 32, /**< foreground color green */
A_FG_YELLOW = 33, /**< foreground color yellow */
A_FG_BLUE = 34, /**< foreground color blue */
A_FG_PURPLE = 35, /**< foreground color purple */
A_FG_CYAN = 36, /**< foreground color cyan */
A_FG_WHITE = 37, /**< foreground color white */
A_FG_DEFAULT = 39, /**< foreground color default */
A_BG_BLACK = 40, /**< background color black */
A_BG_RED = 41, /**< background color red */
A_BG_GREEN = 42, /**< background color green */
A_BG_YELLOW = 43, /**< background color yellow */
A_BG_BLUE = 44, /**< background color blue */
A_BG_PURPLE = 45, /**< background color purple */
A_BG_CYAN = 46, /**< background color cyan */
A_BG_WHITE = 47, /**< background color white */
A_BG_DEFAULT = 49, /**< background color default */
A_NOWRAP = 50, /**< do not wrap this text */
A_FG_BLACK_H, /**< foreground color black high */
A_FG_RED_H, /**< foreground color red high */
A_FG_GREEN_H, /**< foreground color green high */
A_FG_YELLOW_H, /**< foreground color yellow high */
A_FG_BLUE_H, /**< foreground color blue high */
A_FG_PURPLE_H, /**< foreground color purple high */
A_FG_CYAN_H, /**< foreground color cyan high */
A_FG_WHITE_H, /**< foreground color white high */
A_FG_DEFAULT_H /**< foreground color default high */
} ansi_code;
/** \brief struct for containing ansi-name pair
*
* Struct can be used to create a code to name to code mapping
*/
typedef struct _ansinamepair {
const ansi_code code; /**< the ansi code */
const char *name; /**< the ansi name */
} ansinamepair;
/** \brief array containing color code/name mapping
*
* Array which can be used for color code/name mapping
*/
static const ansinamepair ansi_colors[] = {
{A_FG_BLACK, "fg_black"},
{A_FG_RED, "fg_red"},
{A_FG_GREEN, "fg_green"},
{A_FG_YELLOW, "fg_yellow"},
{A_FG_BLUE, "fg_blue"},
{A_FG_PURPLE, "fg_purple"},
{A_FG_CYAN, "fg_cyan"},
{A_FG_WHITE, "fg_white"},
{A_FG_DEFAULT, "fg_default"},
{A_FG_BLACK_H, "fg_black_h"},
{A_FG_RED_H, "fg_red_h"},
{A_FG_GREEN_H, "fg_green_h"},
{A_FG_YELLOW_H, "fg_yellow_h"},
{A_FG_BLUE_H, "fg_blue_h"},
{A_FG_PURPLE_H, "fg_purple_h"},
{A_FG_CYAN_H, "fg_cyan_h"},
{A_FG_WHITE_H, "fg_white_h"},
{A_FG_DEFAULT_H, "fg_default_h"},
{A_BG_BLACK, "bg_black"},
{A_BG_RED, "bg_red"},
{A_BG_GREEN, "bg_green"},
{A_BG_YELLOW, "bg_yellow"},
{A_BG_BLUE, "bg_blue"},
{A_BG_PURPLE, "bg_purple"},
{A_BG_CYAN, "bg_cyan"},
{A_BG_WHITE, "bg_white"},
{A_BG_DEFAULT, "bg_default"}
};
/** \brief array containing style code/name mapping
*
* Array which can be used for style code/name mapping
*/
static const ansinamepair ansi_styles[] = {
{A_BOLD, "bold"},
{A_FAINT, "faint"},
{A_BOLD_OFF, "bold-off"},
{A_UNDERLINE, "underline"},
{A_DOUBLE_UNDERLINE, "dblunderline"},
{A_UNDERLINE_OFF, "underline-off"},
{A_CROSSOUT, "crossout"},
{A_CROSSOUT_OFF, "crossout-off"},
{A_ITALIC, "italic"},
{A_ITALIC_OFF, "italic-off"}
};
/** @} */
#endif

39
src/debug.c Normal file
View File

@ -0,0 +1,39 @@
#include <time.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include <glib.h>
int dbgLevel = 0;
void
debug_msg(int level, char *line, ...) {
struct tm *timet;
time_t timer;
va_list args;
FILE *f;
if (dbgLevel >= level) {
va_start(args, line);
timer = time(0);
timet = localtime(&timer);
if (level == 0) {
f = stdout;
} else {
f = stderr;
}
fprintf(f, "[%02d:%02d:%02d] # ", timet->tm_hour, timet->tm_min,
timet->tm_sec);
vfprintf(f, line, args);
printf("\n");
va_end(args);
}
}
void
debug_set_level(int level) {
dbgLevel = level;
}

6
src/debug.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef DEBUG_H
#define DEBUG_H 1
void debug_msg(int level, char *line, ...);
void debug_set_level(int level);
#endif

58
src/gengtkclass.rb Executable file
View File

@ -0,0 +1,58 @@
#!/usr/bin/ruby
def replaceAll(line, subst)
subst.each do |sub,rep|
line = line.gsub('{' + sub + '}', rep)
end
return line
end
def degenerateCaps(text)
text = text.gsub(/[A-Z]+[a-z]+/) do |s|
s.downcase + '_'
end
return text[0..-2]
end
subst = {}
name = ARGV[0]
parent = ARGV[1]
if (name == nil) then
print "Class name (capitalized): "
name = gets[0..-2]
end
subst['template_'] = degenerateCaps(name)
subst['template-'] = subst['template_'].sub('_', '-')
subst['TEMPLATE'] = subst['template_'].upcase
subst['Template'] = name
if (parent == nil) then
print "Parent name (capitalized): "
parent = gets[0..-2]
end
subst['parent_'] = degenerateCaps(parent)
subst['parent-'] = subst['parent_'].sub('_', '-')
subst['PARENT'] = subst['parent_'].upcase
subst['Parent'] = parent
tc = IO.readlines("gtktemplate.c")
th = IO.readlines("gtktemplate.h")
f = File.open('gm-' + subst['template-'] + '.c', 'w')
tc.each do |line|
f.write(replaceAll(line, subst))
end
f.close
f = File.open('gm-' + subst['template-'] + '.h', 'w')
th.each do |line|
f.write(replaceAll(line, subst))
end
f.close
print "Done ...\n"

1417
src/gm-app-view.c Normal file

File diff suppressed because it is too large Load Diff

77
src/gm-app-view.h Normal file
View File

@ -0,0 +1,77 @@
#ifndef __GM_APP_VIEW_H__
#define __GM_APP_VIEW_H__
#include <gtk/gtk.h>
#include <glib.h>
#include <glade/glade.h>
#include "gm-world.h"
#include "gm-app.h"
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_APP_VIEW (gm_app_view_get_type())
#define GM_APP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_APP_VIEW, GmAppView))
#define GM_APP_VIEW_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_APP_VIEW, GmAppView const))
#define GM_APP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GM_TYPE_APP_VIEW, GmAppViewClass))
#define GM_IS_APP_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GM_TYPE_APP_VIEW))
#define GM_IS_APP_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GM_TYPE_APP_VIEW))
#define GM_APP_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GM_TYPE_APP_VIEW, GmAppViewClass))
/* Private structure type */
typedef struct _GmAppViewPrivate GmAppViewPrivate;
/*
* Main object structure
*/
typedef struct _GmAppView GmAppView;
struct _GmAppView {
GtkWindow window;
/*< private > */
GmAppViewPrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmAppViewClass GmAppViewClass;
struct _GmAppViewClass {
GtkWindowClass parent_class;
/* Signals */
};
GType gm_app_view_get_type(void) G_GNUC_CONST;
GmAppView *gm_app_view_new(GmApp *application);
/* Callbacks */
void on_gm_app_view_world_new(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_world_connect(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_world_logs(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_world_info(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_world_close(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_world_quit(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_cut(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_copy(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_paste(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_worlds(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_world(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_find(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_find_next(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_edit_preferences(
GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_view_mcp(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_view_scripts(GtkMenuItem * menuitem, GmAppView *view);
void on_gm_app_view_help_about(GtkMenuItem * menuitem, GmAppView *view);
G_END_DECLS
#endif /* __GM_APP_VIEW__ */

587
src/gm-app.c Normal file
View File

@ -0,0 +1,587 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gtk/gtk.h>
#include <libgnome/libgnome.h>
#include <libgnomevfs/gnome-vfs.h>
#include <libgnomeui/libgnomeui.h>
#include "gm-app-view.h"
#include "gm-world.h"
#include "gm-color-table.h"
//#include "mcp/mcp.h"
#include "gm-app.h"
//#include "editor.h"
#include "debug.h"
#include "gm-pixbuf.h"
#include "gm-support.h"
#include "gm-scripts.h"
static int debug_level = 0;
static gboolean show_version = FALSE;
static gboolean recover = FALSE;
static gchar *load_worlds = NULL;
static GmApp *application;
//static void gm_app_tray_create(tray_info *t);
//gboolean on_gm_app_tray_button_press(GtkWidget *widget, GdkEventButton *event,
// gpointer user_data);
//gboolean on_gm_app_tray_destroy(GtkWidget *widget, gpointer user_data);
void on_gm_app_view_size_allocate(GmAppView *view, GtkAllocation *allocation,
GmApp *app);
struct poptOption poptions[] = {
{
"debug",
'd',
POPT_ARG_INT,
&debug_level,
0,
N_
("Enable debugging. Debugging can be done in different depth levels, each "
"level inherits all messages from the levels below: "
"0 = None, 1 = Default and 2 = MCP"),
N_("DBGGLEVEL")
},
{
"version",
'v',
POPT_ARG_NONE,
&show_version,
0,
N_("Show application version"),
NULL},
{
"load",
'l',
POPT_ARG_STRING,
&load_worlds,
0,
N_("Load specified worlds, seperated by a `,'"),
N_("WORLDS")},
{
"recover",
'r',
POPT_ARG_NONE,
&recover,
0,
N_("Recover from previous session (used with gnome session)"),
NULL},
{
NULL,
'\0',
0,
NULL,
0,
NULL,
NULL}
};
#define GM_APP_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), \
GM_TYPE_APP, GmAppPrivate))
void gm_app_destroy_worlds(GmApp *app);
struct _GmAppPrivate {
gchar *path;
gchar *worlds_path;
gchar *options_path;
GmAppView *view;
GmOptions *options;
GmColorTable *color_table;
GnomeClient *client;
GList *worlds;
#ifdef HAVE_RUBY
GmScripts *scripts;
#endif
//tray_info tray;
};
/* Signals */
enum {
WORLD_ADDED,
WORLD_REMOVED,
NUM_SIGNALS
};
static guint app_signals[NUM_SIGNALS] = {0};
G_DEFINE_TYPE(GmApp, gm_app, G_TYPE_OBJECT)
static void
gm_app_finalize(GObject *object) {
GmApp *app = GM_APP(object);
gnome_vfs_shutdown();
//mcp_fini();
//editor_fini();
#ifdef HAVE_RUBY
g_object_unref(app->priv->scripts);
#endif
//mcpconsole_fini();
gm_app_destroy_worlds(app);
gm_pixbuf_fini();
gm_options_save(app->priv->options);
g_object_unref(app->priv->options);
g_object_unref(app->priv->color_table);
g_free(app->priv->path);
g_free(app->priv->worlds_path);
g_free(app->priv->options_path);
G_OBJECT_CLASS(gm_app_parent_class)->finalize(object);
}
static void
gm_app_class_init(GmAppClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_app_finalize;
app_signals[WORLD_ADDED] =
g_signal_new("world_added",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmAppClass, world_added),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE,
1,
G_TYPE_POINTER);
app_signals[WORLD_REMOVED] =
g_signal_new("world_removed",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmAppClass, world_removed),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE,
1,
G_TYPE_POINTER);
g_type_class_add_private(object_class, sizeof(GmAppPrivate));
}
static void
gm_app_init(GmApp *app) {
app->priv = GM_APP_GET_PRIVATE(app);
app->priv->path = NULL;
app->priv->worlds_path = NULL;
app->priv->options_path = NULL;
app->priv->options = NULL;
app->priv->client = NULL;
app->priv->worlds = NULL;
//gm_app_tray_create(&(app->priv->tray));
}
/* Private functions */
void
gm_app_destroy_worlds(GmApp *app) {
// TODO
}
static void
on_gm_app_session_die(GnomeClient * client, gpointer client_data) {
gtk_main_quit();
}
/*static void
gm_app_tray_create(tray_info *t) {
t->flash_timeout = 0;
t->icon = egg_tray_icon_new(_("GnoeMoe Gnome MOO Client"));
t->event_box = gtk_event_box_new();
t->iconnr = TRAY_ICON_DEFAULT;
t->image = gtk_image_new_from_pixbuf(
gnoe_pixbuf_get("tray/default.svg"));
gtk_container_add(GTK_CONTAINER(t->event_box), t->image);
t->tooltips = gtk_tooltips_new();
gtk_widget_show(t->event_box);
gtk_widget_show(t->image);
gtk_container_add(GTK_CONTAINER(t->icon), t->event_box);
gtk_widget_show(GTK_WIDGET(t->icon));
gtk_widget_add_events(GTK_WIDGET(t->icon), GDK_BUTTON_PRESS_MASK);
g_signal_connect(t->icon, "button_press_event",
G_CALLBACK(on_gm_app_tray_button_press), NULL);
// Handles when the area is removed from the panel.
g_signal_connect(t->icon, "destroy", G_CALLBACK(on_gm_app_tray_destroy),
t->event_box);
}*/
static gboolean
on_gm_app_save_session(GnomeClient * client, gint phase,
GnomeSaveStyle save_style, gint is_shutdown,
GnomeInteractStyle interact_style, gint is_fast, gchar ** client_data) {
gchar **argv;
gint argc = sizeof(client_data) / sizeof(gchar *) + 1;
int i;
GString *ws = g_string_new("");
GList *elem, *list;
GmWorld *world;
argv = g_new(gchar *, argc);
argv[0] = client_data[0];
argv[1] = "--recover";
for (i = 1; i < argc - 1; i++) {
argv[i + 1] = client_data[i];
}
gnome_client_set_clone_command(client, argc, argv);
gnome_client_set_restart_command(client, argc, argv);
// Saving worlds state
list = gm_app_worlds(application);
for (elem = list; elem; elem = elem->next) {
world = (GmWorld *) (elem->data);
if (gm_world_loaded(world)) {
if (strlen(ws->str) != 0) {
ws = g_string_append_c(ws, ';');
}
ws = g_string_append(ws, gm_world_name(world));
}
}
g_list_free(list);
gm_options_set(gm_app_options(application), "worlds_saved_state", ws->str);
gm_options_save(gm_app_options(application));
g_string_free(ws, TRUE);
return TRUE;
}
void
gm_app_create_settings(GmApp *app) {
app->priv->options = gm_options_new();
gm_options_set(app->priv->options, "editor_alternative", "0");
gm_options_set(app->priv->options, "editor_embed", "0");
gm_options_set(app->priv->options, "editor_needs_terminal", "0");
gm_options_set(app->priv->options, "font-family", "Monospace 8");
gm_options_set(app->priv->options, "worlds_saved_state", "");
gm_options_set(app->priv->options, "search_direction", "1");
}
void
gm_app_load_worlds(GmApp *app, gboolean autoload) {
GDir *handle = g_dir_open(app->priv->worlds_path, 0, NULL);
char *name, *path;
GmWorld *new_world;
if (handle != NULL) {
while ((name = (char *) g_dir_read_name(handle)) != NULL) {
path = g_strconcat(app->priv->worlds_path, G_DIR_SEPARATOR_S,
name, NULL);
if (g_file_test(path, G_FILE_TEST_IS_DIR)) {
new_world = gm_world_new(path);
if (new_world != NULL) {
gm_app_add_world(app, new_world);
if (autoload && gm_options_get_int(
gm_world_options(new_world), "autoload")) {
gm_world_load(new_world);
}
}
} else {
debug_msg(0, "Nee: %s", path);
}
g_free(path);
}
g_dir_close(handle);
} else {
debug_msg(1, "GmApp.load_worlds: failed to open worlds path %s",
app->priv->path);
}
}
void
gm_app_initialize(GmApp *app) {
debug_set_level(debug_level);
app->priv->worlds_path = g_strconcat(app->priv->path, G_DIR_SEPARATOR_S,
"worlds", NULL);
app->priv->options_path = g_strconcat(app->priv->path, G_DIR_SEPARATOR_S,
"settings", NULL);
if (!g_file_test(app->priv->path, G_FILE_TEST_EXISTS)) {
mkdir(app->priv->path, 0755);
mkdir(app->priv->worlds_path, 0755);
}
#ifdef HAVE_RUBY
app->priv->scripts = gm_scripts_new();
#endif
/* Create the main view */
gm_app_create_settings(app);
gm_options_load(app->priv->options, app->priv->options_path);
app->priv->color_table =
gm_color_table_new_from_options(app->priv->options);
}
void
gm_app_run(GmApp *app) {
gchar **wrlds;
const gchar *savedState;
int i = 0;
GmWorld *world;
int width, height;
app->priv->view = gm_app_view_new(app);
width = gm_options_get_int(app->priv->options, "width");
height = gm_options_get_int(app->priv->options, "height");
if (height > 10 && width > 10) {
gtk_window_set_default_size(GTK_WINDOW(app->priv->view), width, height);
}
gtk_widget_show(GTK_WIDGET(app->priv->view));
//mcpconsole_init();
g_signal_connect(app->priv->view, "size_allocate",
G_CALLBACK(on_gm_app_view_size_allocate), app);
#ifdef HAVE_RUBY
gm_scripts_load(app->priv->scripts);
#endif
gm_app_load_worlds(app, !(recover || load_worlds));
if (recover) {
savedState = gm_options_get(app->priv->options, "worlds_saved_state");
if (strlen(savedState) != 0) {
wrlds = g_strsplit(savedState, ";", -1);
for (i = 0; wrlds[i]; i++) {
if (strlen(wrlds[i]) != 0) {
world = gm_app_world_by_name(app, wrlds[i]);
if (world) {
gm_world_load(world);
}
}
}
g_strfreev(wrlds);
}
} else if (load_worlds) {
wrlds = g_strsplit(load_worlds, ",", -1);
for (i = 0; wrlds[i]; i++) {
world = gm_app_world_by_name(app, wrlds[i]);
if (world) {
gm_world_load(world);
}
}
g_strfreev(wrlds);
}
gtk_main();
}
/* Public functions */
GmApp *
gm_app_new(int argc, char *argv[]) {
GmApp *app = GM_APP(g_object_new(GM_TYPE_APP, NULL));
app->priv->path = gnome_util_home_file("gnoemoe");
if (!app->priv->path) {
printf(_("GnoeMoe Application: there is no application directory, "
"this is very bad!!!\n"));
return app;
}
#ifdef ENABLE_NLS
bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
textdomain(GETTEXT_PACKAGE);
#endif
gtk_set_locale();
gtk_init(&argc, &argv);
gnome_program_init(PACKAGE, VERSION, LIBGNOMEUI_MODULE,
argc, argv, GNOME_PARAM_POPT_TABLE, poptions,
GNOME_PARAM_APP_DATADIR, PACKAGE_DATA_DIR, NULL);
if (show_version) {
printf(_("Current version of GnoeMoe is %s\n"), VERSION);
return app;
}
app->priv->client = gnome_master_client();
gtk_signal_connect(GTK_OBJECT(app->priv->client), "save_yourself",
GTK_SIGNAL_FUNC(on_gm_app_save_session), argv);
gtk_signal_connect(GTK_OBJECT(app->priv->client), "die",
GTK_SIGNAL_FUNC(on_gm_app_session_die), NULL);
/* Initialize everything */
gnome_vfs_init();
glade_init();
//mcp_init();
gm_pixbuf_init();
gm_app_initialize(app);
//editor_init();
return app;
}
void
gm_app_add_world(GmApp *app, GmWorld *world) {
app->priv->worlds = g_list_append(app->priv->worlds, g_object_ref(world));
g_signal_emit(app, app_signals[WORLD_ADDED], 0, world);
}
void
gm_app_remove_world(GmApp *app, GmWorld *world) {
// Only remove when not loaded
const gchar *path = gm_world_path(world);
if (!gm_world_loaded(world)) {
app->priv->worlds = g_list_remove(app->priv->worlds, world);
g_signal_emit(app, app_signals[WORLD_REMOVED], 0, world);
g_object_unref(world);
gm_directory_remove_all(path, TRUE);
}
}
GmWorld *
gm_app_world_by_name(GmApp *app, gchar *name) {
GList *elem;
const gchar *world_name;
for (elem = app->priv->worlds; elem; elem = elem->next) {
world_name = gm_world_name(GM_WORLD(elem->data));
if (!g_strcasecmp(name, world_name)) {
return GM_WORLD(elem->data);
}
}
return NULL;
}
GmOptions *
gm_app_options(GmApp *app) {
return app->priv->options;
}
#ifdef HAVE_RUBY
GmScripts *
gm_app_scripts(GmApp *app) {
return app->priv->scripts;
}
#endif
const gchar *
gm_app_worlds_path(GmApp *app) {
return app->priv->worlds_path;
}
const gchar *
gm_app_path(GmApp *app) {
return app->priv->path;
}
GList *
gm_app_worlds(GmApp *app) {
return g_list_copy(app->priv->worlds);
}
GmColorTable *
gm_app_color_table(GmApp *app) {
return app->priv->color_table;
}
GmApp *
gm_app_instance() {
return application;
}
int
main(int argc, char *argv[]) {
g_type_init();
application = gm_app_new(argc, argv);
gm_app_run(application);
g_object_unref(application);
return 0;
}
/* Callbacks */
void
on_gm_app_view_size_allocate(GmAppView *view, GtkAllocation *allocation,
GmApp *app) {
gm_options_set_int(app->priv->options, "width", allocation->width);
gm_options_set_int(app->priv->options, "height", allocation->height);
}
/*gboolean
on_gm_app_tray_button_press(GtkWidget *widget, GdkEventButton *event,
gpointer user_data) {
if (event->type == GDK_2BUTTON_PRESS ||
event->type == GDK_3BUTTON_PRESS) {
return FALSE;
}
switch (event->button) {
case 1:
if_main_show_hide(!GTK_WIDGET_VISIBLE(wndMain));
break;
default:
return FALSE;
}
return TRUE;
}
gboolean
on_gm_app_tray_destroy(GtkWidget *widget, gpointer user_data) {
gtk_widget_destroy(GTK_WIDGET(app_tray_info.icon));
app_tray_info.icon = NULL;
app_tray_info.event_box = NULL;
app_tray_info.image = NULL;
app_tray_info.tooltips = NULL;
if (app_tray_info.flash_timeout != 0) {
g_source_remove(app_tray_info.flash_timeout);
}
tray_create(&app_tray_info);
if (!have_tray()) {
gtk_widget_show(if_main_get_widget("wndMain"));
}
return TRUE;
}*/

79
src/gm-app.h Normal file
View File

@ -0,0 +1,79 @@
#ifndef __GM_APP_H__
#define __GM_APP_H__
//#define G_XML PACKAGE_DATA_DIR "/" PACKAGE "/ui/gm-main.glade"
#include <gtk/gtk.h>
#include "gm-world.h"
#include "gm-options.h"
#include "gm-color-table.h"
#include "gm-scripts.h"
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_APP (gm_app_get_type())
#define GM_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_APP, GmApp))
#define GM_APP_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_APP, GmApp const))
#define GM_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
GM_TYPE_APP, GmAppClass))
#define GM_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
GM_TYPE_APP))
#define GM_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
GM_TYPE_APP))
#define GM_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \
GM_TYPE_APP, GmAppClass))
/* Private structure type */
typedef struct _GmAppPrivate GmAppPrivate;
/*
* Main object structure
*/
typedef struct _GmApp GmApp;
struct _GmApp {
GObject object;
/*< private > */
GmAppPrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmAppClass GmAppClass;
struct _GmAppClass {
GObjectClass parent_class;
/* Signals */
void (* world_added) (GmApp *app, GmWorld *world);
void (* world_removed) (GmApp *app, GmWorld *world);
};
GmApp *gm_app_instance();
GType gm_app_get_type(void) G_GNUC_CONST;
GmApp *gm_app_new(int argc, char *argv[]);
void gm_app_add_world(GmApp *app, GmWorld *world);
void gm_app_remove_world(GmApp *app, GmWorld *world);
const gchar *gm_app_worlds_path(GmApp *app);
const gchar *gm_app_path(GmApp *app);
GmOptions *gm_app_options(GmApp *app);
GList *gm_app_worlds(GmApp *app);
GmColorTable *gm_app_color_table(GmApp *app);
GmWorld *gm_app_world_by_name(GmApp *app, gchar *name);
#ifdef HAVE_RUBY
GmScripts *gm_app_scripts(GmApp *app);
#endif
G_END_DECLS
#endif /* __GM_APP_H__ */

8
src/gm-bogus.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef __GM_BOGUS_H__
#define __GM_BOGUS_H__
typedef GObject GmMcp;
GmMcp *gm_mcp_new(GmWorld *world) { return NULL; }
void gm_mcp_handle(GmMcp *mcp, gchar *line) {}
#endif /* __GM_BOGUS_H__ */

281
src/gm-color-table.c Normal file
View File

@ -0,0 +1,281 @@
#include <glib.h>
#include "gm-color-table.h"
#include "string.h"
#include "ansi.h"
#include "debug.h"
#define GM_COLOR_TABLE_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GM_TYPE_COLOR_TABLE, GmColorTablePrivate))
void gm_color_table_item_free(gpointer item);
typedef struct _GmColorTableItem GmColorTableItem;
struct _GmColorTableItem {
gchar *hex;
GdkColor color;
};
struct _GmColorTablePrivate {
gboolean bold;
GHashTable *colors;
gchar *font_description;
};
/* Signals */
enum {
COLOR_CHANGED,
BOLD_TOGGLED,
FONT_CHANGED,
NUM_SIGNALS
};
static guint color_table_signals[NUM_SIGNALS] = {0};
G_DEFINE_TYPE(GmColorTable, gm_color_table, G_TYPE_OBJECT)
static void
gm_color_table_finalize(GObject *object) {
//GmColorTable *table = GM_COLOR_TABLE(object);
G_OBJECT_CLASS(gm_color_table_parent_class)->finalize(object);
}
static void
gm_color_table_class_init(GmColorTableClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_color_table_finalize;
color_table_signals[COLOR_CHANGED] =
g_signal_new("color_changed",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmColorTableClass, color_changed),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
color_table_signals[BOLD_TOGGLED] =
g_signal_new("bold_toggled",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmColorTableClass, bold_toggled),
NULL, NULL,
g_cclosure_marshal_VOID__BOOLEAN,
G_TYPE_NONE,
1,
G_TYPE_BOOLEAN);
color_table_signals[FONT_CHANGED] =
g_signal_new("font_changed",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmColorTableClass, font_changed),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
g_type_class_add_private(object_class, sizeof(GmColorTablePrivate));
}
static void
gm_color_table_init(GmColorTable *table) {
table->priv = GM_COLOR_TABLE_GET_PRIVATE(table);
table->priv->colors = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, gm_color_table_item_free);
}
/* Private functions */
void
gm_color_table_item_free(gpointer item) {
GmColorTableItem *i = (GmColorTableItem *)(item);
g_free(i->hex);
g_free(i);
}
void
gm_color_table_initialize(GmColorTable *table) {
gm_color_table_set_bold(table, FALSE);
gm_color_table_set_font_description(table, "Monospace 10");
/*gm_color_table_set(table, "fg_default", "#D6B5D6B5D6B5");
gm_color_table_set(table, "fg_black", "#2D6B2D6B2D6B");
gm_color_table_set(table, "fg_red", "#FFFF00000000");
gm_color_table_set(table, "fg_green", "#0000FFFF0000");
gm_color_table_set(table, "fg_yellow", "#FFFFD0450000");
gm_color_table_set(table, "fg_blue", "#3EF73EF7BFFF");
gm_color_table_set(table, "fg_purple", "#A0A02020F0F0");
gm_color_table_set(table, "fg_cyan", "#0000FFFFFFFF");
gm_color_table_set(table, "fg_white", "#D8C5D8C5D8C5");
gm_color_table_set(table, "fg_default_h", "#FFFFFFFFFFFF");
gm_color_table_set(table, "fg_black_h", "#529452945294");
gm_color_table_set(table, "fg_red_h", "#FFFF785F785F");
gm_color_table_set(table, "fg_green_h", "#66ADFFFF66AD");
gm_color_table_set(table, "fg_yellow_h", "#FFFFFFFF58C6");
gm_color_table_set(table, "fg_blue_h", "#86318631FFFF");
gm_color_table_set(table, "fg_purple_h", "#C6576A18FFFF");
gm_color_table_set(table, "fg_cyan_h", "#86EEFFFFFFFF");
gm_color_table_set(table, "fg_white_h", "#FFFFFFFFFFFF");
gm_color_table_set(table, "bg_default", "#000000000000");
gm_color_table_set(table, "bg_black", "#2B5B2B5B2B5B");
gm_color_table_set(table, "bg_red", "#FFFF00000000");
gm_color_table_set(table, "bg_green", "#000080000000");
gm_color_table_set(table, "bg_yellow", "#C047C0470000");
gm_color_table_set(table, "bg_blue", "#00000000FFFF");
gm_color_table_set(table, "bg_purple", "#A0A02020F0F0");
gm_color_table_set(table, "bg_cyan", "#0000B74CB74C");
gm_color_table_set(table, "bg_white", "#FFFFFFFFFFFF");*/
gm_color_table_set(table, "fg_default", "#000000");
gm_color_table_set(table, "fg_black", "#000000");
gm_color_table_set(table, "fg_red", "#663822");
gm_color_table_set(table, "fg_green", "#445632");
gm_color_table_set(table, "fg_yellow", "#D1940C");
gm_color_table_set(table, "fg_blue", "#314E6C");
gm_color_table_set(table, "fg_purple", "#494066");
gm_color_table_set(table, "fg_cyan", "#0000FFFFFFFF");
gm_color_table_set(table, "fg_white", "#BAB5AB");
gm_color_table_set(table, "fg_default_h", "#565248");
gm_color_table_set(table, "fg_black_h", "#565248");
gm_color_table_set(table, "fg_red_h", "#990000");
gm_color_table_set(table, "fg_green_h", "#267726");
gm_color_table_set(table, "fg_yellow_h", "#EED680");
gm_color_table_set(table, "fg_blue_h", "#9DB8D2");
gm_color_table_set(table, "fg_purple_h", "#ADA7C8");
gm_color_table_set(table, "fg_cyan_h", "#86EEFFFFFFFF");
gm_color_table_set(table, "fg_white_h", "#807D74");
gm_color_table_set(table, "bg_default", "#EAE8E3");
gm_color_table_set(table, "bg_black", "#000000");
gm_color_table_set(table, "bg_red", "#663822");
gm_color_table_set(table, "bg_green", "#445632");
gm_color_table_set(table, "bg_yellow", "#D1940C");
gm_color_table_set(table, "bg_blue", "#314E6C");
gm_color_table_set(table, "bg_purple", "#494066");
gm_color_table_set(table, "bg_cyan", "#0000FFFFFFFF");
gm_color_table_set(table, "bg_white", "#FFFFFFFFFFFF");
}
/* Public functions */
GmColorTable *
gm_color_table_new(void) {
GmColorTable *table = GM_COLOR_TABLE(g_object_new(GM_TYPE_COLOR_TABLE, NULL));
gm_color_table_restore_defaults(table);
return table;
}
GmColorTable *
gm_color_table_new_from_options(GmOptions *options) {
GmColorTable *table = GM_COLOR_TABLE(g_object_new(GM_TYPE_COLOR_TABLE, NULL));
gm_color_table_set_from_options(table, options);
return table;
}
void
gm_color_table_restore_defaults(GmColorTable *table) {
gm_color_table_initialize(table);
}
void
gm_color_table_set(GmColorTable *table, const gchar *name, const gchar *hex) {
GmColorTableItem *item;
item = g_hash_table_lookup(table->priv->colors, name);
if (!item) {
item = g_new0(GmColorTableItem, 1);
g_hash_table_insert(table->priv->colors, g_strdup(name), item);
}
if (item->hex == NULL || strcmp(hex, item->hex) != 0) {
g_free(item->hex);
item->hex = g_strdup(hex);
gdk_color_parse(item->hex, &(item->color));
g_signal_emit(table, color_table_signals[COLOR_CHANGED], 0, name);
}
}
gboolean
gm_color_table_get(GmColorTable *table, const gchar *name, GdkColor *color) {
GmColorTableItem *item;
item = g_hash_table_lookup(table->priv->colors, name);
if (item != NULL) {
*color = item->color;
return TRUE;
} else {
return FALSE;
}
}
void
gm_color_table_set_bold(GmColorTable *table, gboolean bold) {
if (table->priv->bold != bold) {
table->priv->bold = bold;
g_signal_emit(table, color_table_signals[BOLD_TOGGLED], 0, bold);
}
}
gboolean
gm_color_table_bold(GmColorTable *table) {
return table->priv->bold;
}
void
gm_color_table_set_font_description(GmColorTable *table,
const gchar *font_description) {
const gchar *fd;
if (font_description == NULL) {
fd = "Monospace 10";
} else {
fd = font_description;
}
if (table->priv->font_description == NULL ||
strcmp(table->priv->font_description, fd) != 0) {
g_free(table->priv->font_description);
table->priv->font_description = g_strdup(fd);
g_signal_emit(table, color_table_signals[FONT_CHANGED], 0,
table->priv->font_description);
}
}
const gchar *
gm_color_table_font_description(GmColorTable *table) {
return table->priv->font_description;
}
void
gm_color_table_set_from_options(GmColorTable *table, GmOptions *options) {
unsigned int i;
const gchar *value;
for (i = 0; i < sizeof(ansi_colors) / sizeof(ansinamepair); i++) {
value = gm_options_get(options, ansi_colors[i].name);
if (value != NULL) {
gm_color_table_set(table, ansi_colors[i].name, value);
}
}
gm_color_table_set_bold(table, gm_options_get_int(options, "bold-colors"));
gm_color_table_set_font_description(table, gm_options_get(options,
"font-family"));
}

67
src/gm-color-table.h Normal file
View File

@ -0,0 +1,67 @@
#ifndef __GM_COLOR_TABLE_H__
#define __GM_COLOR_TABLE_H__
#include <gtk/gtk.h>
#include "gm-options.h"
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_COLOR_TABLE (gm_color_table_get_type())
#define GM_COLOR_TABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_COLOR_TABLE, GmColorTable))
#define GM_COLOR_TABLE_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_COLOR_TABLE, GmColorTable const))
#define GM_COLOR_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GM_TYPE_COLOR_TABLE, GmColorTableClass))
#define GM_IS_COLOR_TABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GM_TYPE_COLOR_TABLE))
#define GM_IS_COLOR_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GM_TYPE_COLOR_TABLE))
#define GM_COLOR_TABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GM_TYPE_COLOR_TABLE, GmColorTableClass))
/* Private structure type */
typedef struct _GmColorTablePrivate GmColorTablePrivate;
/*
* Main object structure
*/
typedef struct _GmColorTable GmColorTable;
struct _GmColorTable {
GObject object;
/*< private > */
GmColorTablePrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmColorTableClass GmColorTableClass;
struct _GmColorTableClass {
GObjectClass parent_class;
/* Signals */
void (* color_changed) (GmColorTable *table, const gchar *url);
void (* bold_toggled) (GmColorTable *table, gboolean bold);
void (* font_changed) (GmColorTable *table, const gchar *font_description);
};
GType gm_color_table_get_type(void) G_GNUC_CONST;
GmColorTable *gm_color_table_new(void);
GmColorTable *gm_color_table_new_from_options(GmOptions *options);
void gm_color_table_restore_defaults(GmColorTable *table);
void gm_color_table_set(GmColorTable *table, const gchar *name,
const gchar *hex);
gboolean gm_color_table_get(GmColorTable *table, const gchar *name,
GdkColor *color);
void gm_color_table_set_bold(GmColorTable *table, gboolean bold);
gboolean gm_color_table_bold(GmColorTable *table);
void gm_color_table_set_font_description(GmColorTable *table,
const gchar *font_description);
const gchar *gm_color_table_font_description(GmColorTable *table);
void gm_color_table_set_from_options(GmColorTable *table, GmOptions *options);
G_END_DECLS
#endif /* __GM_COLOR_TABLE_H__ */

128
src/gm-editor.c Normal file
View File

@ -0,0 +1,128 @@
#include <string.h>
#include "gm-editor.h"
#include "gm-world.h"
#include "gm-support.h"
#define GM_EDITOR_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GM_TYPE_EDITOR, GmEditorPrivate))
struct _GmEditorPrivate {
gchar *name;
gchar *upload_cmd;
gchar *mcp_type;
GmEditType type;
gboolean is_code;
GList *lines;
};
/* Signals */
enum {
SAVE,
NUM_SIGNALS
};
static guint editor_signals[NUM_SIGNALS] = {0};
G_DEFINE_TYPE(GmEditor, gm_editor, G_TYPE_OBJECT)
static void
gm_editor_finalize(GObject *object) {
GmEditor *editor = GM_EDITOR(object);
g_free(editor->priv->name);
g_free(editor->priv->upload_cmd);
g_free(editor->priv->mcp_type);
g_list_free_simple(editor->priv->lines);
G_OBJECT_CLASS(gm_editor_parent_class)->finalize(object);
}
static void
gm_editor_class_init(GmEditorClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_editor_finalize;
editor_signals[SAVE] =
g_signal_new("save",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmEditorClass, save),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);
g_type_class_add_private(object_class, sizeof(GmEditorPrivate));
}
static void
gm_editor_init(GmEditor *view) {
view->priv = GM_EDITOR_GET_PRIVATE(view);
}
GmEditor *
gm_editor_new(gchar *name, gchar *uploadcmd, GList *text) {
GmEditor *editor = GM_EDITOR(g_object_new(GM_TYPE_EDITOR, NULL));
editor->priv->name = g_strdup(name);
editor->priv->upload_cmd = g_strdup(uploadcmd);
editor->priv->mcp_type = NULL;
editor->priv->lines = g_list_copy(text);
editor->priv->type = E_LEGACY;
editor->priv->is_code = (strncmp(uploadcmd, "@program", 7) == 0);
return editor;
}
GmEditor *
gm_editor_new_mcp(gchar *name, gchar *reference, gchar *type,
GList *text) {
GmEditor *editor = GM_EDITOR(g_object_new(GM_TYPE_EDITOR, NULL));
editor->priv->name = g_strdup(name);
editor->priv->upload_cmd = g_strdup(reference);
editor->priv->mcp_type = g_strdup(type);
editor->priv->lines = g_list_copy(text);
editor->priv->type = E_LEGACY;
editor->priv->is_code = (strcmp(type, "moo-code") == 0);
return editor;
}
gboolean
gm_editor_is_code(GmEditor *editor) {
return editor->priv->is_code;
}
gchar *
gm_editor_name(GmEditor *editor) {
return editor->priv->name;
}
gchar *
gm_editor_upload_cmd(GmEditor *editor) {
return editor->priv->upload_cmd;
}
gchar *
gm_editor_mcp_type(GmEditor *editor) {
return editor->priv->mcp_type;
}
GList *
gm_editor_lines(GmEditor *editor) {
return editor->priv->lines;
}
GmEditType
gm_editor_type(GmEditor *editor) {
return editor->priv->type;
}
void
gm_editor_save(GmEditor *editor) {
g_signal_emit(editor, editor_signals[SAVE], 0);
}

68
src/gm-editor.h Normal file
View File

@ -0,0 +1,68 @@
#ifndef __GM_EDITOR_H__
#define __GM_EDITOR_H__
#include <glib-object.h>
#include <glib.h>
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_EDITOR (gm_editor_get_type())
#define GM_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_EDITOR, GmEditor))
#define GM_EDITOR_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_EDITOR, GmEditor const))
#define GM_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GM_TYPE_EDITOR, GmEditorClass))
#define GM_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GM_TYPE_EDITOR))
#define GM_IS_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GM_TYPE_EDITOR))
#define GM_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GM_TYPE_EDITOR, GmEditorClass))
/* Private structure type */
typedef struct _GmEditorPrivate GmEditorPrivate;
/*
* Main object structure
*/
typedef struct _GmEditor GmEditor;
struct _GmEditor {
GObject object;
/*< private > */
GmEditorPrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmEditorClass GmEditorClass;
struct _GmEditorClass {
GObject parent_class;
/* Signals */
void (* save) (GmEditor *editor);
};
typedef enum _GmEditType GmEditType;
enum _GmEditType {
E_LEGACY,
E_MCP
};
GType gm_editor_get_type(void) G_GNUC_CONST;
GmEditor *gm_editor_new(gchar *name, gchar *uploadcmd, GList *text);
GmEditor *gm_editor_new_mcp(gchar *name, gchar *reference, gchar *type,
GList *text);
void gm_editor_save(GmEditor *editor);
gboolean gm_editor_is_code(GmEditor *editor);
gchar *gm_editor_name(GmEditor *editor);
gchar *gm_editor_upload_cmd(GmEditor *editor);
gchar *gm_editor_mcp_type(GmEditor *editor);
GList *gm_editor_lines(GmEditor *editor);
GmEditType gm_editor_type(GmEditor *editor);
G_END_DECLS
#endif /* __GM_EDITOR_H__ */

4
src/gm-marshal.list Normal file
View File

@ -0,0 +1,4 @@
VOID:STRING,UINT
VOID:STRING,INT
VOID:INT,INT
VOID:INT,STRING

537
src/gm-net.c Normal file
View File

@ -0,0 +1,537 @@
#include <glib.h>
#include <sys/time.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include "gm-net.h"
#include "gm-marshal.h"
#include "debug.h"
#include "gm-support.h"
#define GM_NET_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GM_TYPE_NET, GmNetPrivate))
struct _GmNetPrivate {
int socket; /**< the connection socket, is -1 if not connected */
GIOChannel *channel; /**< the channel which is used to 'listen' on the socket via the glib main loop */
guint source; /**< the id of the socket watch */
guint connect_timeout_id; /**< the connect timeout id */
guint connect_check_id; /**< the connect timeout id */
struct timeval last_connected; /**< contains when the last connect happened */
int tn_last; /**< used for telnet */
int tn_subneg; /**< used for telnet */
struct addrinfo *addr;
struct addrinfo *current;
GmNetState state; /**< state of the connection */
gchar *current_host;
gchar *current_port;
};
/* Signals */
enum {
STATE_CHANGING,
NET_ERROR,
BYTES_RECV,
NUM_SIGNALS
};
static guint net_signals[NUM_SIGNALS] = {0};
G_DEFINE_TYPE(GmNet, gm_net, G_TYPE_OBJECT)
/* These values taken from RFC 854 and RFC 857. */
#define TN_WILL 251
#define TN_WONT 252
#define TN_DO 253
#define TN_DONT 254
#define TN_IAC 255 /* Interpret As Command */
#define TN_SB 250 /* start of subnegotiation */
#define TN_SE 240 /* end of subnegotiaton */
void gm_net_connect_next(GmNet *net);
gboolean on_gm_net_input_recv(GIOChannel * source, GIOCondition condition,
GmNet *net);
gboolean on_gm_net_connect_check(GIOChannel * source, GIOCondition condition,
GmNet *net);
gboolean on_gm_net_connect_timeout(GmNet *net);
static void
gm_net_finalize(GObject *object) {
//GmNet *net = GM_NET(object);
G_OBJECT_CLASS(gm_net_parent_class)->finalize(object);
}
static void
gm_net_class_init(GmNetClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_net_finalize;
net_signals[STATE_CHANGING] =
g_signal_new("state_changing",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmNetClass, state_changing),
NULL, NULL,
g_cclosure_marshal_VOID__UINT,
G_TYPE_NONE,
1,
G_TYPE_UINT);
net_signals[NET_ERROR] =
g_signal_new("net_error",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmNetClass, net_error),
NULL, NULL,
gm_marshal_VOID__STRING_INT,
G_TYPE_NONE,
2,
G_TYPE_STRING,
G_TYPE_INT);
net_signals[BYTES_RECV] =
g_signal_new("bytes_recv",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmNetClass, bytes_recv),
NULL, NULL,
gm_marshal_VOID__STRING_UINT,
G_TYPE_NONE,
2,
G_TYPE_STRING,
G_TYPE_UINT);
g_type_class_add_private(object_class, sizeof(GmNetPrivate));
}
static void
gm_net_init(GmNet *net) {
net->priv = GM_NET_GET_PRIVATE(net);
net->priv->state = GM_NET_STATE_DISCONNECTED;
net->priv->addr = NULL;
net->priv->current = NULL;
net->priv->channel = NULL;
net->priv->source = 0;
net->priv->connect_timeout_id = 0;
net->priv->connect_check_id = 0;
}
void
gm_net_set_state(GmNet *net, GmNetState state) {
g_signal_emit(net, net_signals[STATE_CHANGING], 0, state);
net->priv->state = state;
}
void
gm_net_clean_disconnection(GmNet *net) {
GError *err = NULL;
if (!net->priv->channel) {
debug_msg(1, "GmNet.CleanDisconnection: NOT clean for %d",
net->priv->socket);
return;
}
debug_msg(1, "GmNet.CleanDisconnection: clean disconnect for %d",
net->priv->socket);
// Shutdown the channel
g_io_channel_shutdown(net->priv->channel, TRUE, &err);
if (err) {
debug_msg(1, "GmNet.CleanDisconnection: error on channel shutdown: "
"%s", err->message);
g_error_free(err);
err = NULL;
}
g_io_channel_unref(net->priv->channel);
net->priv->channel = NULL;
net->priv->socket = -1;
net->priv->tn_last = 0;
net->priv->tn_subneg = 0;
gm_net_set_state(net, GM_NET_STATE_DISCONNECTED);
}
void
gm_net_dirty_disconnection(GmNet *net, int err) {
gchar *msg;
// Pff, stupid, we print a message and pass it on to clean_disconnection
debug_msg(1, "GmNet.DirtyDisconnection: dirty disconnect %d",
net->priv->socket);
msg = g_strdup_printf(_("Connection lost... (%s)"), strerror(err));
g_signal_emit(net, net_signals[NET_ERROR], 0, msg,
GM_NET_ERROR_DISCONNECTED);
g_free(msg);
gm_net_clean_disconnection(net);
}
void
gm_net_connect_succeed(GmNet *net) {
freeaddrinfo(net->priv->addr);
net->priv->addr = NULL;
net->priv->current = NULL;
net->priv->source = g_io_add_watch(net->priv->channel,
G_IO_IN | G_IO_HUP, (GIOFunc)on_gm_net_input_recv, net);
if (net->priv->connect_timeout_id != 0) {
g_source_remove(net->priv->connect_timeout_id);
net->priv->connect_timeout_id = 0;
}
if (net->priv->connect_check_id != 0) {
g_source_remove(net->priv->connect_check_id);
net->priv->connect_check_id = 0;
}
gettimeofday(&(net->priv->last_connected), NULL);
gm_net_set_state(net, GM_NET_STATE_CONNECTED);
}
void
gm_net_connect_failed(GmNet *net, gchar *err, gint code) {
if (net->priv->channel) {
g_io_channel_shutdown(net->priv->channel, TRUE, NULL);
g_io_channel_unref(net->priv->channel);
net->priv->channel = NULL;
}
g_signal_emit(net, net_signals[NET_ERROR], 0, err, GM_NET_ERROR_CONNECTING);
if (net->priv->addr && net->priv->current->ai_next) {
net->priv->current = net->priv->current->ai_next;
gm_net_connect_next(net);
} else {
net->priv->socket = -1;
if (net->priv->addr) {
freeaddrinfo(net->priv->addr);
net->priv->addr = NULL;
net->priv->current = NULL;
}
// Don't use set_state here because we weren't really connected before
gm_net_set_state(net, GM_NET_STATE_DISCONNECTED);
}
}
void
gm_net_connect_next(GmNet *net) {
char host[NI_MAXHOST], port[NI_MAXSERV];
int ret, result;
struct addrinfo *tmp = net->priv->current;
if (tmp == NULL) {
return;
} else {
if ((ret = getnameinfo(tmp->ai_addr, tmp->ai_addrlen, host, NI_MAXHOST,
port, NI_MAXSERV, NI_NUMERICHOST | NI_NUMERICSERV)) != 0) {
debug_msg(1, "GmNet.ConnectNext: getnameinfo error: %s",
gai_strerror(ret));
gm_net_connect_failed(net, (gchar *)gai_strerror(ret), ret);
return;
}
net->priv->current_host = host;
net->priv->current_port = port;
gm_net_set_state(net, GM_NET_STATE_TRY_ADDRESS);
net->priv->socket = socket(tmp->ai_family, tmp->ai_socktype,
tmp->ai_protocol);
if (net->priv->socket < 0) {
gm_net_connect_failed(net, strerror(errno), errno);
} else {
fcntl(net->priv->socket, F_SETFL,
fcntl(net->priv->socket, F_GETFL) | O_NONBLOCK);
if ((result = connect(net->priv->socket, tmp->ai_addr,
net->priv->addr->ai_addrlen)) == -1 && errno != EINPROGRESS) {
gm_net_connect_failed(net, strerror(errno), errno);
} else {
net->priv->channel = g_io_channel_unix_new(net->priv->socket);
g_io_channel_set_close_on_unref(net->priv->channel, TRUE);
if (result == 0) {
gm_net_connect_succeed(net);
} else {
net->priv->connect_check_id = g_io_add_watch(net->priv->channel,
G_IO_OUT|G_IO_ERR, (GIOFunc)on_gm_net_connect_check, net);
net->priv->connect_timeout_id = g_timeout_add(5000,
(GSourceFunc)on_gm_net_connect_timeout, net);
}
}
}
}
}
void
gm_net_handle_telnet(GmNet *net, unsigned char *buf, int *len) {
int i, j;
unsigned char c;
j = 0;
for (i = 0; i < *len; ++i) {
c = buf[i];
if (net->priv->tn_last) {
switch (net->priv->tn_last) {
case TN_WILL: case TN_WONT: case TN_DO: case TN_DONT:
net->priv->tn_last = 0;
break;
case TN_IAC:
switch (c) {
case TN_WILL: case TN_WONT: case TN_DO: case TN_DONT:
net->priv->tn_last = c;
break;
case TN_SB:
net->priv->tn_subneg = 1;
net->priv->tn_last = 0;
break;
case TN_SE:
net->priv->tn_subneg = 0;
net->priv->tn_last = 0;
break;
case TN_IAC:
if (!net->priv->tn_subneg) {
buf[j] = c;
++j;
}
net->priv->tn_last = 0;
break;
default:
net->priv->tn_last = 0;
break;
}
}
} else if (c == TN_IAC) {
net->priv->tn_last = TN_IAC;
} else if (net->priv->tn_subneg) {
continue;
} else {
buf[j] = c;
++j;
}
}
*len = j; //Since j-- is the last written char
}
/* Public */
GmNet *
gm_net_new() {
GmNet *net = GM_NET(g_object_new(GM_TYPE_NET, NULL));
return net;
}
GmNetState
gm_net_state(GmNet *net) {
return net->priv->state;
}
void
gm_net_connect(GmNet *net, const gchar *host, const gchar *port) {
struct addrinfo hint;
int ret;
char shost[NI_MAXHOST], sport[NI_MAXSERV];
if (net->priv->state != GM_NET_STATE_DISCONNECTED) {
return;
}
snprintf(shost, NI_MAXHOST - 1, "%s", host);
snprintf(sport, NI_MAXSERV - 1, "%s", port);
net->priv->current_host = shost;
net->priv->current_port = sport;
gm_net_set_state(net, GM_NET_STATE_CONNECTING);
memset(&hint, 0, sizeof(hint));
hint.ai_flags = 0;
hint.ai_family = AF_UNSPEC;
hint.ai_socktype = SOCK_STREAM;
hint.ai_protocol = IPPROTO_TCP;
debug_msg(1, "GmNet.Connect: getaddrinfo: %s : %s", shost, sport);
if ((ret = getaddrinfo(shost, sport, &hint, &(net->priv->addr))) != 0) {
net->priv->addr = NULL;
debug_msg(1, "GmNet.Connect: getaddrinfo failed: %s", gai_strerror(ret));
gm_net_connect_failed(net, (gchar *)gai_strerror(ret), ret);
return;
}
if (net->priv->addr != NULL) {
net->priv->current = net->priv->addr;
gm_net_connect_next(net);
} else {
gm_net_connect_failed(net, _("No addresses available"), 0);
}
}
void
gm_net_disconnect(GmNet *net) {
if (net->priv->state == GM_NET_STATE_CONNECTED) {
gm_net_set_state(net, GM_NET_STATE_DISCONNECTING);
// Remove the watch
g_source_remove(net->priv->source);
gm_net_clean_disconnection(net);
}
}
void
gm_net_send_line(GmNet *net, gchar *line) {
gchar *send_line;
send_line = (gchar *)(g_strconcat(line, "\r\n", NULL));
gm_net_send(net, send_line);
g_free(send_line);
}
void
gm_net_send(GmNet *net, gchar *text) {
int result;
fd_set connect_set;
if (net->priv->state == GM_NET_STATE_CONNECTED) {
debug_msg(1, "GmNet.Send: %s", text);
if ((result = send(net->priv->socket, text, strlen(text), 0)) == -1
&& (errno == EAGAIN || errno == EWOULDBLOCK)) {
FD_ZERO(&connect_set);
FD_SET(net->priv->socket, &connect_set);
// Wait for sending to be done
select(net->priv->socket + 1, NULL, &connect_set, NULL, NULL);
} else if (result == -1) {
debug_msg(1, "GmNet.Send: error on sending line: %s", strerror(errno));
gm_net_dirty_disconnection(net, errno);
}
} else {
g_signal_emit(net, net_signals[NET_ERROR], 0, _("Not connected"),
GM_NET_ERROR);
debug_msg(1, "GmNet.Send: not connected!");
}
}
const gchar *
gm_net_current_host(GmNet *net) {
return net->priv->current_host;
}
const gchar *
gm_net_current_port(GmNet *net) {
return net->priv->current_port;
}
/* Callbacks */
#define MAX_RECV_BUF 1024
gboolean
on_gm_net_input_recv(GIOChannel * source, GIOCondition condition, GmNet *net) {
unsigned char lbuf[MAX_RECV_BUF];
int len;
if (condition == G_IO_HUP) {
gm_net_set_state(net, GM_NET_STATE_DISCONNECTING);
gm_net_clean_disconnection(net);
return FALSE;
}
if (net->priv->state != GM_NET_STATE_CONNECTED) {
debug_msg(1, "GmNet.OnInputRecv: not connected!");
return FALSE;
}
// Break the received line by newline (skip \r)
len = recv(net->priv->socket, lbuf, MAX_RECV_BUF - 2, 0);
debug_msg(1, "GmNet.OnInputRecv: received %d bytes", len);
if (len < 1) {
// Disconnected, either clean or dirty
// (shouldn't this be caught by G_IO_HUP?)
if (len < 0) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
return TRUE;
}
gm_net_set_state(net, GM_NET_STATE_DISCONNECTING);
gm_net_dirty_disconnection(net, errno);
} else {
gm_net_set_state(net, GM_NET_STATE_DISCONNECTING);
gm_net_clean_disconnection(net);
}
return FALSE;
} else {
// It's fine, we have text!
gm_net_handle_telnet(net, lbuf, &len);
g_signal_emit(net, net_signals[BYTES_RECV], 0, lbuf, len);
}
return TRUE;
}
gboolean
on_gm_net_connect_check(GIOChannel * source, GIOCondition condition,
GmNet *net) {
int option = 0;
socklen_t optionsize = sizeof(option);
if (net->priv->connect_timeout_id != 0) {
g_source_remove(net->priv->connect_timeout_id);
net->priv->connect_timeout_id = 0;
}
if (condition == G_IO_ERR) {
getsockopt(net->priv->socket, SOL_SOCKET, SO_ERROR, &option, &optionsize);
gm_net_connect_failed(net, strerror(option), option);
} else {
gm_net_connect_succeed(net);
}
return FALSE;
}
gboolean
on_gm_net_connect_timeout(GmNet *net) {
net->priv->connect_timeout_id = 0;
if (net->priv->connect_check_id != 0) {
g_source_remove(net->priv->connect_check_id);
net->priv->connect_check_id = 0;
}
gm_net_connect_failed(net, _("Connect timeout (5)"), 0);
return FALSE;
}

81
src/gm-net.h Normal file
View File

@ -0,0 +1,81 @@
#ifndef __GM_NET_H__
#define __GM_NET_H__
#include <glib.h>
#include <glib-object.h>
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_NET (gm_net_get_type())
#define GM_NET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_NET, GmNet))
#define GM_NET_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_NET, GmNet const))
#define GM_NET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
GM_TYPE_NET, GmNetClass))
#define GM_IS_NET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
GM_TYPE_NET))
#define GM_IS_NET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
GM_TYPE_NET))
#define GM_NET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \
GM_TYPE_NET, GmNetClass))
typedef enum _GmNetState {
GM_NET_STATE_CONNECTED, /**< socket connected */
GM_NET_STATE_DISCONNECTED, /**< socket disconnected */
GM_NET_STATE_CONNECTING, /**< socket still connecting */
GM_NET_STATE_TRY_ADDRESS, /**< connecting to address */
GM_NET_STATE_DISCONNECTING /**< socket still disconnecting */
} GmNetState;
typedef enum _GmNetError {
GM_NET_ERROR_CONNECTING, /**< error while connecting */
GM_NET_ERROR_DISCONNECTED, /**< error while connecting */
GM_NET_ERROR /**< general error */
} GmNetError;
/* Private structure type */
typedef struct _GmNetPrivate GmNetPrivate;
/*
* Main object structure
*/
typedef struct _GmNet GmNet;
struct _GmNet {
GObject object;
/*< private > */
GmNetPrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmNetClass GmNetClass;
struct _GmNetClass {
GObjectClass parent_class;
/* Signals */
void (* state_changing) (GmNet *net, guint state);
void (* net_error) (GmNet *net, gchar *error, gint code);
void (* bytes_recv) (GmNet *net, gchar *text);
};
GType gm_net_get_type(void) G_GNUC_CONST;
GmNet *gm_net_new(void);
GmNetState gm_net_state(GmNet *net);
void gm_net_connect(GmNet *net, const gchar *host, const gchar *port);
void gm_net_disconnect(GmNet *net);
void gm_net_send_line(GmNet *net, gchar *line);
void gm_net_send(GmNet *net, gchar *text);
const gchar *gm_net_current_host(GmNet *net);
const gchar *gm_net_current_port(GmNet *net);
G_END_DECLS
#endif /* __GM_NET_H__ */

207
src/gm-options.c Normal file
View File

@ -0,0 +1,207 @@
#include <glib.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "gm-options.h"
#include "gm-string.h"
#include "debug.h"
extern int errno;
#define GM_OPTIONS_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GM_TYPE_OPTIONS, GmOptionsPrivate))
struct _GmOptionsPrivate {
GHashTable *options;
gchar *filepath;
};
/* Signals */
enum {
OPTION_CHANGED,
NUM_SIGNALS
};
static guint options_signals[NUM_SIGNALS] = {0};
G_DEFINE_TYPE(GmOptions, gm_options, G_TYPE_OBJECT)
static void
gm_options_finalize(GObject *object) {
GmOptions *options = GM_OPTIONS(object);
g_hash_table_destroy(options->priv->options);
g_free(options->priv->filepath);
G_OBJECT_CLASS(gm_options_parent_class)->finalize(object);
}
static void
gm_options_class_init(GmOptionsClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_options_finalize;
options_signals[OPTION_CHANGED] =
g_signal_new("option_changed",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmOptionsClass, option_changed),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
g_type_class_add_private(object_class, sizeof(GmOptionsPrivate));
}
static void
gm_options_init(GmOptions *options) {
options->priv = GM_OPTIONS_GET_PRIVATE(options);
options->priv->options = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, g_free);
options->priv->filepath = NULL;
}
GmOptions *
gm_options_new(void) {
GmOptions *options = GM_OPTIONS(g_object_new(GM_TYPE_OPTIONS, NULL));
return options;
}
void
gm_options_dup_option(gchar *key, gchar *value, GmOptions *copy) {
gm_options_set(copy, key, value);
}
GmOptions *
gm_options_dup(GmOptions *source) {
GmOptions *copy = gm_options_new();
g_hash_table_foreach(source->priv->options, (GHFunc)gm_options_dup_option,
copy);
return copy;
}
// Adds an option to opt, even if key already exists
void
gm_options_set(GmOptions * options, const gchar *key, const gchar *value) {
gchar *trimmed = gm_string_trim(key);
gboolean changed = g_hash_table_lookup(options->priv->options, trimmed)
!= NULL;
g_hash_table_insert(options->priv->options, trimmed, g_strdup(value));
if (changed) {
g_signal_emit(options, options_signals[OPTION_CHANGED], 0, key);
}
}
const gchar *
gm_options_get(GmOptions *options, const gchar *key) {
return g_hash_table_lookup(options->priv->options, key);
}
void
gm_options_set_int(GmOptions *options, const gchar *key, int value) {
gchar val[15];
g_snprintf((gchar *) &val, 15, "%d", value);
gm_options_set(options, key, (const gchar *) &val);
}
int
gm_options_get_int(GmOptions *options, const gchar *key) {
const gchar *val = gm_options_get(options, key);
int ret;
if (val && gm_string_to_int(val, &ret)) {
return ret;
} else {
return 0;
}
}
void
gm_options_save_value(gchar *key, gchar *value, FILE *f) {
debug_msg(1, "GmOptions.SaveValue: saving %s, %s", key, value);
fprintf(f, "%s=%s\n", key, value);
}
void
gm_options_save(GmOptions *options) {
FILE *f;
if (options->priv->filepath == NULL) {
return;
}
f = fopen(options->priv->filepath, "w");
debug_msg(1, "GmOptions.save: saving options (%s)!", options->priv->filepath);
if (f) {
g_hash_table_foreach(options->priv->options,
(GHFunc)gm_options_save_value, f);
fclose(f);
chmod(options->priv->filepath, 0660);
} else {
debug_msg(1, "GmOptions.save: couldn't open option file for saving: %s",
strerror(errno));
}
}
void
gm_options_save_as(GmOptions *options, const gchar *filename) {
g_free(options->priv->filepath);
options->priv->filepath = g_strdup(filename);
gm_options_save(options);
}
void
gm_options_load(GmOptions *options, const char *filename) {
FILE *f;
gchar **keyvalue, line[1024];
int i;
debug_msg(1, "GmOptions.load: loading options (%s)!", filename);
if ((f = fopen(filename, "r")) != NULL) {
i = 0;
while (fgets((char *) &line, 1024 - 1, f) != NULL) {
line[strlen((char *) &line) - 1] = '\0';
i++;
if (strlen(line) != 0) { // Empty lines, we don't need to process those
keyvalue = g_strsplit(line, "=", 2);
// This will return at least 1 element, at most 2, we need 2
if (strncmp(keyvalue[0], "#", 1) != 0) { // Commented lines, well ignore them too
if (keyvalue[1] != NULL) {
debug_msg(1, "GmOptions.load: adding %s, %s", keyvalue[0], keyvalue[1]);
gm_options_set(options, keyvalue[0], keyvalue[1]);
} else {
debug_msg(1, "GmOptions.load: wrong syntax of options "
"line in %s line %d", filename, i);
}
}
g_strfreev(keyvalue);
}
}
fclose(f);
} else {
debug_msg(1, "GmOptions.load: could not retrieve contents of file "
"%s (%s)", filename, strerror(errno));
}
g_free(options->priv->filepath);
options->priv->filepath = g_strdup(filename);
}

69
src/gm-options.h Normal file
View File

@ -0,0 +1,69 @@
#ifndef __GM_OPTIONS_H__
#define __GM_OPTIONS_H__
#include <glib.h>
#include <gtk/gtk.h>
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_OPTIONS (gm_options_get_type())
#define GM_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_OPTIONS, GmOptions))
#define GM_OPTIONS_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_OPTIONS, GmOptions const))
#define GM_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
GM_TYPE_OPTIONS, GmOptionsClass))
#define GM_IS_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
GM_TYPE_OPTIONS))
#define GM_IS_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
GM_TYPE_OPTIONS))
#define GM_OPTIONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \
GM_TYPE_OPTIONS, GmOptionsClass))
/* Private structure type */
typedef struct _GmOptionsPrivate GmOptionsPrivate;
/*
* Main object structure
*/
typedef struct _GmOptions GmOptions;
struct _GmOptions {
GObject object;
/*< private > */
GmOptionsPrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmOptionsClass GmOptionsClass;
struct _GmOptionsClass {
GObjectClass parent_class;
/* Signals */
void (* option_changed) (GmOptions *options, const gchar *key);
};
GType gm_options_get_type(void) G_GNUC_CONST;
GmOptions *gm_options_new(void);
GmOptions *gm_options_dup(GmOptions *source);
void gm_options_add(GmOptions *options, const gchar *key, const gchar *value);
void gm_options_set(GmOptions *options, const gchar *key, const gchar *value);
const gchar *gm_options_get(GmOptions *options, const gchar *key);
void gm_options_set_int(GmOptions *options, const gchar *key, int value);
int gm_options_get_int(GmOptions *options, const gchar *key);
void gm_options_save(GmOptions *options);
void gm_options_save_as(GmOptions *options, const gchar *filename);
void gm_options_load(GmOptions *options, const gchar *filename);
G_END_DECLS
#endif /* __GM_OPTIONS_H__ */

182
src/gm-pixbuf.c Normal file
View File

@ -0,0 +1,182 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gtk/gtk.h>
#include <glib.h>
#include <string.h>
#include <strings.h>
#include "debug.h"
#include "gm-pixbuf.h"
static GList *gm_pixbuf_directories = NULL;
static GList *gm_pixbufs = NULL;
GdkPixbuf *gm_pixbuf_create(const gchar * filename, int width, int height);
void
gm_pixbuf_add_directory(const gchar *directory) {
gm_pixbuf_directories =
g_list_prepend(gm_pixbuf_directories, g_strdup(directory));
}
void
gm_pixbuf_init() {
gm_pixbuf_add_directory(PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");
}
void
gm_pixbuf_fini() {
GList *l;
GmPixbufInfo *i;
for (l = gm_pixbuf_directories; l; l = l->next) {
g_free(l->data);
}
g_list_free(gm_pixbuf_directories);
for (l = gm_pixbufs; l; l = l->next) {
i = (GmPixbufInfo *)(l->data);
g_free(i->name);
g_object_unref(i->pixbuf);
g_free(i);
}
g_list_free(gm_pixbufs);
}
gchar *
gm_pixbuf_find(const gchar *filename) {
GList *elem;
if (g_file_test(filename, G_FILE_TEST_EXISTS)) {
return g_strdup(filename);
}
for (elem = gm_pixbuf_directories; elem; elem = elem->next) {
gchar *pathname =
g_strdup_printf("%s%s%s", (gchar *) elem->data,
G_DIR_SEPARATOR_S, filename);
if (g_file_test(pathname, G_FILE_TEST_EXISTS)) {
return pathname;
}
g_free(pathname);
}
return NULL;
}
GdkPixbuf *
gm_pixbuf_create(const gchar * filename, int width, int height) {
gchar *pathname = NULL, *ext;
GdkPixbuf *pixbuf = NULL;
GError *error = NULL;
if (!filename || strlen(filename) == 0) {
return NULL;
}
pathname = gm_pixbuf_find(filename);
if (!pathname) {
debug_msg(1, "gm_pixbuf_create: couldn't find pixbuf file: %s", filename);
return NULL;
}
ext = rindex(pathname, '.');
if (width < 1 || height < 1) {
pixbuf = gdk_pixbuf_new_from_file(pathname, &error);
} else {
pixbuf = gdk_pixbuf_new_from_file_at_size(pathname, width, height, &error);
}
if (!pixbuf) {
debug_msg(1, "gm_pixbuf_create: failed to load pixbuf from file: %s: %s\n",
pathname, error->message);
g_error_free(error);
error = NULL;
}
g_free(pathname);
return pixbuf;
}
GdkPixbuf *
gm_pixbuf_get_at_size(const gchar *filename, int width, int height) {
GdkPixbuf *pix;
GList *elem;
GmPixbufInfo *i;
for (elem = gm_pixbufs; elem; elem = elem->next) {
i = (GmPixbufInfo *) (elem->data);
if (strcmp(i->name, filename) == 0 &&
i->width == width && i->height == height) {
return i->pixbuf;
}
}
// Not found, so create it
pix = gm_pixbuf_create(filename, width, height);
if (pix) {
i = g_new(GmPixbufInfo, 1);
i->name = g_strdup(filename);
i->width = width;
i->height = height;
i->pixbuf = pix;
gm_pixbufs = g_list_append(gm_pixbufs, i);
return pix;
} else {
return NULL;
}
}
// Returns pixbuf if it is already loaded in pixmaps
GdkPixbuf *
gm_pixbuf_get(const gchar *filename) {
return gm_pixbuf_get_at_size(filename, -1, -1);
}
void gm_pixbuf_set_alpha(GdkPixbuf **pixs, guchar alpha) {
int width, height, n_channels, rowstride, y, x;
GdkPixbuf *pix;
guchar *pixels, *p;
if (!gdk_pixbuf_get_has_alpha(*pixs)) {
pix = gdk_pixbuf_add_alpha(*pixs, FALSE, 0, 0, 0);
gdk_pixbuf_unref(*pixs);
} else {
pix = *pixs;
}
n_channels = gdk_pixbuf_get_n_channels(pix);
if (gdk_pixbuf_get_colorspace(pix) != GDK_COLORSPACE_RGB ||
gdk_pixbuf_get_bits_per_sample(pix) != 8 ||
!gdk_pixbuf_get_has_alpha(pix) ||
n_channels != 4) {
*pixs = pix;
return;
}
width = gdk_pixbuf_get_width(pix);
height = gdk_pixbuf_get_height(pix);
rowstride = gdk_pixbuf_get_rowstride(pix);
pixels = gdk_pixbuf_get_pixels(pix);
p = pixels;
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
p[3] = alpha;
p = p + n_channels;
}
}
*pixs = pix;
}

24
src/gm-pixbuf.h Normal file
View File

@ -0,0 +1,24 @@
#ifndef gm_pixbuf_H
#define gm_pixbuf_H 1
#include <gtk/gtk.h>
#include <glib.h>
typedef struct _GmPixbufInfo {
gchar *name;
int width;
int height;
GdkPixbuf *pixbuf;
} GmPixbufInfo;
void gm_pixbuf_init();
void gm_pixbuf_fini();
void gm_pixbuf_add_directory(const gchar *directory);
GdkPixbuf *gm_pixbuf_get(const gchar *filename);
GdkPixbuf *gm_pixbuf_get_at_size(const gchar *filename, int width, int height);
void gm_pixbuf_set_alpha(GdkPixbuf **pixs, guchar alpha);
#endif

663
src/gm-script.c.old Normal file
View File

@ -0,0 +1,663 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HASRUBY
#include <gtk/gtk.h>
#include <ruby.h>
#include <libgnomevfs/gnome-vfs-mime-utils.h>
#include <libgnomevfs/gnome-vfs.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "debug.h"
#include "gm-world.h"
#include "gm-app.h"
#include "gm-script.h"
#include "gm-scripts-dialog.h"
#include "gm-net.h"
#include "gm-support.h"
#define RB_CALLBACK(x) (VALUE (*)())(x)
static VALUE script_world_name(VALUE self);
VALUE script_world_create(world *wld);
void script_world_class_init();
void script_client_class_init();
static VALUE cWorld, cClient;
static gboolean didInit = FALSE;
static GList *funcs = NULL;
static GList *scriptFiles = NULL;
static gchar *fileInsp;
static GList *mondirs = NULL;
void gm_script_monitor_cb(GnomeVFSMonitorHandle *handle,
const gchar *monitor_uri, const gchar *info_uri,
GnomeVFSMonitorEventType event_type,
gpointer user_data) {
gchar *filename = gnome_vfs_get_local_path_from_uri(info_uri);
switch (event_type) {
case GNOME_VFS_MONITOR_EVENT_CHANGED:
gm_script_reload_file(filename);
break;
case GNOME_VFS_MONITOR_EVENT_DELETED:
gm_script_remove_file(filename);
break;
case GNOME_VFS_MONITOR_EVENT_CREATED:
gm_script_add_file(filename);
break;
default:
g_free(filename);
return;
break;
}
if_scripts_update();
g_free(filename);
}
void
script_destroy_function(script_function *fi) {
g_free(fi->name);
g_free(fi->fname);
g_free(fi->filename);
g_free(fi->description);
g_free(fi);
}
script_function *
script_find(gchar *name) {
GList *func;
script_function *f;
for (func = funcs; func; func = func->next) {
f = (script_function *)func->data;
if (strcasecmp(f->name, name) == 0) {
return f;
}
}
return NULL;
}
gboolean
script_add(gchar *name, gchar *fname, gchar *description, gchar *filename) {
script_function *func;
gchar *basedir = PACKAGE_DATA_DIR "/" PACKAGE "/scripts";
if (script_find(name) == NULL) {
func = g_new(script_function, 1);
if (strncmp(filename, basedir, strlen(basedir)) == 0) {
func->type = ST_SHARE;
} else {
func->type = ST_USER;
}
func->name = g_strdup(name);
func->fname = g_strdup(fname);
func->filename = g_strdup(filename);
func->description = g_strdup(description);
funcs = g_list_append(funcs, func);
return TRUE;
} else {
return FALSE;
}
}
VALUE
register_func(int argc, VALUE *argv, VALUE self) {
char *name, *fname = NULL, *description = NULL;
gchar *msg;
if (argc > 1) {
name = rb_string_value_cstr(&argv[0]);
description = rb_string_value_cstr(&argv[1]);
if (argc == 2) {
fname = name;
} else {
fname = rb_string_value_cstr(&argv[2]);
}
if (script_add(name, fname, description, fileInsp)) {
msg = g_strdup_printf(_("Register function '%s' from '%s'"), name, fileInsp);
debug_msg(1, "register_func: adding script function %s from %s", name, fileInsp);
if_scripts_add(SCRIPTC_MSG, msg);
g_free(msg);
return Qtrue;
} else {
msg = g_strdup_printf(_("Script '%s' is already defined"), name);
debug_msg(1, "register_func: script function %s already defined!", name);
if_scripts_add(SCRIPTC_ERROR, msg);
g_free(msg);
return Qfalse;
}
} else {
return Qfalse;
}
}
VALUE
register_functions_wrap(VALUE arg) {
return rb_eval_string("register_functions");
}
void
script_define_world(VALUE *wld) {
rb_define_variable("$world", wld);
}
void
script_error() {
int c;
VALUE lasterr;
char *err;
gchar *msg;
VALUE ary;
if(!NIL_P(ruby_errinfo)) {
lasterr = rb_gv_get("$!");
err = RSTRING(rb_obj_as_string(lasterr))->ptr;
debug_msg(1, "script_error: Error while executing Ruby code: %s", err);
msg = g_strdup_printf(_("Error on executing: %s"), err);
if_scripts_add(SCRIPTC_ERROR, msg);
g_free(msg);
ary = rb_funcall(ruby_errinfo, rb_intern("backtrace"), 0);
debug_msg(1, "script_error: Ruby backtrace:");
if_scripts_add(SCRIPTC_ERROR, _("Ruby backtrace:"));
for (c = 0; c < RARRAY(ary)->len; c++) {
debug_msg(1, "script_error: \tfrom %s", RSTRING(RARRAY(ary)->ptr[c])->ptr);
msg = g_strdup_printf(_("\tfrom %s"), RSTRING(RARRAY(ary)->ptr[c])->ptr);
if_scripts_add(SCRIPTC_ERROR, msg);
g_free(msg);
}
}
}
int
do_ruby(VALUE (*body)(), VALUE arg) {
int status;
rb_protect(body, arg, &status);
if (status != 0) {
script_error();
ruby_cleanup(status);
return 0;
}
return 1;
}
VALUE
function_run(script_info *arg) {
VALUE ret;
gchar *argstr;
gchar *funcAll;
if (arg->argstr) {
argstr = str_escape(arg->argstr);
funcAll = g_strconcat(arg->name, "(\"", argstr, "\")", NULL);
g_free(argstr);
} else {
funcAll = g_strconcat(arg->name, "()", NULL);
}
ret = rb_eval_string(funcAll);
g_free(funcAll);
return ret;
}
gboolean
script_run(world *wld, script_function *f, gchar *argstr) {
VALUE rWld;
VALUE rClient;
gchar *msg;
script_info *info = g_new(script_info, 1);
info->name = g_strdup(f->fname);
if (argstr) {
info->argstr = g_strdup(argstr);
msg = g_strdup_printf(_("Run script '%s' from '%s' (%s)"), f->fname,
f->filename, argstr);
} else {
info->argstr = NULL;
msg = g_strdup_printf(_("Run script '%s' from '%s' ()"), f->fname,
f->filename);
}
if_scripts_add(SCRIPTC_RUN, msg);
g_free(msg);
do_ruby(RB_CALLBACK(rb_load_file), (VALUE) f->filename);
ruby_exec();
rWld = script_world_create(wld);
rb_define_variable("$world", &rWld);
rClient = rb_class_new_instance(0, NULL, cClient);
rb_define_variable("$client", &rClient);
do_ruby(RB_CALLBACK(function_run), (VALUE) info);
g_free(info->name);
if (info->argstr) {
g_free(info->argstr);
}
g_free(info);
return TRUE;
}
GList *script_get_scripts() {
return funcs;
}
GList *script_get_files() {
return scriptFiles;
}
void
script_register_functions(gchar *filename) {
gchar *msg;
fileInsp = filename;
debug_msg(1, "script_register_functions: registering functions in %s", filename);
msg = g_strdup_printf(_("Registering functions from '%s'"), filename);
if_scripts_add(SCRIPTC_MSG, msg);
g_free(msg);
if (!do_ruby(RB_CALLBACK(rb_load_file), (VALUE) filename)) {
return;
}
ruby_exec();
rb_define_global_function("register_func", &register_func, -1);
do_ruby(RB_CALLBACK(register_functions_wrap), 0);
}
void
script_remove_file(const gchar *uri) {
GList *f, *l;
script_function *func;
gchar *msg;
l = g_list_copy(scriptFiles);
for (f = l; f; f = f->next) {
if (strcmp(f->data, uri) == 0) {
scriptFiles = g_list_remove(scriptFiles, f->data);
g_free(f->data);
}
}
g_list_free(l);
l = g_list_copy(funcs);
for (f = l; f; f = f->next) {
func = (script_function *)(f->data);
if (strcmp(func->filename, uri) == 0) {
msg = g_strdup_printf(_("Removing function `%s' from `%s'!"), func->name,
func->filename);
debug_msg(1, "script_remove_file: %s", msg);
if_scripts_add(SCRIPTC_MSG, msg);
g_free(msg);
funcs = g_list_remove(funcs, func);
script_destroy_function(func);
}
}
g_list_free(l);
}
gboolean
script_add_file(const gchar *uri) {
GList *f;
gchar *msg;
for (f = scriptFiles; f; f = f->next) {
if (strcmp(f->data, uri) == 0) {
msg = g_strdup_printf(_("File `%s' already added!"), uri);
debug_msg(1, "script_add_file: %s", msg);
if_scripts_add(SCRIPTC_MSG, msg);
g_free(msg);
return FALSE;
}
}
msg = g_strdup_printf(_("File `%s' added!"), uri);
debug_msg(1, "script_add_file: %s", msg);
if_scripts_add(SCRIPTC_MSG, msg);
g_free(msg);
scriptFiles = g_list_append(scriptFiles, strdup(uri));
script_register_functions((gchar *)uri);
return TRUE;
}
void
script_reload_file(const gchar *uri) {
script_remove_file(uri);
script_add_file(uri);
}
void
script_check_dir(gchar *dirname) {
gchar *filename;
gchar *file;
GDir *d;
GnomeVFSMonitorHandle *handle;
if (g_file_test(dirname, G_FILE_TEST_EXISTS) &&
g_file_test(dirname, G_FILE_TEST_IS_DIR)) {
if ((d = g_dir_open(dirname, 0, NULL))) {
while ((file = (gchar *)g_dir_read_name(d))) {
filename = g_strconcat(dirname, "/", file, NULL);
script_add_file(filename);
g_free(filename);
}
}
} else if (!g_file_test(dirname, G_FILE_TEST_EXISTS)) {
mkdir(dirname, 0750);
}
if (g_file_test(dirname, G_FILE_TEST_EXISTS)) {
gnome_vfs_monitor_add(&handle, dirname, GNOME_VFS_MONITOR_DIRECTORY,
script_monitor_cb, NULL);
mondirs = g_list_append(mondirs, handle);
}
}
void
script_init() {
gchar *path = g_strconcat(main_get_app_path(), "/scripts", NULL);
ruby_init();
if (!didInit) {
script_world_class_init();
script_client_class_init();
}
script_check_dir(path);
script_check_dir(PACKAGE_DATA_DIR "/" PACKAGE "/scripts");
g_free(path);
didInit = TRUE;
}
void
script_fini() {
GList *f;
script_function *fi;
gchar *filename;
for (f = funcs; f; f = f->next) {
fi = (script_function *)f->data;
script_destroy_function(fi);
}
g_list_free(funcs);
funcs = NULL;
for (f = scriptFiles; f; f = f->next) {
filename = (gchar *)(f->data);
g_free(filename);
}
g_list_free(scriptFiles);
scriptFiles = NULL;
for (f = mondirs; f; f = f->next) {
gnome_vfs_monitor_cancel((GnomeVFSMonitorHandle *)f->data);
}
g_list_free(mondirs);
mondirs = NULL;
ruby_finalize();
}
void
script_flush_and_reload() {
if_scripts_add(SCRIPTC_MSG, _("Flushing scripts..."));
script_fini();
if_scripts_add(SCRIPTC_MSG, _("Reloading scripts..."));
script_init();
}
/* CLASS FUNCTIONS */
static VALUE
script_world_name(VALUE self) {
world *wld;
Data_Get_Struct(self, world, wld);
return rb_str_new2(options_get_str(wld->settings, "name"));
}
static VALUE
script_world_host(VALUE self) {
world *wld;
Data_Get_Struct(self, world, wld);
return rb_str_new2(options_get_str(wld->settings, "host"));
}
static VALUE
script_world_port(VALUE self) {
world *wld;
Data_Get_Struct(self, world, wld);
return rb_str_new2(options_get_str(wld->settings, "port"));
}
static VALUE
script_world_writeln(VALUE self, VALUE str) {
world *wld;
gchar *strVal;
Data_Get_Struct(self, world, wld);
strVal = rb_string_value_cstr(&str);
world_writeln(wld, strVal);
return Qnil;
}
static VALUE
script_world_sendln(VALUE self, VALUE str) {
world *wld;
gchar *strVal;
Data_Get_Struct(self, world, wld);
strVal = rb_string_value_cstr(&str);
net_send_line(wld, (unsigned char *)strVal);
return Qnil;
}
static VALUE
script_world_input(VALUE self, VALUE str) {
world *wld;
gchar *strVal;
Data_Get_Struct(self, world, wld);
strVal = rb_string_value_cstr(&str);
world_process_input(wld, strVal);
return Qnil;
}
static VALUE
script_world_loaded(VALUE self) {
world *wld;
Data_Get_Struct(self, world, wld);
if (wld->loaded) {
return Qtrue;
} else {
return Qfalse;
}
}
static VALUE
script_world_connected(VALUE self) {
world *wld;
Data_Get_Struct(self, world, wld);
if (wld->net.state == NET_CONNECTED) {
return Qtrue;
} else {
return Qfalse;
}
}
static VALUE
script_world_quit(VALUE self) {
world *wld;
Data_Get_Struct(self, world, wld);
world_unload(wld);
return Qnil;
}
static VALUE
script_world_connect(int argc, VALUE *argv, VALUE self) {
world *wld;
gchar *strHost, *strPort;
Data_Get_Struct(self, world, wld);
if (argc == 0) {
strHost = options_get_str(wld->settings, "host");
} else {
strHost = rb_string_value_cstr(&(argv[0]));
}
if (argc == 0 || argc == 1) {
strPort = options_get_str(wld->settings, "port");
} else {
strPort = rb_string_value_cstr(&(argv[1]));
}
net_connect_to(wld, strHost, strPort);
return Qnil;
}
static VALUE
script_world_disconnect(VALUE self) {
world *wld;
Data_Get_Struct(self, world, wld);
net_do_disconnect(wld);
return Qnil;
}
void
script_world_class_init() {
cWorld = rb_define_class("World", rb_cObject);
rb_define_method(cWorld, "name", script_world_name, 0);
rb_define_method(cWorld, "host", script_world_host, 0);
rb_define_method(cWorld, "port", script_world_port, 0);
rb_define_method(cWorld, "writeln", script_world_writeln, 1);
rb_define_method(cWorld, "println", script_world_writeln, 1);
rb_define_method(cWorld, "sendln", script_world_sendln, 1);
rb_define_method(cWorld, "input", script_world_input, 1);
rb_define_method(cWorld, "quit", script_world_quit, 0);
rb_define_method(cWorld, "connect", script_world_connect, -1);
rb_define_method(cWorld, "disconnect", script_world_disconnect, 0);
rb_define_method(cWorld, "loaded?", script_world_loaded, 0);
rb_define_method(cWorld, "connected?", script_world_connected, 0);
}
VALUE
script_world_create(world *wld) {
VALUE tData = Data_Wrap_Struct(cWorld, 0, 0, wld);
return tData;
}
static VALUE
script_client_version(VALUE self) {
return rb_str_new2(VERSION);
}
static VALUE
script_client_worlds(VALUE self) {
GList *wld;
VALUE ar = rb_ary_new();
VALUE oWld;
for (wld = world_get_worlds(); wld; wld = wld->next) {
oWld = script_world_create((world *)(wld->data));
rb_ary_push(ar, oWld);
}
return ar;
}
static VALUE
script_client_open(VALUE self, VALUE str) {
world *wld;
gchar *strVal;
strVal = rb_string_value_cstr(&str);
wld = world_get_by_name(strVal);
if (wld == NULL) {
return Qfalse;
} else {
world_load(wld);
return Qtrue;
}
}
void
script_client_class_init() {
cClient = rb_define_class("Client", rb_cObject);
rb_define_method(cClient, "version", script_client_version, 0);
rb_define_method(cClient, "worlds", script_client_worlds, 0);
rb_define_method(cClient, "open", script_client_open, 1);
}
#endif

44
src/gm-script.h.old Normal file
View File

@ -0,0 +1,44 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HASRUBY
#ifndef __GM_SCRIPT_H__
#define __GM_SCRIPT_H__
#include <gtk/gtk.h>
#include "gm-world.h"
enum GmScriptType {
ST_USER,
ST_SHARE
};
typedef struct _GmScriptFunction {
enum scriptType type;
gchar *name;
gchar *fname;
gchar *filename;
gchar *description;
} GmScriptFunction;
typedef struct _GmScriptInfo {
gchar *name;
gchar *argstr;
} GmScriptInfo;
void gm_script_init();
void gm_script_fini();
void gm_script_flush_and_reload();
void gm_script_reload_file(const gchar *uri);
gboolean gm_script_add_file(const gchar *uri);
void gm_script_remove_file(const gchar *uri);
GmScriptFunction *gm_script_find(gchar *name);
gboolean gm_script_run(GmWorld *world, GmScriptFunction *f, gchar *argstr);
GList *script_get_scripts();
GList *script_get_files();
#endif /* __GM_SCRIPT_H__ */
#endif

844
src/gm-scripts-dialog.c Normal file
View File

@ -0,0 +1,844 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HAVE_RUBY
#include <gtk/gtk.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <gtksourceview/gtksourceview.h>
#include <gtksourceview/gtksourcelanguage.h>
#include <gtksourceview/gtksourcelanguagesmanager.h>
#include <gtksourceview/gtksourcetag.h>
#include <libgnomevfs/gnome-vfs.h>
#include <glade/glade.h>
#include "gm-scripts.h"
#include "gm-world.h"
#include "debug.h"
#include "gm-app.h"
#include "gm-support.h"
#include "gm-app-view.h"
void on_gm_scripts_dialog_script_added(GmScripts *scripts, GmScript *script,
gpointer user_data);
void on_gm_scripts_dialog_script_changed(GmScripts *scripts, GmScript *script,
gpointer user_data);
void on_gm_scripts_dialog_script_removed(GmScripts *scripts, GmScript *script,
gpointer user_data);
void on_gm_scripts_dialog_message(GmScripts *scripts, gchar *message,
gpointer user_data);
void on_gm_scripts_dialog_error(GmScripts *scripts, gchar *message,
gpointer user_data);
void on_gm_scripts_dialog_run(GmScripts *scripts, gchar *message,
gpointer user_data);
typedef enum _MessageType {
SCRIPT_MESSAGE,
SCRIPT_ERROR,
SCRIPT_RUN
} MessageType;
typedef enum _scripts_columns {
SCRIPTS_NAME,
SCRIPTS_OBJECT,
SCRIPTS_N
} scripts_columns;
typedef struct _SelectionInfo {
GtkTreeView *view;
GtkTreeModel *model;
GtkTreeIter seliter;
GtkTreeIter parent;
gboolean has_parent;
gboolean can_save;
gchar *filename;
} SelectionInfo;
typedef struct _GmScriptsDialog {
GtkTextTagTable *tag_table;
GladeXML *xml;
GtkTextBuffer *text_buffer_console;
gchar *current_edit;
GtkTextBuffer *text_buffer_editor;
GtkWidget *dialog;
GtkWidget *text_view_console;
GtkWidget *statusbar_editor;
GtkWidget *button_save;
GtkWidget *tree_view_scripts;
GtkWidget *tree_view_files;
GtkWidget *button_delete;
SelectionInfo info;
} GmScriptsDialog;
static GmScriptsDialog *scripts_dialog = NULL;
#define G_SCRIPTS_XML PACKAGE_DATA_DIR "/" PACKAGE "/ui/gm-scripts.glade"
gboolean on_gm_scripts_dialog_delete(GtkWidget *widget, GdkEvent *event,
gpointer user_data);
void on_files_changed(GtkTreeSelection *treeselection, gpointer user_data);
void on_tree_view_files_row_activated(GtkTreeView *treeview, GtkTreePath *arg1,
GtkTreeViewColumn *arg2, gpointer user_data);
void on_text_buffer_editor_modified_changed(GtkTextBuffer *buffer,
gpointer user_data);
void on_tool_button_new_clicked(GtkToolButton *button, gpointer user_data);
void on_tool_button_save_clicked(GtkToolButton *button, gpointer user_data);
void on_tool_button_save_as_clicked(GtkToolButton *button, gpointer user_data);
void on_tool_button_delete_clicked(GtkToolButton *button, gpointer user_data);
gboolean
gm_scripts_dialog_can_write(gchar *filename) {
return (access(filename, W_OK) == 0);
}
void
gm_scripts_dialog_set_status(gchar *msg) {
gtk_statusbar_pop(GTK_STATUSBAR(scripts_dialog->statusbar_editor),
0);
gtk_statusbar_push(GTK_STATUSBAR(scripts_dialog->statusbar_editor),
0, msg);
}
gboolean
gm_scripts_dialog_editor_save(gchar *filename) {
FILE *f;
gchar *msg, *text;
GtkTextIter start, end;
if (!filename) {
return FALSE;
}
f = fopen(filename, "w");
if (f) {
gtk_text_buffer_get_start_iter(scripts_dialog->text_buffer_editor,
&start);
gtk_text_buffer_get_end_iter(scripts_dialog->text_buffer_editor, &end);
text = gtk_text_buffer_get_text(scripts_dialog->text_buffer_editor,
&start, &end, TRUE);
fputs(text, f);
msg = g_strconcat(_("Saved "), filename, NULL);
gm_scripts_dialog_set_status(msg);
g_free(msg);
if (scripts_dialog->current_edit &&
filename != scripts_dialog->current_edit) {
g_free(scripts_dialog->current_edit);
scripts_dialog->current_edit = g_strdup(filename);
}
fclose(f);
return TRUE;
} else {
msg = g_strconcat(_("Saving failed: "), strerror(errno), NULL);
gm_error_dialog(msg, GTK_WINDOW(scripts_dialog->dialog));
g_free(msg);
return FALSE;
}
}
void
gm_scripts_dialog_editor_load(SelectionInfo *info) {
FILE *f;
gchar line[1024];
GtkTextIter end;
gchar *lline, *msg;
gtk_text_buffer_set_text(scripts_dialog->text_buffer_editor, "", 0);
gtk_text_buffer_get_end_iter(scripts_dialog->text_buffer_editor, &end);
if (info) {
f = fopen(info->filename, "r");
if (f) {
while (fgets((char *) &line, 1024 - 1, f) != NULL) {
lline = g_locale_to_utf8((gchar *)&line, strlen((char *)&line),
NULL, NULL, NULL);
if (lline) {
gtk_text_buffer_insert(scripts_dialog->text_buffer_editor,
&end, lline, strlen(lline));
g_free(lline);
} else {
gtk_text_buffer_insert(scripts_dialog->text_buffer_editor,
&end, (gchar *)&line, strlen((char *)&line));
}
}
fclose(f);
gtk_widget_set_sensitive(scripts_dialog->button_save,
info->can_save);
g_free(scripts_dialog->current_edit);
scripts_dialog->current_edit = g_strdup(info->filename);
msg = g_strconcat(_("Loaded "), info->filename, NULL);
gm_scripts_dialog_set_status(msg);
g_free(msg);
} else {
debug_msg(1, "GmScript.EditorLoad: file (%s) could not be read: %s",
scripts_dialog->current_edit, strerror(errno));
}
} else {
g_free(scripts_dialog->current_edit);
scripts_dialog->current_edit = NULL;
gm_scripts_dialog_set_status(_("New <untitled>"));
}
}
void
gm_scripts_dialog_init_console() {
GtkTextView *txt = GTK_TEXT_VIEW(scripts_dialog->text_view_console);
PangoFontDescription *f;
gtk_text_view_set_buffer(txt, scripts_dialog->text_buffer_console);
gtk_text_view_set_editable(txt, FALSE);
f =
pango_font_description_from_string("monospace 8");
if (f) {
gtk_widget_modify_font(GTK_WIDGET(txt), f);
pango_font_description_free(f);
}
}
void
gm_scripts_dialog_tree_add_function(GtkTreeStore *model, GtkTreeIter *parent,
GmScriptFunction *fi) {
GtkTreeIter item;
gchar *name, *description, *all, *markup;
gtk_tree_store_append(model, &item, parent);
name = g_filename_to_utf8(fi->name, strlen(fi->name), NULL,
NULL, NULL);
description = g_locale_to_utf8(fi->description, strlen(fi->description),
NULL, NULL, NULL);
markup = g_markup_escape_text(description, g_utf8_strlen(description, -1));
all = g_strconcat("<b>", name, "</b>\n", markup, NULL);
gtk_tree_store_set(model, &item, SCRIPTS_NAME, all, -1);
g_free(all);
g_free(markup);
g_free(description);
g_free(name);
}
void
gm_scripts_dialog_tree_update_script_item(GmScript *script, GtkTreeIter *iter) {
GList *list;
GtkTreeStore *model = GTK_TREE_STORE(gtk_tree_view_get_model(
GTK_TREE_VIEW(scripts_dialog->tree_view_scripts)));
GtkTreeIter item;
if (gtk_tree_model_iter_children(GTK_TREE_MODEL(model), &item, iter)) {
while (gtk_tree_store_remove(model, &item));
}
for (list = script->functions; list; list = list->next) {
gm_scripts_dialog_tree_add_function(model, iter,
(GmScriptFunction *)(list->data));
}
}
void
gm_scripts_dialog_tree_update_script(GmScript *script) {
GtkTreeModel *model = gtk_tree_view_get_model(
GTK_TREE_VIEW(scripts_dialog->tree_view_scripts));
GtkTreeIter item;
GmScript *obj;
if (gtk_tree_model_iter_children(model, &item, NULL)) {
do {
gtk_tree_model_get(model, &item, SCRIPTS_OBJECT,
&obj, -1);
if (obj == script) {
gm_scripts_dialog_tree_update_script_item(script, &item);
break;
}
} while (gtk_tree_model_iter_next(model, &item));
}
}
void
gm_scripts_dialog_tree_add_script(GmScript *script) {
GtkTreeStore *model = GTK_TREE_STORE(gtk_tree_view_get_model(
GTK_TREE_VIEW(scripts_dialog->tree_view_scripts)));
GtkTreeIter item;
gchar *name, *base;
gtk_tree_store_append(model, &item, NULL);
name = g_filename_to_utf8(script->filename, strlen(script->filename), NULL,
NULL, NULL);
base = g_path_get_basename(name);
g_free(name);
if (script->type == GM_SCRIPT_TYPE_USER) {
name = g_strconcat(_("<b>User:</b> "), base, NULL);
} else {
name = g_strconcat(_("<b>Share:</b> "), base, NULL);
}
g_free(base);
gtk_tree_store_set(model, &item, SCRIPTS_NAME, name, SCRIPTS_OBJECT,
script, -1);
g_free(name);
gm_scripts_dialog_tree_update_script_item(script, &item);
}
void
gm_scripts_dialog_fill_tree() {
GtkTreeView *view = GTK_TREE_VIEW(scripts_dialog->tree_view_scripts);
GtkTreeStore *model = GTK_TREE_STORE(gtk_tree_view_get_model(view));
GList *scripts;
gtk_tree_store_clear(model);
for (scripts = gm_scripts_scripts(gm_app_scripts(gm_app_instance()));
scripts; scripts = scripts->next) {
gm_scripts_dialog_tree_add_script((GmScript *)(scripts->data));
}
}
void
gm_scripts_dialog_init_tree() {
GtkTreeView *view = GTK_TREE_VIEW(scripts_dialog->tree_view_scripts);
GtkTreeStore *model = gtk_tree_store_new(SCRIPTS_N, G_TYPE_STRING,
G_TYPE_POINTER);
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Scripts"), renderer,
"markup", SCRIPTS_NAME, NULL);
gtk_tree_view_append_column(view, column);
gtk_tree_view_set_model(view, GTK_TREE_MODEL(model));
gm_scripts_dialog_fill_tree();
}
gboolean
gm_scripts_dialog_add_file(gchar *filename) {
GtkTreeView *view = GTK_TREE_VIEW(scripts_dialog->tree_view_files);
GtkTreeStore *model = GTK_TREE_STORE(gtk_tree_view_get_model(view));
GtkTreeIter share, home, parent, item;
gchar *sharedir = g_strdup(PACKAGE_DATA_DIR "/" PACKAGE "/scripts");
gchar *homedir = g_strconcat(gm_app_path(gm_app_instance()), "/scripts",
NULL);
gchar *name;
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model), &share, "0");
gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model), &home, "1");
name = g_filename_to_utf8(filename, strlen(filename), NULL,
NULL, NULL);
if (strncmp(sharedir, name, strlen(sharedir)) == 0) {
parent = share;
} else if (strncmp(homedir, name, strlen(homedir)) == 0) {
parent = home;
} else {
g_free(sharedir);
g_free(homedir);
g_free(name);
return FALSE;
}
gtk_tree_store_append(model, &item, &parent);
gtk_tree_store_set(model, &item, SCRIPTS_NAME, g_strrstr(name, "/") + 1,
-1);
g_free(name);
g_free(sharedir);
g_free(homedir);
return TRUE;
}
void
gm_scripts_dialog_fill_files() {
GtkTreeView *view = GTK_TREE_VIEW(scripts_dialog->tree_view_files);
GtkTreeStore *model = GTK_TREE_STORE(gtk_tree_view_get_model(view));
GtkTreeIter item, share, home, parent;
GtkTreePath *path;
gchar *sharedir;
gchar *name;
GList *scripts;
GmScript *script;
sharedir = g_strdup(PACKAGE_DATA_DIR "/" PACKAGE "/scripts");
gtk_tree_store_clear(model);
gtk_tree_store_append(model, &share, NULL);
gtk_tree_store_set(model, &share, SCRIPTS_NAME, _("Share"), -1);
gtk_tree_store_append(model, &home, NULL);
gtk_tree_store_set(model, &home, SCRIPTS_NAME, _("User"), -1);
for (scripts = gm_scripts_scripts(gm_app_scripts(gm_app_instance()));
scripts; scripts = scripts->next) {
script = (GmScript *)(scripts->data);
name = g_filename_to_utf8(script->filename, strlen(script->filename),
NULL, NULL, NULL);
if (strncmp(sharedir, name, strlen(sharedir)) == 0) {
parent = share;
} else {
parent = home;
}
gtk_tree_store_append(model, &item, &parent);
gtk_tree_store_set(model, &item, SCRIPTS_NAME,
g_strrstr(name, "/") + 1, -1);
g_free(name);
}
path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), &home);
gtk_tree_view_expand_to_path(view, path);
gtk_tree_path_free(path);
path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), &share);
gtk_tree_view_expand_to_path(view, path);
gtk_tree_path_free(path);
g_free(sharedir);
}
void
gm_scripts_dialog_init_files() {
GtkTreeView *view = GTK_TREE_VIEW(scripts_dialog->tree_view_files);
GtkTreeStore *model = gtk_tree_store_new(SCRIPTS_N, G_TYPE_STRING,
G_TYPE_POINTER);
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
GtkTreeSelection *selection;
GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes(
_("Filename"), renderer, "text", SCRIPTS_NAME, NULL);
gtk_tree_view_append_column(view, column);
gtk_tree_view_set_model(view, GTK_TREE_MODEL(model));
selection = gtk_tree_view_get_selection(view);
g_signal_connect((gpointer)selection, "changed",
G_CALLBACK(on_files_changed), NULL);
gm_scripts_dialog_fill_files();
}
GtkWidget *
gm_scripts_dialog_init_editor() {
GtkSourceLanguagesManager *lm = gtk_source_languages_manager_new();
GtkSourceLanguage *lang;
GtkWidget *view;
PangoFontDescription *f;
lang = gtk_source_languages_manager_get_language_from_mime_type(lm,
"application/x-ruby");
view = gtk_source_view_new();
scripts_dialog->text_buffer_editor = gtk_text_view_get_buffer(
GTK_TEXT_VIEW(view));
g_signal_connect((gpointer)scripts_dialog->text_buffer_editor,
"modified-changed",
G_CALLBACK(on_text_buffer_editor_modified_changed), NULL);
if (lang) {
gtk_source_buffer_set_language(
GTK_SOURCE_BUFFER(scripts_dialog->text_buffer_editor), lang);
}
f = pango_font_description_from_string(gm_options_get(gm_app_options(
gm_app_instance()), "font-family"));
gtk_widget_modify_font(view, f);
gtk_source_view_set_insert_spaces_instead_of_tabs(GTK_SOURCE_VIEW(view),
TRUE);
gtk_source_view_set_auto_indent(GTK_SOURCE_VIEW(view), TRUE);
gtk_source_view_set_show_line_numbers(GTK_SOURCE_VIEW(view), TRUE);
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD_CHAR);
gtk_text_view_set_left_margin(GTK_TEXT_VIEW(view), 6);
gtk_text_view_set_right_margin(GTK_TEXT_VIEW(view), 6);
gtk_source_buffer_set_highlight(GTK_SOURCE_BUFFER(
scripts_dialog->text_buffer_editor), TRUE);
gtk_widget_show(view);
return view;
}
GtkTextTag *
gm_scripts_dialog_create_tag(gchar *name, gchar *fg) {
GtkTextTag *tag;
GdkColor col;
gdk_color_parse(fg, &col);
tag = gtk_text_tag_new(name);
g_object_set(G_OBJECT(tag), "foreground-gdk", &col, NULL);
return tag;
}
void
gm_scripts_dialog_init() {
GmScripts *scripts = gm_app_scripts(gm_app_instance());
scripts_dialog = g_new0(GmScriptsDialog, 1);
scripts_dialog->tag_table = g_object_ref(gtk_text_tag_table_new());
scripts_dialog->dialog = NULL;
gtk_text_tag_table_add(scripts_dialog->tag_table,
gm_scripts_dialog_create_tag("scripts-run", "#445632"));
gtk_text_tag_table_add(scripts_dialog->tag_table,
gm_scripts_dialog_create_tag("scripts-msg", "#314E6C"));
gtk_text_tag_table_add(scripts_dialog->tag_table,
gm_scripts_dialog_create_tag("scripts-error", "#663822"));
scripts_dialog->text_buffer_console =
g_object_ref(gtk_text_buffer_new(scripts_dialog->tag_table));
// Attach signals to GmScripts object to know about changes
g_signal_connect(scripts, "script_added",
G_CALLBACK(on_gm_scripts_dialog_script_added), NULL);
g_signal_connect(scripts, "script_changed",
G_CALLBACK(on_gm_scripts_dialog_script_changed), NULL);
g_signal_connect(scripts, "script_removed",
G_CALLBACK(on_gm_scripts_dialog_script_removed), NULL);
g_signal_connect(scripts, "message",
G_CALLBACK(on_gm_scripts_dialog_message), NULL);
g_signal_connect(scripts, "error",
G_CALLBACK(on_gm_scripts_dialog_error), NULL);
g_signal_connect(scripts, "run",
G_CALLBACK(on_gm_scripts_dialog_run), NULL);
}
void
gm_scripts_dialog_fini() {
g_object_unref(scripts_dialog->tag_table);
g_object_unref(scripts_dialog->text_buffer_console);
g_free(scripts_dialog);
}
void
gm_scripts_dialog_run(GmAppView *view) {
GtkWidget *editor;
if (scripts_dialog->dialog != NULL) {
gtk_widget_show(scripts_dialog->dialog);
return;
}
scripts_dialog->xml = glade_xml_new(G_SCRIPTS_XML, "gm_scripts_dialog", NULL);
scripts_dialog->dialog = glade_xml_get_widget(scripts_dialog->xml,
"gm_scripts_dialog");
scripts_dialog->text_view_console = glade_xml_get_widget(scripts_dialog->xml,
"text_view_console");
scripts_dialog->statusbar_editor = glade_xml_get_widget(scripts_dialog->xml,
"statusbar_editor");
scripts_dialog->button_save = glade_xml_get_widget(scripts_dialog->xml,
"tool_button_save");
scripts_dialog->tree_view_scripts = glade_xml_get_widget(scripts_dialog->xml,
"tree_view_scripts");
scripts_dialog->tree_view_files = glade_xml_get_widget(scripts_dialog->xml,
"tree_view_files");
scripts_dialog->button_delete = glade_xml_get_widget(scripts_dialog->xml,
"tool_button_delete");
gm_scripts_dialog_init_console();
gm_scripts_dialog_init_tree();
gm_scripts_dialog_init_files();
editor = gm_scripts_dialog_init_editor();
gtk_container_add(GTK_CONTAINER(glade_xml_get_widget(scripts_dialog->xml,
"scrolled_window_editor")), editor);
glade_xml_signal_connect(scripts_dialog->xml, "on_gm_scripts_dialog_delete",
G_CALLBACK(on_gm_scripts_dialog_delete));
glade_xml_signal_connect(scripts_dialog->xml,
"on_tree_view_files_row_activated",
G_CALLBACK(on_tree_view_files_row_activated));
glade_xml_signal_connect(scripts_dialog->xml,
"on_tool_button_new_clicked",
G_CALLBACK(on_tool_button_new_clicked));
glade_xml_signal_connect(scripts_dialog->xml,
"on_tool_button_save_clicked",
G_CALLBACK(on_tool_button_save_clicked));
glade_xml_signal_connect(scripts_dialog->xml,
"on_tool_button_save_as_clicked",
G_CALLBACK(on_tool_button_save_as_clicked));
glade_xml_signal_connect(scripts_dialog->xml,
"on_tool_button_delete_clicked",
G_CALLBACK(on_tool_button_delete_clicked));
gtk_window_set_transient_for(GTK_WINDOW(scripts_dialog->dialog),
GTK_WINDOW(view));
gm_scripts_dialog_set_status(_("New <untitled>"));
g_object_unref(scripts_dialog->xml);
}
void
gm_scripts_dialog_add(MessageType mtype, gchar *msg) {
gchar *m, *tagName = NULL, *newLine;
gchar p[3] = {' ', ' ', '\0'};
GtkTextIter end;
switch (mtype) {
case SCRIPT_RUN:
p[0] = ':';
tagName = g_strdup("scripts-run");
break;
case SCRIPT_MESSAGE:
p[0] = '#';
tagName = g_strdup("scripts-msg");
break;
case SCRIPT_ERROR:
p[0] = '!';
tagName = g_strdup("scripts-error");
break;
}
m = g_strconcat(p, msg, "\n", NULL);
gtk_text_buffer_get_end_iter(scripts_dialog->text_buffer_console, &end);
// convert to UTF-8
newLine = g_locale_to_utf8(m, strlen(m), NULL, NULL, NULL);
if (newLine == NULL) {
gtk_text_buffer_insert_with_tags_by_name(
scripts_dialog->text_buffer_console, &end, m, strlen(m),
tagName, NULL);
} else {
gtk_text_buffer_insert_with_tags_by_name(
scripts_dialog->text_buffer_console, &end, newLine,
strlen(newLine), tagName, NULL);
g_free(newLine);
}
g_free(m);
g_free(tagName);
}
gboolean
gm_scripts_dialog_selection_info(SelectionInfo *info) {
GtkTreeView *view = GTK_TREE_VIEW(scripts_dialog->tree_view_files);
GtkTreeModel *model = gtk_tree_view_get_model(view);
GtkTreeSelection *selection = gtk_tree_view_get_selection(view);
gchar *parentName, *name;
info->view = view;
info->model = model;
if (gtk_tree_selection_get_selected(selection, &model, &(info->seliter))) {
info->has_parent = gtk_tree_model_iter_parent(model,
&(info->parent), &(info->seliter));
if (info->has_parent) {
gtk_tree_model_get(model, &(info->parent), SCRIPTS_NAME,
&parentName, -1);
gtk_tree_model_get(model, &(info->seliter), SCRIPTS_NAME,
&name, -1);
if (strcmp(parentName, _("Share")) == 0) {
info->filename = g_strconcat(
PACKAGE_DATA_DIR "/" PACKAGE "/scripts/", name, NULL);
} else {
info->filename = g_strconcat(gm_app_path(gm_app_instance()),
"/scripts/", name, NULL);
}
g_free(name);
g_free(parentName);
info->can_save = gm_scripts_dialog_can_write(info->filename);
} else {
info->filename = NULL;
}
return TRUE;
} else {
return FALSE;
}
}
/* CALLBACKS */
gboolean
on_gm_scripts_dialog_delete(GtkWidget *widget, GdkEvent *event,
gpointer user_data) {
g_free(scripts_dialog->current_edit);
scripts_dialog->current_edit = NULL;
scripts_dialog->dialog = NULL;
return FALSE;
}
void
on_files_changed(GtkTreeSelection *treeselection, gpointer user_data) {
SelectionInfo info;
if (gm_scripts_dialog_selection_info(&info)) {
gtk_widget_set_sensitive(scripts_dialog->button_delete,
info.has_parent && info.can_save);
if (info.filename) {
g_free(info.filename);
}
}
}
void
on_tree_view_files_row_activated(GtkTreeView *treeview, GtkTreePath *arg1,
GtkTreeViewColumn *arg2, gpointer user_data) {
SelectionInfo si;
if (gm_scripts_dialog_selection_info(&si) && si.filename) {
gm_scripts_dialog_editor_load(&si);
g_free(si.filename);
}
}
void
on_text_buffer_editor_modified_changed(GtkTextBuffer *buffer,
gpointer user_data) {
gchar *msg;
if (scripts_dialog->current_edit) {
msg = g_strconcat(_("Changed "), scripts_dialog->current_edit, NULL);
} else {
msg = g_strdup(_("Changed <untitled>"));
}
gm_scripts_dialog_set_status(msg);
g_free(msg);
}
void
on_tool_button_new_clicked(GtkToolButton *button, gpointer user_data) {
gm_scripts_dialog_editor_load(NULL);
}
void
on_tool_button_save_clicked(GtkToolButton *button, gpointer user_data) {
if (scripts_dialog->current_edit) {
gm_scripts_dialog_editor_save(scripts_dialog->current_edit);
gtk_text_buffer_set_modified(scripts_dialog->text_buffer_editor, FALSE);
} else {
on_tool_button_save_as_clicked(button, user_data);
}
}
void
on_tool_button_save_as_clicked(GtkToolButton *button, gpointer user_data) {
GtkWidget *dlg;
gchar *filename, *di;
dlg = gtk_file_chooser_dialog_new(_("Save file"),
GTK_WINDOW(scripts_dialog->dialog),
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
NULL);
if (scripts_dialog->current_edit) {
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dlg),
scripts_dialog->current_edit);
} else {
di = g_strconcat(gm_app_path(gm_app_instance()),
"/scripts/untitled.rb", NULL);
gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(dlg), di);
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dlg), "untitled.rb");
g_free(di);
}
if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) {
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dlg));
if (gm_scripts_dialog_editor_save(filename)) {
gtk_text_buffer_set_modified(scripts_dialog->text_buffer_editor,
FALSE);
}
g_free(filename);
}
gtk_widget_destroy(dlg);
}
void
on_tool_button_delete_clicked(GtkToolButton *button, gpointer user_data) {
SelectionInfo info;
if (gm_scripts_dialog_selection_info(&info)) {
if (info.has_parent && info.can_save) {
remove(info.filename);
}
g_free(info.filename);
}
}
// Callbacks
void
on_gm_scripts_dialog_script_added(GmScripts *scripts, GmScript *script,
gpointer user_data) {
if (scripts_dialog->dialog != NULL) {
gm_scripts_dialog_tree_add_script(script);
gm_scripts_dialog_add_file(script->filename);
}
}
void
on_gm_scripts_dialog_script_changed(GmScripts *scripts, GmScript *script,
gpointer user_data) {
if (scripts_dialog->dialog != NULL) {
gm_scripts_dialog_tree_update_script(script);
}
}
void
on_gm_scripts_dialog_script_removed(GmScripts *scripts, GmScript *script,
gpointer user_data) {
if (scripts_dialog->dialog != NULL) {
}
}
void on_gm_scripts_dialog_message(GmScripts *scripts, gchar *message,
gpointer user_data) {
gm_scripts_dialog_add(SCRIPT_MESSAGE, message);
}
void on_gm_scripts_dialog_error(GmScripts *scripts, gchar *message,
gpointer user_data) {
gm_scripts_dialog_add(SCRIPT_ERROR, message);
}
void on_gm_scripts_dialog_run(GmScripts *scripts, gchar *message,
gpointer user_data) {
gm_scripts_dialog_add(SCRIPT_RUN, message);
}
#endif

18
src/gm-scripts-dialog.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef __GM_SCRIPTS_DIALOG_H__
#define __GM_SCRIPTS_DIALOG_H__
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HAVE_RUBY
#include <gtk/gtk.h>
#include "gm-world.h"
#include "gm-app-view.h"
void gm_scripts_dialog_run(GmAppView *view);
void gm_scripts_dialog_init();
void gm_scripts_dialog_fini();
#endif
#endif /* __GM_SCRIPTS_DIALOG_H__ */

867
src/gm-scripts.c Normal file
View File

@ -0,0 +1,867 @@
#include <glib.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <gtk/gtk.h>
#include <ruby.h>
#include <libgnomevfs/gnome-vfs-mime-utils.h>
#include <libgnomevfs/gnome-vfs.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "debug.h"
#include "gm-world.h"
#include "gm-app.h"
#include "gm-scripts.h"
#include "gm-support.h"
#include "gm-world.h"
#define GM_SCRIPTS_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), \
GM_TYPE_SCRIPTS, GmScriptsPrivate))
#define RB_CALLBACK(x) (VALUE (*)())(x)
#define GM_SCRIPTS_GLOBAL PACKAGE_DATA_DIR "/" PACKAGE "/scripts"
static VALUE rb_world_class, rb_client_class, rb_scripts_class;
VALUE script_world_name(VALUE self);
VALUE gm_scripts_rb_world_new(GmWorld *world);
VALUE gm_scripts_rb_scripts_new(GmScripts *scripts);
void gm_scripts_rb_world_class_init();
void gm_scripts_rb_client_class_init();
void gm_scripts_rb_scripts_class_init();
void gm_scripts_unload(GmScripts *scripts);
void gm_scripts_rb_init();
struct _GmScriptsPrivate {
GList *files;
GmScript *loading;
GList *monitors;
};
/* Signals */
enum {
SCRIPT_ADDED,
SCRIPT_CHANGED,
SCRIPT_REMOVED,
RELOAD,
MESSAGE,
ERROR,
RUN,
NUM_SIGNALS
};
static guint gm_scripts_signals[NUM_SIGNALS] = {0};
G_DEFINE_TYPE(GmScripts, gm_scripts, G_TYPE_OBJECT)
static void
gm_scripts_finalize(GObject *object) {
GmScripts *scripts = GM_SCRIPTS(object);
GList *monitors;
gm_scripts_unload(scripts);
for (monitors = scripts->priv->monitors; monitors;
monitors = monitors->next) {
gnome_vfs_monitor_cancel((GnomeVFSMonitorHandle *)(monitors->data));
}
g_list_free(scripts->priv->monitors);
scripts->priv->monitors = NULL;
G_OBJECT_CLASS(gm_scripts_parent_class)->finalize(object);
}
static void
gm_scripts_class_init(GmScriptsClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_scripts_finalize;
gm_scripts_signals[SCRIPT_ADDED] =
g_signal_new("script_added",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmScriptsClass, script_added),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE,
1,
G_TYPE_POINTER);
gm_scripts_signals[SCRIPT_CHANGED] =
g_signal_new("script_changed",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmScriptsClass, script_changed),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE,
1,
G_TYPE_POINTER);
gm_scripts_signals[SCRIPT_REMOVED] =
g_signal_new("script_removed",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmScriptsClass, script_removed),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE,
1,
G_TYPE_POINTER);
gm_scripts_signals[RELOAD] =
g_signal_new("reload",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmScriptsClass, reload),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);
gm_scripts_signals[MESSAGE] =
g_signal_new("message",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmScriptsClass, message),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
gm_scripts_signals[ERROR] =
g_signal_new("error",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmScriptsClass, error),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
gm_scripts_signals[RUN] =
g_signal_new("run",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmScriptsClass, run),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
g_type_class_add_private(object_class, sizeof(GmScriptsPrivate));
gm_scripts_rb_init();
}
void
gm_scripts_rb_init(GmScriptsClass *klass) {
ruby_init();
gm_scripts_rb_world_class_init();
gm_scripts_rb_client_class_init();
gm_scripts_rb_scripts_class_init();
}
static void
gm_scripts_init(GmScripts *scripts) {
scripts->priv = GM_SCRIPTS_GET_PRIVATE(scripts);
scripts->priv->monitors = NULL;
scripts->priv->files = NULL;
}
GmScripts *
gm_scripts_new() {
GmScripts *scripts = GM_SCRIPTS(g_object_new(GM_TYPE_SCRIPTS, NULL));
return scripts;
}
void gm_scripts_monitor_cb (GnomeVFSMonitorHandle *handle,
const gchar *monitor_uri, const gchar *info_uri,
GnomeVFSMonitorEventType event_type,
GmScripts *scripts) {
gchar *filename = gnome_vfs_get_local_path_from_uri(info_uri);
switch (event_type) {
case GNOME_VFS_MONITOR_EVENT_CHANGED:
gm_scripts_reload_file(scripts, filename);
break;
case GNOME_VFS_MONITOR_EVENT_DELETED:
gm_scripts_remove_file(scripts, filename);
break;
case GNOME_VFS_MONITOR_EVENT_CREATED:
gm_scripts_add_file(scripts, filename);
break;
default:
break;
}
g_free(filename);
}
void
gm_script_function_destroy(GmScriptFunction *fi) {
g_free(fi->name);
g_free(fi->fname);
g_free(fi->description);
g_free(fi);
}
void
gm_script_destroy_functions(GmScript *script) {
GList *functions;
for (functions = script->functions; functions;
functions = functions->next) {
gm_script_function_destroy((GmScriptFunction *)(functions->data));
}
g_list_free(script->functions);
script->functions = NULL;
}
void
gm_script_destroy(GmScript *script) {
gm_script_destroy_functions(script);
g_free(script->filename);
g_free(script);
}
void
gm_scripts_unload(GmScripts *scripts) {
GList *files;
for (files = scripts->priv->files; files; files = files->next) {
gm_script_destroy((GmScript *)(files->data));
}
g_list_free(scripts->priv->files);
scripts->priv->files = NULL;
}
GmScriptFunction *
gm_scripts_find(GmScripts *scripts, gchar *name) {
GList *files;
GList *functions;
GmScriptFunction *func;
GmScript *script;
for (files = scripts->priv->files; files; files = files->next) {
script = (GmScript *)(files->data);
for (functions = script->functions; functions;
functions = functions->next) {
func = (GmScriptFunction *)(functions->data);
if (strcasecmp(func->name, name) == 0) {
return func;
}
}
}
return NULL;
}
gboolean
gm_scripts_add(GmScripts *scripts, gchar *name, gchar *fname,
gchar *description) {
GmScriptFunction *func;
if (gm_scripts_find(scripts, name) == NULL) {
func = g_new(GmScriptFunction, 1);
func->script = scripts->priv->loading;
func->name = g_strdup(name);
func->fname = g_strdup(fname);;
func->description = g_strdup(description);
scripts->priv->loading->functions =
g_list_append(scripts->priv->loading->functions, func);
return TRUE;
} else {
return FALSE;
}
}
VALUE
gm_scripts_rb_register_functions_wrap(VALUE arg) {
return rb_eval_string("register_functions");
}
void
gm_scripts_rb_script_define_world(VALUE *world) {
rb_define_variable("$world", world);
}
void
gm_scripts_rb_error(GmScripts *scripts) {
int c;
VALUE lasterr;
char *err;
gchar *msg;
VALUE ary;
if(!NIL_P(ruby_errinfo)) {
lasterr = rb_gv_get("$!");
err = RSTRING(rb_obj_as_string(lasterr))->ptr;
debug_msg(1, "GmScripts.Error: Error while executing Ruby code: %s",
err);
msg = g_strdup_printf(_("Error in execution: %s"), err);
g_signal_emit(scripts, gm_scripts_signals[MESSAGE], 0, msg);
g_free(msg);
ary = rb_funcall(ruby_errinfo, rb_intern("backtrace"), 0);
debug_msg(1, "GmScripts.Error: Ruby backtrace:");
g_signal_emit(scripts, gm_scripts_signals[ERROR], 0,
_("Ruby backtrace:"));
for (c = 0; c < RARRAY(ary)->len; c++) {
debug_msg(1, "GmScripts.Error: \tfrom %s",
RSTRING(RARRAY(ary)->ptr[c])->ptr);
msg = g_strdup_printf(_("\tfrom %s"),
RSTRING(RARRAY(ary)->ptr[c])->ptr);
g_signal_emit(scripts, gm_scripts_signals[ERROR], 0, msg);
g_free(msg);
}
}
}
int
gm_scripts_rb_do(GmScripts *scripts, VALUE (*body)(), VALUE arg) {
int status;
rb_protect(body, arg, &status);
if (status != 0) {
gm_scripts_rb_error(scripts);
ruby_cleanup(status);
return 0;
}
return 1;
}
VALUE
gm_scripts_run_function(GmScriptInfo *arg) {
VALUE ret;
gchar *argstr;
gchar *funcAll;
if (arg->argstr) {
argstr = gm_str_escape(arg->argstr);
funcAll = g_strconcat(arg->name, "(\"", argstr, "\")", NULL);
g_free(argstr);
} else {
funcAll = g_strconcat(arg->name, "()", NULL);
}
ret = rb_eval_string(funcAll);
g_free(funcAll);
return ret;
}
gboolean
gm_scripts_run(GmScripts *scripts, GmWorld *world, gchar *name, gchar *argstr) {
VALUE rbWorld, rbClient;
gchar *msg;
GmScriptInfo *info;
GmScriptFunction *f = gm_scripts_find(scripts, name);
if (!f) {
return FALSE;
}
info = g_new0(GmScriptInfo, 1);
info->name = g_strdup(f->fname);
if (argstr) {
info->argstr = g_strdup(argstr);
msg = g_strdup_printf(_("Run script '%s' from '%s' (%s)"), f->fname,
f->script->filename, argstr);
} else {
info->argstr = NULL;
msg = g_strdup_printf(_("Run script '%s' from '%s' ()"), f->fname,
f->script->filename);
}
g_signal_emit(scripts, gm_scripts_signals[RUN], 0, msg);
g_free(msg);
gm_scripts_rb_do(scripts, RB_CALLBACK(rb_load_file),
(VALUE)(f->script->filename));
ruby_exec();
rbWorld = gm_scripts_rb_world_new(world);
rb_define_variable("$world", &rbWorld);
rbClient = rb_class_new_instance(0, NULL, rb_client_class);
rb_define_variable("$client", &rbClient);
gm_scripts_rb_do(scripts, RB_CALLBACK(gm_scripts_run_function),
(VALUE)info);
g_free(info->name);
g_free(info->argstr);
g_free(info);
return TRUE;
}
VALUE
gm_scripts_register_func_old(int argc, VALUE *argv) {
debug_msg(1, "GmScripts.RegisterFunc: This is the deprecated way to "
"register functions is does no longer work. Use $scripts.register "
"instead.");
return Qfalse;
}
void
gm_scripts_register_functions(GmScripts *scripts) {
gchar *msg;
VALUE rbScripts;
debug_msg(1, "GmScripts.RegisterFunctions: registering functions in %s",
scripts->priv->loading->filename);
msg = g_strdup_printf(_("Registering functions from '%s'"),
scripts->priv->loading->filename);
g_signal_emit(scripts, gm_scripts_signals[MESSAGE], 0, msg);
g_free(msg);
if (!gm_scripts_rb_do(scripts, RB_CALLBACK(rb_load_file),
(VALUE) scripts->priv->loading->filename)) {
return;
}
ruby_exec();
rbScripts = gm_scripts_rb_scripts_new(scripts);
rb_define_variable("$scripts", &rbScripts);
rb_define_global_function("register_func", &gm_scripts_register_func_old,
-1);
gm_scripts_rb_do(scripts,
RB_CALLBACK(gm_scripts_rb_register_functions_wrap), 0);
}
void
gm_scripts_remove_file(GmScripts *scripts, const gchar *uri) {
GList *f, *l;
GmScript *script;
l = g_list_copy(scripts->priv->files);
for (f = l; f; f = f->next) {
script = (GmScript *)(f->data);
if (strcmp(script->filename, uri) == 0) {
scripts->priv->files = g_list_remove(scripts->priv->files, script);
debug_msg(1, "GmScripts.RemoveFile: Removing scripts from `%s'",
script->filename);
g_signal_emit(scripts, gm_scripts_signals[SCRIPT_REMOVED], 0,
script);
gm_script_destroy(script);
}
}
g_list_free(l);
}
gboolean
gm_scripts_add_file(GmScripts *scripts, const gchar *uri) {
GList *f;
GmScript *script;
gchar *msg;
for (f = scripts->priv->files; f; f = f->next) {
script = (GmScript *)(f->data);
if (strcmp(script->filename, uri) == 0) {
msg = g_strdup_printf(_("File `%s' already loaded"), uri);
debug_msg(1, "GmScripts.AddFile: %s", msg);
g_signal_emit(scripts, gm_scripts_signals[ERROR], 0, msg);
g_free(msg);
return FALSE;
}
}
msg = g_strdup_printf(_("File `%s' added"), uri);
debug_msg(1, "GmScripts.AddFile: %s", msg);
g_free(msg);
script = g_new0(GmScript, 1);
script->filename = g_strdup(uri);
if (strncmp(uri, GM_SCRIPTS_GLOBAL,
strlen(GM_SCRIPTS_GLOBAL)) == 0) {
script->type = GM_SCRIPT_TYPE_SHARE;
} else {
script->type = GM_SCRIPT_TYPE_USER;
}
scripts->priv->files = g_list_append(scripts->priv->files, script);
g_signal_emit(scripts, gm_scripts_signals[SCRIPT_ADDED], 0, script);
scripts->priv->loading = script;
gm_scripts_register_functions(scripts);
return TRUE;
}
void
gm_scripts_reload_file(GmScripts *scripts, const gchar *uri) {
GList *files;
GmScript *script;
for (files = scripts->priv->files; files; files = files->next) {
script = (GmScript *)(files->data);
if (strcmp(script->filename, uri) == 0) {
// Remove all functions and reregister the file
scripts->priv->loading = script;
gm_script_destroy_functions(script);
gm_scripts_register_functions(scripts);
g_signal_emit(scripts, gm_scripts_signals[SCRIPT_CHANGED], 0,
script);
return;
}
}
// If the script does not yet exist, add it
gm_scripts_add_file(scripts, uri);
}
void
gm_scripts_load_dir(GmScripts *scripts, gchar *dirname) {
gchar *filename;
gchar *file;
GDir *d;
GnomeVFSMonitorHandle *handle;
if (g_file_test(dirname, G_FILE_TEST_EXISTS) &&
g_file_test(dirname, G_FILE_TEST_IS_DIR)) {
if ((d = g_dir_open(dirname, 0, NULL))) {
while ((file = (gchar *)g_dir_read_name(d))) {
filename = g_strconcat(dirname, "/", file, NULL);
gm_scripts_add_file(scripts, filename);
g_free(filename);
}
}
gnome_vfs_monitor_add(&handle, dirname, GNOME_VFS_MONITOR_DIRECTORY,
(GnomeVFSMonitorCallback)gm_scripts_monitor_cb, scripts);
scripts->priv->monitors = g_list_append(scripts->priv->monitors,
handle);
}
}
void
gm_scripts_load(GmScripts *scripts) {
gchar *path;
if (scripts->priv->files) {
g_signal_emit(scripts, gm_scripts_signals[RELOAD], 0);
gm_scripts_unload(scripts);
}
path = g_strconcat(gm_app_path(gm_app_instance()), "/scripts", NULL);
gm_scripts_load_dir(scripts, path);
gm_scripts_load_dir(scripts, GM_SCRIPTS_GLOBAL);
}
GList *
gm_scripts_scripts(GmScripts *scripts) {
return scripts->priv->files;
}
// Ruby class functions
VALUE
gm_scripts_rb_world_new(GmWorld *world) {
VALUE tdata = Data_Wrap_Struct(rb_world_class, 0, 0, world);
return tdata;
}
VALUE
gm_scripts_rb_scripts_new(GmScripts *scripts) {
VALUE tdata = Data_Wrap_Struct(rb_scripts_class, 0, 0, scripts);
return tdata;
}
// Ruby world class functions
static VALUE
gm_scripts_rb_world_name(VALUE self) {
GmWorld *world;
Data_Get_Struct(self, GmWorld, world);
return rb_str_new2(gm_options_get(gm_world_options(world), "name"));
}
static VALUE
gm_scripts_rb_world_host(VALUE self) {
GmWorld *world;
Data_Get_Struct(self, GmWorld, world);
return rb_str_new2(gm_options_get(gm_world_options(world), "host"));
}
static VALUE
gm_scripts_rb_world_port(VALUE self) {
GmWorld *world;
Data_Get_Struct(self, GmWorld, world);
return rb_str_new2(gm_options_get(gm_world_options(world), "port"));
}
static VALUE
gm_scripts_rb_world_writeln(VALUE self, VALUE str) {
GmWorld *world;
gchar *strVal;
Data_Get_Struct(self, GmWorld, world);
strVal = rb_string_value_cstr(&str);
gm_world_writeln(world, strVal);
return Qnil;
}
static VALUE
gm_scripts_rb_world_sendln(VALUE self, VALUE str) {
GmWorld *world;
gchar *strVal;
Data_Get_Struct(self, GmWorld, world);
strVal = rb_string_value_cstr(&str);
gm_world_sendln(world, strVal);
return Qnil;
}
static VALUE
gm_scripts_rb_world_input(VALUE self, VALUE str) {
GmWorld *world;
gchar *strVal;
Data_Get_Struct(self, GmWorld, world);
strVal = rb_string_value_cstr(&str);
gm_world_process_input(world, strVal);
return Qnil;
}
static VALUE
gm_scripts_rb_world_loaded(VALUE self) {
GmWorld *world;
Data_Get_Struct(self, GmWorld, world);
if (gm_world_loaded(world)) {
return Qtrue;
} else {
return Qfalse;
}
}
static VALUE
gm_scripts_rb_world_connected(VALUE self) {
GmWorld *world;
Data_Get_Struct(self, GmWorld, world);
if (gm_world_state(world) == GM_NET_STATE_CONNECTED) {
return Qtrue;
} else {
return Qfalse;
}
}
static VALUE
gm_scripts_rb_world_quit(VALUE self) {
GmWorld *world;
Data_Get_Struct(self, GmWorld, world);
gm_world_unload(world);
return Qnil;
}
static VALUE
gm_scripts_rb_world_connect(int argc, VALUE *argv, VALUE self) {
GmWorld *world;
const gchar *strHost, *strPort;
Data_Get_Struct(self, GmWorld, world);
if (argc == 0) {
strHost = gm_options_get(gm_world_options(world), "host");
} else {
strHost = rb_string_value_cstr(&(argv[0]));
}
if (argc == 0 || argc == 1) {
strPort = gm_options_get(gm_world_options(world), "port");
} else {
strPort = rb_string_value_cstr(&(argv[1]));
}
gm_world_connect_to(world, (gchar *)strHost, (gchar *)strPort);
return Qnil;
}
static VALUE
gm_scripts_rb_world_disconnect(VALUE self) {
GmWorld *world;
Data_Get_Struct(self, GmWorld, world);
gm_world_disconnect(world);
return Qnil;
}
// Ruby client class functions
static VALUE
gm_scripts_rb_client_version(VALUE self) {
return rb_str_new2(VERSION);
}
static VALUE
gm_scripts_rb_client_worlds(VALUE self) {
GList *world;
VALUE rb_array = rb_ary_new();
VALUE rb_world;
for (world = gm_app_worlds(gm_app_instance()); world; world = world->next) {
rb_world = gm_scripts_rb_world_new((GmWorld *)(world->data));
rb_ary_push(rb_array, rb_world);
}
return rb_array;
}
static VALUE
gm_scripts_rb_client_open(VALUE self, VALUE str) {
GmWorld *world;
gchar *strVal;
strVal = rb_string_value_cstr(&str);
world = gm_app_world_by_name(gm_app_instance(), strVal);
if (world == NULL) {
return Qfalse;
} else {
gm_world_load(world);
return Qtrue;
}
}
// Ruby scripts class functions
VALUE
gm_scripts_rb_scripts_register(int argc, VALUE *argv, VALUE self) {
char *name, *fname = NULL, *description = NULL;
gchar *msg;
GmScripts *scripts;
Data_Get_Struct(self, GmScripts, scripts);
if (argc > 1) {
name = rb_string_value_cstr(&argv[0]);
description = rb_string_value_cstr(&argv[1]);
if (argc == 2) {
fname = name;
} else {
fname = rb_string_value_cstr(&argv[2]);
}
if (gm_scripts_add(scripts, name, fname, description)) {
msg = g_strdup_printf(_("Register function '%s' from '%s'"), name,
scripts->priv->loading->filename);
debug_msg(1, "GmScripts.RbScriptsRegister: Adding script function "
"%s from %s", name, scripts->priv->loading->filename);
g_signal_emit(scripts, gm_scripts_signals[MESSAGE], 0, msg);
g_free(msg);
return Qtrue;
} else {
msg = g_strdup_printf(_("Script '%s' is already defined"), name);
debug_msg(1, "GmScripts.RbScriptsRegister: Script function %s "
"already defined!", name);
g_signal_emit(scripts, gm_scripts_signals[ERROR], 0, msg);
g_free(msg);
return Qfalse;
}
} else {
return Qfalse;
}
}
// Ruby class initializations
void
gm_scripts_rb_world_class_init() {
rb_world_class = rb_define_class("World", rb_cObject);
rb_define_method(rb_world_class, "name", gm_scripts_rb_world_name, 0);
rb_define_method(rb_world_class, "host", gm_scripts_rb_world_host, 0);
rb_define_method(rb_world_class, "port", gm_scripts_rb_world_port, 0);
rb_define_method(rb_world_class, "writeln", gm_scripts_rb_world_writeln, 1);
rb_define_method(rb_world_class, "println", gm_scripts_rb_world_writeln, 1);
rb_define_method(rb_world_class, "sendln", gm_scripts_rb_world_sendln, 1);
rb_define_method(rb_world_class, "input", gm_scripts_rb_world_input, 1);
rb_define_method(rb_world_class, "quit", gm_scripts_rb_world_quit, 0);
rb_define_method(rb_world_class, "connect",
gm_scripts_rb_world_connect, -1);
rb_define_method(rb_world_class, "disconnect",
gm_scripts_rb_world_disconnect, 0);
rb_define_method(rb_world_class, "loaded?", gm_scripts_rb_world_loaded, 0);
rb_define_method(rb_world_class, "connected?",
gm_scripts_rb_world_connected, 0);
}
void
gm_scripts_rb_client_class_init() {
rb_client_class = rb_define_class("Client", rb_cObject);
rb_define_method(rb_client_class, "version",
gm_scripts_rb_client_version, 0);
rb_define_method(rb_client_class, "worlds",
gm_scripts_rb_client_worlds, 0);
rb_define_method(rb_client_class, "open", gm_scripts_rb_client_open, 1);
}
void
gm_scripts_rb_scripts_class_init() {
rb_scripts_class = rb_define_class("Scripts", rb_cObject);
rb_define_method(rb_scripts_class, "register",
gm_scripts_rb_scripts_register, -1);
}

109
src/gm-scripts.h Normal file
View File

@ -0,0 +1,109 @@
#ifndef __GM_SCRIPTS_H__
#define __GM_SCRIPTS_H__
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HAVE_RUBY
#include <glib.h>
#include <gtk/gtk.h>
#include "gm-world.h"
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_SCRIPTS (gm_scripts_get_type())
#define GM_SCRIPTS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_SCRIPTS, GmScripts))
#define GM_SCRIPTS_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \
GM_TYPE_SCRIPTS, GmScripts const))
#define GM_SCRIPTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \
GM_TYPE_SCRIPTS, GmScriptsClass))
#define GM_IS_SCRIPTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \
GM_TYPE_SCRIPTS))
#define GM_IS_SCRIPTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \
GM_TYPE_SCRIPTS))
#define GM_SCRIPTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \
GM_TYPE_SCRIPTS, GmScriptsClass))
/* Private structure type */
typedef struct _GmScriptsPrivate GmScriptsPrivate;
/*
* Main object structure
*/
typedef struct _GmScripts GmScripts;
struct _GmScripts {
GObject object;
/*< private > */
GmScriptsPrivate *priv;
};
typedef enum _GmScriptType {
GM_SCRIPT_TYPE_USER,
GM_SCRIPT_TYPE_SHARE
} GmScriptType;
typedef struct _GmScript {
gchar *filename;
GmScriptType type;
GList *functions;
} GmScript;
typedef struct _GmScriptFunction {
GmScript *script;
gchar *name;
gchar *fname;
gchar *description;
} GmScriptFunction;
typedef struct _GmScriptInfo {
gchar *name;
gchar *argstr;
} GmScriptInfo;
/*
* Class definition
*/
typedef struct _GmScriptsClass GmScriptsClass;
struct _GmScriptsClass {
GObjectClass parent_class;
/* Signals */
void (* script_added) (GmScripts *scripts, GmScript *script);
void (* script_changed) (GmScripts *scripts, GmScript *script);
void (* script_removed) (GmScripts *scripts, GmScript *script);
void (* reload) (GmScripts *scripts);
void (* message) (GmScripts *scripts, gchar *message);
void (* error) (GmScripts *scripts, gchar *message);
void (* run) (GmScripts *scripts, gchar *message);
};
GType gm_scripts_get_type(void) G_GNUC_CONST;
GmScripts *gm_scripts_new();
//void gm_script_init();
//void gm_script_fini();
void gm_scripts_reload_file(GmScripts *scripts, const gchar *uri);
gboolean gm_scripts_add_file(GmScripts *scripts, const gchar *uri);
void gm_scripts_remove_file(GmScripts *scripts, const gchar *uri);
GmScriptFunction *gm_scripts_find(GmScripts *scripts, gchar *name);
GList *gm_scripts_scripts(GmScripts *scripts);
gboolean gm_scripts_run(GmScripts *scripts, GmWorld *world, gchar *name,
gchar *argstr);
void gm_scripts_load(GmScripts *scripts);
G_END_DECLS
#endif /* HAVE_RUBY */
#endif /* __GM_SCRIPTS_H__ */

203
src/gm-string.c Normal file
View File

@ -0,0 +1,203 @@
#include <string.h>
#include <stdlib.h>
#include <glib.h>
#include "gm-string.h"
#include "debug.h"
/*
void
stringlist_add(stringlist * strl, char *data) {
stringlist_item *newStringlistItem =
(stringlist_item *) malloc(sizeof(stringlist_item));
newStringlistItem->data = strdup(data);
if (strl->firstItem == NULL) {
strl->firstItem = newStringlistItem;
} else {
newStringlistItem->prev = strl->lastItem;
if (strl->lastItem != NULL)
strl->lastItem->next = newStringlistItem;
}
strl->lastItem = newStringlistItem;
newStringlistItem->next = NULL;
strl->count++;
}
void
stringlist_remove(stringlist * strl, stringlist_item * removed) {
if (removed == strl->firstItem) {
strl->firstItem = removed->next;
} else {
removed->prev->next = removed->next;
}
if (removed == strl->lastItem) {
strl->lastItem = removed->prev;
} else {
removed->next->prev = removed->next;
}
free(removed->data);
free(removed);
strl->count--;
}
stringlist *
stringlist_create(char *argstr, char *delim) {
stringlist *newStringlist = (stringlist *) malloc(sizeof(stringlist));
char *data, *work, *working, *strPos;
newStringlist->firstItem = NULL;
newStringlist->lastItem = NULL;
newStringlist->count = 0;
if (delim == NULL) {
stringlist_add(newStringlist, argstr);
return newStringlist;
}
working = strdup(argstr);
working = mystring_cat(working, delim);
work = working;
while (strlen(work) != 0) {
if ((strPos = strstr(work, delim)) != NULL && strPos > work) {
data = NULL;
data = mystring_catn(data, work, (strPos - work));
stringlist_add(newStringlist, data);
free(data);
}
work = strPos + strlen(delim);
}
free(working);
return newStringlist;
}
void
stringlist_destroy(stringlist * strl) {
stringlist_item *curItem = strl->firstItem;
while (curItem != NULL) {
stringlist_remove(strl, curItem);
curItem = strl->firstItem;
}
free(strl);
}
char *
stringlist_glue_it(stringlist * strl, char *glue) {
char *result = NULL;
stringlist_item *curItem = strl->firstItem;
while (curItem != NULL) {
if (curItem != strl->firstItem) {
result = mystring_cat(result, glue);
result = mystring_cat(result, curItem->data);
} else {
result = strdup(curItem->data);
}
}
return result;
}
*/
gboolean
gm_string_to_int(const gchar *str, int *result) {
*result = 0;
if (str == NULL || *str == '\0') {
return FALSE;
}
*result = atoi(str);
return TRUE;
}
gchar *
gm_string_catn(gchar *str, gchar *add, guint n) {
guint relen;
gchar *newstr;
if (str == NULL) {
relen = 0;
} else {
relen = strlen(str);
}
if ((newstr = (gchar *) realloc(str, (relen + n + 1) * sizeof(gchar))) == NULL) {
debug_msg(1, "mystring_catn: REALLOC FAILED!");
return str;
} else {
if (relen == 0) {
newstr[0] = '\0';
}
strncat(newstr, add, n);
return newstr;
}
}
gchar *
gm_string_cat(gchar *str, gchar *add) {
return gm_string_catn(str, add, strlen(add));
}
gchar *
gm_string_trim(const gchar *str) {
gchar *newstr = NULL;
const gchar *r, *l;
if (str == NULL) {
return NULL;
}
r = str + strlen(str);
l = str;
while (*l == ' ' || *r == ' ') {
if (l == r) {
break;
}
if (*l == ' ') {
l++;
}
if (l == r) {
break;
}
if (*r == ' ') {
r--;
}
}
if (l == r) {
return g_strdup("");
} else {
newstr = g_strndup(l, r - l);
return newstr;
}
}
void
gm_string_remove_char(char *str, char rem) {
int i, j = 0;
for (i = 0; str[i] != '\0'; i++) {
if (str[i] != rem) {
str[j] = str[i];
j++;
}
}
str[j] = '\0';
}

36
src/gm-string.h Normal file
View File

@ -0,0 +1,36 @@
#ifndef MY_STRING_H
#define MY_STRING_H 1
#include <string.h>
#include <stdlib.h>
/*typedef struct _stringlist_item stringlist_item;
struct _stringlist_item {
char *data;
stringlist_item *next;
stringlist_item *prev;
};
typedef struct _stringlist stringlist;
struct _stringlist {
stringlist_item *firstItem;
stringlist_item *lastItem;
unsigned int count;
};
void stringlist_add(stringlist * strl, char *data);
void stringlist_remove(stringlist * strl, stringlist_item * removed);
stringlist *stringlist_create(char *argstr, char *delim);
void stringlist_destroy(stringlist * strl);
char *stringlist_glue_it(stringlist * strl, char *glue);
*/
int gm_string_to_int(const gchar *str, int *result);
char *gm_string_catn(char *str, char *add, unsigned int n);
char *gm_string_cat(char *str, char *add);
char *gm_string_trim(const gchar *str);
void gm_string_remove_char(char *str, char rem);
#endif

565
src/gm-support.c Normal file
View File

@ -0,0 +1,565 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <locale.h>
#include <gtk/gtk.h>
#include <regex.h>
#include <libgnome/gnome-url.h>
#include <libgnomevfs/gnome-vfs.h>
#include <errno.h>
#include "gm-support.h"
#include "debug.h"
#include "gm-pixbuf.h"
//#include "if_main.h"
#define URL_REGEXP "(((mailto|news|telnet|nttp|file|http|sftp|ftp|https|dav|callto)://)|(www|ftp)[-A-Za-z0-9]*\\.)[-A-Za-z0-9\\.@:]+[^]''\\.}>\\) ,\\/\\\"\\!]+(:[0-9]*)?(/|/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*[^]'\\.}>\\) ,\\\"\\!])?"
static regex_t url_regexp;
gchar *
gm_fix_decimal_point(gchar *line, int len) {
int i;
struct lconv *l = localeconv();
for (i = 0; i < len; i++) {
if (line[i] == '.') {
line[i] = l->decimal_point[0];
}
}
return line;
}
gchar *
gm_fix_decimal_point_rev(gchar *line, int len) {
int i;
struct lconv *l = localeconv();
for (i = 0; i < len; i++) {
if (line[i] == l->decimal_point[0]) {
line[i] = '.';
}
}
return line;
}
gchar *
gm_ansi_strip(gchar * s) {
int i, j = 0;
for (i = 0; s[i] != '\0'; i++) {
// Escape sequence, advance to character after 'm'
if (s[i] == '\x1B') {
while (s[i] != '\0' && s[i] != 'm') {
i++;
}
} else if (s[i] != '\x07') {
s[j] = s[i];
j++;
}
}
s[j] = '\0';
return s;
}
int
garray_length(gchar **s) {
int i = 0;
while (s[i] != NULL) {
i++;
}
return i;
}
void g_list_free_simple(GList *s) {
GList *tmp;
for (tmp = s; tmp; tmp = tmp->next) {
g_free(tmp->data);
}
g_list_free(s);
}
gchar *
g_list_find_simple(GList *s, gchar *f) {
GList *tmp;
for (tmp = s; tmp; tmp = tmp->next) {
if (strcmp(tmp->data, f) == 0) {
return tmp->data;
}
}
return NULL;
}
void
gm_dialog(gchar * message, GtkMessageType messagebox_type,
GtkWindow * parent) {
GtkWidget *dlg;
if (parent == NULL) {
//parent = GTK_WINDOW(if_main_get_widget("wndMain"));
}
dlg =
gtk_message_dialog_new(parent,
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
messagebox_type, GTK_BUTTONS_OK, message, NULL);
gtk_dialog_run(GTK_DIALOG(dlg));
gtk_widget_destroy(dlg);
}
void
gm_error_dialog(gchar * message, GtkWindow * parent) {
gm_dialog(message, GTK_MESSAGE_ERROR, parent);
}
void
gm_warning_dialog(gchar * message, GtkWindow * parent) {
gm_dialog(message, GTK_MESSAGE_WARNING, parent);
}
void
gm_info_dialog(gchar * message, GtkWindow * parent) {
gm_dialog(message, GTK_MESSAGE_INFO, parent);
}
void
gm_question_dialog(gchar * message, GtkWindow * parent) {
gm_dialog(message, GTK_MESSAGE_QUESTION, parent);
}
void
gm_do_events() {
while (gtk_events_pending()) {
gtk_main_iteration();
}
}
gchar *
gm_str_escape(gchar * line) {
gchar *newLine;
int i, j = 0;
if (strlen(line) == 0) {
return g_strdup("");
}
if (strstr(line, "\"") || strstr(line, "\\")) {
newLine = g_new(gchar, (strlen(line) * 2) + 1);
for (i = 0; i < (int)strlen(line); i++) {
if (line[i] == '"' || line[i] == '\\') {
newLine[j] = '\\';
j++;
}
newLine[j] = line[i];
j++;
}
newLine[j] = '\0';
return newLine;
} else {
return g_strdup(line);
}
}
void
gm_directory_remove_all(const gchar * path, gboolean remove_self) {
GDir *cDir;
gchar *name;
gchar *newPath;
if (g_file_test(path, G_FILE_TEST_IS_DIR)) {
// Iterate through the files and do the right thingie
if ((cDir = g_dir_open(path, 0, NULL))) {
while ((name = (gchar *) (g_dir_read_name(cDir))) != NULL) {
newPath = g_strconcat(path, "/", name, NULL);
gm_directory_remove_all(newPath, TRUE);
g_free(newPath);
}
g_dir_close(cDir);
}
}
if (remove_self) {
// Its a file, or just empty! MUST...BE...REMOVEEEED!
remove(path);
}
}
gint
gm_url_regex_match(const gchar *msg, int len, GArray *start, GArray *end) {
static gboolean inited = FALSE;
regmatch_t matches[1];
gint ret = 0, num_matches = 0, offset = 0;
gchar *tmp;
gint s;
if (!inited) {
memset (&url_regexp, 0, sizeof (regex_t));
regcomp (&url_regexp, URL_REGEXP, REG_EXTENDED);
inited = TRUE;
}
tmp = g_strndup(msg, len);
while (!ret) {
ret = regexec(&url_regexp, (char *)(tmp + offset), 1, matches, 0);
if (ret == 0) {
if (matches[0].rm_so > matches[0].rm_eo) {
break;
}
num_matches++;
s = matches[0].rm_so + offset;
offset = matches[0].rm_eo + offset;
g_array_append_val(start, s);
g_array_append_val(end, offset);
}
}
g_free(tmp);
return num_matches;
}
void
gm_open_url (const gchar *url) {
if (!url || strlen (url) == 0) {
return;
}
/* gnome_url_show doesn't work when there's no protocol, so we might
* need to add one.
*/
if (strstr (url, "://") == NULL) {
gchar *tmp;
tmp = g_strconcat ("http://", url, NULL);
gnome_url_show(tmp, NULL);
g_free (tmp);
return;
}
gnome_url_show (url, NULL);
}
void
gm_fetch_handle_free(GmFetchHandle *g) {
GList *tmp;
g_free(g->cur_file_name);
for (tmp = g->source_uri; tmp; tmp = tmp->next) {
gnome_vfs_uri_unref((GnomeVFSURI*)(tmp->data));
}
g_list_free(g->source_uri);
for (tmp = g->dest_uri; tmp; tmp = tmp->next) {
gnome_vfs_uri_unref((GnomeVFSURI*)(tmp->data));
}
g_list_free(g->dest_uri);
g_free(g);
}
GmFetchHandle *
gm_fetch_handle_create(GFunc cb, gpointer user_data) {
GmFetchHandle *g = g_new0(GmFetchHandle, 1);
g->cb = cb;
g->user_data = user_data;
g->prev_status = GNOME_VFS_XFER_PROGRESS_STATUS_OK;
g->cur_phase = -1;
g->prev_phase = -1;
g->cur_file = -1;
g->prev_file = -1;
g->source_uri = NULL;
g->dest_uri = NULL;
g->cur_file_name = NULL;
g->files_total = 0;
g->done = FALSE;
g->aborted = FALSE;
return g;
}
gint
gm_fetch_progress(GnomeVFSAsyncHandle *handle,
GnomeVFSXferProgressInfo *info,
GmFetchHandle *g) {
gchar *name;
const gchar *err;
g->cur_phase = info->phase;
g->cur_file = info->file_index;
g->files_total = info->files_total;
g->bytes_total = info->bytes_total;
g->file_size = info->file_size;
g->bytes_copied = info->bytes_copied;
g->total_bytes_copied = info->total_bytes_copied;
g->status = info->status;
if (g->aborted) {
g->cb(g, g->user_data);
gm_fetch_handle_free(g);
return FALSE;
}
if (info->target_name != NULL) {
if (g->cur_file_name && strcmp(g->cur_file_name, info->target_name) != 0) {
g->cur_phase = GNOME_VFS_XFER_PHASE_FILECOMPLETED;
g->cb(g, g->user_data);
g->cur_phase = info->phase;
g_free(g->cur_file_name);
g->cur_file_name = NULL;
}
if (!g->cur_file_name) {
g->cur_file_name = g_strdup(info->target_name);
}
}
if (info->status == GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE) {
name = gnome_vfs_get_local_path_from_uri(info->target_name);
debug_msg(1, "gnoemoe_fetch_progress: asking for overwriting %s: yes", name);
g->prev_status = GNOME_VFS_XFER_PROGRESS_STATUS_OVERWRITE;
return GNOME_VFS_XFER_OVERWRITE_ACTION_REPLACE;
} else if (info->status == GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR) {
name = gnome_vfs_get_local_path_from_uri(info->target_name);
err = gnome_vfs_result_to_string(info->vfs_status);
gdk_threads_enter();
debug_msg(1, "gnoemoe_fetch_progress: error for %s: %s", name, err);
g->cb(g, g->user_data);
gdk_threads_leave();
g_free(g->cur_file_name);
g->cur_file_name = NULL;
g->prev_status = GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR;
g_free(name);
return GNOME_VFS_XFER_ERROR_ACTION_SKIP;
}
if (info->phase == GNOME_VFS_XFER_PHASE_COMPLETED) {
if (g->cur_file_name != NULL) {
g->cur_phase = GNOME_VFS_XFER_PHASE_FILECOMPLETED;
g->cb(g, g->user_data);
g->cur_phase = info->phase;
}
g->done = TRUE;
g->cb(g, g->user_data);
gm_fetch_handle_free(g);
return TRUE;
}
g->prev_status = info->status;
return TRUE;
}
gint
gm_fetch_interact(GnomeVFSXferProgressInfo *info, gpointer user_data) {
return 1;
}
GmFetchHandle *
gm_fetch(const GList *source, const GList *dest,
GFunc cb, gpointer user_data) {
GmFetchHandle *g = gm_fetch_handle_create(cb, user_data);
gchar *uri;
for (; source; source = source->next) {
uri = (gchar *)(source->data);
g->source_uri = g_list_append(g->source_uri, gnome_vfs_uri_new(uri));
}
for (; dest; dest = dest->next) {
uri = (gchar *)(dest->data);
g->dest_uri = g_list_append(g->dest_uri, gnome_vfs_uri_new(uri));
}
gnome_vfs_async_xfer(&(g->handle), g->source_uri, g->dest_uri,
GNOME_VFS_XFER_DEFAULT|GNOME_VFS_XFER_RECURSIVE,
GNOME_VFS_XFER_ERROR_MODE_QUERY,
GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE,
GNOME_VFS_PRIORITY_DEFAULT,
(GnomeVFSAsyncXferProgressCallback)gm_fetch_progress,
g, gm_fetch_interact, g);
return g;
}
gboolean
gm_is_end_scrolled(GtkScrolledWindow *wnd, guint charHeight) {
GtkAdjustment *ad = gtk_scrolled_window_get_vadjustment(wnd);
return ((ad->page_size + ad->value) >= ad->upper - (double)charHeight);
}
void
gm_scroll_end(GtkTextView *view, gboolean needs) {
GtkTextBuffer *buf;
GtkTextMark *mark;
GtkTextIter iter;
if (!needs) {
return;
}
buf = gtk_text_view_get_buffer(view);
mark = gtk_text_buffer_get_mark(buf, "end-of-buffer");
if (mark == NULL) {
gtk_text_buffer_get_end_iter(buf, &iter);
mark = gtk_text_buffer_create_mark(buf, "end-of-buffer", &iter, FALSE);
}
gtk_text_view_scroll_to_mark(view, mark, 0.0, TRUE, 1.0, 1.0);
}
#define MAX_BUF 1024
GString *
gm_read_file(const gchar *fname, gboolean readall, OpenLogProgress func, gpointer user_data) {
FILE *f;
gchar line[MAX_BUF], *tmp;
GString *str = NULL;
long bytes_read = 0, bytes_total = 0;
if (!fname) {
return NULL;
}
f = fopen(fname, "r");
if (f) {
fseek(f, 0, SEEK_END);
bytes_total = ftell(f);
rewind(f);
str = g_string_new("");
while (fgets((char *) &line, MAX_BUF, f) != NULL) {
bytes_read += strlen((char *)&line);
tmp = NULL;
if (g_utf8_validate(line, -1, NULL)) {
if (readall) {
str = g_string_append(str, line);
}
tmp = g_strdup(line);
} else {
tmp = g_locale_to_utf8(line, -1, NULL, NULL, NULL);
if (!tmp) {
tmp = g_convert(line, -1, "UTF-8", "ISO-8859-15", NULL, NULL, NULL);
}
if (!tmp) {
tmp = g_convert(line, -1, "UTF-8", "ISO-8859-15", NULL, NULL, NULL);
}
if (readall) {
str = g_string_append(str, tmp);
}
}
if (func != NULL) {
func(bytes_read, bytes_total, tmp, user_data);
} else {
g_free(tmp);
}
}
fclose(f);
return str;
} else {
debug_msg(1, "support_read_file: file (%s) could not be read: %s",
fname, strerror(errno));
return NULL;
}
}
GtkWidget *
gm_create_tab_label(const gchar *icon, const gchar *caption, gboolean has_exit,
GmLabelInfo *info) {
/* First create the gbox (size 3) which will contain an icon, a label and a
exit button if has_exit is true */
GtkWidget *hboxTabLabel;
gint h, w;
hboxTabLabel = gtk_hbox_new(FALSE, 3);
gtk_widget_show(hboxTabLabel);
info->image_icon = gtk_image_new_from_pixbuf(
gm_pixbuf_get_at_size(icon, 16, 16));
gtk_widget_set_size_request(info->image_icon, 16, 16);
gtk_widget_show(info->image_icon);
gtk_box_pack_start(GTK_BOX(hboxTabLabel), info->image_icon, TRUE, TRUE, 0);
info->label_name = gtk_label_new(caption);
gtk_widget_show(info->label_name);
gtk_box_pack_start(GTK_BOX(hboxTabLabel), info->label_name, FALSE, FALSE, 0);
if (has_exit) {
info->button_exit = gtk_button_new();
gtk_widget_show(info->button_exit);
gtk_box_pack_end(GTK_BOX(hboxTabLabel), info->button_exit , FALSE,
FALSE, 0);
gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &w, &h);
gtk_widget_set_size_request(info->button_exit , w + 2, h + 2);
gtk_button_set_relief(GTK_BUTTON(info->button_exit ), GTK_RELIEF_NONE);
gtk_button_set_focus_on_click(GTK_BUTTON(info->button_exit), FALSE);
info->image_exit = gtk_image_new_from_stock("gtk-close",
GTK_ICON_SIZE_MENU);
gtk_widget_show(info->image_exit);
gtk_container_add(GTK_CONTAINER(info->button_exit), info->image_exit);
}
return hboxTabLabel;
}
void
gm_widget_destroy_data(GtkWidget *caller, GtkWidget *destroyer) {
if (GTK_IS_WIDGET(destroyer)) {
gtk_widget_destroy(destroyer);
}
}
const gchar *
gm_default_charset() {
const gchar *loc = NULL;
g_get_charset(&loc);
if (loc == NULL || strlen(loc) == 0) {
loc = "ISO-8859-15";
}
return loc;
}

148
src/gm-support.h Normal file
View File

@ -0,0 +1,148 @@
#ifndef __GM_SUPPORT_H__
#define __GM_SUPPORT_H__
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gtk/gtk.h>
#include <libgnomevfs/gnome-vfs.h>
/*
* Standard gettext macros.
*/
#ifdef ENABLE_NLS
# include <libintl.h>
# undef _
# define _(String) dgettext (PACKAGE, String)
# ifdef gettext_noop
# define N_(String) gettext_noop (String)
# else
# define N_(String) (String)
# endif
#else
# define textdomain(String) (String)
# define gettext(String) (String)
# define dgettext(Domain,Message) (Message)
# define dcgettext(Domain,Message,Type) (Message)
# define bindtextdomain(Domain,Directory) (Domain)
#ifndef _
# define _(String) (String)
#endif
# define N_(String) (String)
#endif
#define CALC_COLOR_RANGE(x) (int)((-(1/((x * 0.5)+1))+1)*255)
/** \defgroup support */
/** \ingroup support
* \brief Widget container for tabs
*
* Contains all widgets that could be useful to be modified.
* Stored here because it makes it easier to look them up.
*
*/
typedef struct _GmLabelInfo GmLabelInfo;
struct _GmLabelInfo {
/** \brief GtkButton widget
*
* GtkButton widget, reference to the tabs exit button
*/
GtkWidget *button_exit;
/** \brief GtkImage widget
*
* GtkImage widget, reference to the tabs exit button image
*/
GtkWidget *image_exit;
/** \brief GtkLabel widget
*
* GtkLabel widget, reference to the tabs label
*/
GtkWidget *label_name;
/** \brief GtkImage widget
*
* GtkImage widget, reference to the tabs icon
*/
GtkWidget *image_icon;
};
/** \ingroup support
* \brief Key/value pair struct
*
* Contains two fields. Used to create hash tables
*
*/
typedef struct _keyvaluepair {
gchar *key; /**< the key */
gchar *value; /**< the value */
} keyvaluepair;
typedef struct _GmFetchHandle GmFetchHandle;
struct _GmFetchHandle {
GnomeVFSAsyncHandle *handle;
GFunc cb;
gpointer user_data;
GList *source_uri;
GList *dest_uri;
GnomeVFSXferPhase cur_phase;
GnomeVFSXferPhase prev_phase;
GnomeVFSXferProgressStatus prev_status;
GnomeVFSXferProgressStatus status;
GnomeVFSFileSize bytes_total;
GnomeVFSFileSize file_size;
GnomeVFSFileSize bytes_copied;
GnomeVFSFileSize total_bytes_copied;
gulong files_total;
gulong cur_file;
gulong prev_file;
gchar *cur_file_name;
gboolean aborted;
gboolean done;
};
gchar *gm_fix_decimal_point(gchar *line, int len);
gchar *gm_fix_decimal_point_rev(gchar *line, int len);
gchar *gm_ansi_strip(gchar * s);
int garray_length(gchar **s);
void g_list_free_simple(GList *s);
gchar *g_list_find_simple(GList *s, gchar *f);
void gm_error_dialog(gchar * message, GtkWindow * parent);
void gm_warning_dialog(gchar * message, GtkWindow * parent);
void gm_info_dialog(gchar * message, GtkWindow * parent);
void gm_question_dialog(gchar * message, GtkWindow * parent);
void gm_do_events();
gchar *gm_str_escape(gchar * line);
void gm_directory_remove_all(const gchar * path, gboolean remove_self);
gint gm_url_regex_match(const gchar *msg, int len, GArray *start, GArray *end);
void gm_open_url (const gchar *url);
GmFetchHandle * gm_fetch(const GList *source, const GList *dest,
GFunc cb, gpointer user_data);
void gm_fetch_handle_free(GmFetchHandle *g);
gboolean gm_is_end_scrolled(GtkScrolledWindow *wnd, guint charHeight);
void gm_scroll_end(GtkTextView *view, gboolean needs);
typedef void (*OpenLogProgress) (long, long, gchar *, gpointer);
GString *gm_read_file(const gchar *fname, gboolean readall,
OpenLogProgress func, gpointer user_data);
GtkWidget *gm_create_tab_label(const gchar *icon, const gchar *caption,
gboolean has_exit, GmLabelInfo *info);
void gm_widget_destroy_data(GtkWidget *caller, GtkWidget *destroyer);
const gchar *gm_default_charset();
#endif /* __GM_SUPPORT_H__ */

55
src/gm-tray.c Normal file
View File

@ -0,0 +1,55 @@
#include "gm-tray.h"
#include "eggtrayicon.h"
#define GM_TRAY_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GM_TYPE_TRAY, GmTrayPrivate))
typedef enum _tray_type {
TRAY_ICON_DEFAULT,
TRAY_ICON_ACTIVE,
TRAY_ICON_NOTIFY
} tray_type;
struct _GmTrayPrivate {
GtkWidget *event_box;
GtkWidget *image;
GtkTooltips *tooltips;
GtkWidget *popup_menu;
GtkWidget *show_popup_item;
GtkWidget *hide_popup_item;
guint flash_timeout;
tray_type iconnr;
};
/* Signals */
enum {
NUM_SIGNALS
};
static guint tray_signals[NUM_SIGNALS] = {0};
G_DEFINE_TYPE(GmTray, gm_tray, EGG_TYPE_TRAY_ICON)
static void
gm_tray_finalize(GObject *object) {
GmTray *view = GM_TRAY(object);
G_OBJECT_CLASS(gm_tray_parent_class)->finalize(object);
}
static void
gm_tray_class_init(GmTrayClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_tray_finalize;
g_type_class_add_private(object_class, sizeof(GmTrayPrivate));
}
static void
gm_tray_init(GmTray *tray) {
tray->private = GM_TRAY_GET_PRIVATE(tray);
}

50
src/gm-tray.h Normal file
View File

@ -0,0 +1,50 @@
#ifndef __GM_TRAY_H__
#define __GM_TRAY_H__
#include <gtk/gtk.h>
#include "eggtrayicon.h"
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_TRAY (gm_tray_get_type())
#define GM_TRAY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_TRAY, GmTray))
#define GM_TRAY_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_TRAY, GmTray const))
#define GM_TRAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GM_TYPE_TRAY, GmTrayClass))
#define GM_IS_TRAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GM_TYPE_TRAY))
#define GM_IS_TRAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GM_TYPE_TRAY))
#define GM_TRAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GM_TYPE_TRAY, GmTrayClass))
/* Private structure type */
typedef struct _GmTrayPrivate GmTrayPrivate;
/*
* Main object structure
*/
typedef struct _GmTray GmTray;
struct _GmTray {
EggTrayIcon trayicon;
/*< private > */
GmTrayPrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmTrayClass GmTrayClass;
struct _GmTrayClass {
EggTrayIconClass parent_class;
/* Signals */
};
GType gm_tray_get_type(void) G_GNUC_CONST;
GmTray *gm_tray_new(void);
G_END_DECLS
#endif /* __GM_TRAY_H__ */

991
src/gm-triggers-dialog.c Normal file
View File

@ -0,0 +1,991 @@
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <libgnomeui/libgnomeui.h>
#include <glade/glade.h>
#include "gm-support.h"
#include "debug.h"
#include "gm-triggers-dialog.h"
#include "gm-app.h"
#include "gm-pixbuf.h"
#include "gm-scripts.h"
typedef struct _GmTriggersDialog {
GtkWidget *dialog;
GladeXML *xml;
GmWorld *world;
GmTrigger *trigger;
gboolean is_new;
GtkWidget *entry_name;
GtkWidget *button_ok;
GtkWidget *button_next;
GtkWidget *vbox_conditions;
GtkWidget *vbox_actions;
GtkWidget *notebook_triggers;
GtkWidget *tree_view_event_types;
GtkWidget *hbox_add_condition;
GtkWidget *hbox_add_action;
GtkTreeModel *action_model;
GtkTreeModel *condition_model;
GtkTreeModel *highlight_model;
#ifdef HAVE_RUBY
GtkTreeModel *script_model;
#endif
} GmTriggersDialog;
enum {
NO_ARGS,
SINGLE_ARGS,
CUSTOM_ARGS
};
typedef enum _CustomArgType {
CUSTOM_ARG_CREATE,
CUSTOM_ARG_GET_DATA
} CustomArgType;
gpointer gm_triggers_dialog_custom_arg_highlight(GmTriggersDialog *triggers,
CustomArgType type, gpointer data, gpointer user_data);
gpointer gm_triggers_dialog_custom_arg_browse(GmTriggersDialog *triggers,
CustomArgType type, gpointer data, gpointer user_data);
#ifdef HAVE_RUBY
gpointer gm_triggers_dialog_custom_arg_script(GmTriggersDialog *triggers,
CustomArgType type, gpointer data, gpointer user_data);
#endif
#define CUSTOM_ARG_FUNC(x) (CustomArgFunc *)(x)
typedef gpointer (*CustomArgFunc) (GmTriggersDialog *triggers,
CustomArgType type, gpointer data, gpointer user_data);
enum {
COLUMN_NAME,
COLUMN_DATA,
N_COLUMNS
};
enum {
COLUMN_HIGH_NAME,
COLUMN_HIGH_TAG,
N_COLUMNS_HIGH
};
typedef struct _ModelData {
gint type;
gchar *title;
gint args;
CustomArgFunc func;
} ModelData;
typedef struct _TagPair {
const gchar *name;
const gchar *tag;
} TagPair;
typedef struct _ComboBoxTypeData {
GmTriggersDialog *triggers;
GmTriggerData *data;
} ComboBoxTypeData;
static const TagPair highlightTags[] = {
{N_("Black"), "bg_black"},
{N_("Red"), "bg_red"},
{N_("Green"), "bg_green"},
{N_("Yellow"), "bg_yellow"},
{N_("Blue"), "bg_blue"},
{N_("Purple"), "bg_purple"},
{N_("Cyan"), "bg_cyan"},
{N_("White"), "bg_white"},
{NULL, NULL}
};
static const ModelData dataConditionOutput[] = {
{TCT_CONTAINS, N_("Contains"), SINGLE_ARGS, NULL},
{TCT_NOT_CONTAINS, N_("Not contains"), SINGLE_ARGS, NULL},
{TCT_BEGINS, N_("Begins with"), SINGLE_ARGS, NULL},
{TCT_NOT_BEGINS, N_("Not begins with"), SINGLE_ARGS, NULL},
{TCT_ENDS, N_("Ends with"), SINGLE_ARGS, NULL},
{TCT_NOT_ENDS, N_("Not ends with"), SINGLE_ARGS, NULL},
{TCT_MATCHES, N_("Matches"), SINGLE_ARGS, NULL},
{TCT_NOT_MATCHES, N_("Not matches"), SINGLE_ARGS, NULL},
{-1, NULL, 0, NULL}
};
static const ModelData dataConditionUsers[] = {
{TCT_USER_ONLINE, N_("Online"), SINGLE_ARGS, NULL},
{TCT_USER_OFFLINE, N_("Offline"), SINGLE_ARGS, NULL},
{TCT_USER_IDLE, N_("Idle"), SINGLE_ARGS, NULL},
{TCT_USER_IDLE_OFF, N_("No longer idle"), SINGLE_ARGS, NULL},
{TCT_USER_AWAY, N_("Away"), SINGLE_ARGS, NULL},
{TCT_USER_AWAY_OFF, N_("No longer away"), SINGLE_ARGS, NULL},
{-1, NULL, 0, NULL}
};
static const ModelData dataActionOutput[] = {
{TAT_HIGHLIGHT_LINE, N_("Highlight line"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_highlight},
{TAT_HIGHLIGHT_MATCH, N_("Highlight match"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_highlight},
{TAT_BEEP, N_("Beep"), NO_ARGS, NULL},
{TAT_PLAY_SOUND, N_("Play sound"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_browse},
{TAT_NOTIFY, N_("Notify"), SINGLE_ARGS, NULL},
#ifdef HAVE_RUBY
{TAT_RUN_SCRIPT, N_("Run script"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_script},
#endif
{TAT_RUN, N_("Run"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_browse},
{-1, NULL, 0, NULL}
};
static const ModelData dataActionUsers[] = {
{TAT_BEEP, N_("Beep"), NO_ARGS, NULL},
{TAT_PLAY_SOUND, N_("Play sound"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_browse},
{TAT_NOTIFY, N_("Notify"), SINGLE_ARGS, NULL},
#ifdef HAVE_RUBY
{TAT_RUN_SCRIPT, N_("Run script"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_script},
#endif
{TAT_RUN, N_("Run"), CUSTOM_ARGS,
gm_triggers_dialog_custom_arg_browse},
{-1, NULL, 0, NULL}
};
void on_button_next_clicked(GtkButton *button, GmTriggersDialog *triggers);
void on_button_add_condition_clicked(GtkButton *button,
GmTriggersDialog *triggers);
void on_button_add_action_clicked(GtkButton *button,
GmTriggersDialog *triggers);
void on_notebook_triggers_switch_page(GtkNotebook *notebook, GtkNotebookPage
*page, guint page_num, GmTriggersDialog *triggers);
void on_combo_box_type_changed(GtkComboBox *widget, ComboBoxTypeData *tdata);
void on_combo_box_type_destroy(GtkObject *object, ComboBoxTypeData *tdata);
void on_button_remove_clicked(GtkButton *button, GmTriggersDialog *triggers);
void on_tree_view_event_types_changed(GtkTreeSelection *treeselection,
GmTriggersDialog *triggers);
#define G_TRIGGERS_XML PACKAGE_DATA_DIR "/" PACKAGE "/ui/gm-triggers.glade"
void
gm_triggers_dialog_create_models(GmTriggersDialog *triggers,
const ModelData *conditionData, const ModelData *actionData) {
int i;
GtkTreeIter iter;
ModelData *data;
GList *scripts, *item;
#ifdef HAVE_RUBY
GmScript *script;
GmScriptFunction *func;
#endif
triggers->action_model = GTK_TREE_MODEL(gtk_list_store_new(
N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER));
triggers->condition_model = GTK_TREE_MODEL(gtk_list_store_new(
N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER));
triggers->highlight_model = GTK_TREE_MODEL(gtk_list_store_new(
N_COLUMNS_HIGH, G_TYPE_STRING, G_TYPE_STRING));
#ifdef HAVE_RUBY
triggers->script_model = GTK_TREE_MODEL(gtk_list_store_new(1,
G_TYPE_STRING));
#endif
for (i = 0; conditionData[i].type != -1; i++) {
data = (ModelData *)(&(conditionData[i]));
gtk_list_store_append(GTK_LIST_STORE(triggers->condition_model), &iter);
gtk_list_store_set(GTK_LIST_STORE(triggers->condition_model), &iter,
COLUMN_NAME, _(data->title), COLUMN_DATA, data, -1);
}
for (i = 0; actionData[i].type != -1; i++) {
data = (ModelData *)(&(actionData[i]));
gtk_list_store_append(GTK_LIST_STORE(triggers->action_model), &iter);
gtk_list_store_set(GTK_LIST_STORE(triggers->action_model), &iter,
COLUMN_NAME, _(data->title), COLUMN_DATA, data, -1);
}
for (i = 0; highlightTags[i].name != NULL; i++) {
gtk_list_store_append(GTK_LIST_STORE(triggers->highlight_model), &iter);
gtk_list_store_set(GTK_LIST_STORE(triggers->highlight_model), &iter,
COLUMN_HIGH_NAME, _(highlightTags[i].name), COLUMN_HIGH_TAG,
highlightTags[i].tag, -1);
}
#ifdef HAVE_RUBY
for (scripts = gm_scripts_scripts(gm_app_scripts(gm_app_instance()));
scripts; scripts = scripts->next) {
script = (GmScript *)(scripts->data);
for (item = script->functions; item; item = item->next) {
func = (GmScriptFunction *)(item->data);
gtk_list_store_append(GTK_LIST_STORE(triggers->script_model),
&iter);
gtk_list_store_set(GTK_LIST_STORE(triggers->script_model), &iter,
0, func->name, -1);
}
}
#endif
}
ModelData *
gm_triggers_dialog_combo_get_selected_data(GmTriggersDialog *triggers,
GtkComboBox *combo) {
GtkTreeIter iter;
ModelData *data;
gtk_combo_box_get_active_iter(combo, &iter);
gtk_tree_model_get(gtk_combo_box_get_model(combo), &iter, COLUMN_DATA, &data,
-1);
return data;
}
GList *
gm_triggers_dialog_collect_rules(GmTriggersDialog *triggers, GtkWidget *vbox) {
gchar *text;
GList *children, *child, *item, *result = NULL;
GtkComboBox *combo;
GtkEntry *entry;
ModelData *data;
GmTriggerData *d;
children = gtk_container_get_children(GTK_CONTAINER(vbox));
for (item = children; item; item = item->next) {
if (item->data == triggers->hbox_add_condition ||
item->data == triggers->hbox_add_action) {
break;
}
if (GTK_IS_HBOX(item->data)) {
child = gtk_container_get_children(GTK_CONTAINER(item->data));
combo = GTK_COMBO_BOX(child->data);
data = gm_triggers_dialog_combo_get_selected_data(triggers, combo);
d = NULL;
switch (data->args) {
case NO_ARGS:
d = gm_trigger_data_new(data->type, NULL);
break;
case SINGLE_ARGS:
if (child->next) {
entry = GTK_ENTRY(child->next->data);
text = (gchar *)gtk_entry_get_text(entry);
if (g_utf8_strlen(text, -1) > 0) {
d = gm_trigger_data_new(data->type, g_strdup(text));
}
}
break;
case CUSTOM_ARGS:
text = (gchar *)(data->func(triggers, CUSTOM_ARG_GET_DATA,
child->next, NULL));
if (text != NULL && g_utf8_strlen(text, -1) > 0) {
d = gm_trigger_data_new(data->type, text);
} else {
g_free(text);
}
break;
default:
break;
}
if (d) {
result = g_list_append(result, d);
}
g_list_free(child);
}
}
g_list_free(children);
return result;
}
gboolean
gm_triggers_dialog_fill_trigger(GmTriggersDialog *triggers) {
const gchar *name = gtk_entry_get_text(GTK_ENTRY(triggers->entry_name));
GList *conditions = NULL;
GList *actions = NULL;
if (g_utf8_strlen(name, -1) == 0) {
gm_error_dialog(_("Please fill in a trigger name"),
GTK_WINDOW(triggers->dialog));
gtk_widget_grab_focus(triggers->entry_name);
return FALSE;
}
conditions = gm_triggers_dialog_collect_rules(triggers,
triggers->vbox_conditions);
if (conditions == NULL) {
gm_error_dialog(_("Please specify at least one condition"),
GTK_WINDOW(triggers->dialog));
return FALSE;
}
actions = gm_triggers_dialog_collect_rules(triggers, triggers->vbox_actions);
if (actions == NULL) {
gm_trigger_free_list(conditions);
gm_error_dialog(_("Please specify at least one action"),
GTK_WINDOW(triggers->dialog));
return FALSE;
}
gm_trigger_set_name(triggers->trigger, name);
gm_trigger_set_conditions(triggers->trigger, conditions);
gm_trigger_set_actions(triggers->trigger, actions);
return TRUE;
}
void
gm_triggers_dialog_initialize_event_types(GmTriggersDialog *triggers) {
GtkListStore *store = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING,
G_TYPE_INT);
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeIter iter;
gtk_tree_view_set_model(GTK_TREE_VIEW(triggers->tree_view_event_types),
GTK_TREE_MODEL(store));
renderer = gtk_cell_renderer_pixbuf_new();
column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "pixbuf",
0, NULL);
gtk_tree_view_column_set_min_width(column, 40);
gtk_tree_view_append_column(GTK_TREE_VIEW(triggers->tree_view_event_types),
column);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "markup",
1, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(triggers->tree_view_event_types),
column);
gtk_list_store_prepend(store, &iter);
gtk_list_store_set(store, &iter, 0,
gm_pixbuf_get_at_size("ice-userlist/programmer.svg", 32, 32), 1,
_("<b>Player event</b>\nPlayer events are triggered on userlist "
"activity"), 2, TT_USERS, -1);
gtk_list_store_prepend(store, &iter);
gtk_list_store_set(store, &iter, 0,
gm_pixbuf_get_at_size("world.svg", 32, 32), 1,
_("<b>World event</b>\nWorld events are triggered on incoming "
"lines of text"), 2, TT_OUTPUT, -1);
gtk_tree_selection_select_iter(gtk_tree_view_get_selection(
GTK_TREE_VIEW(triggers->tree_view_event_types)), &iter);
g_signal_connect(gtk_tree_view_get_selection(GTK_TREE_VIEW(
triggers->tree_view_event_types)), "changed",
G_CALLBACK(on_tree_view_event_types_changed), NULL);
}
GmTrigger *
gm_triggers_dialog_run_dialog(GmTriggersDialog *triggers) {
gboolean done = FALSE;
GmTrigger *result = NULL;
while (!done) {
done = TRUE;
switch (gtk_dialog_run(GTK_DIALOG(triggers->dialog))) {
case GTK_RESPONSE_OK:
done = gm_triggers_dialog_fill_trigger(triggers);
if (done) {
result = triggers->trigger;
}
break;
default:
break;
}
}
if (triggers->action_model != NULL)
g_object_unref(triggers->action_model);
if (triggers->condition_model != NULL)
g_object_unref(triggers->condition_model);
if (triggers->highlight_model != NULL)
g_object_unref(triggers->highlight_model);
#ifdef HAVE_RUBY
if (triggers->script_model != NULL)
g_object_unref(triggers->script_model);
#endif
if (!result && triggers->is_new) {
gm_trigger_free(triggers->trigger);
}
g_object_unref(triggers->xml);
gtk_widget_destroy(triggers->dialog);
g_free(triggers);
return result;
}
GmTrigger *
gm_triggers_dialog_run_priv(GmWorld *world, GmTrigger *trigger,
gboolean is_new) {
GmTriggersDialog *triggers = g_new0(GmTriggersDialog, 1);
triggers->is_new = is_new;
triggers->world = world;
triggers->xml = glade_xml_new(G_TRIGGERS_XML, "gm_triggers_dialog", NULL);
triggers->dialog = glade_xml_get_widget(triggers->xml,
"gm_triggers_dialog");
triggers->entry_name = glade_xml_get_widget(triggers->xml, "entry_name");
triggers->vbox_conditions = glade_xml_get_widget(triggers->xml,
"vbox_conditions");
triggers->vbox_actions = glade_xml_get_widget(triggers->xml,
"vbox_actions");
triggers->notebook_triggers = glade_xml_get_widget(triggers->xml,
"notebook_triggers");
triggers->tree_view_event_types = glade_xml_get_widget(triggers->xml,
"tree_view_event_types");
triggers->button_ok = glade_xml_get_widget(triggers->xml, "button_ok");
triggers->hbox_add_condition = glade_xml_get_widget(triggers->xml,
"hbox_add_condition");
triggers->hbox_add_action = glade_xml_get_widget(triggers->xml,
"hbox_add_action");
triggers->button_next = glade_xml_get_widget(triggers->xml, "button_next");
gm_triggers_dialog_initialize_event_types(triggers);
glade_xml_signal_connect_data(triggers->xml, "on_button_next_clicked",
G_CALLBACK(on_button_next_clicked), triggers);
glade_xml_signal_connect_data(triggers->xml,
"on_button_add_condition_clicked",
G_CALLBACK(on_button_add_condition_clicked), triggers);
glade_xml_signal_connect_data(triggers->xml, "on_button_add_action_clicked",
G_CALLBACK(on_button_add_action_clicked), triggers);
glade_xml_signal_connect_data(triggers->xml,
"on_notebook_triggers_switch_page",
G_CALLBACK(on_notebook_triggers_switch_page), triggers);
triggers->trigger = trigger;
if (is_new) {
gtk_notebook_set_current_page(
GTK_NOTEBOOK(triggers->notebook_triggers), 0);
} else {
gtk_notebook_set_current_page(
GTK_NOTEBOOK(triggers->notebook_triggers), 1);
}
gtk_widget_show_all(triggers->dialog);
return gm_triggers_dialog_run_dialog(triggers);
}
GmTrigger *
gm_triggers_dialog_run(GmWorld *world, GmTrigger *trigger) {
return gm_triggers_dialog_run_priv(world, trigger, FALSE);
}
GmTrigger *
gm_triggers_dialog_run_new(GmWorld *world, GmTrigger *trigger) {
if (!trigger) {
trigger = gm_trigger_new();
}
return gm_triggers_dialog_run_priv(world, trigger, TRUE);
}
void
gm_triggers_dialog_select_combo_by_type(GmTriggersDialog *triggers,
GtkComboBox *combo, gint type) {
GtkTreeModel *model = gtk_combo_box_get_model(combo);
GtkTreeIter iter;
ModelData *data;
if (gtk_tree_model_get_iter_first(model, &iter)) {
do {
gtk_tree_model_get(model, &iter, COLUMN_DATA, &data, -1);
if (type == data->type) {
gtk_combo_box_set_active_iter(combo, &iter);
return;
}
} while (gtk_tree_model_iter_next(model, &iter));
}
}
GtkWidget *
gm_triggers_dialog_create_item(GmTriggersDialog *triggers, GtkTreeModel *model,
GmTriggerData *t) {
GtkWidget *hbox, *combo, *button;
ComboBoxTypeData *data;
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
hbox = gtk_hbox_new(FALSE, 6);
combo = gtk_combo_box_new_with_model(model);
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), renderer, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), renderer, "text",
COLUMN_NAME, NULL);
data = g_new0(ComboBoxTypeData, 1);
data->triggers = triggers;
data->data = t;
g_signal_connect(combo, "changed", G_CALLBACK(on_combo_box_type_changed),
data);
g_signal_connect(combo, "destroy", G_CALLBACK(on_combo_box_type_destroy),
data);
button = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
g_signal_connect(button, "clicked", G_CALLBACK(on_button_remove_clicked),
triggers);
gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0);
gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, TRUE, 0);
gtk_widget_show_all(hbox);
return hbox;
}
void
gm_triggers_dialog_new_condition(GmTriggersDialog *triggers) {
GtkWidget *hbox;
GList *children;
hbox = gm_triggers_dialog_create_item(triggers, triggers->condition_model,
NULL);
children = gtk_container_get_children(GTK_CONTAINER(hbox));
if (triggers->trigger->event == TT_OUTPUT) {
gm_triggers_dialog_select_combo_by_type(triggers,
GTK_COMBO_BOX(children->data), dataConditionOutput[0].type);
} else {
gm_triggers_dialog_select_combo_by_type(triggers,
GTK_COMBO_BOX(children->data), dataConditionUsers[0].type);
}
gtk_box_pack_start(GTK_BOX(triggers->vbox_conditions), hbox, FALSE, TRUE,
0);
g_list_free(children);
}
void
gm_triggers_dialog_populate_conditions(GmTriggersDialog *triggers) {
GList *item;
GtkWidget *hbox;
GmTriggerData *t;
GList *children;
if (triggers->trigger->conditions) {
for (item = triggers->trigger->conditions; item; item = item->next) {
t = (GmTriggerData *)(item->data);
hbox = gm_triggers_dialog_create_item(triggers,
triggers->condition_model, t);
children = gtk_container_get_children(GTK_CONTAINER(hbox));
gtk_box_pack_start(GTK_BOX(triggers->vbox_conditions), hbox,
FALSE, TRUE, 0);
gm_triggers_dialog_select_combo_by_type(triggers,
GTK_COMBO_BOX(children->data), t->type);
g_list_free(children);
}
} else {
gm_triggers_dialog_new_condition(triggers);
}
}
void
gm_triggers_dialog_new_action(GmTriggersDialog *triggers) {
GtkWidget *hbox;
GList *children;
hbox = gm_triggers_dialog_create_item(triggers, triggers->action_model,
NULL);
children = gtk_container_get_children(GTK_CONTAINER(hbox));
if (triggers->trigger->event == TT_OUTPUT) {
gm_triggers_dialog_select_combo_by_type(triggers,
GTK_COMBO_BOX(children->data), dataActionOutput[0].type);
} else {
gm_triggers_dialog_select_combo_by_type(triggers,
GTK_COMBO_BOX(children->data), dataActionUsers[0].type);
}
gtk_box_pack_start(GTK_BOX(triggers->vbox_actions), hbox, FALSE, TRUE, 0);
g_list_free(children);
}
void
gm_triggers_dialog_populate_actions(GmTriggersDialog *triggers) {
GList *item;
GtkWidget *hbox;
GmTriggerData *t;
GList *children;
if (triggers->trigger->actions) {
for (item = triggers->trigger->actions; item; item = item->next) {
t = (GmTriggerData *)(item->data);
hbox = gm_triggers_dialog_create_item(triggers,
triggers->action_model, t);
children = gtk_container_get_children(GTK_CONTAINER(hbox));
gtk_box_pack_start(GTK_BOX(triggers->vbox_actions), hbox, FALSE,
TRUE, 0);
gm_triggers_dialog_select_combo_by_type(triggers,
GTK_COMBO_BOX(children->data), t->type);
g_list_free(children);
}
} else {
gm_triggers_dialog_new_action(triggers);
}
}
/* CALLBACKS */
void
on_button_next_clicked(GtkButton *button, GmTriggersDialog *triggers) {
GtkTreeSelection *selection;
GtkTreeModel *model;
GtkTreeIter iter;
gint type;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(
triggers->tree_view_event_types));
model = gtk_tree_view_get_model(GTK_TREE_VIEW(
triggers->tree_view_event_types));
if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
gtk_tree_model_get(model, &iter, 2, &type, -1);
triggers->trigger->event = type;
gtk_notebook_set_current_page(GTK_NOTEBOOK(
triggers->notebook_triggers), 1);
} else {
gm_error_dialog(_("Select a event type first"),
GTK_WINDOW(triggers->dialog));
}
}
void
on_tree_view_event_types_changed(GtkTreeSelection *treeselection,
GmTriggersDialog *triggers) {
GtkTreeIter iter;
GtkTreeModel *model;
gint type;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(
triggers->tree_view_event_types));
if (!gtk_tree_selection_get_selected(treeselection, &model, &iter)) {
gtk_widget_set_sensitive(triggers->button_next, FALSE);
return;
}
gtk_widget_set_sensitive(triggers->button_next, TRUE);
gtk_tree_model_get(model, &iter, 2, &type, -1);
switch (type) {
case TT_OUTPUT:
gtk_window_set_icon(GTK_WINDOW(triggers->dialog),
gm_pixbuf_get_at_size("world.svg", 16, 16));
break;
case TT_USERS:
gtk_window_set_icon(GTK_WINDOW(triggers->dialog),
gm_pixbuf_get_at_size("ice-userlist/programmer.svg",
16, 16));
break;
default:
break;
}
}
void
on_notebook_triggers_switch_page(GtkNotebook *notebook, GtkNotebookPage *page,
guint page_num, GmTriggersDialog *triggers) {
const ModelData *conditionData = NULL;
const ModelData *actionData = NULL;
if (page_num != 1) {
return;
}
gtk_widget_set_sensitive(triggers->button_ok, TRUE);
switch (triggers->trigger->event) {
case TT_OUTPUT:
gtk_window_set_icon(GTK_WINDOW(triggers->dialog),
gm_pixbuf_get_at_size("world.svg", 16, 16));
conditionData = dataConditionOutput;
actionData = dataActionOutput;
break;
case TT_USERS:
gtk_window_set_icon(GTK_WINDOW(triggers->dialog),
gm_pixbuf_get_at_size("ice-userlist/programmer.svg",
16, 16));
conditionData = dataConditionUsers;
actionData = dataActionUsers;
break;
default:
break;
}
gm_triggers_dialog_create_models(triggers, conditionData, actionData);
if (triggers->trigger->name) {
gtk_entry_set_text(GTK_ENTRY(triggers->entry_name),
triggers->trigger->name);
}
gm_triggers_dialog_populate_conditions(triggers);
gm_triggers_dialog_populate_actions(triggers);
}
gpointer
gm_triggers_dialog_custom_arg_highlight(GmTriggersDialog *triggers,
CustomArgType type, gpointer data, gpointer user_data) {
GtkWidget *hbox;
GtkWidget *combo;
GtkCellRenderer *renderer;
GList *item;
GtkTreeIter iter;
GtkTreeModel *model;
gchar *tag;
GmTriggerData *t = (GmTriggerData *)(user_data);
switch (type) {
case CUSTOM_ARG_CREATE:
hbox = GTK_WIDGET(data);
combo = gtk_combo_box_new_with_model(triggers->highlight_model);
renderer = gtk_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), renderer, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), renderer,
"text", COLUMN_HIGH_NAME, NULL);
if (!user_data) {
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
} else {
model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo));
if (gtk_tree_model_get_iter_first(model, &iter)) {
do {
gtk_tree_model_get(model, &iter, COLUMN_HIGH_TAG,
&tag, -1);
if (strcmp(tag, t->data) == 0) {
gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo),
&iter);
break;
}
g_free(tag);
} while (gtk_tree_model_iter_next(model, &iter));
}
}
gtk_widget_show(combo);
gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0);
break;
case CUSTOM_ARG_GET_DATA:
item = (GList *)(data);
model = gtk_combo_box_get_model(GTK_COMBO_BOX(item->data));
gtk_combo_box_get_active_iter(GTK_COMBO_BOX(item->data), &iter);
gtk_tree_model_get(model, &iter, COLUMN_HIGH_TAG, &tag, -1);
return tag;
break;
}
return NULL;
}
void
on_button_browse_clicked(GtkButton *widget, GtkEntry *entry) {
gchar *tmp;
GtkWidget *d = gtk_file_chooser_dialog_new(_("Select file"),
NULL, GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
if (gtk_dialog_run(GTK_DIALOG(d)) == GTK_RESPONSE_ACCEPT) {
tmp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(d));
gtk_entry_set_text(entry, tmp);
g_free(tmp);
}
gtk_widget_destroy(d);
}
gpointer
gm_triggers_dialog_custom_arg_browse(GmTriggersDialog *triggers,
CustomArgType type, gpointer data, gpointer user_data) {
GtkWidget *hbox;
GtkWidget *entry;
GtkWidget *browse, *tmp;
GmTriggerData *t = (GmTriggerData *)(user_data);
GList *item;
switch (type) {
case CUSTOM_ARG_CREATE:
hbox = GTK_WIDGET(data);
entry = gtk_entry_new();
if (t) {
gtk_entry_set_text(GTK_ENTRY(entry), t->data);
}
browse = gtk_button_new();
tmp = gtk_hbox_new(FALSE, 3);
gtk_container_add(GTK_CONTAINER(browse), tmp);
gtk_box_pack_start(GTK_BOX(tmp), gtk_image_new_from_stock(
GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON), FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(tmp), gtk_label_new(_("Browse")),
TRUE, TRUE, 0);
g_signal_connect(browse, "clicked",
G_CALLBACK(on_button_browse_clicked), entry);
gtk_widget_show(entry);
gtk_widget_show_all(browse);
gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(hbox), browse, FALSE, TRUE, 0);
break;
case CUSTOM_ARG_GET_DATA:
item = (GList *)(data);
return g_strdup(gtk_entry_get_text(GTK_ENTRY(item->data)));
break;
}
return NULL;
}
void
on_combo_box_type_changed(GtkComboBox *widget, ComboBoxTypeData *tdata) {
GtkWidget *parent = gtk_widget_get_parent(GTK_WIDGET(widget));
GList *item, *children = gtk_container_get_children(GTK_CONTAINER(parent));
ModelData *data;
GtkTreeIter iter;
GtkWidget *tmp;
for (item = children->next; item && item->next; item = item->next) {
gtk_widget_destroy(GTK_WIDGET(item->data));
}
g_list_free(children);
if (gtk_combo_box_get_active_iter(widget, &iter)) {
gtk_tree_model_get(gtk_combo_box_get_model(widget), &iter,
COLUMN_DATA, &data, -1);
switch (data->args) {
case SINGLE_ARGS:
tmp = gtk_entry_new();
if (tdata->data) {
gtk_entry_set_text(GTK_ENTRY(tmp), tdata->data->data);
}
gtk_widget_show(tmp);
gtk_box_pack_start(GTK_BOX(parent), tmp, TRUE, TRUE, 0);
break;
case CUSTOM_ARGS:
data->func(tdata->triggers,
CUSTOM_ARG_CREATE, (gpointer)parent,
(gpointer)tdata->data);
break;
default:
break;
}
if (tdata->data != NULL) {
tdata->data = NULL;
}
} else {
debug_msg(0, "No active iter!");
}
}
void
on_combo_box_type_destroy(GtkObject *object, ComboBoxTypeData *tdata) {
g_free(tdata);
}
#ifdef HAVE_RUBY
gpointer
gm_triggers_dialog_custom_arg_script(GmTriggersDialog *triggers,
CustomArgType type, gpointer data, gpointer user_data) {
GtkWidget *hbox;
GtkWidget *entry;
GtkEntryCompletion *entry_completion;
GList *item;
GmTriggerData *t = (GmTriggerData *)(user_data);
switch (type) {
case CUSTOM_ARG_CREATE:
hbox = GTK_WIDGET(data);
entry = gtk_entry_new();
entry_completion = gtk_entry_completion_new();
gtk_entry_completion_set_model(entry_completion,
triggers->script_model);
gtk_entry_completion_set_text_column(entry_completion, 0);
gtk_entry_set_completion(GTK_ENTRY(entry), entry_completion);
if (user_data) {
gtk_entry_set_text(GTK_ENTRY(entry), t->data);
}
gtk_widget_show(entry);
gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, FALSE, 0);
break;
case CUSTOM_ARG_GET_DATA:
item = (GList *)(data);
return g_strdup(gtk_entry_get_text(GTK_ENTRY(item->data)));
break;
}
return NULL;
}
#endif
gboolean
gm_triggers_dialog_idle_remove_item(GtkWidget *parent) {
gtk_widget_destroy(parent);
return FALSE;
}
void
on_button_remove_clicked(GtkButton *button, GmTriggersDialog *triggers) {
g_idle_add((GSourceFunc)(gm_triggers_dialog_idle_remove_item),
gtk_widget_get_parent(GTK_WIDGET(button)));
}
void
on_button_add_condition_clicked(GtkButton *button, GmTriggersDialog *triggers) {
gm_triggers_dialog_new_condition(triggers);
}
void
on_button_add_action_clicked(GtkButton *button, GmTriggersDialog *triggers) {
gm_triggers_dialog_new_action(triggers);
}

10
src/gm-triggers-dialog.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef __GM_TRIGGERS_DIALOG__
#define __GM_TRIGGERS_DIALOG__
#include "gm-triggers.h"
#include "gm-world.h"
GmTrigger *gm_triggers_dialog_run(GmWorld *world, GmTrigger *trig);
GmTrigger *gm_triggers_dialog_run_new(GmWorld *world, GmTrigger *trig);
#endif /* __GM_TRIGGERS_DIALOG__ */

440
src/gm-triggers.c Normal file
View File

@ -0,0 +1,440 @@
#include <strings.h>
#include <string.h>
#include <libxml/parser.h>
#include "gm-triggers.h"
#include "debug.h"
#define GM_TRIGGERS_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GM_TYPE_TRIGGERS, GmTriggersPrivate))
typedef struct _trigger_trans {
gint type;
const gchar *name;
} trigger_trans;
static const trigger_trans table_conditions[] = {
{TCT_CONTAINS, "contains"},
{TCT_NOT_CONTAINS, "not-contains"},
{TCT_BEGINS, "begins"},
{TCT_NOT_BEGINS, "not-begins"},
{TCT_ENDS, "ends"},
{TCT_NOT_ENDS, "not-ends"},
{TCT_MATCHES, "matches"},
{TCT_NOT_MATCHES, "not-matches"},
{TCT_USER_ONLINE, "online"},
{TCT_USER_OFFLINE, "offline"},
{TCT_USER_IDLE, "idle"},
{TCT_USER_IDLE_OFF, "idle-off"},
{TCT_USER_AWAY, "away"},
{TCT_USER_AWAY_OFF, "away-off"},
{-1, NULL}
};
static const trigger_trans table_actions[] = {
{TAT_HIGHLIGHT_LINE, "highlight-line"},
{TAT_HIGHLIGHT_MATCH, "highlight-match"},
{TAT_BEEP, "beep"},
{TAT_PLAY_SOUND, "play-sound"},
{TAT_NOTIFY, "notify"},
#ifdef HASRUBY
{TAT_RUN_SCRIPT, "run-script"},
#endif
{TAT_RUN, "run"},
{-1, NULL}
};
struct _GmTriggersPrivate {
GList *triggers;
gchar *path;
};
/* Signals */
/*enum {
PROTO
NUM_SIGNALS
};
static guint triggers_signals[NUM_SIGNALS] = {0};*/
G_DEFINE_TYPE(GmTriggers, gm_triggers, G_TYPE_OBJECT)
static void
gm_triggers_finalize(GObject *object) {
GmTriggers *trg = GM_TRIGGERS(object);
GList *item;
for (item = trg->priv->triggers; item; item = item->next) {
gm_trigger_free((GmTrigger *)(item->data));
}
g_free(trg->priv->path);
g_list_free(trg->priv->triggers);
G_OBJECT_CLASS(gm_triggers_parent_class)->finalize(object);
}
static void
gm_triggers_class_init(GmTriggersClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
object_class->finalize = gm_triggers_finalize;
g_type_class_add_private(object_class, sizeof(GmTriggersPrivate));
}
static void
gm_triggers_init(GmTriggers *trg) {
trg->priv = GM_TRIGGERS_GET_PRIVATE(trg);
trg->priv->triggers = NULL;
trg->priv->path = NULL;
}
GmTrigger *
gm_trigger_new() {
return g_new0(GmTrigger, 1);
}
GList *
gm_trigger_list_dup(GList *list) {
GList *result = NULL;
GList *item;
GmTriggerData *data;
for (item = list; item; item = item->next) {
data = (GmTriggerData *)(item->data);
result = g_list_append(result, gm_trigger_data_new(data->type,
g_strdup(data->data)));
}
return result;
}
GmTrigger *
gm_trigger_dup(GmTrigger *source) {
GmTrigger *result = gm_trigger_new();
result->name = g_strdup(source->name);
result->event = source->event;
result->conditions = gm_trigger_list_dup(source->conditions);
result->actions = gm_trigger_list_dup(source->actions);
return result;
}
void
gm_trigger_set_name(GmTrigger *trigger, const gchar *name) {
g_free(trigger->name);
trigger->name = g_strdup(name);
}
void
gm_trigger_free_list(GList *list) {
GList *item;
GmTriggerData *data;
for (item = list; item; item = item->next) {
data = (GmTriggerData *)(item->data);
gm_trigger_data_free(data);
}
g_list_free(list);
}
void
gm_trigger_free(GmTrigger *trigger) {
gm_trigger_free_list(trigger->conditions);
gm_trigger_free_list(trigger->actions);
g_free(trigger->name);
g_free(trigger);
}
GmTriggerData *
gm_trigger_data_new(gint type, gchar *data) {
GmTriggerData *tdata = g_new0(GmTriggerData, 1);
tdata->type = type;
tdata->data = data;
memset(&(tdata->expr), 0, sizeof(regex_t));
switch (tdata->type) {
case TCT_MATCHES: case TCT_NOT_MATCHES: case TCT_USER_ONLINE:
case TCT_USER_OFFLINE: case TCT_USER_IDLE: case TCT_USER_IDLE_OFF:
case TCT_USER_AWAY: case TCT_USER_AWAY_OFF:
regcomp(&(tdata->expr), tdata->data, REG_EXTENDED);
break;
default:
break;
}
return tdata;
}
void
gm_trigger_data_free(GmTriggerData *tdata) {
g_free(tdata->data);
g_free(tdata);
}
void
gm_trigger_add_condition(GmTrigger *trigger, GmTriggerData *condition) {
trigger->conditions = g_list_append(trigger->conditions, condition);
}
void
gm_trigger_add_action(GmTrigger *trigger, GmTriggerData *action) {
trigger->actions = g_list_append(trigger->actions, action);
}
void
gm_trigger_set_conditions(GmTrigger *trigger, GList *conditions) {
gm_trigger_free_list(trigger->conditions);
trigger->conditions = conditions;
}
void
gm_trigger_set_actions(GmTrigger *trigger, GList *actions) {
gm_trigger_free_list(trigger->actions);
trigger->actions = actions;
}
gint
gm_trigger_type_from_name(const gchar *name,
const trigger_trans *trans_table) {
int i;
for (i = 0; trans_table[i].type != -1; i++) {
if (strcasecmp(trans_table[i].name, name) == 0) {
return trans_table[i].type;
}
}
return -1;
}
const gchar *
gm_trigger_name_from_type(gint type, const trigger_trans *trans_table) {
int i;
for (i = 0; trans_table[i].type != -1; i++) {
if (trans_table[i].type == type) {
return trans_table[i].name;
}
}
return NULL;
}
void
gm_triggers_parse_trigger(GmTriggers *trg, xmlDocPtr doc, xmlNodePtr node) {
GmTrigger *result = gm_trigger_new();
xmlChar *tmp, *tmp2;
gint type;
tmp = xmlGetProp(node, (const xmlChar *)"name");
result->name = (gchar *)tmp;
tmp = xmlGetProp(node, (const xmlChar *)"event");
if (xmlStrcmp(tmp, (const xmlChar *)("world")) == 0) {
result->event = TT_OUTPUT;
} else if (xmlStrcmp(tmp, (const xmlChar *)("player")) == 0){
result->event = TT_USERS;
} else {
xmlFree(tmp);
gm_trigger_free(result);
return;
}
xmlFree(tmp);
for (node = node->xmlChildrenNode; node; node = node->next) {
tmp = xmlGetProp(node, (const xmlChar *)"type");
tmp2 = xmlGetProp(node, (const xmlChar *)"data");
if (xmlStrcmp(node->name, (const xmlChar *)("condition")) == 0) {
type = gm_trigger_type_from_name((const gchar *)(tmp),
table_conditions);
if (type != -1) {
gm_trigger_add_condition(result, gm_trigger_data_new(type,
g_strdup((char *)tmp2)));
}
} else if (xmlStrcmp(node->name, (const xmlChar *)("action")) == 0) {
type = gm_trigger_type_from_name((const gchar *)(tmp),
table_actions);
if (type != -1) {
gm_trigger_add_action(result, gm_trigger_data_new(type,
g_strdup((char *)tmp2)));
}
}
xmlFree(tmp2);
xmlFree(tmp);
}
gm_triggers_add(trg, result);
}
GmTriggers *
gm_triggers_new() {
GmTriggers *trg = GM_TRIGGERS(g_object_new(GM_TYPE_TRIGGERS, NULL));
return trg;
}
void
gm_triggers_add(GmTriggers *trg, GmTrigger *t) {
trg->priv->triggers = g_list_append(trg->priv->triggers, t);
}
void
gm_triggers_clear(GmTriggers *trg) {
GList *item;
for (item = trg->priv->triggers; item; item = item->next) {
gm_trigger_free((GmTrigger *)(item->data));
}
g_list_free(trg->priv->triggers);
trg->priv->triggers = NULL;
}
GmTriggers *
gm_triggers_new_from_file(gchar *filename) {
GmTriggers *trg = GM_TRIGGERS(g_object_new(GM_TYPE_TRIGGERS, NULL));
xmlDocPtr doc;
xmlNodePtr cur;
if (!g_file_test(filename, G_FILE_TEST_EXISTS)) {
debug_msg(1, "GmTriggers.NewFromFile: Trigger file does not exist");
return trg;
}
trg->priv->path = g_strdup(filename);
doc = xmlParseFile(filename);
if (doc == NULL) {
debug_msg(1, "GmTriggers.NewFromFile: Error on parsing triggers");
return trg;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
xmlFreeDoc(doc);
return trg;
}
if (xmlStrcmp(cur->name, (const xmlChar *)("triggers"))) {
debug_msg(1, "GmTriggers.NewFromFile: invalid root node");
xmlFreeDoc(doc);
return trg;
}
for (cur = cur->xmlChildrenNode; cur; cur = cur->next) {
if (!xmlStrcmp(cur->name, (const xmlChar *)("trigger"))) {
gm_triggers_parse_trigger(trg, doc, cur);
}
}
xmlFreeDoc(doc);
return trg;
}
void
gm_triggers_set_path(GmTriggers *trg, gchar *path) {
g_free(trg->priv->path);
trg->priv->path = g_strdup(path);
}
void
gm_trigger_rules_xml(GmTrigger *t, xmlNodePtr trig) {
GmTriggerData *data;
GList *item;
xmlNodePtr child;
for (item = t->conditions; item; item = item->next) {
data = (GmTriggerData *)(item->data);
child = xmlNewChild(trig, NULL, (const xmlChar *)("condition"), NULL);
xmlNewProp(child, (const xmlChar *)("type"), (const xmlChar *)
(gm_trigger_name_from_type(data->type, table_conditions)));
if (data->data) {
xmlNewProp(child, (const xmlChar *)("data"), (const xmlChar *)
(data->data));
}
}
for (item = t->actions; item; item = item->next) {
data = (GmTriggerData *)(item->data);
child = xmlNewChild(trig, NULL, (const xmlChar *)("action"), NULL);
xmlNewProp(child, (const xmlChar *)("type"), (const xmlChar *)
(gm_trigger_name_from_type(data->type, table_actions)));
if (data->data) {
xmlNewProp(child, (const xmlChar *)("data"), (const xmlChar *)
(data->data));
}
}
}
void
gm_triggers_save(GmTriggers *trg) {
xmlDocPtr doc;
xmlNodePtr root;
xmlNodePtr trig;
GList *item;
GmTrigger *t;
g_return_if_fail(trg->priv->path != NULL);
doc = xmlNewDoc((const xmlChar *)("1.0"));
root = xmlNewNode(NULL, (const xmlChar *)("triggers"));
xmlDocSetRootElement(doc, root);
for (item = trg->priv->triggers; item; item = item->next) {
t = (GmTrigger *)(item->data);
trig = xmlNewChild(root, NULL, (const xmlChar *)("trigger"), NULL);
xmlNewProp(trig, (const xmlChar *)("name"), (const xmlChar *)(t->name));
if (t->event == TT_OUTPUT) {
xmlNewProp(trig, (const xmlChar *)("event"), (const xmlChar *)("world"));
} else {
xmlNewProp(trig, (const xmlChar *)("event"), (const xmlChar *)("player"));
}
gm_trigger_rules_xml(t, trig);
}
xmlSaveFormatFileEnc(trg->priv->path, doc, "UTF-8", 1);
xmlFreeDoc(doc);
}
void
gm_triggers_save_as(GmTriggers *trg, const gchar *path) {
g_free(trg->priv->path);
trg->priv->path = g_strdup(path);
gm_triggers_save(trg);
}
GmTriggers *
gm_triggers_dup(GmTriggers *source) {
GmTriggers *trg = GM_TRIGGERS(g_object_new(GM_TYPE_TRIGGERS, NULL));
GList *item;
for (item = source->priv->triggers; item; item = item->next) {
trg->priv->triggers = g_list_append(trg->priv->triggers,
gm_trigger_dup((GmTrigger *)(item->data)));
}
return trg;
}
const GList *
gm_triggers_list(GmTriggers *trg) {
return trg->priv->triggers;
}

118
src/gm-triggers.h Normal file
View File

@ -0,0 +1,118 @@
#ifndef __GM_TRIGGERS_H__
#define __GM_TRIGGERS_H__
#include <glib.h>
#include <glib-object.h>
#include <regex.h>
G_BEGIN_DECLS
/*
* Type checking and casting macros
*/
#define GM_TYPE_TRIGGERS (gm_triggers_get_type())
#define GM_TRIGGERS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_TRIGGERS, GmTriggers))
#define GM_TRIGGERS_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GM_TYPE_TRIGGERS, GmTriggers const))
#define GM_TRIGGERS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GM_TYPE_TRIGGERS, GmTriggersClass))
#define GM_IS_TRIGGERS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GM_TYPE_TRIGGERS))
#define GM_IS_TRIGGERS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GM_TYPE_TRIGGERS))
#define GM_TRIGGERS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GM_TYPE_TRIGGERS, GmTriggersClass))
/* Private structure type */
typedef struct _GmTriggersPrivate GmTriggersPrivate;
/*
* Main object structure
*/
typedef struct _GmTriggers GmTriggers;
struct _GmTriggers {
GObject object;
/*< private > */
GmTriggersPrivate *priv;
};
/*
* Class definition
*/
typedef struct _GmTriggersClass GmTriggersClass;
struct _GmTriggersClass {
GObjectClass parent_class;
/* Signals */
};
typedef enum _GmTriggerType {
TT_OUTPUT = 0,
TT_USERS
} GmTriggerType;
typedef enum _GmTriggerConditionType {
TCT_CONTAINS = 0,
TCT_NOT_CONTAINS,
TCT_BEGINS,
TCT_NOT_BEGINS,
TCT_ENDS,
TCT_NOT_ENDS,
TCT_MATCHES,
TCT_NOT_MATCHES,
TCT_USER_ONLINE,
TCT_USER_OFFLINE,
TCT_USER_IDLE,
TCT_USER_IDLE_OFF,
TCT_USER_AWAY,
TCT_USER_AWAY_OFF
} GmTriggerConditionType;
typedef enum _GmTriggerActionType {
TAT_HIGHLIGHT_LINE = 0,
TAT_HIGHLIGHT_MATCH,
TAT_BEEP,
TAT_PLAY_SOUND,
TAT_NOTIFY,
TAT_RUN_SCRIPT,
TAT_RUN
} GmTriggerActionType;
typedef struct _GmTriggerData {
gint type;
gchar *data;
regex_t expr;
} GmTriggerData;
typedef struct _GmTrigger {
gchar *name;
GmTriggerType event;
GList *conditions;
GList *actions;
} GmTrigger;
GType gm_triggers_get_type(void) G_GNUC_CONST;
GmTriggers *gm_triggers_new(void);
GmTriggers *gm_triggers_new_from_file(gchar *filename);
void gm_triggers_save(GmTriggers *triggers);
void gm_triggers_save_as(GmTriggers *trg, const gchar *path);
void gm_triggers_set_path(GmTriggers *trg, gchar *path);
GmTriggers *gm_triggers_dup(GmTriggers *source);
const GList *gm_triggers_list(GmTriggers *trg);
void gm_triggers_add(GmTriggers *trg, GmTrigger *t);
void gm_triggers_clear(GmTriggers *trg);
GmTrigger *gm_trigger_new();
void gm_trigger_free(GmTrigger *trigger);
GmTrigger *gm_trigger_dup(GmTrigger *source);
void gm_trigger_set_name(GmTrigger *trigger, const gchar *name);
void gm_trigger_free_list(GList *list);
void gm_trigger_add_condition(GmTrigger *trigger, GmTriggerData *condition);
void gm_trigger_add_action(GmTrigger *trigger, GmTriggerData *action);
void gm_trigger_set_conditions(GmTrigger *trigger, GList *conditions);
void gm_trigger_set_actions(GmTrigger *trigger, GList *actions);
GmTriggerData *gm_trigger_data_new(gint type, gchar *data);
void gm_trigger_data_free(GmTriggerData *tdata);
G_END_DECLS
#endif /* __GM_TRIGGERS_H__ */

77
src/gm-ui.h Normal file
View File

@ -0,0 +1,77 @@
#ifndef __GM_UI_H__
#define __GM_UI_H__
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <gtk/gtk.h>
#include "gm-app-view.h"
#include "gm-support.h"
G_BEGIN_DECLS
static const GtkActionEntry gm_sensitive_menu_entries[] =
{
/* Toplevel */
{"World", NULL, N_("_World")},
{"Edit", NULL, N_("_Edit")},
{"View", NULL, N_("_View")},
{"Help", NULL, N_("_Help")},
/* World menu */
{"WorldNew", GTK_STOCK_NEW, N_("New World..."), "<control>N",
N_("Create a new world"), G_CALLBACK(on_gm_app_view_world_new)},
{"WorldQuit", GTK_STOCK_QUIT, NULL, NULL,
N_("Quit the program"), G_CALLBACK(on_gm_app_view_world_quit)},
/* Edit menu */
{"EditWorlds", NULL, N_("Worlds..."), "<control>L",
N_("Edit worlds"), G_CALLBACK(on_gm_app_view_edit_worlds)},
{"EditPreferences", GTK_STOCK_PREFERENCES, NULL, NULL,
N_("Configure the application"),
G_CALLBACK(on_gm_app_view_edit_preferences)},
/* View menu */
{"ViewMcp", NULL, N_("MCP"), NULL,
N_("View MCP console"), G_CALLBACK(on_gm_app_view_view_mcp)},
{"ViewScripts", NULL, N_("Scripts"), NULL,
N_("View scripts"), G_CALLBACK(on_gm_app_view_view_scripts)},
/* Help menu */
{"HelpAbout", GTK_STOCK_ABOUT, NULL, NULL,
N_("About this application"), G_CALLBACK(on_gm_app_view_help_about)}
};
static const GtkActionEntry gm_menu_entries[] =
{
/* File menu */
{"WorldConnect", GTK_STOCK_NETWORK, N_("Connect"), "<control><shift>C",
N_("Connect or disconnect the current world"),
G_CALLBACK(on_gm_app_view_world_connect)},
{"WorldClose", GTK_STOCK_CLOSE, NULL, NULL,
N_("Close current world"), G_CALLBACK(on_gm_app_view_world_close)},
{"WorldLogs", GTK_STOCK_FILE, N_("Logs"), NULL,
N_("View current world logs"), G_CALLBACK(on_gm_app_view_world_logs)},
{"WorldInfo", GTK_STOCK_ABOUT, N_("In_fo"), NULL,
N_("View current world info"), G_CALLBACK(on_gm_app_view_world_info)},
/* Edit menu */
{"EditCut", GTK_STOCK_CUT, NULL, "<control>X",
N_("Cut the selection"), G_CALLBACK(on_gm_app_view_edit_cut)},
{"EditCopy", GTK_STOCK_COPY, NULL, "<control>C",
N_("Copy the selection"), G_CALLBACK(on_gm_app_view_edit_copy)},
{"EditPaste", GTK_STOCK_PASTE, NULL, "<control>V",
N_("Paste the clipboard"), G_CALLBACK(on_gm_app_view_edit_paste)},
{"EditWorld", NULL, N_("Current world..."), "<control>E",
N_("Edit the current world"), G_CALLBACK(on_gm_app_view_edit_world)},
{"EditFind", GTK_STOCK_FIND, NULL, "<control>F",
N_("Find text"), G_CALLBACK(on_gm_app_view_edit_find)},
{"EditFindNext", GTK_STOCK_FIND, N_("Find next"), "<control>G",
N_("Find next occurence"),
G_CALLBACK(on_gm_app_view_edit_find_next)},
};
G_END_DECLS
#endif /* __GEDIT_UI_H__ */

Some files were not shown because too many files have changed in this diff Show More