Compare commits

..

No commits in common. "master" and "GLADE_3_1_5" have entirely different histories.

1122 changed files with 140130 additions and 650140 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
_build

View File

@ -1,15 +0,0 @@
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
flatpak:
extends: '.flatpak'
variables:
MANIFEST_PATH: "org.gnome.Glade.json"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
FLATPAK_MODULE: "glade"
APP_ID: "org.gnome.Glade"
BUNDLE: "glade-git.flatpak"
nightly:
extends: '.publish_nightly'
dependencies: ['flatpak']
needs: ['flatpak']

14
AUTHORS
View File

@ -1,9 +1,7 @@
Chema Celorio <chema@ximian.com>
Joaquin Cuenca Abela <e98cuenc@yahoo.com>
Paolo Borelli <pborelli@katamail.com>
Archit Baweja <bighead@users.sourceforge.net>
Shane Butler <shane_b@operamail.com>
Tristan Van Berkom <tvb@gnome.org>
Ivan Wong <email@ivanwong.info>
Juan Pablo Ugarte <juanpablougarte@gmail.com>
Vincent Geddes <vincent.geddes@gmail.com>
Thanks to :
Michal Palczewski <mpalczew@u.washington.edu> - Widget tree window
Archit Baweja <bighead@users.sourceforge.net> - New widgets, _get_type
Shane Butler <shane_b@operamail.com> - Glade Widget signals editor
Tristan Van Berkom <tvb@gnome.org> - Non widget support.

0
BUGS Normal file
View File

View File

@ -1,75 +0,0 @@
Glade official git repository is hosted by the GNOME foundation at
gitlab.gnome.org
Maintainer
============
Glade is looking for a new maintainer, if you are interested please contact us
on gitlab.
GitLab
========
Glade bugs are tracked at
https://gitlab.gnome.org/GNOME/glade
GIT
===
You can browse the source code at https://gitlab.gnome.org/GNOME/glade
To check out a copy of Glade you can use the following command:
git clone https://gitlab.gnome.org/GNOME/glade.git
Patches
=======
Patches must be in the unified format (diff -u) and must include a
ChangeLog entry. Please send all patches to bugzilla.
It is better to use git format-patch command
```
git format-patch HEAD^
```
Coding Style
============
Code in Glade should follow the GNU style of GNOME Programming Guidelines
(https://developer.gnome.org/programming-guidelines/stable/c-coding-style.html.en),
basically this means being consistent with the surrounding code.
The only exception is that we prefer having braces always on a new line
e.g.:
```
if (...)
{
...
}
```
Note however that a lot of the current codebase still uses the following
style:
```
if (...) {
...
}
```
Over time we'll migrate to the preferred form.
Naming conventions:
- function names should be lowercase and prefixed with the
file name (or, if the function is static and the name too long,
with an abbreviation), e.g:
`glade_project_window_my_function ()`
`gpw_my_loooooooooong_named_fuction ()`
- variable names should be lowercase and be short but self explanatory;
if you need more than one word use an underscore, e.g:
`my_variable`
Also try to order your functions so that prototypes are not needed.

10
COPYING
View File

@ -1,5 +1,7 @@
This package is licensed under the GNU LGPL. Some code is still only available under GNU GPL.
Files that are not yet completely licenced under GNU LGPL are still marked as being licended as GNU GPL.
Please see COPYING.LGPL for the full text of the LGPL license and the COPYING.GPL
for the full text of the GPL text respectively.
The pixmaps included in this package under the `pixmaps' directory are licensed under
the GNU LGPL license. Please see COPYING.LGPL for the full text of this license.
The remainder of this package is licensed under the GNU GPL.
Please see COPYING.GPL for the full text of this license.

View File

@ -1,12 +1,12 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
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
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@ -15,7 +15,7 @@ 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 Lesser General Public License instead.) You can apply it to
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
@ -55,8 +55,8 @@ 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
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
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
@ -168,7 +168,7 @@ 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
@ -225,7 +225,7 @@ 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
@ -255,7 +255,7 @@ 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
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
@ -277,4 +277,64 @@ 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
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.

View File

@ -1,15 +1,15 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
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.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@ -99,7 +99,7 @@ works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
@ -411,7 +411,7 @@ 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
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@ -434,4 +434,49 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. 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 library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; 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.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

8323
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

69
HACKING Normal file
View File

@ -0,0 +1,69 @@
Mailing List
~~~~~~~~~~~~
Glade-3 discussion takes place on glade-devel@ximian.org
To subscribe or to consult archives visit
http://lists.ximian.com/mailman/listinfo/glade-devel
When posting to the list include [glade3] in the subject,
since the list is also used for Glade-2 developement.
Bugzilla
~~~~~~~~
Glade-3 bugs are tracked in the glade3 module of
http://bugzilla.gnome.org
SVN
~~~
The Glade-3 repository is hosted at svn.gnome.org
To check out a copy of Glade-3 you can use the following commands:
svn checkout svn://svn.gnome.org/svn/glade3 glade3
Patches
~~~~~~~
Patches must be in the unified format (diff -u) and must include a
ChangeLog entry. Please send all patches to bugzilla.
Currently svn only permits this with the following command:
svn diff --diff-cmd=/usr/bin/diff -x -uBp . > file.patch
Coding Style
~~~~~~~~~~~~
Code in Glade-3 should follow the GNOME Programming Guidelines
(http://developer.gnome.org/doc/guides/programming-guidelines/),
basically this means being consistent with the sorrounding code.
The only exception is that we prefer having braces always on a new line
e.g.:
if (...)
{
...
}
Note however that a lot of the current codebase still uses the following
style:
if (...) {
...
}
Over time we'll migrate to the preferred form.
Naming conventions:
- function names should be lowercase and prefixed with the
file name (or, if the function is static and the name too long,
with an abbreviation), e.g:
glade_project_window_my_function ()
gpw_my_loooooooooong_named_fuction ()
- variable names should be lowercase and be short but self explanatory;
if you need more than one word use an underscore, e.g:
my_variable
Also try to order your functions so that prototypes are not needed.

236
INSTALL Normal file
View File

@ -0,0 +1,236 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 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' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' 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 option `--target=TYPE' 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
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script). Here is a another example:
/bin/bash ./configure CONFIG_SHELL=/bin/bash
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
configuration-related scripts to be executed by `/bin/bash'.
`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.

View File

@ -1,22 +1,22 @@
Glade internals
~~~~~~~~~~~~~~~
Glade3 internals
~~~~~~~~~~~~~~~~
about this document
===================
This is a short description of the designs goals and of the
implementation choices of Glade. It isn't complete, but
implementation choices of Glade3. It isn't complete, but
I hope that it may be useful.
* Note: not only I'm not the original author/designer of
glade, but also I have not touched glade for many months.
glade3, but also I have not touched glade3 for many months.
The only reason why I'm writing this doc is that glade development
The only reason why I'm writing this doc is that glade3 development
has been stagnating for a long time... now it seems that there are some
developers interested in resuming work on it, so I thought that it was
right to put down some notes on what I remember to ease their way
through the glade codebase.
through the glade3 codebase.
Everyone who spots errors and inaccuracies in this doc, or who wants to
add informations to it, should feel free to improve it!
@ -35,8 +35,8 @@ the description of a Gtk+ GUI to an xml file.
* glade is a tool to create and edit the desired interface in an easy
way and then automatically serialize it to the xml file.
Glade is a complete rewrite of the original glade and takes advantage
of the introspection properties of the GTK toolkit.
Glade3 is a complete rewrite of the original glade and takes advantage
of the introspection properties of the GTK+2 toolkit.

View File

@ -1,11 +1,4 @@
Tristan Van Berkom
E-mail: tristan.van.berkom@gmail.com
Userid: tvb
Juan Pablo Ugarte
E-mail: juanpablougarte@gmail.com
Userid: jpu
Tristan Van Berkom is the current glade-3 maintainer.
Alberto Fanjul
E-mail: albfan@gnome.org
Userid: albfan
Email: tristan.van.berkom@gmail.com

24
Makefile.am Normal file
View File

@ -0,0 +1,24 @@
SUBDIRS = po data gladeui src plugins bindings doc
if HAVE_GNOME_DOC_UTILS
SUBDIRS += help
endif
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = \
autogen.sh \
COPYING.GPL \
COPYING.LGPL \
m4 \
intltool-extract.in \
intltool-merge.in \
intltool-update.in \
gnome-doc-utils.make
DISTCLEANFILES = intltool-extract \
intltool-merge \
intltool-update \
gnome-doc-utils.make
DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper --enable-gtk-doc

1501
NEWS

File diff suppressed because it is too large Load Diff

79
README Normal file
View File

@ -0,0 +1,79 @@
Glade
=====
A User Interface Builder for Gtk+ and Gnome
Web: http://glade.gnome.org
Mailing Lists: glade-users@ximian.com - For discussions about using
Glade to build applications.
glade-devel@ximian.com - For discussions about the
development of Glade itself.
General Information
~~~~~~~~~~~~~~~~~~~
Glade is a RAD tool to enable quick & easy development of user interfaces
for the Gtk+ toolkit and the GNOME desktop environment.
The user interfaces designed in Glade are stored in XML format,
enabling easy integration with external tools.
In particular libglade can load the XML files and create the interfaces
at runtime. The DTD for the XML files is included with libglade, and is
also at http://glade.gnome.org/glade-2.0.dtd.
Other tools are available which can turn the XML files into source code
in languages such as C++, Perl and Python.
About Glade-3
~~~~~~~~~~~~~
This version of Glade (Glade-3) is a complete rewrite of the original Glade codebase.
One of the main differences from glade-2 is that C code generation has been removed from
glade-3: this has been done on purpose, since using generated code is deprecated; the preferred
way to use glade files is with libglade (if code generation is needed, this can be provided
as another tool or plugin, code generation is simply not a part of the glade-3 project).
Another main difference is that glade-3 was designed to make maximal use of GObject
introspection, thus easing the integration of external toolkits and handling widgets,
signals and properties genericly; thus making it easier to write fancy features in the
future (toolkits such as gtk+ itself, gnome, gnome-db and any others are implemented
externaly as widget catalogs with optional support libraries, thus catalogs may be
distributed seperatly; possibly along with their libglade support modules).
It has a few useful new features such as stacked Undo/Redo and Multiple Project support
and respects the same XML format as glade-2.
For a more details on what has changed, what still needs work, etc. see
the NEWS file & the glade3 product at bugzilla.gnome.org.
Comments, bug reports and patches are more than welcome.
License
~~~~~~~
Glade is distributed under the GNU General Public License (GPL), as described
in the COPYING file.
Note that you are free to use whatever license you like for the source code
generated by Glade. (We do not consider the code generated by Glade to be
'a work based on the Program' as described at the start of the GPL.)
Requirements
~~~~~~~~~~~~
o GTK+ 2.10.0 or above - http://www.gtk.org
You also need the glib, pango and atk libraries.
Make sure you have the devel packages as well, as these will contain the
header files which you will need to compile C applications.
o libxml 2.4.1 - used to parse the XML files. If you have GNOME 2 you
should already have this.
Installation
~~~~~~~~~~~~
See the file 'INSTALL'

122
README.md
View File

@ -1,122 +0,0 @@
# Glade
User interface designer for Gtk+ and GNOME
* Web - <https://glade.gnome.org>
* Git - <https://gitlab.gnome.org/GNOME/glade>
Mailing Lists:
Both users and devel mailing list have been archived, you can find the archives at
* https://mail.gnome.org/archives/glade-users-list/
* https://mail.gnome.org/archives/glade-devel-list/
## Development status
Glade is not being actively developed or maintained anymore.
If you are interested in becoming a maintainer please contact us on gitlab.
## General Information
Glade is a RAD tool to enable quick and easy development of user interfaces
for the GTK+ 3 toolkit and the GNOME desktop environment.
The user interfaces designed in Glade are saved as XML and these can be loaded
by applications dynamically as needed by using GtkBuilder or used directly to
define a new GtkWidget derived object class using Gtk+ new template feature.
By using GtkBuilder, Glade XML files can be used in numerous programming
languages including C, C++, C#, Vala, Java, Perl, Python, and others.
This version of Glade targets GTK 3
If you need to work with GTK 2, you can still use Glade 3.8
([more information](http://blogs.gnome.org/tvb/2011/01/15/the-glade-dl/))
## License
Glade is distributed under the
[GNU General Public License](https://www.gnu.org/licenses/gpl-2.0.en.html),
version 2 (GPL) and
[GNU Library General Public License](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.en.html),
version 2 (LGPL) as described in the COPYING file.
## Manual instalation
Requirements
* C compiler like [gcc](https://gcc.gnu.org/)
* [Meson](http://mesonbuild.org) build system
* [GTK](http://www.gtk.org) 3.24.0 or above
* [libxml](http://xmlsoft.org/) 2.4.1 - used to parse XML files
* libgirepository1.0 - Build-time dependency
* xsltproc - for man pages generation
Optional dependencies:
* glib-networking plugins for TLS support (Needed for survey)
* libwebkit2gtk-4.0 - For Webkit plugin
* python-gi - For Python plugin
* libgjs - For JavaScript plugin
* gettext, itstool - For translation support
Download sources from git and build using meson/ninja
# Install dependencies, for example in debian
sudo apt install gcc meson libgtk-3-dev libxml2-dev libgirepository1.0-dev xsltproc gettext itstool
# Optional dependencies
sudo apt install libgjs-dev libwebkit2gtk-4.0-dev python-gi-dev glib-networking
# Clone the source repository or download tarball
git clone https://gitlab.gnome.org/GNOME/glade.git
# Create build directory and configure project
mkdir glade/build && cd glade/build
meson --prefix=~/.local
# Build and install
ninja
ninja install
To run it you might need to set up LD_LIBRARY_PATH depending on your
distribution defaults
LD_LIBRARY_PATH=~/.local/lib/x86_64-linux-gnu/ glade
## Linux
Debian
apt install glade
Fedora
yum install glade
Any distribution with Flatpak
flatpak install flathub org.gnome.Glade
[<img width='240' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-i-en.png'/>](https://flathub.org/apps/details/org.gnome.Glade)
## Windows
Available as a
[package](https://packages.msys2.org/package/mingw-w64-x86_64-glade) in
[MSYS2](https://www.msys2.org/)
pacman -S mingw-w64-x86_64-glade
## OSX
Available as a [package](https://formulae.brew.sh/formula/glade) in
[Brew](https://brew.sh/)
brew install glade

7
README.svn Normal file
View File

@ -0,0 +1,7 @@
If you are a long time gnome committer and you have a minor patch
that you are sure is correct, then go ahead and commit.
For the other great majority of the time; please ask before commiting
at glade-devel@lists.ximian.com.
All commits must have a ChangeLog entry.

84
TODO
View File

@ -1,45 +1,49 @@
Split Project data model from view model:
========================================
Currently we create a GladeWidget object for each project object but
GladeProject and gladeui api in general uses the very same runtime object.
Ideally we should only depend on GladeWidget and the actual runtime object
should only be used for the view in the workspace.
General "big picture" goals and tasks for Glade
=========================================================
Support for icon themes - (bug 359640)
Resource file management - (bug 359647)
Create widget types via the catalog file - (bug 352714)
TreeView based editor - (bug 359650)
Embedded windows / UI redesign - (bug 351548) - Vincent Geddes
Command line interface for glade - (bug 359661) - Juan Pablo
Project options and conversions - (bug 345446)
Support for widget templates - (bug 359763)
Pluggable widgets in other languages - (bug 359765) - Juan Pablo
A first step could be updating GladeProject to only use GladeWidget internally
and then we can update gladeui api to use GladeWidget instead but this means a
API/ABI break
GtkBuilder unsuported features:
==============================
An early start on the 3.2 blocker bugs
=========================================================
wrong cursor over widgets - (bug 353002)
Too many accelerators - (bug 380986)
Fix or yank out console - (bug 359661) Vincent Geddes
Translated stock ids - (bug 352446)
Bug on sperator menuitem in glade3 - (bug 357177)
GtkSpinButton not exporting digits
property when digits=0 - (bug 364873)
Undo adding a child to Gnome App
window: suddenly can't add more children - (bug 364991)
accelerator/atk relation regressions - (bug 383121) Tristan Van Berkom
make libgladeui widgets independant - (bug 383843)
add icons for new gtk+ 2.10 widgets - Vincent Geddes
gtkunixprint catalog - (bug 392340)
* Property bindings
Unsupported object classes:
==========================
Glib
* GMenu/GMenuModel (<menu> GtkBuilder element)
Because GMenu is in Glib library it can not implement GtkBuildable iface which
is in GTK+ this lead to implementing GMenu object construction in GtkBuilder
using a custom element <menu>
Ideally we should move GtkBuilder and GtkBuildable to Glib and rename them
GBuilder and GBuildable so that we can implemet GBuildable in GMenu object
A way to avoid this would be to create a new object type in GTK that derives
from GMenu say GtkMenuObject (GtkMenu is already taken ;) and make it implement
GtkBuildable iface.
* GAction, GSimpleAction, GActionGroup
GTK+ 3.4
* GtkApplication (add buildable iface to support GMenuModel?¿)
GTK+ 3.14
* type="action" children in GtkDialog
GTK+ 3.20
* GtkShortcutsWindow
Priority list for 3.2
=========================================================
GtkWindowless hierarchy support - (bug 351605)
better integration of scrollable widgets - (bug 348895)
Implement custom context menus - (bugs 343786, 345602)
meaningles commands should dissapear - (bug 316900)
GtkPaned children of GtkBox position - (bug 316895)
GtkFixed/Layout resizes on drag/resize - (bug 344907)
selection flickers - (bug 344908)
Make it possible to have extra widgets
without extra modules - (bug 352714)
define pspecs in the catalog proper - (bug 382701) (Vincent Geddes)
labels sometimes clip in project widgets - (bug 349748)
Need better support for resource file
management wrt glade files - (bug 359647)
Deletes unknown widget nodes. - (bug 376628)
Startup errors should be handled - (bug 331797) (Les Harris)
Can't select a GtkCombo box from the workspace - (bug 347164)

53
autogen.sh Executable file
View File

@ -0,0 +1,53 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
PKG_NAME="glade"
(test -f $srcdir/configure.ac \
&& test -f $srcdir/autogen.sh) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level $PKG_NAME directory"
exit 1
}
DIE=0
# This is a bit complicated here since we can't use gnome-config yet.
# It'll be easier after switching to pkg-config since we can then
# use pkg-config to find the gnome-autogen.sh script.
gnome_autogen=
gnome_datadir=
ifs_save="$IFS"; IFS=":"
for dir in $PATH ; do
test -z "$dir" && dir=.
if test -f $dir/gnome-autogen.sh ; then
gnome_autogen="$dir/gnome-autogen.sh"
gnome_datadir=`echo $dir | sed -e 's,/bin$,/share,'`
break
fi
done
IFS="$ifs_save"
if test -z "$gnome_autogen" ; then
echo "You need to install the gnome-common module and make"
echo "sure the gnome-autogen.sh script is in your \$PATH."
exit 1
fi
automake_version=1.9
#case `uname` in
#CYGWIN*)
# automake 1.4 of cygwin does not define EGREP in libtool.m4, and
# fails to do the file magic test when -rpath is given
# automake_version=1.7
# ;;
#esac
REQUIRED_AUTOMAKE_VERSION="$automake_version" GNOME_DATADIR="$gnome_datadir" USE_GNOME2_MACROS=1 . $gnome_autogen

8
bindings/Makefile.am Normal file
View File

@ -0,0 +1,8 @@
## Process this file with automake to produce Makefile.in
SUBDIRS =
if ENABLE_PYTHON
SUBDIRS += python
endif

View File

@ -0,0 +1,32 @@
## Process this file with automake to produce Makefile.in
libgladeui = $(top_builddir)/gladeui/libgladeui-1.la
# libgladepython
gladepython_LTLIBRARIES = libgladepython.la
gladepythondir = $(pkglibdir)/bindings
libgladepython_la_SOURCES = glade-python.c glade-python-gwa.c
libgladepython_la_CPPFLAGS = \
-I$(top_srcdir) \
-I$(top_builddir) \
$(AM_CPPFLAGS)
libgladepython_la_CFLAGS = \
-g -Wall \
-I$(top_srcdir) \
-I$(top_builddir) \
$(PYTHON_CFLAGS) \
$(NO_STRICT_ALIASING_CFLAGS) \
$(PYGTK_CFLAGS) \
$(GTK_CFLAGS) \
$(AM_CFLAGS)
libgladepython_la_LDFLAGS = -module -avoid-version $(PYTHON_LIBS) $(AM_LDFLAGS)
libgladepython_la_LIBADD = $(libgladeui) $(PYTHON_LIBS)
if WITH_WIN32
libgladepython_la_LDFLAGS += -no-undefined
endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,161 @@
; Copyright (C) 2006 Juan Pablo Ugarte.
;
; 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
;
; Authors:
; Juan Pablo Ugarte <juanpablougarte@gmail.com>
(define-object GladeWidgetAdaptor
(parent "GObject")
(c-name "GladeWidgetAdaptor")
(gtype-id "GLADE_TYPE_WIDGET_ADAPTOR")
)
(define-enum GladeCreateReason
(in-module "Glade")
(c-name "GladeCreateReason")
(gtype-id "GLADE_CREATE_REASON")
(values
'("create-user" "GLADE_CREATE_USER")
'("create-copy" "GLADE_CREATE_COPY")
'("create-load" "GLADE_CREATE_LOAD")
'("create-rebuild" "GLADE_CREATE_REBUILD")
)
)
(define-virtual verify_property
(of-object "GladeWidgetAdaptor")
(return-type "gboolean")
(parameters
'("GObject*" "object")
'("const-gchar*" "property_name")
'("const-GValue*" "value")
)
)
(define-virtual set_property
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "object")
'("const-gchar*" "property_name")
'("const-GValue*" "value")
)
)
(define-virtual get_property
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "object")
'("const-gchar*" "property_name")
'("GValue*" "value")
)
)
(define-virtual child_verify_property
(of-object "GladeWidgetAdaptor")
(return-type "gboolean")
(parameters
'("GObject*" "container")
'("GObject*" "child")
'("const-gchar*" "property_name")
'("const-GValue*" "value")
)
)
(define-virtual child_set_property
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "container")
'("GObject*" "child")
'("const-gchar*" "property_name")
'("const-GValue*" "value")
)
)
(define-virtual child_get_property
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "container")
'("GObject*" "child")
'("const-gchar*" "property_name")
'("GValue*" "value")
)
)
(define-virtual get_children
(of-object "GladeWidgetAdaptor")
(return-type "GList*")
(parameters
'("GObject*" "container")
)
)
(define-virtual add
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "parent")
'("GObject*" "child")
)
)
(define-virtual remove
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "parent")
'("GObject*" "child")
)
)
(define-virtual replace_child
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "container")
'("GObject*" "old")
'("GObject*" "new")
)
)
(define-virtual post_create
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "object")
'("GladeCreateReason" "reason")
)
)
(define-virtual get_internal_child
(of-object "GladeWidgetAdaptor")
(return-type "GObject*")
(parameters
'("GObject*" "parent")
'("const-gchar*" "name")
)
)
(define-virtual launch_editor
(of-object "GladeWidgetAdaptor")
(return-type "none")
(parameters
'("GObject*" "object")
)
)

View File

@ -0,0 +1,882 @@
/*
* Copyright (C) 2006 Juan Pablo Ugarte.
*
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Authors:
* Juan Pablo Ugarte <juanpablougarte@gmail.com>
*/
%%
headers
#include <Python.h>
#define NO_IMPORT_PYGOBJECT
#include <pygobject.h>
#include <gladeui/glade.h>
static gboolean
glade_python_support_init_value (GObject *object,
gboolean is_pack,
const gchar *property_name,
GValue *value)
{
GladeWidget *widget;
GladeProperty *property;
if ((widget = glade_widget_get_from_gobject (object)) == NULL)
{
PyErr_Format (PyExc_AssertionError, "GladeWidget != NULL");
return FALSE;
}
if (is_pack)
property = glade_widget_get_pack_property (widget, property_name);
else
property = glade_widget_get_property (widget, property_name);
if (property == NULL)
{
PyErr_Format (PyExc_TypeError, "'%s' does not support %s property `%s'",
glade_widget_get_name (widget),
(is_pack) ? "packing" : "",
property_name);
return FALSE;
}
g_value_init (value, G_VALUE_TYPE (property->value));
return TRUE;
}
static GList *
glade_python_support_glist_from_list (PyObject *list)
{
gint i, size = PyList_Size (list);
GList *retval = NULL;
for (i = 0; i < size; i++)
{
PyObject *val = PyList_GetItem (list, i);
retval = g_list_prepend (retval, pygobject_get(val));
}
return retval;
}
static PyObject *
glade_python_support_list_from_glist (GList *list)
{
PyObject *retval = PyList_New (0);;
for (; list; list = g_list_next (list))
{
GObject *obj = list->data;
PyList_Append (retval, Py_BuildValue ("O", pygobject_new (obj)));
}
return retval;
}
/*
NOTE: the next functions where created by codegen and adapted to support
GValue* and GList* types.
*/
%%
import gobject.GObject as PyGObject_Type
%%
override GladeWidgetAdaptor__do_verify_property kwargs
static PyObject *
_wrap_GladeWidgetAdaptor__do_verify_property(PyObject *cls, PyObject *args, PyObject *kwargs)
{
gpointer klass;
static char *kwlist[] = { "self", "object", "property_name", "value", NULL };
PyGObject *self, *object;
char *property_name;
int ret;
GValue value = {0,};
PyObject *val;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!sO:GladeWidgetAdaptor.verify_property", kwlist, &PyGladeWidgetAdaptor_Type, &self, &PyGObject_Type, &object, &property_name, &val))
return NULL;
klass = g_type_class_ref(pyg_type_from_object(cls));
glade_python_support_init_value (object->obj, FALSE, property_name, &value);
pyg_value_from_pyobject (&value, val);
if (GLADE_WIDGET_ADAPTOR_CLASS(klass)->verify_property)
ret = GLADE_WIDGET_ADAPTOR_CLASS(klass)->verify_property(GLADE_WIDGET_ADAPTOR(self->obj), G_OBJECT(object->obj), property_name, &value);
else {
PyErr_SetString(PyExc_NotImplementedError, "virtual method GladeWidgetAdaptor.verify_property not implemented");
g_type_class_unref(klass);
return NULL;
}
g_type_class_unref(klass);
return PyBool_FromLong(ret);
}
%%
override GladeWidgetAdaptor__proxy_do_verify_property
static gboolean
_wrap_GladeWidgetAdaptor__proxy_do_verify_property(GladeWidgetAdaptor *self, GObject*object, const gchar*property_name, const GValue*value)
{
PyGILState_STATE __py_state;
PyObject *py_self;
PyObject *py_object = NULL;
PyObject *py_property_name;
PyObject *py_value;
gboolean retval;
PyObject *py_retval;
PyObject *py_args;
PyObject *py_method;
__py_state = pyg_gil_state_ensure();
py_self = pygobject_new((GObject *) self);
if (!py_self) {
if (PyErr_Occurred())
PyErr_Print();
pyg_gil_state_release(__py_state);
return FALSE;
}
if (object)
py_object = pygobject_new((GObject *) object);
else {
Py_INCREF(Py_None);
py_object = Py_None;
}
py_property_name = PyString_FromString(property_name);
if (!py_property_name) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_object);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
py_value = pyg_value_as_pyobject(value, TRUE);
if (!py_value) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_property_name);
Py_DECREF(py_object);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
py_args = PyTuple_New(3);
PyTuple_SET_ITEM(py_args, 0, py_object);
PyTuple_SET_ITEM(py_args, 1, py_property_name);
PyTuple_SET_ITEM(py_args, 2, py_value);
py_method = PyObject_GetAttrString(py_self, "do_verify_property");
if (!py_method) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
py_retval = PyObject_CallObject(py_method, py_args);
if (!py_retval) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
retval = PyObject_IsTrue(py_retval)? TRUE : FALSE;
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return retval;
}
%%
override GladeWidgetAdaptor__do_set_property kwargs
static PyObject *
_wrap_GladeWidgetAdaptor__do_set_property(PyObject *cls, PyObject *args, PyObject *kwargs)
{
gpointer klass;
static char *kwlist[] = { "self", "object", "property_name", "value", NULL };
PyGObject *self, *object;
char *property_name;
GValue value = {0,};
PyObject *val;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!sO:GladeWidgetAdaptor.set_property", kwlist, &PyGladeWidgetAdaptor_Type, &self, &PyGObject_Type, &object, &property_name, &val))
return NULL;
klass = g_type_class_ref(pyg_type_from_object(cls));
glade_python_support_init_value (object->obj, FALSE, property_name, &value);
pyg_value_from_pyobject (&value, val);
if (GLADE_WIDGET_ADAPTOR_CLASS(klass)->set_property)
GLADE_WIDGET_ADAPTOR_CLASS(klass)->set_property(GLADE_WIDGET_ADAPTOR(self->obj), G_OBJECT(object->obj), property_name, &value);
else {
PyErr_SetString(PyExc_NotImplementedError, "virtual method GladeWidgetAdaptor.set_property not implemented");
g_type_class_unref(klass);
return NULL;
}
g_type_class_unref(klass);
Py_INCREF(Py_None);
return Py_None;
}
%%
override GladeWidgetAdaptor__proxy_do_set_property
static void
_wrap_GladeWidgetAdaptor__proxy_do_set_property(GladeWidgetAdaptor *self, GObject*object, const gchar*property_name, const GValue*value)
{
PyGILState_STATE __py_state;
PyObject *py_self;
PyObject *py_object = NULL;
PyObject *py_property_name;
PyObject *py_value;
PyObject *py_retval;
PyObject *py_args;
PyObject *py_method;
__py_state = pyg_gil_state_ensure();
py_self = pygobject_new((GObject *) self);
if (!py_self) {
if (PyErr_Occurred())
PyErr_Print();
pyg_gil_state_release(__py_state);
return;
}
if (object)
py_object = pygobject_new((GObject *) object);
else {
Py_INCREF(Py_None);
py_object = Py_None;
}
py_property_name = PyString_FromString(property_name);
if (!py_property_name) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_object);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_value = pyg_value_as_pyobject(value, TRUE);
if (!py_value) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_property_name);
Py_DECREF(py_object);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_args = PyTuple_New(3);
PyTuple_SET_ITEM(py_args, 0, py_object);
PyTuple_SET_ITEM(py_args, 1, py_property_name);
PyTuple_SET_ITEM(py_args, 2, py_value);
py_method = PyObject_GetAttrString(py_self, "do_set_property");
if (!py_method) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_retval = PyObject_CallObject(py_method, py_args);
if (!py_retval) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
if (py_retval != Py_None) {
if (PyErr_Occurred())
PyErr_Print();
PyErr_SetString(PyExc_TypeError, "retval should be None");
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
}
%%
override GladeWidgetAdaptor__do_get_property kwargs
static PyObject *
_wrap_GladeWidgetAdaptor__do_get_property(PyObject *cls, PyObject *args, PyObject *kwargs)
{
gpointer klass;
static char *kwlist[] = { "self", "object", "property_name", NULL };
PyGObject *self, *object;
char *property_name;
GValue value = {0,};
PyObject *ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!s:GladeWidgetAdaptor.get_property", kwlist, &PyGladeWidgetAdaptor_Type, &self, &PyGObject_Type, &object, &property_name))
return NULL;
klass = g_type_class_ref(pyg_type_from_object(cls));
if (GLADE_WIDGET_ADAPTOR_CLASS(klass)->get_property)
{
glade_python_support_init_value (object->obj, FALSE, property_name, &value);
GLADE_WIDGET_ADAPTOR_CLASS(klass)->get_property(GLADE_WIDGET_ADAPTOR(self->obj), G_OBJECT(object->obj), property_name, &value);
ret = pyg_value_as_pyobject (&value, TRUE);
g_value_unset (&value);
}
else {
PyErr_SetString(PyExc_NotImplementedError, "virtual method GladeWidgetAdaptor.get_property not implemented");
g_type_class_unref(klass);
return NULL;
}
g_type_class_unref(klass);
return ret;
}
%%
override GladeWidgetAdaptor__proxy_do_get_property
static void
_wrap_GladeWidgetAdaptor__proxy_do_get_property(GladeWidgetAdaptor *self, GObject*object, const gchar*property_name, GValue *value)
{
PyGILState_STATE __py_state;
PyObject *py_self;
PyObject *py_object = NULL;
PyObject *py_property_name;
PyObject *py_retval;
PyObject *py_args;
PyObject *py_method;
__py_state = pyg_gil_state_ensure();
py_self = pygobject_new((GObject *) self);
if (!py_self) {
if (PyErr_Occurred())
PyErr_Print();
pyg_gil_state_release(__py_state);
return;
}
if (object)
py_object = pygobject_new((GObject *) object);
else {
Py_INCREF(Py_None);
py_object = Py_None;
}
py_property_name = PyString_FromString(property_name);
if (!py_property_name) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_object);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_args = PyTuple_New(3);
PyTuple_SET_ITEM(py_args, 0, py_object);
PyTuple_SET_ITEM(py_args, 1, py_property_name);
py_method = PyObject_GetAttrString(py_self, "do_get_property");
if (!py_method) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_retval = PyObject_CallObject(py_method, py_args);
if (!py_retval) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
pyg_value_from_pyobject (value, py_retval);
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
}
%%
override GladeWidgetAdaptor__do_child_verify_property kwargs
static PyObject *
_wrap_GladeWidgetAdaptor__do_child_verify_property(PyObject *cls, PyObject *args, PyObject *kwargs)
{
gpointer klass;
static char *kwlist[] = { "self", "container", "child", "property_name", "value", NULL };
PyGObject *self, *container, *child;
char *property_name;
int ret;
GValue value = {0,};
PyObject *val;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!O!sO:GladeWidgetAdaptor.child_verify_property", kwlist, &PyGladeWidgetAdaptor_Type, &self, &PyGObject_Type, &container, &PyGObject_Type, &child, &property_name, &val))
return NULL;
klass = g_type_class_ref(pyg_type_from_object(cls));
glade_python_support_init_value (child->obj, TRUE, property_name, &value);
pyg_value_from_pyobject (&value, val);
if (GLADE_WIDGET_ADAPTOR_CLASS(klass)->child_verify_property)
ret = GLADE_WIDGET_ADAPTOR_CLASS(klass)->child_verify_property(GLADE_WIDGET_ADAPTOR(self->obj), G_OBJECT(container->obj), G_OBJECT(child->obj), property_name, &value);
else {
PyErr_SetString(PyExc_NotImplementedError, "virtual method GladeWidgetAdaptor.child_verify_property not implemented");
g_type_class_unref(klass);
return NULL;
}
g_type_class_unref(klass);
return PyBool_FromLong(ret);
}
%%
override GladeWidgetAdaptor__proxy_do_child_verify_property
static gboolean
_wrap_GladeWidgetAdaptor__proxy_do_child_verify_property(GladeWidgetAdaptor *self, GObject*container, GObject*child, const gchar*property_name, GValue*value)
{
PyGILState_STATE __py_state;
PyObject *py_self;
PyObject *py_container = NULL;
PyObject *py_child = NULL;
PyObject *py_property_name;
PyObject *py_value;
gboolean retval;
PyObject *py_retval;
PyObject *py_args;
PyObject *py_method;
__py_state = pyg_gil_state_ensure();
py_self = pygobject_new((GObject *) self);
if (!py_self) {
if (PyErr_Occurred())
PyErr_Print();
pyg_gil_state_release(__py_state);
return FALSE;
}
if (container)
py_container = pygobject_new((GObject *) container);
else {
Py_INCREF(Py_None);
py_container = Py_None;
}
if (child)
py_child = pygobject_new((GObject *) child);
else {
Py_INCREF(Py_None);
py_child = Py_None;
}
py_property_name = PyString_FromString(property_name);
if (!py_property_name) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_child);
Py_DECREF(py_container);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
py_value = pyg_value_as_pyobject(value, TRUE);
if (!py_value) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_property_name);
Py_DECREF(py_child);
Py_DECREF(py_container);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
py_args = PyTuple_New(4);
PyTuple_SET_ITEM(py_args, 0, py_container);
PyTuple_SET_ITEM(py_args, 1, py_child);
PyTuple_SET_ITEM(py_args, 2, py_property_name);
PyTuple_SET_ITEM(py_args, 3, py_value);
py_method = PyObject_GetAttrString(py_self, "do_child_verify_property");
if (!py_method) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
py_retval = PyObject_CallObject(py_method, py_args);
if (!py_retval) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return FALSE;
}
retval = PyObject_IsTrue(py_retval)? TRUE : FALSE;
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return retval;
}
%%
override GladeWidgetAdaptor__do_child_set_property kwargs
static PyObject *
_wrap_GladeWidgetAdaptor__do_child_set_property(PyObject *cls, PyObject *args, PyObject *kwargs)
{
gpointer klass;
static char *kwlist[] = { "self", "container", "child", "property_name", "value", NULL };
PyGObject *self, *container, *child;
char *property_name;
GValue value = {0,};
PyObject *val;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!O!sO:GladeWidgetAdaptor.child_set_property", kwlist, &PyGladeWidgetAdaptor_Type, &self, &PyGObject_Type, &container, &PyGObject_Type, &child, &property_name, &val))
return NULL;
klass = g_type_class_ref(pyg_type_from_object(cls));
glade_python_support_init_value (child->obj, TRUE, property_name, &value);
pyg_value_from_pyobject (&value, val);
if (GLADE_WIDGET_ADAPTOR_CLASS(klass)->child_set_property)
GLADE_WIDGET_ADAPTOR_CLASS(klass)->child_set_property(GLADE_WIDGET_ADAPTOR(self->obj), G_OBJECT(container->obj), G_OBJECT(child->obj), property_name, &value);
else {
PyErr_SetString(PyExc_NotImplementedError, "virtual method GladeWidgetAdaptor.child_set_property not implemented");
g_type_class_unref(klass);
return NULL;
}
g_type_class_unref(klass);
Py_INCREF(Py_None);
return Py_None;
}
%%
override GladeWidgetAdaptor__proxy_do_child_set_property
static void
_wrap_GladeWidgetAdaptor__proxy_do_child_set_property(GladeWidgetAdaptor *self, GObject*container, GObject*child, const gchar*property_name, const GValue *value)
{
PyGILState_STATE __py_state;
PyObject *py_self;
PyObject *py_container = NULL;
PyObject *py_child = NULL;
PyObject *py_property_name;
PyObject *py_value;
PyObject *py_retval;
PyObject *py_args;
PyObject *py_method;
__py_state = pyg_gil_state_ensure();
py_self = pygobject_new((GObject *) self);
if (!py_self) {
if (PyErr_Occurred())
PyErr_Print();
pyg_gil_state_release(__py_state);
return;
}
if (container)
py_container = pygobject_new((GObject *) container);
else {
Py_INCREF(Py_None);
py_container = Py_None;
}
if (child)
py_child = pygobject_new((GObject *) child);
else {
Py_INCREF(Py_None);
py_child = Py_None;
}
py_property_name = PyString_FromString(property_name);
if (!py_property_name) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_child);
Py_DECREF(py_container);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_value = pyg_value_as_pyobject (value, TRUE);
if (!py_value) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_property_name);
Py_DECREF(py_child);
Py_DECREF(py_container);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_args = PyTuple_New(4);
PyTuple_SET_ITEM(py_args, 0, py_container);
PyTuple_SET_ITEM(py_args, 1, py_child);
PyTuple_SET_ITEM(py_args, 2, py_property_name);
PyTuple_SET_ITEM(py_args, 3, py_value);
py_method = PyObject_GetAttrString(py_self, "do_child_set_property");
if (!py_method) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_retval = PyObject_CallObject(py_method, py_args);
if (!py_retval) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
if (py_retval != Py_None) {
if (PyErr_Occurred())
PyErr_Print();
PyErr_SetString(PyExc_TypeError, "retval should be None");
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
}
%%
override GladeWidgetAdaptor__do_child_get_property kwargs
static PyObject *
_wrap_GladeWidgetAdaptor__do_child_get_property(PyObject *cls, PyObject *args, PyObject *kwargs)
{
gpointer klass;
static char *kwlist[] = { "self", "container", "child", "property_name", NULL };
PyGObject *self, *container, *child;
char *property_name;
PyObject *ret;
GValue value = { 0, } ;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!O!s:GladeWidgetAdaptor.child_get_property", kwlist, &PyGladeWidgetAdaptor_Type, &self, &PyGObject_Type, &container, &PyGObject_Type, &child, &property_name))
return NULL;
klass = g_type_class_ref(pyg_type_from_object(cls));
if (GLADE_WIDGET_ADAPTOR_CLASS(klass)->child_get_property)
{
glade_python_support_init_value (child->obj, TRUE, property_name, &value);
GLADE_WIDGET_ADAPTOR_CLASS(klass)->child_get_property(GLADE_WIDGET_ADAPTOR(self->obj), G_OBJECT(container->obj), G_OBJECT(child->obj), property_name, &value);
ret = pyg_value_as_pyobject (&value, TRUE);
g_value_unset (&value);
}
else {
PyErr_SetString(PyExc_NotImplementedError, "virtual method GladeWidgetAdaptor.child_get_property not implemented");
g_type_class_unref(klass);
return NULL;
}
g_type_class_unref(klass);
return ret;
}
%%
override GladeWidgetAdaptor__proxy_do_child_get_property
static void
_wrap_GladeWidgetAdaptor__proxy_do_child_get_property(GladeWidgetAdaptor *self, GObject*container, GObject*child, const gchar*property_name, GValue *value)
{
PyGILState_STATE __py_state;
PyObject *py_self;
PyObject *py_container = NULL;
PyObject *py_child = NULL;
PyObject *py_property_name;
PyObject *py_retval;
PyObject *py_args;
PyObject *py_method;
__py_state = pyg_gil_state_ensure();
py_self = pygobject_new((GObject *) self);
if (!py_self) {
if (PyErr_Occurred())
PyErr_Print();
pyg_gil_state_release(__py_state);
return;
}
if (container)
py_container = pygobject_new((GObject *) container);
else {
Py_INCREF(Py_None);
py_container = Py_None;
}
if (child)
py_child = pygobject_new((GObject *) child);
else {
Py_INCREF(Py_None);
py_child = Py_None;
}
py_property_name = PyString_FromString(property_name);
if (!py_property_name) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_child);
Py_DECREF(py_container);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_args = PyTuple_New(3);
PyTuple_SET_ITEM(py_args, 0, py_container);
PyTuple_SET_ITEM(py_args, 1, py_child);
PyTuple_SET_ITEM(py_args, 2, py_property_name);
py_method = PyObject_GetAttrString(py_self, "do_child_get_property");
if (!py_method) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
py_retval = PyObject_CallObject(py_method, py_args);
if (!py_retval) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return;
}
pyg_value_from_pyobject (value, py_retval);
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
}
%%
override GladeWidgetAdaptor__do_get_children kwargs
static PyObject *
_wrap_GladeWidgetAdaptor__do_get_children(PyObject *cls, PyObject *args, PyObject *kwargs)
{
gpointer klass;
static char *kwlist[] = { "self", "container", NULL };
PyGObject *self, *container;
PyObject *list;
GList *ret;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!:GladeWidgetAdaptor.get_children", kwlist, &PyGladeWidgetAdaptor_Type, &self, &PyGObject_Type, &container))
return NULL;
klass = g_type_class_ref(pyg_type_from_object(cls));
if (GLADE_WIDGET_ADAPTOR_CLASS(klass)->get_children)
ret = GLADE_WIDGET_ADAPTOR_CLASS(klass)->get_children(GLADE_WIDGET_ADAPTOR(self->obj), G_OBJECT(container->obj));
else {
PyErr_SetString(PyExc_NotImplementedError, "virtual method GladeWidgetAdaptor.get_children not implemented");
g_type_class_unref(klass);
return NULL;
}
g_type_class_unref(klass);
list = glade_python_support_list_from_glist (ret);
g_list_free (ret);
return list;
}
%%
override GladeWidgetAdaptor__proxy_do_get_children
static GList*
_wrap_GladeWidgetAdaptor__proxy_do_get_children(GladeWidgetAdaptor *self, GObject*container)
{
PyGILState_STATE __py_state;
PyObject *py_self;
PyObject *py_container = NULL;
GList* retval;
PyObject *py_retval;
PyObject *py_args;
PyObject *py_method;
__py_state = pyg_gil_state_ensure();
py_self = pygobject_new((GObject *) self);
if (!py_self) {
if (PyErr_Occurred())
PyErr_Print();
pyg_gil_state_release(__py_state);
return NULL;
}
if (container)
py_container = pygobject_new((GObject *) container);
else {
Py_INCREF(Py_None);
py_container = Py_None;
}
py_args = PyTuple_New(1);
PyTuple_SET_ITEM(py_args, 0, py_container);
py_method = PyObject_GetAttrString(py_self, "do_get_children");
if (!py_method) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return NULL;
}
py_retval = PyObject_CallObject(py_method, py_args);
if (!py_retval) {
if (PyErr_Occurred())
PyErr_Print();
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return NULL;
}
retval = glade_python_support_glist_from_list (py_retval);
Py_DECREF(py_retval);
Py_DECREF(py_method);
Py_DECREF(py_args);
Py_DECREF(py_self);
pyg_gil_state_release(__py_state);
return retval;
}

View File

@ -0,0 +1,471 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* Copyright (C) 2006 Juan Pablo Ugarte.
*
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Authors:
* Juan Pablo Ugarte <juanpablougarte@gmail.com>
*/
#include <config.h>
#include <Python.h>
#include <pygobject.h>
#include <gladeui/glade.h>
#include <gladeui/glade-binding.h>
static PyObject *glade, *glade_dict, *GladeError;
static PyObject *
glade_python_undo (PyObject *self, PyObject *args)
{
glade_app_command_undo ();
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_redo (PyObject *self, PyObject *args)
{
glade_app_command_redo ();
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_project_new (PyObject *self, PyObject *args)
{
glade_app_add_project (glade_project_new (TRUE));
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_project_open (PyObject *self, PyObject *args)
{
gchar *path;
Py_INCREF(Py_None);
if (PyArg_ParseTuple(args, "s", &path))
{
GladeProject *project;
if ((project = glade_app_get_project_by_path (path)))
glade_app_set_project (project);
else if ((project = glade_project_open (path)))
glade_app_add_project (project);
else
return Py_None;
}
return Py_None;
}
static PyObject *
glade_python_project_save (PyObject *self, PyObject *args)
{
gchar *path;
if (PyArg_ParseTuple(args, "s", &path))
glade_project_save (glade_app_get_project (), path, NULL);
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_project_close (PyObject *self, PyObject *args)
{
gchar *path;
if (PyArg_ParseTuple(args, "s", &path))
{
GladeProject *project = glade_app_get_project_by_path (path);
if (project) glade_app_remove_project (project);
}
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_project_get (PyObject *self, PyObject *args)
{
GladeProject *project = glade_app_get_project ();
return Py_BuildValue ("s", (project) ? project->name : "");
}
static PyObject *
glade_python_project_list (PyObject *self, PyObject *args)
{
GList *p, *projects = glade_app_get_projects ();
PyObject *list;
list = PyList_New (0);
for (p = projects; p && p->data; p = g_list_next (p))
{
GladeProject *project = p->data;
PyList_Append (list, Py_BuildValue ("s", project->name));
}
return list;
}
static PyObject *
glade_python_project_set (PyObject *self, PyObject *args)
{
gchar *path;
if (PyArg_ParseTuple(args, "s", &path))
{
GladeProject *project = glade_app_get_project_by_path (path);
if (project) glade_app_set_project (project);
}
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_widget_new (PyObject *self, PyObject *args)
{
GladeProject *project = glade_app_get_project ();
GladeWidgetAdaptor *adaptor;
GladeWidget *widget = NULL;
gchar *class_name, *parent;
if (project && PyArg_ParseTuple(args, "ss", &class_name, &parent) &&
(adaptor = glade_widget_adaptor_get_by_name (class_name)))
widget = glade_command_create (adaptor,
glade_project_get_widget_by_name (project, parent),
NULL, project);
return Py_BuildValue ("s", (widget) ? widget->name : "");
}
static PyObject *
glade_python_widget_delete (PyObject *self, PyObject *args)
{
GladeProject *project = glade_app_get_project ();
gchar *name;
if (project && PyArg_ParseTuple(args, "s", &name))
{
GladeWidget *widget;
if ((widget = glade_project_get_widget_by_name (project, name)))
{
GList list;
list.data = widget;
list.next = list.prev = NULL;
glade_command_delete (&list);
}
}
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_widget_set (PyObject *self, PyObject *args)
{
GladeProject *project = glade_app_get_project ();
gchar *name, *id_property;
PyObject *val;
if (project && PyArg_ParseTuple(args, "ssO", &name, &id_property, &val))
{
GladeWidget *widget;
GladeProperty *property;
if ((widget = glade_project_get_widget_by_name (project, name)) &&
(property = glade_widget_get_property (widget, id_property)))
{
GValue value = {0,};
g_value_init (&value, G_VALUE_TYPE (property->value));
if (pyg_value_from_pyobject (&value, val) == 0)
glade_command_set_property_value (property, &value);
}
}
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_widget_get (PyObject *self, PyObject *args)
{
GladeProject *project = glade_app_get_project ();
gchar *name, *id_property;
if (project && PyArg_ParseTuple(args, "ss", &name, &id_property))
{
GladeWidget *widget;
GladeProperty *property;
if ((widget = glade_project_get_widget_by_name (project, name)) &&
(property = glade_widget_get_property (widget, id_property)))
return pyg_value_as_pyobject (property->value, TRUE);
}
Py_INCREF(Py_None);
return Py_None;
}
static PyObject *
glade_python_widget_list (PyObject *self, PyObject *args)
{
GList *p;
GladeProject *project = glade_app_get_project ();
PyObject *list;
list = PyList_New (0);
for (p = project->objects; p && p->data; p = g_list_next (p))
{
GladeWidget *widget = glade_widget_get_from_gobject (p->data);
if (widget)
PyList_Append (list, Py_BuildValue ("s", glade_widget_get_name (widget)));
}
return list;
}
extern PyTypeObject PyGladeWidgetAdaptor_Type;
static GHashTable *registered_classes = NULL;
static PyTypeObject *
glade_python_register_class (GType type)
{
GType parent = g_type_parent (type);
PyTypeObject *klass, *parent_class;
if (parent == 0 || type == GLADE_TYPE_WIDGET_ADAPTOR)
return &PyGladeWidgetAdaptor_Type;
if (g_hash_table_lookup (registered_classes, GUINT_TO_POINTER (parent)) == NULL)
parent_class = glade_python_register_class (parent);
else
parent_class = pygobject_lookup_class (parent);
klass = pygobject_lookup_class (type);
pygobject_register_class (glade_dict, g_type_name (type), type, klass,
Py_BuildValue("(O)", parent_class));
pyg_set_object_has_new_constructor (type);
g_hash_table_insert (registered_classes, GUINT_TO_POINTER (type), klass);
return klass;
}
static PyObject *
glade_python_get_adaptor_for_type (PyObject *self, PyObject *args)
{
GladeWidgetAdaptor *adaptor;
PyObject *klass;
gchar *name;
if (PyArg_ParseTuple(args, "s", &name) &&
(adaptor = glade_widget_adaptor_get_by_name (name)))
{
GType type = G_TYPE_FROM_INSTANCE (adaptor);
if ((klass = g_hash_table_lookup (registered_classes, GUINT_TO_POINTER (type))))
return (PyObject *) klass;
else
return (PyObject *) glade_python_register_class (type);
}
Py_INCREF(Py_None);
return Py_None;
}
static PyMethodDef GladeMethods[] = {
{"undo", glade_python_undo, METH_VARARGS, "Execute undo command."},
{"redo", glade_python_redo, METH_VARARGS, "Execute redo command."},
{"project_new", glade_python_project_new, METH_VARARGS, "Create a new project."},
{"project_open", glade_python_project_open, METH_VARARGS, "Open an existing project."},
{"project_save", glade_python_project_save, METH_VARARGS, "Save the current project."},
{"project_close", glade_python_project_close, METH_VARARGS, "Close the current project."},
{"project_get", glade_python_project_get, METH_VARARGS, "Get the current project."},
{"project_set", glade_python_project_set, METH_VARARGS, "Set the current project."},
{"project_list", glade_python_project_list, METH_VARARGS, "List all projects."},
{"widget_new", glade_python_widget_new, METH_VARARGS, "Create a new GtkWidget."},
{"widget_delete", glade_python_widget_delete, METH_VARARGS, "Delete a GtkWidget."},
{"widget_set", glade_python_widget_set, METH_VARARGS, "Set a GtkWidget's property."},
{"widget_get", glade_python_widget_get, METH_VARARGS, "Get a GtkWidget's property."},
{"widget_list", glade_python_widget_list, METH_VARARGS, "List all widgets."},
{"get_adaptor_for_type", glade_python_get_adaptor_for_type, METH_VARARGS, "Get the corresponding GladeWidgetAdaptor. Use this function to create your own derived Adaptor."},
{NULL, NULL, 0, NULL}
};
/* Bindings */
void
glade_python_binding_finalize (GladeBindingCtrl *ctrl)
{
Py_Finalize ();
}
void
glade_python_binding_library_load (const gchar *library)
{
gchar *str = g_strdup_printf ("import %s;", library);
PyRun_SimpleString (str);
g_free (str);
}
gint
glade_python_binding_run_script (const gchar *path, gchar **argv)
{
FILE *fp = fopen (path, "r");
gint retval, i;
if (fp == NULL) return -1;
PyRun_SimpleString ("sys.argv = [];");
if (argv)
{
GString *string = g_string_new ("");
for (i = 0; argv[i]; i++)
{
g_string_printf (string, "sys.argv += ['%s'];", argv[i]);
PyRun_SimpleString (string->str);
}
g_string_free (string, TRUE);
}
retval = PyRun_SimpleFile (fp, path);
fclose (fp);
return retval;
}
/*
Generated by pygtk-codegen-2.0
pygtk-codegen-2.0 -p glade_python_gwa -o glade-python-gwa.override glade-python-gwa.defs > glade-python-gwa.c
*/
void glade_python_gwa_register_classes (PyObject *d);
static void
glade_python_init (void)
{
char *argv[2] = {"", NULL};
/* Init interpreter */
Py_Initialize ();
PySys_SetArgv (1, argv);
}
static void
glade_python_init_pygtk_check (gint req_major, gint req_minor, gint req_micro)
{
PyObject *gobject, *mdict, *version;
int found_major, found_minor, found_micro;
init_pygobject();
gobject = PyImport_ImportModule("gobject");
mdict = PyModule_GetDict(gobject);
version = PyDict_GetItemString(mdict, "pygtk_version");
if (!version)
{
PyErr_SetString(PyExc_ImportError, "PyGObject version too old");
return;
}
if (!PyArg_ParseTuple(version, "iii", &found_major, &found_minor, &found_micro))
return;
if (req_major != found_major || req_minor > found_minor ||
(req_minor == found_minor && req_micro > found_micro))
{
PyErr_Format(PyExc_ImportError,
"PyGObject version mismatch, %d.%d.%d is required, "
"found %d.%d.%d.", req_major, req_minor, req_micro,
found_major, found_minor, found_micro);
return;
}
}
gboolean
glade_binding_init (GladeBindingCtrl *ctrl)
{
gchar *command;
Py_SetProgramName (PACKAGE_NAME);
/* Initialize the Python interpreter */
glade_python_init ();
/* Check and init pygobject >= 2.12.0 */
PyErr_Clear ();
glade_python_init_pygtk_check (PYGTK_REQUIRED_MAJOR, PYGTK_REQUIRED_MINOR, PYGTK_REQUIRED_MICRO);
if (PyErr_Occurred ())
{
PyObject *ptype, *pvalue, *ptraceback;
PyErr_Fetch(&ptype, &pvalue, &ptraceback);
g_warning ("Unable to load pygobject module >= %d.%d.%d, "
"please make sure it is in python's path (sys.path). "
"(use PYTHONPATH env variable to specify non default paths)\n%s",
PYGTK_REQUIRED_MAJOR, PYGTK_REQUIRED_MINOR, PYGTK_REQUIRED_MICRO,
PyString_AsString (pvalue));
PyErr_Clear ();
Py_Finalize ();
return FALSE;
}
pyg_disable_warning_redirections ();
/* Create glade object */
glade = Py_InitModule ("glade", GladeMethods);
GladeError = PyErr_NewException ("glade.error", NULL, NULL);
Py_INCREF (GladeError);
PyModule_AddObject (glade, "error", GladeError);
/* Register GladeUI classes (GladeWidgetAdaptor) */
glade_dict = PyModule_GetDict (glade);
glade_python_gwa_register_classes (glade_dict);
/* Create registered_classes hash table */
registered_classes = g_hash_table_new (g_direct_hash, g_direct_equal);
/* Insert GladeWidgetAdaptor class in the hash table */
g_hash_table_insert (registered_classes,
GUINT_TO_POINTER (GLADE_TYPE_WIDGET_ADAPTOR),
&PyGladeWidgetAdaptor_Type);
/* Import glade module and set path */
command = g_strdup_printf ("import sys; import glade; sys.path+=['.', '%s'];\n",
glade_app_get_modules_dir ());
PyRun_SimpleString (command);
g_free (command);
/* Setup ctrl members */
ctrl->name = "python";
ctrl->finalize = glade_python_binding_finalize;
ctrl->library_load = glade_python_binding_library_load;
ctrl->run_script = glade_python_binding_run_script;
return TRUE;
}

265
configure.ac Normal file
View File

@ -0,0 +1,265 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
AC_INIT([glade3], [3.1.5],
[http://bugzilla.gnome.org/enter_bug.cgi?product=glade3])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([gladeui/glade.h])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE([1.9 foreign no-dist-gzip dist-bzip2])
AM_MAINTAINER_MODE
IT_PROG_INTLTOOL([0.35.0])
AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
AC_PATH_PROG(DLLTOOL, dlltool)
AC_ISC_POSIX
AC_PROG_CC
AC_DISABLE_STATIC
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_LIBTOOL_DLOPEN
AC_LIBTOOL_WIN32_DLL
AM_PROG_LIBTOOL
# If the source code has changed at all, increment GLADE_REVISION
# If any interfaces have been added, removed, or changed, increment GLADE_CURRENT, and set GLADE_REVISION to 0.
# If any interfaces have been added since the last public release, then increment GLADE_AGE.
# If any interfaces have been removed since the last public release, then set GLADE_AGE to 0.
# Reference: http://www.gnu.org/software/libtool/manual.html#Versioning
GLADE_REVISION=0
GLADE_CURRENT=5
GLADE_AGE=0
AC_SUBST(GLADE_REVISION)
AC_SUBST(GLADE_CURRENT)
AC_SUBST(GLADE_AGE)
dnl ================================================================
dnl Gettext stuff.
dnl ================================================================
GETTEXT_PACKAGE=AC_PACKAGE_NAME
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Name of the gettext package.])
AM_GLIB_GNU_GETTEXT
dnl ================================================================
dnl Check for gtk-doc
dnl ================================================================
GTK_DOC_CHECK(1.4)
dnl ================================================================
dnl Check for gtk+
dnl ================================================================
PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.10.0 libxml-2.0 >= 2.4.0])
AC_SUBST(GTK_LIBS)
AC_SUBST(GTK_CFLAGS)
dnl ================================================================
dnl Check for optional gnome libs
dnl ================================================================
AC_ARG_ENABLE(gnome,
AS_HELP_STRING([--disable-gnome], [disable gnome catalog]),
check_gnome=$enableval, check_gnome=yes)
if test x"$check_gnome" = x"yes"; then
PKG_CHECK_MODULES(GNOME, [libbonoboui-2.0 libgnomeui-2.0],
[have_gnome=yes],[have_gnome=no])
AC_SUBST(GNOME_LIBS)
AC_SUBST(GNOME_CFLAGS)
else
have_gnome=no
fi
AM_CONDITIONAL(BUILD_GNOME, test x"$have_gnome" = "xyes")
# ==================================================================
# Glade User Manual (requires gnome-doc-utils)
# ==================================================================
GNOME_DOC_INIT([0.9.0],[],[:])
dnl ================================================================
dnl Python
dnl ================================================================
AC_MSG_CHECKING([whether Python support is requested])
AC_ARG_ENABLE([python],
AS_HELP_STRING([--enable-python],[Enable python support]),
[enable_python=$enableval have_python=$enableval],
[enable_python=autodetect have_python=yes])
AC_MSG_RESULT([$enable_python])
if test "x$have_python" != "xno"; then
AM_PATH_PYTHON([2.3],[],[no])
if test "x$PYTHON" = "x:"; then
have_python=no
fi
fi
if test "x$have_python" != "xno"; then
AM_CHECK_PYTHON_HEADERS([],[have_python=no])
fi
if test "x$have_python" != "xno"; then
PY_PREFIX=`$PYTHON -c 'import sys ; print sys.prefix'`
PY_EXEC_PREFIX=`$PYTHON -c 'import sys ; print sys.exec_prefix'`
PYTHON_LIBS="-lpython$PYTHON_VERSION"
PYTHON_LIB_LOC="-L$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config"
PYTHON_CFLAGS="-I$PY_PREFIX/include/python$PYTHON_VERSION"
PYTHON_MAKEFILE="$PY_EXEC_PREFIX/lib/python$PYTHON_VERSION/config/Makefile"
PYTHON_LOCALMODLIBS=`sed -n -e 's/^LOCALMODLIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE`
PYTHON_BASEMODLIBS=`sed -n -e 's/^BASEMODLIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE`
PYTHON_OTHER_LIBS=`sed -n -e 's/^LIBS=\(.*\)/\1/p' $PYTHON_MAKEFILE`
PYTHON_EXTRA_LIBS="$PYTHON_LOCALMODLIBS $PYTHON_BASEMODLIBS $PYTHON_OTHER_LIBS"
AC_SUBST([PYTHON_LIBS])
AC_SUBST([PYTHON_LIB_LOC])
AC_SUBST([PYTHON_CFLAGS])
AC_SUBST([PYTHON_EXTRA_LIBS])
fi
if test "x$have_python" != "xno"; then
PYGTK_REQUIRED_MAJOR=2
PYGTK_REQUIRED_MINOR=10
PYGTK_REQUIRED_MICRO=0
PYGOBJECT_REQUIRED_MAJOR=2
PYGOBJECT_REQUIRED_MINOR=12
PYGOBJECT_REQUIRED_MICRO=0
PYGOBJECT_REQUIRED=$PYGOBJECT_REQUIRED_MAJOR.$PYGOBJECT_REQUIRED_MINOR.$PYGOBJECT_REQUIRED_MICRO
PYGTK_REQUIRED=$PYGTK_REQUIRED_MAJOR.$PYGTK_REQUIRED_MINOR.$PYGTK_REQUIRED_MICRO
PKG_CHECK_MODULES([PYGTK], [
pygobject-2.0 >= $PYGOBJECT_REQUIRED
pygtk-2.0 >= $PYGTK_REQUIRED],
[],[have_python=no])
AC_SUBST([PYGTK_CFLAGS])
AC_SUBST([PYGTK_LIBS])
AC_DEFINE_UNQUOTED(PYGTK_REQUIRED_MAJOR, $PYGTK_REQUIRED_MAJOR, Pygtk mayor version required)
AC_DEFINE_UNQUOTED(PYGTK_REQUIRED_MINOR, $PYGTK_REQUIRED_MINOR, Pygtk minor version required)
AC_DEFINE_UNQUOTED(PYGTK_REQUIRED_MICRO, $PYGTK_REQUIRED_MICRO, Pygtk micro version required)
fi
if test "x$have_python" != "xno"; then
AC_MSG_CHECKING([for pygtk defs])
PYGTK_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
AC_MSG_RESULT([$PYGTK_DEFSDIR])
AC_MSG_CHECKING([for pygtk codegen])
PYGTK_CODEGEN="$PYTHON `$PKG_CONFIG --variable=codegendir pygtk-2.0`/codegen.py"
AC_MSG_RESULT([$PYGTK_CODEGEN])
AC_MSG_CHECKING([for pygtk h2def])
PYGTK_H2DEF="$PYTHON `$PKG_CONFIG --variable=codegendir pygtk-2.0`/h2def.py"
AC_MSG_RESULT([$PYGTK_H2DEF])
AC_SUBST([PYGTK_DEFSDIR])
AC_SUBST([PYGTK_CODEGEN])
AC_SUBST([PYGTK_H2DEF])
dnl Check for -fno-strict-aliasing
FLAGS="-fno-strict-aliasing"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $FLAGS"
AC_MSG_CHECKING([whether [$]CC understands $FLAGS])
AC_TRY_COMPILE([], [], [compiler_has_option=yes], [compiler_has_option=no])
CFLAGS="$save_CFLAGS"
AC_MSG_RESULT($compiler_has_option)
if test $compiler_has_option = yes; then
NO_STRICT_ALIASING_CFLAGS="$FLAGS"
fi
AC_SUBST([NO_STRICT_ALIASING_CFLAGS])
fi
if test "x$have_python" != "xyes"; then
if test "x$enable_python" = "xyes"; then
AC_MSG_ERROR([Python not found])
elif test "x$enable_python" = "xautodetect"; then
enable_python=no
AC_MSG_WARN([Python not found, disabling python support])
fi
elif test "x$enable_python" != "xno"; then
enable_python=yes
AC_DEFINE([ENABLE_PYTHON],[1],[Define to compile with python support])
fi
AM_CONDITIONAL([ENABLE_PYTHON],[test "x$enable_python" = "xyes"])
dnl ================================================================
dnl Check for windows
dnl ================================================================
case $host_os in
*mingw* | pw32* | cygwin*)
win32=yes
;;
*)
win32=no
;;
esac
AM_CONDITIONAL(WITH_WIN32, test x"$win32" = "xyes")
AC_SUBST([AM_CPPFLAGS])
AC_SUBST([AM_CFLAGS])
AC_SUBST([AM_CXXFLAGS])
AC_SUBST([AM_LDFLAGS])
AC_CONFIG_FILES([
Makefile
data/gladeui-1.0.pc
data/glade-3.desktop.in
data/Makefile
data/icons/Makefile
data/icons/hicolor/Makefile
data/icons/hicolor/16x16/Makefile
data/icons/hicolor/16x16/apps/Makefile
data/icons/hicolor/22x22/Makefile
data/icons/hicolor/22x22/apps/Makefile
data/icons/hicolor/24x24/Makefile
data/icons/hicolor/24x24/apps/Makefile
data/icons/hicolor/32x32/Makefile
data/icons/hicolor/32x32/apps/Makefile
data/icons/hicolor/48x48/Makefile
data/icons/hicolor/48x48/apps/Makefile
data/icons/hicolor/scalable/Makefile
data/icons/hicolor/scalable/apps/Makefile
gladeui/Makefile
src/Makefile
plugins/Makefile
plugins/gtk+/Makefile
plugins/gtk+/icons/Makefile
plugins/gtk+/icons/16x16/Makefile
plugins/gtk+/icons/22x22/Makefile
plugins/gnome/Makefile
plugins/gnome/icons/Makefile
plugins/gnome/icons/16x16/Makefile
plugins/gnome/icons/22x22/Makefile
bindings/Makefile
bindings/python/Makefile
po/Makefile.in
doc/Makefile
doc/version.xml
help/Makefile
])
AC_OUTPUT
echo "
Configuration:
Source code location: ${srcdir}
Compiler: ${CC}
GnomeUI Catalog: ${have_gnome}
Python Binding: ${have_python}
Glade User Manual: ${gdu_cv_have_gdu}
"

4
data/.gitignore vendored
View File

@ -1,4 +0,0 @@
/org.gnome.Glade.desktop
/org.gnome.Glade.desktop.in
/gladeui-1.0.pc
/org.gnome.Glade.appdata.xml

19
data/Makefile.am Normal file
View File

@ -0,0 +1,19 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = icons
desktopdir = $(datadir)/applications
desktop_in_files = glade-3.desktop.in.in
desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop)
@INTLTOOL_DESKTOP_RULE@
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = gladeui-1.0.pc
EXTRA_DIST = \
$(desktop_in_files) \
gladeui-1.0.pc.in
CLEANFILES = \
$(desktop_DATA) \
$(pkgconfig_DATA)

View File

@ -1,18 +0,0 @@
<?xml version="1.0"?>
<its:rules xmlns:its="http://www.w3.org/2005/11/its"
xmlns:gt="https://www.gnu.org/s/gettext/ns/its/extensions/1.0"
version="2.0">
<its:translateRule selector="/glade-catalog" translate="no"/>
<its:translateRule selector="/glade-catalog//glade-widget-class/@title" translate="yes"/>
<its:translateRule selector="/glade-catalog//glade-widget-class//action/@name" translate="yes"/>
<its:translateRule selector="/glade-catalog//glade-widget-class//property/@name" translate="yes"/>
<its:translateRule selector="/glade-catalog//glade-widget-class//property//value/@name" translate="yes"/>
<its:translateRule selector="/glade-catalog//glade-widget-class//property/tooltip" translate="yes"/>
<its:translateRule selector="/glade-catalog//glade-widget-group/@title" translate="yes"/>
<!-- Extracted strings are consumed by the library and are never
merged back; we don't want to escape special characters. -->
<gt:escapeRule selector="/glade-catalog" escape="no"/>
</its:rules>

View File

@ -1,6 +0,0 @@
<?xml version="1.0"?>
<locatingRules>
<locatingRule name="GladeCatalog" pattern="*.xml">
<documentRule localName="glade-catalog" target="glade-catalog.its"/>
</locatingRule>
</locatingRules>

View File

@ -0,0 +1,17 @@
[Desktop Entry]
Encoding=UTF-8
_Name=Glade Interface Designer
_GenericName=User Interface Designer
_Comment=Create or open user interface designs for GTK+ applications
Exec=glade-3 %F
Terminal=false
StartupNotify=true
Type=Application
Icon=glade-3
Categories=GTK;Application;Development;GUIDesigner;
MimeType=application/x-glade;
X-GNOME-DocPath=glade/glade.xml
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=glade3
X-GNOME-Bugzilla-Version=@VERSION@
X-GNOME-Bugzilla-Component=general

18
data/gladeui-1.0.pc.in Normal file
View File

@ -0,0 +1,18 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
datarootdir=@datarootdir@
datadir=@datadir@
includedir=@includedir@/libgladeui-1.0
catalogdir=@datadir@/@PACKAGE@/catalogs
pixmapdir=@datadir@/@PACKAGE@/pixmaps
moduledir=@libdir@/@PACKAGE@/modules
Name: Glade
Description: Glade interface designer library
URL: http://glade.gnome.org
Version: @PACKAGE_VERSION@
Requires: gtk+-2.0 >= 2.10.0 libxml-2.0 >= 2.4.0
Libs: -L${libdir} -lgladeui-1
Cflags: -I${includedir}

23
data/icons/Makefile.am Normal file
View File

@ -0,0 +1,23 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = hicolor
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
install-data-hook: update-icon-cache
uninstall-hook: update-icon-cache
update-icon-cache:
@-if test -z "$(DESTDIR)"; then \
echo "Updating Gtk icon cache."; \
$(gtk_update_icon_cache); \
else \
echo "*** Icon cache not updated. After (un)install, run this:"; \
echo "*** $(gtk_update_icon_cache)"; \
fi
pixmapsdir = $(pkgdatadir)/pixmaps
pixmaps_DATA = selector.png devhelp.png plus.png
EXTRA_DIST = $(pixmaps_DATA)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1 @@
SUBDIRS = apps

View File

@ -0,0 +1,6 @@
## Process this file with automake to produce Makefile.in
appicondir = $(datadir)/icons/hicolor/16x16/apps
appicon_DATA = glade-3.png
EXTRA_DIST = $(appicon_DATA) glade-3.xcf

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

View File

@ -0,0 +1 @@
SUBDIRS = apps

View File

@ -0,0 +1,6 @@
## Process this file with automake to produce Makefile.in
appicondir = $(datadir)/icons/hicolor/22x22/apps
appicon_DATA = glade-3.png
EXTRA_DIST = $(appicon_DATA) glade-3.xcf

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

View File

@ -0,0 +1 @@
SUBDIRS = apps

View File

@ -0,0 +1,6 @@
## Process this file with automake to produce Makefile.in
appicondir = $(datadir)/icons/hicolor/24x24/apps
appicon_DATA = glade-3.png
EXTRA_DIST = $(appicon_DATA)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1 @@
SUBDIRS = apps

View File

@ -0,0 +1,6 @@
## Process this file with automake to produce Makefile.in
appicondir = $(datadir)/icons/hicolor/32x32/apps
appicon_DATA = glade-3.png
EXTRA_DIST = $(appicon_DATA) glade-3.svg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,771 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="32"
id="svg4908"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
sodipodi:docname="glade.svg"
sodipodi:docbase="/home/andreas/project/application icons/32x32"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/application icons/32x32/glade.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
version="1.0"
sodipodi:modified="true">
<defs
id="defs4910">
<linearGradient
id="linearGradient22140">
<stop
style="stop-color:black;stop-opacity:0;"
offset="0"
id="stop22142" />
<stop
id="stop22148"
offset="0.5"
style="stop-color:black;stop-opacity:1;" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop22144" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient22140"
id="linearGradient23044"
gradientUnits="userSpaceOnUse"
x1="18.142136"
y1="35"
x2="18.142136"
y2="42.040661" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient23042"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-89.10259,-31.49999)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<linearGradient
inkscape:collect="always"
id="linearGradient22122">
<stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop22124" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop22126" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient23040"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-41.10259,45.50001)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<linearGradient
inkscape:collect="always"
id="linearGradient7025">
<stop
style="stop-color:#e6ce46;stop-opacity:1"
offset="0"
id="stop7027" />
<stop
style="stop-color:#d6ba1c;stop-opacity:1"
offset="1"
id="stop7029" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7025"
id="linearGradient10840"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(53,1.428571)"
x1="13.630114"
y1="28.5"
x2="25.208096"
y2="41.180992" />
<linearGradient
inkscape:collect="always"
id="linearGradient7780">
<stop
style="stop-color:#888a85;stop-opacity:1;"
offset="0"
id="stop7782" />
<stop
style="stop-color:#888a85;stop-opacity:0;"
offset="1"
id="stop7784" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7752">
<stop
style="stop-color:#888a85;stop-opacity:1"
offset="0"
id="stop7754" />
<stop
style="stop-color:#888a85;stop-opacity:0"
offset="1"
id="stop7756" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7744">
<stop
style="stop-color:#888a85;stop-opacity:1"
offset="0"
id="stop7746" />
<stop
style="stop-color:#888a85;stop-opacity:0"
offset="1"
id="stop7748" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7736">
<stop
style="stop-color:#c1c7bc;stop-opacity:1;"
offset="0"
id="stop7738" />
<stop
style="stop-color:#e8eae6;stop-opacity:1"
offset="1"
id="stop7740" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7728">
<stop
style="stop-color:#d3d7cf;stop-opacity:1"
offset="0"
id="stop7730" />
<stop
style="stop-color:#eeeeec;stop-opacity:1"
offset="1"
id="stop7732" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7720">
<stop
style="stop-color:#555753;stop-opacity:1;"
offset="0"
id="stop7722" />
<stop
style="stop-color:#555753;stop-opacity:0;"
offset="1"
id="stop7724" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7686">
<stop
style="stop-color:#555753;stop-opacity:1;"
offset="0"
id="stop7688" />
<stop
style="stop-color:#555753;stop-opacity:0;"
offset="1"
id="stop7690" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6997">
<stop
style="stop-color:#babdb6;stop-opacity:1;"
offset="0"
id="stop6999" />
<stop
style="stop-color:#d7d9d5;stop-opacity:1"
offset="1"
id="stop7001" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6905">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6907" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop6909" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4790">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4792" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop4794" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4790"
id="radialGradient4796"
cx="37.030354"
cy="12.98915"
fx="37.030354"
fy="12.98915"
r="4.2929163"
gradientTransform="matrix(-1.5795056,0,0,0.9498629,62.524548,-3.1435399)"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient269">
<stop
id="stop270"
offset="0.0000000"
style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
<stop
id="stop271"
offset="1"
style="stop-color:#8a8a8a;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient259">
<stop
id="stop260"
offset="0.0000000"
style="stop-color:#729fcf;stop-opacity:1" />
<stop
id="stop261"
offset="1.0000000"
style="stop-color:#204a87;stop-opacity:1.0000000" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2251">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2253" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop2255" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2251"
id="linearGradient8166"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.2961811e-2,-0.6857104,-0.7001194,-2.2489236e-2,30.580101,31.011455)"
x1="32.862488"
y1="36.028366"
x2="34.170048"
y2="38.070381" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6905"
id="linearGradient6959"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(11.30501,19.746952)"
x1="-15.909902"
y1="16.003418"
x2="-23"
y2="16.091806" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6905"
id="linearGradient6962"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-35,-4.5078057)"
x1="-15.909902"
y1="16.003418"
x2="-23"
y2="16.091806" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6997"
id="linearGradient7003"
x1="-17.235727"
y1="17.947962"
x2="-17.324116"
y2="32.53204"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7686"
id="linearGradient7692"
x1="35.47406"
y1="36.912945"
x2="35.47406"
y2="39.351414"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7494886,0,0,0.7313296,-0.130915,-3.1911008)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7720"
id="linearGradient7726"
x1="-8.28125"
y1="12.475584"
x2="-8.28125"
y2="6.2509766"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2909093,0,0,0.1748634,-24.09091,4.1256829)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient7728"
id="radialGradient7734"
cx="8.3376141"
cy="40.582108"
fx="8.3376141"
fy="40.582108"
r="20.500002"
gradientTransform="matrix(-0.7220896,5.1346809e-8,8.5653087e-7,0.6522647,32.925823,-0.8066207)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7736"
id="linearGradient7742"
x1="38.944931"
y1="12.11484"
x2="37.306168"
y2="13.392819"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.6904882,0,0,0.7398648,31.536239,-3.0489861)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7744"
id="linearGradient7750"
x1="18.384777"
y1="22"
x2="23.292892"
y2="22"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8000001,0,0,0.5,-0.2000016,2.4999997)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7752"
id="linearGradient7758"
x1="15.114408"
y1="27"
x2="20.019962"
y2="27"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.857143,0,0,0.5,-1.0000023,3.9999994)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7780"
id="linearGradient7786"
x1="20.875"
y1="14.249998"
x2="20.875"
y2="18.437498"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.7410819,0,0,0.6666666,6.21347e-2,-2.0000004)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient5157"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-41.10259,45.50001)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient5159"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-89.10259,-31.49999)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient22140"
id="linearGradient5161"
gradientUnits="userSpaceOnUse"
x1="18.142136"
y1="35"
x2="18.142136"
y2="42.040661" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient6150"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-41.10259,45.50001)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient6152"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-89.10259,-31.49999)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient22140"
id="linearGradient6154"
gradientUnits="userSpaceOnUse"
x1="18.142136"
y1="35"
x2="18.142136"
y2="42.040661" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7025"
id="linearGradient6156"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(53,1.428571)"
x1="13.630114"
y1="28.5"
x2="25.208096"
y2="41.180992" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="15.999999"
inkscape:cx="33.76609"
inkscape:cy="20.586245"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1674"
inkscape:window-height="968"
inkscape:window-x="0"
inkscape:window-y="26"
showguides="true"
inkscape:guide-bbox="true"
width="32px"
height="32px" />
<metadata
id="metadata4913">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g5149"
style="opacity:0.3"
transform="matrix(-0.6666667,0,0,0.5714286,32,6)">
<rect
y="35"
x="0"
height="7"
width="4"
id="rect5151"
style="opacity:1;fill:url(#radialGradient5157);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
transform="scale(-1,-1)"
y="-42"
x="-48"
height="7"
width="4"
id="rect5153"
style="opacity:1;fill:url(#radialGradient5159);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
y="35"
x="4"
height="7"
width="40"
id="rect5155"
style="opacity:1;fill:url(#linearGradient5161);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
</g>
<path
style="fill:url(#radialGradient7734);fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 29.294093,2.4999998 L 8.7293434,2.4999998 C 8.6152711,2.4999998 1.5,9.7905242 1.5,9.9074054 L 1.5,28.289021 C 1.5,28.405903 1.5918342,28.499999 1.7059065,28.499999 L 29.294093,28.499999 C 29.408166,28.499999 29.5,28.405903 29.5,28.289021 L 29.5,2.7109774 C 29.5,2.5940958 29.565495,2.4084486 29.294093,2.4999998 z "
id="rect4916"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient7692);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 26.500001,26.500001 L 26.500001,7.5000002 L 5.5000002,7.5000002 L 5.5000002,23.548695 L 18.151658,23.548695"
id="path4974"
sodipodi:nodetypes="ccccc" />
<path
style="opacity:0.64130435;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 2.4999999,9.5909104 L 8.5838808,3.5000002 L 28.437499,3.5000002 L 28.437499,27.500002 L 2.4999999,27.500002 L 2.4999999,9.5909104 z "
id="rect5887"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 4.5377704,10.5 L 27.978076,10.5"
id="path4976" />
<path
inkscape:r_cy="true"
inkscape:r_cx="true"
style="opacity:0.35714285;color:#000000;fill:url(#radialGradient4796);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 1.3527051,9.6855718 C 2.0121209,8.6892491 6.877972,6.9254979 9.4107408,6.3339567 C 9.2572783,7.4977242 9.5218979,11.008446 9.5218979,11.008446 C 7.6546325,9.9911316 2.0595082,9.5656294 1.3527051,9.6855718 z "
id="path5348"
sodipodi:nodetypes="cccc" />
<rect
style="opacity:0.64130435;fill:url(#linearGradient7786);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7778"
width="20.009211"
height="2"
x="5.9907894"
y="8" />
<path
style="opacity:1;color:#000000;fill:url(#linearGradient7742);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
d="M 1.5000141,9.9760969 C 1.4909238,8.9290832 5.8863647,2.4241096 8.5672434,2.5006702 C 7.8953721,2.673055 7.3586439,7.0641785 8.3182291,9.1450482 C 6.4193865,9.1450482 2.1655515,8.6012994 1.5000141,9.9760969 z "
id="path2210"
sodipodi:nodetypes="cccc"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
sodipodi:nodetypes="cccc"
id="path2247"
d="M 2.6785155,8.0439173 C 3.1887299,7.1200246 5.5915523,4.5658067 6.9383154,3.7171098 C 6.7709389,4.6953545 6.5621107,6.2435454 6.9933638,8.0015394 C 6.9933638,8.0015394 3.2253952,7.9326947 2.6785155,8.0439173 z "
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8166);stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
sodipodi:type="arc"
style="opacity:0.78260869;fill:none;fill-opacity:1;stroke:#555753;stroke-width:2.43027735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path4978"
sodipodi:cx="11.136932"
sodipodi:cy="23.604815"
sodipodi:rx="2.3864856"
sodipodi:ry="2.4748738"
d="M 13.523418 23.604815 A 2.3864856 2.4748738 0 1 1 8.7504468,23.604815 A 2.3864856 2.4748738 0 1 1 13.523418 23.604815 z"
transform="matrix(0.4190262,0,0,0.4040609,3.833333,3.9622167)" />
<path
sodipodi:type="arc"
style="opacity:0.78260869;fill:none;fill-opacity:1;stroke:#555753;stroke-width:2.43027806;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path5951"
sodipodi:cx="11.136932"
sodipodi:cy="23.604815"
sodipodi:rx="2.3864856"
sodipodi:ry="2.4748738"
d="M 13.523418 23.604815 A 2.3864856 2.4748738 0 1 1 8.7504468,23.604815 A 2.3864856 2.4748738 0 1 1 13.523418 23.604815 z"
transform="matrix(0.4190262,0,0,0.404061,3.8333336,7.9622149)" />
<rect
style="opacity:1;fill:url(#linearGradient7750);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect5955"
width="8.000001"
height="1"
x="11"
y="13"
rx="0"
ry="0" />
<rect
style="opacity:1;fill:url(#linearGradient7758);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect5957"
width="6"
height="1"
x="11"
y="17"
rx="0"
ry="0" />
<rect
style="opacity:1;fill:#555753;fill-opacity:1;stroke:none;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect5963"
width="1"
height="1"
x="-8"
y="-28"
transform="matrix(0,-1,-1,0,0,0)" />
<path
style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 19.36965,19.5 L 13.5,19.5 L 13.5,21.5 L 20.5,21.5 L 20.5,20.680407"
id="path5965"
sodipodi:nodetypes="ccccc" />
<rect
style="opacity:1;fill:url(#linearGradient7726);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7718"
width="1.0000006"
height="2"
x="-27"
y="5"
transform="scale(-1,1)" />
<g
id="g22150"
style="opacity:0.3"
transform="matrix(-0.916667,0,0,0.714282,48,18.00012)">
<rect
y="35"
x="0"
height="7"
width="4"
id="rect22120"
style="opacity:1;fill:url(#radialGradient23040);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
transform="scale(-1,-1)"
y="-42"
x="-48"
height="7"
width="4"
id="rect22134"
style="opacity:1;fill:url(#radialGradient23042);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
y="35"
x="4"
height="7"
width="40"
id="rect22138"
style="opacity:1;fill:url(#linearGradient23044);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
</g>
<g
id="g10824"
transform="matrix(-1,0,0,1,152,-1.9285711)">
<path
id="path4319"
d="M 57.5,14.928571 L 57.5,44.928571 L 96.5,44.928571 L 57.5,14.928571 z M 63.5,27.928571 L 78.5,38.928571 L 63.5,38.928571 L 63.5,27.928571 z "
style="fill:url(#linearGradient10840);fill-opacity:1;fill-rule:evenodd;stroke:#a38503;stroke-width:1.00000024px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4326"
d="M 61.5,44.928571 L 61.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4328"
d="M 67.5,44.928571 L 67.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4330"
d="M 73.5,44.928571 L 73.5,41.964285"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4332"
d="M 79.5,44.928571 L 79.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4334"
d="M 85.5,44.928571 L 85.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path6126"
d="M 58.500002,16.928575 L 58.500002,43.928586 L 93.500014,43.928586 L 58.500002,16.928575 z "
style="opacity:0.4;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<path
style="opacity:0.4;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 89.455805,39.509552 L 89.5,25.5 L 70.415961,39.530368 L 89.455805,39.509552 z "
id="path12221"
sodipodi:nodetypes="cccc" />
<g
id="g6123"
style="opacity:0.3"
transform="matrix(-0.642788,0,0,0.499897,32,10.004326)">
<rect
y="35"
x="0"
height="7"
width="4"
id="rect6125"
style="opacity:1;fill:url(#radialGradient6150);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
transform="scale(-1,-1)"
y="-42"
x="-48"
height="7"
width="4"
id="rect6127"
style="opacity:1;fill:url(#radialGradient6152);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
y="35"
x="4"
height="7"
width="40"
id="rect6129"
style="opacity:1;fill:url(#linearGradient6154);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
</g>
<g
id="g6131"
transform="matrix(-0.712014,0,0,0.705285,72.47014,-2.2704347)">
<path
id="path6133"
d="M 57.5,14.928571 L 57.5,44.928571 L 96.5,44.928571 L 57.5,14.928571 z M 63.236662,27.131021 L 77.534429,37.865171 L 63.148883,37.953788 L 63.236662,27.131021 z "
style="fill:url(#linearGradient6156);fill-opacity:1;fill-rule:evenodd;stroke:#a38503;stroke-width:1.4111501px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1.41114986px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
d="M 88.396719,44.928571 L 88.396719,41.928571"
id="path1912"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
id="path6136"
d="M 61.675558,44.928571 L 61.675558,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1.41114986px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path6138"
d="M 67.324442,44.928571 L 67.324442,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1.41114986px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path6140"
d="M 72.973326,44.928571 L 72.973326,41.964285"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1.41114986px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path6142"
d="M 78.534431,44.928571 L 78.534431,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1.41114986px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path6144"
d="M 82.778851,44.928571 L 82.778851,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1.41114986px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path6146"
d="M 58.893688,17.726124 L 58.893688,43.628368 L 92.40573,43.628368 L 58.893688,17.726124 z "
style="opacity:0.4;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.41115046px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
sodipodi:nodetypes="cccc" />
</g>
<path
style="opacity:0.4;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.9999997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 28.530931,25.46829 L 28.499421,14.788571 L 14.24226,25.482858 L 28.530931,25.46829 z "
id="path6148"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1 @@
SUBDIRS = apps

View File

@ -0,0 +1,6 @@
## Process this file with automake to produce Makefile.in
appicondir = $(datadir)/icons/hicolor/48x48/apps
appicon_DATA = glade-3.png
EXTRA_DIST = $(appicon_DATA)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1 @@
SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable

View File

@ -0,0 +1 @@
SUBDIRS = apps

View File

@ -0,0 +1,6 @@
## Process this file with automake to produce Makefile.in
appicondir = $(datadir)/icons/hicolor/scalable/apps
appicon_DATA = glade-3.svg
EXTRA_DIST = $(appicon_DATA)

View File

@ -0,0 +1,648 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48px"
height="48px"
id="svg4908"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
sodipodi:docname="glade5.svg"
sodipodi:docbase="/home/andreas/project/application icons/48x48"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/application icons/48x48/glade5.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs4910">
<linearGradient
id="linearGradient22140">
<stop
style="stop-color:black;stop-opacity:0;"
offset="0"
id="stop22142" />
<stop
id="stop22148"
offset="0.5"
style="stop-color:black;stop-opacity:1;" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop22144" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient22140"
id="linearGradient23044"
gradientUnits="userSpaceOnUse"
x1="18.142136"
y1="35"
x2="18.142136"
y2="42.040661" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient23042"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-89.10259,-31.49999)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<linearGradient
inkscape:collect="always"
id="linearGradient22122">
<stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop22124" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop22126" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient23040"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-41.10259,45.50001)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<linearGradient
inkscape:collect="always"
id="linearGradient7025">
<stop
style="stop-color:#e6ce46;stop-opacity:1"
offset="0"
id="stop7027" />
<stop
style="stop-color:#d6ba1c;stop-opacity:1"
offset="1"
id="stop7029" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7025"
id="linearGradient10840"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(53,1.428571)"
x1="13.630114"
y1="28.5"
x2="25.208096"
y2="41.180992" />
<linearGradient
inkscape:collect="always"
id="linearGradient7780">
<stop
style="stop-color:#888a85;stop-opacity:1;"
offset="0"
id="stop7782" />
<stop
style="stop-color:#888a85;stop-opacity:0;"
offset="1"
id="stop7784" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7752">
<stop
style="stop-color:#888a85;stop-opacity:1"
offset="0"
id="stop7754" />
<stop
style="stop-color:#888a85;stop-opacity:0"
offset="1"
id="stop7756" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7744">
<stop
style="stop-color:#888a85;stop-opacity:1"
offset="0"
id="stop7746" />
<stop
style="stop-color:#888a85;stop-opacity:0"
offset="1"
id="stop7748" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7736">
<stop
style="stop-color:#c1c7bc;stop-opacity:1;"
offset="0"
id="stop7738" />
<stop
style="stop-color:#e8eae6;stop-opacity:1"
offset="1"
id="stop7740" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7728">
<stop
style="stop-color:#d3d7cf;stop-opacity:1"
offset="0"
id="stop7730" />
<stop
style="stop-color:#eeeeec;stop-opacity:1"
offset="1"
id="stop7732" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7720">
<stop
style="stop-color:#555753;stop-opacity:1;"
offset="0"
id="stop7722" />
<stop
style="stop-color:#555753;stop-opacity:0;"
offset="1"
id="stop7724" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient7686">
<stop
style="stop-color:#555753;stop-opacity:1;"
offset="0"
id="stop7688" />
<stop
style="stop-color:#555753;stop-opacity:0;"
offset="1"
id="stop7690" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6997">
<stop
style="stop-color:#babdb6;stop-opacity:1;"
offset="0"
id="stop6999" />
<stop
style="stop-color:#d7d9d5;stop-opacity:1"
offset="1"
id="stop7001" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6905">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6907" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop6909" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4790">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4792" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop4794" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4790"
id="radialGradient4796"
cx="37.030354"
cy="12.98915"
fx="37.030354"
fy="12.98915"
r="4.2929163"
gradientTransform="matrix(-2.1313511,0,0,1.283833,86.543976,-0.1277984)"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient269">
<stop
id="stop270"
offset="0.0000000"
style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
<stop
id="stop271"
offset="1"
style="stop-color:#8a8a8a;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient259">
<stop
id="stop260"
offset="0.0000000"
style="stop-color:#729fcf;stop-opacity:1" />
<stop
id="stop261"
offset="1.0000000"
style="stop-color:#204a87;stop-opacity:1.0000000" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient2251">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2253" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop2255" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2251"
id="linearGradient8166"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.277938e-2,-1.0071302,-0.999463,-3.303084e-2,45.620229,49.233341)"
x1="32.862488"
y1="36.028366"
x2="34.170048"
y2="38.070381" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6905"
id="linearGradient6959"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(11.30501,19.746952)"
x1="-15.909902"
y1="16.003418"
x2="-23"
y2="16.091806" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6905"
id="linearGradient6962"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-35,-4.5078057)"
x1="-15.909902"
y1="16.003418"
x2="-23"
y2="16.091806" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6997"
id="linearGradient7003"
x1="-17.235727"
y1="17.947962"
x2="-17.324116"
y2="32.53204"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7686"
id="linearGradient7692"
x1="35.47406"
y1="36.912945"
x2="35.47406"
y2="39.351414"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.0045696,0,-0.1855194)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7720"
id="linearGradient7726"
x1="-8.28125"
y1="12.475584"
x2="-8.28125"
y2="6.2509766"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2909091,0,0,0.3497268,-33.090909,9.251366)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient7728"
id="radialGradient7734"
cx="8.3376141"
cy="40.582108"
fx="8.3376141"
fy="40.582108"
r="20.500002"
gradientTransform="matrix(-0.9959857,6.9120707e-8,1.181422e-6,0.8780487,46.845968,3.0487798)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7736"
id="linearGradient7742"
x1="38.944931"
y1="12.11484"
x2="37.306168"
y2="13.392819"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,47.000004,0)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7744"
id="linearGradient7750"
x1="18.384777"
y1="22"
x2="23.292892"
y2="22"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7752"
id="linearGradient7758"
x1="15.114408"
y1="27"
x2="20.019962"
y2="27"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient7780"
id="linearGradient7786"
x1="20.875"
y1="14.249998"
x2="20.875"
y2="18.437498"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient5157"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-41.10259,45.50001)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient22122"
id="radialGradient5159"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-1.000001,1.142856,0,-89.10259,-31.49999)"
cx="7"
cy="39.464806"
fx="7"
fy="39.464806"
r="3.5" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient22140"
id="linearGradient5161"
gradientUnits="userSpaceOnUse"
x1="18.142136"
y1="35"
x2="18.142136"
y2="42.040661" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="15.999999"
inkscape:cx="27.406385"
inkscape:cy="33.127804"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1674"
inkscape:window-height="968"
inkscape:window-x="0"
inkscape:window-y="26"
showguides="true"
inkscape:guide-bbox="true" />
<metadata
id="metadata4913">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g5149"
style="opacity:0.3"
transform="matrix(-0.9583333,0,0,0.714282,47,15.000156)">
<rect
y="35"
x="0"
height="7"
width="4"
id="rect5151"
style="opacity:1;fill:url(#radialGradient5157);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
transform="scale(-1,-1)"
y="-42"
x="-48"
height="7"
width="4"
id="rect5153"
style="opacity:1;fill:url(#radialGradient5159);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
y="35"
x="4"
height="7"
width="40"
id="rect5155"
style="opacity:1;fill:url(#linearGradient5161);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
</g>
<path
style="fill:url(#radialGradient7734);fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 43.215995,7.5 L 13.471509,7.5 C 13.314168,7.5 3.5,17.314168 3.5,17.471508 L 3.5,42.215992 C 3.5,42.373332 3.626668,42.5 3.784009,42.5 L 43.215995,42.5 C 43.373336,42.5 43.500004,42.373332 43.500004,42.215992 L 43.500004,7.7840084 C 43.500004,7.6266678 43.373336,7.5 43.215995,7.5 z "
id="rect4916"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:url(#linearGradient7692);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 35.532117,40.598798 L 35.532117,14.5 L 7.5130099,14.5 L 7.5130099,36.544822 L 24.393398,36.544822"
id="path4974"
sodipodi:nodetypes="ccccc" />
<path
style="opacity:0.64130435;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 4.5,16.875001 L 13.062499,8.5 L 42.5,8.5 L 42.5,41.5 L 4.5,41.5 L 4.5,16.875001 z "
id="rect5887"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 6.0648146,18.566679 L 35.435184,18.566679"
id="path4976" />
<path
inkscape:r_cy="true"
inkscape:r_cx="true"
style="opacity:0.35714285;color:#000000;fill:url(#radialGradient4796);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 4,17.212006 C 4.8898017,15.865378 11.455677,13.481495 14.873341,12.681969 C 14.666262,14.254915 15.023334,19 15.023334,19 C 12.503686,17.625 4.9537451,17.049892 4,17.212006 z "
id="path5348"
sodipodi:nodetypes="cccc" />
<rect
style="opacity:0.64130435;fill:url(#linearGradient7786);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7778"
width="27"
height="3"
x="8"
y="15" />
<path
style="opacity:1;color:#000000;fill:url(#linearGradient7742);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
d="M 3.500024,17.60468 C 3.486859,16.189538 9.852559,7.3974268 13.735143,7.500906 C 12.762105,7.733901 11.984788,13.668936 13.374508,16.481436 C 10.624508,16.481436 4.463889,15.746506 3.500024,17.60468 z "
id="path2210"
sodipodi:nodetypes="cccc"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
sodipodi:nodetypes="cccc"
id="path2247"
d="M 5.78902,15.499999 C 6.517382,14.143041 9.947557,10.391559 11.870143,9.1450438 C 11.631203,10.581831 11.333088,12.855721 11.948728,15.437757 C 11.948728,15.437757 6.569724,15.336642 5.78902,15.499999 z "
style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8166);stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
inkscape:r_cx="true"
inkscape:r_cy="true" />
<path
sodipodi:type="arc"
style="opacity:0.7826087;fill:none;fill-opacity:1;stroke:#555753;stroke-width:1.62018538;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path4978"
sodipodi:cx="11.136932"
sodipodi:cy="23.604815"
sodipodi:rx="2.3864856"
sodipodi:ry="2.4748738"
d="M 13.523418 23.604815 A 2.3864856 2.4748738 0 1 1 8.7504468,23.604815 A 2.3864856 2.4748738 0 1 1 13.523418 23.604815 z"
transform="matrix(0.6285393,0,0,0.6060913,3.9999997,7.6933267)" />
<path
sodipodi:type="arc"
style="opacity:0.7826087;fill:none;fill-opacity:1;stroke:#555753;stroke-width:1.62018538;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path5951"
sodipodi:cx="11.136932"
sodipodi:cy="23.604815"
sodipodi:rx="2.3864856"
sodipodi:ry="2.4748738"
d="M 13.523418 23.604815 A 2.3864856 2.4748738 0 1 1 8.7504468,23.604815 A 2.3864856 2.4748738 0 1 1 13.523418 23.604815 z"
transform="matrix(0.6285393,0,0,0.6060915,4.0000003,12.693323)" />
<rect
style="opacity:1;fill:url(#linearGradient7750);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect5955"
width="10"
height="2"
x="14"
y="21"
rx="0"
ry="0" />
<rect
style="opacity:1;fill:url(#linearGradient7758);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect5957"
width="7"
height="2"
x="14"
y="26"
rx="0"
ry="0" />
<rect
style="opacity:1;fill:#555753;fill-opacity:1;stroke:#555753;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect5963"
width="0.15951318"
height="3"
x="-14.659513"
y="-38.5"
transform="matrix(0,-1,-1,0,0,0)" />
<path
style="fill:none;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 23.906407,31.559768 L 15.5,31.559768 L 15.5,34.500001 L 25.525275,34.500001 L 25.525275,33.295103"
id="path5965"
sodipodi:nodetypes="ccccc" />
<rect
style="opacity:1;fill:url(#linearGradient7726);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7718"
width="1"
height="4"
x="-36"
y="11"
transform="scale(-1,1)" />
<g
id="g22150"
style="opacity:0.3"
transform="matrix(-0.916667,0,0,0.714282,48,18.00012)">
<rect
y="35"
x="0"
height="7"
width="4"
id="rect22120"
style="opacity:1;fill:url(#radialGradient23040);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
transform="scale(-1,-1)"
y="-42"
x="-48"
height="7"
width="4"
id="rect22134"
style="opacity:1;fill:url(#radialGradient23042);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
<rect
y="35"
x="4"
height="7"
width="40"
id="rect22138"
style="opacity:1;fill:url(#linearGradient23044);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1" />
</g>
<g
id="g10824"
transform="matrix(-1,0,0,1,103,0.5714291)">
<path
id="path4319"
d="M 57.5,14.928571 L 57.5,44.928571 L 96.5,44.928571 L 57.5,14.928571 z M 63.5,27.928571 L 78.5,38.928571 L 63.5,38.928571 L 63.5,27.928571 z "
style="fill:url(#linearGradient10840);fill-opacity:1;fill-rule:evenodd;stroke:#a38503;stroke-width:1.00000024px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4326"
d="M 61.5,44.928571 L 61.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4328"
d="M 67.5,44.928571 L 67.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4330"
d="M 73.5,44.928571 L 73.5,41.964285"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4332"
d="M 79.5,44.928571 L 79.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4334"
d="M 85.5,44.928571 L 85.5,41.928571"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#a38503;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path6126"
d="M 58.500002,16.928575 L 58.500002,43.928586 L 93.500014,43.928586 L 58.500002,16.928575 z "
style="opacity:0.4;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<path
style="opacity:0.4;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 40.498252,40.542446 L 40.542447,26.532894 L 21.458408,40.563262 L 40.498252,40.542446 z "
id="path12221"
sodipodi:nodetypes="cccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 97 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -1,125 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="glade-symbolic.svg"
height="16"
id="svg7384"
inkscape:version="0.92.2 2405546, 2018-03-11"
version="1.1"
width="16">
<metadata
id="metadata90">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Gnome Symbolic Icon Theme</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:bbox-paths="true"
bordercolor="#666666"
borderopacity="1"
inkscape:current-layer="layer9"
inkscape:cx="20.812152"
inkscape:cy="4.0924638"
gridtolerance="10"
inkscape:guide-bbox="true"
guidetolerance="10"
id="namedview88"
inkscape:object-nodes="false"
inkscape:object-paths="false"
objecttolerance="10"
pagecolor="#555753"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
showborder="true"
showgrid="false"
showguides="true"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="false"
inkscape:snap-global="true"
inkscape:snap-grids="true"
inkscape:snap-nodes="true"
inkscape:snap-others="false"
inkscape:snap-to-guides="true"
inkscape:window-height="1381"
inkscape:window-maximized="1"
inkscape:window-width="2560"
inkscape:window-x="1600"
inkscape:window-y="27"
inkscape:zoom="1"
borderlayer="true"
inkscape:showpageshadow="false">
<inkscape:grid
empspacing="2"
enabled="true"
id="grid4866"
snapvisiblegridlinesonly="true"
spacingx="1"
spacingy="1"
type="xygrid"
visible="true"
originx="0"
originy="0" />
</sodipodi:namedview>
<title
id="title9167">Gnome Symbolic Icon Theme</title>
<defs
id="defs7386" />
<g
inkscape:groupmode="layer"
id="layer9"
inkscape:label="apps"
style="display:inline"
transform="translate(-223.0002,-215)">
<path
inkscape:connector-curvature="0"
d="m 239.00778,222.70429 v 8.31023 h -14 z m -2,3.95138 -4,2.35885 h 4 z"
id="path4349"
sodipodi:nodetypes="cccccccc"
style="display:inline;fill:#3d3846;fill-opacity:1;stroke:none;enable-background:new" />
<circle
r="1.5"
cy="219.51451"
cx="227.50777"
id="circle1750"
style="display:inline;opacity:1;vector-effect:none;fill:#3d3846;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
<path
style="display:inline;opacity:1;vector-effect:none;fill:none;fill-opacity:0.99607843;stroke:#3d3846;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"
d="m 224.00778,229.01452 v -13 h 14 v 4"
id="path1752"
inkscape:connector-curvature="0" />
<rect
style="display:inline;opacity:1;vector-effect:none;fill:#3d3846;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"
id="rect1754"
width="5"
height="1"
x="230.00777"
y="219.01451" />
<circle
style="display:inline;opacity:1;vector-effect:none;fill:#3d3846;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new"
id="circle1761"
cx="227.50777"
cy="223.51451"
r="1.5" />
<rect
y="223.01451"
x="230.00777"
height="1"
width="5"
id="rect1763"
style="display:inline;opacity:1;vector-effect:none;fill:#3d3846;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

BIN
data/icons/selector.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

View File

@ -1,65 +0,0 @@
desktop_conf = configuration_data()
desktop_conf.set('VERSION', glade_version)
i18n.merge_file(
type: 'desktop',
input: configure_file(
input: 'org.gnome.Glade.desktop.in.in',
output: '@BASENAME@',
configuration: desktop_conf,
),
output: '@BASENAME@',
po_dir: po_dir,
install: true,
install_dir: glade_datadir / 'applications',
)
appdata = glade_name + '.appdata.xml'
i18n.merge_file(
input: 'org.gnome.Glade.appdata.xml.in',
output: '@BASENAME@',
po_dir: po_dir,
install: true,
install_dir: glade_datadir / 'metainfo',
)
# FIXME: replace these by install_subdir once autotools is removed
install_data(
'icons/hicolor/scalable/apps/org.gnome.Glade.svg',
install_dir: glade_datadir / 'icons/hicolor/scalable/apps',
)
icon_symbolic_data = files(
'icons/hicolor/symbolic/apps/glade-brand-symbolic.svg',
'icons/hicolor/symbolic/apps/org.gnome.Glade-symbolic.svg',
)
install_data(
icon_symbolic_data,
install_dir: glade_datadir / 'icons/hicolor/symbolic/apps',
)
pixmaps_data = files(
'icons/deprecated-16x16.png',
'icons/deprecated-22x22.png',
'icons/devhelp.png',
'icons/fixed-bg.png',
'icons/placeholder.png',
'icons/plus.png',
)
install_data(
pixmaps_data,
install_dir: glade_datadir / glade_pixmapdir,
)
its_data = files(
'gettext/its/glade-catalog.its',
'gettext/its/glade-catalog.loc',
)
install_data(
its_data,
install_dir: glade_datadir / 'gettext/its',
)

View File

@ -1,171 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>org.gnome.Glade</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0+ and LGPL-2.0+</project_license>
<name>Glade</name>
<summary>Create or open user interface designs for GTK+ applications</summary>
<description>
<!-- To translators: AppData description first paragraph -->
<p>
Glade is a RAD tool to enable quick &amp; easy development of user interfaces
for the GTK+ 3 toolkit and the GNOME desktop environment.
</p>
<!-- To translators: AppData description second paragraph -->
<p>
The user interfaces designed in Glade are saved as XML and these can be
loaded by applications dynamically as needed by using GtkBuilder or used
directly to define a new GtkWidget derived object class using
GTK+ new template feature.
</p>
<!-- To translators: AppData description third paragraph -->
<p>
By using GtkBuilder, Glade XML files can be used in numerous programming
languages including C, C++, C#, Vala, Java, Perl, Python, and others.
</p>
</description>
<screenshots>
<screenshot type="default">
<image>https://glade.gnome.org/images/glade-main-page.png</image>
</screenshot>
</screenshots>
<provides>
<id>glade.desktop</id>
</provides>
<launchable type="desktop-id">org.gnome.Glade.desktop</launchable>
<url type="homepage">https://glade.gnome.org/</url>
<url type="bugtracker">https://gitlab.gnome.org/GNOME/glade/issues</url>
<url type="donation">https://www.gnome.org/friends/</url>
<url type="help">https://help.gnome.org/users/glade/stable/</url>
<update_contact>juanpablougarte_at_gmail.com</update_contact>
<kudos>
<kudo>HiDpiIcon</kudo>
<kudo>ModernToolkit</kudo>
<kudo>UserDocs</kudo>
</kudos>
<project_group>GNOME</project_group>
<translation type="gettext">glade</translation>
<releases>
<release version="3.40.0" date="2022-08-10">
<description>
<p>Last Release!
Glade is not being actively developed or maintained anymore.
If you are interested in becoming a maintainer please contact us on gitlab.
</p>
<ul>
<li>Remove survey</li>
<li>Add user manual menu item (Sabri Ünal)</li>
<li>'Clear' action in "Setup Text Attributes" dialog now clears only selected attributes (crvi)</li>
<li>Fix windows build on msys</li>
<li>Fix build against Python 3.9</li>
<li>Fix issue pasing widget with ctrl+v in GtkGrid</li>
<li>Several bug fixes</li>
</ul>
</description>
<issues>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/502">Fix issue #502 sync draw-indicator on setting xalign (Caolán McNamara)</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/499">Fix issue #499 and #509 "Drop overzealous check using only the first child"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/385">Fix Segfault in gnome-builder when widget doesn't have a name (Peter Maatman)</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/373">Fix issue #373 "Move separator in hamburger menu one up, to be consistent with other GNOME applications"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/484">Fix issue #484 "Crash with GtkRecentChooserDialog"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/194">Fix issue #194 "Using List Store can result in program crash."</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/53">Fix issue #53 "Can't choose a FileChooserDialog for a FileChooserButton"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/98">Fix issue #98 #491</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/355">Fix issue #355 "Make notification text selectable"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/360">Fix issue #360 "No examples in documentation on using custom catalogues with gtkBuilder"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/406">Fix issue #406 "AtkObject::accessible-role should not be translatable"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/479">Fix issue #479 "Glade 3.36.0 segfaults when opening a file"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/471">Fix issue #471 "XML not updated after adding element"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/474">Fix issue #474 "GtkLabel: setup text attribute issues"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/480">Fix issue #480 "version field not always updated in XML"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/470">Fix issue #470 "Widgets of type need placeholders to add children"</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/472">Fix issue #472 "gnome-nightly: About dialog should display git commit rev"</issue>
</issues>
</release>
<release version="3.38.0" date="2020-09-12">
<description>
<p>Glade 3.38.0 release!</p>
<ul>
<li>Load template files as new GTypes and add them to "User templates" widget group automatically without the need of a catalog</li>
<li>Added JavaScript widget support</li>
<li>Use version data from gir to improve deprecation/target tests</li>
<li>Implement survey using new backend at surveys.gnome.org</li>
<li>Keep survey state in config file</li>
<li>Associate with application/x-gtk-builder (Caolán McNamara)</li>
<li>Project properties dialog improvements. (Use headerbar, stack and stach switcher, add warnings textview)</li>
<li>Improve toolkit target version selection in project properties dialog</li>
<li>Improve treemodel char data type handling</li>
<li>Remove autotools (Iñigo Martínez)</li>
<li>New gjs-1.0 1.64 dependency</li>
<li>Bump Gtk dependency to 3.24</li>
<li>Bump webkit2gtk dependency to 2.28</li>
<li>Fixed all compiler/gir warnings</li>
</ul>
</description>
<issues>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/385">Issue #385: GtkCellRendererText causes deprecated warnings for ghost properties</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/444">Issue #444: show-emoji-icon is missing "minimum version"/since constraint</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/367">Issue #367: Glade removes double/triple slashes from URLs</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/452">Issue #452: GtkComboBox cell renderers editor is too hard to discover</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/363">Issue #363: Toplevel windows are leaked when closing a project</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/462">Issue #462: Crash when creating a new GtkAssistant and pressing it</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/463">Issue #463: Specify file on command line</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/461">Issue #461: Glade resets number of rows and columns in GtkGrid</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/460">Issue #460: 3.37.0: test suite fails because glade uses incorrectly asserts in test units</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/412">Issue #412: Fix inconsistent "top-level", "top level", "toplevel" spelling in translatable strings</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/281">Issue #281: GladeProperty: Do not replace - with _</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/389">Issue #389: GladeProject: show message on invalid GtkBuilder file</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/446">Issue #446: GladeGtkListBox: fix size request issue</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/432">Issue #432: GladeStandarStock, GladeStandarStockImage: fix get_type() functions for introspection</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/447">Issue #447: GladeGtkWindow: Fix CSD support</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/456">Issue #456: Utils: use g_param_spec_uchar() for uchar types</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/459">Issue #459: Gtk catalog: add GtkRecentChooserMenu to Display group</issue>
<issue url="https://gitlab.gnome.org/GNOME/glade/-/issues/433">Issue #433: Implement survey using new backend at surveys.gnome.org</issue>
<issue>Build: use gtk-mac-integration only when creating bundle (Tom Schoonjans)</issue>
<issue>Ignore locale when saving numeric values (Alberto Fanjul)</issue>
<issue>Remove config for external builds (Alberto Fanjul)</issue>
<issue>Python plugin: fix linking error</issue>
<issue>Tests: add python and javascript test case</issue>
<issue>gtk: Add GtkScrolledWindow propagate-natural-width property (Corentin Noël)</issue>
<issue>GladeScrolledWindowEditor: Squeeze width/height properties in two columns</issue>
<issue>Gtk plugin: add missing displayable values</issue>
<issue>Webkit2gtk plugin: add missing displayable values and sandbox web view</issue>
<issue>dtd: Make init-function an element, not an attribute (Adrien Plazas)</issue>
</issues>
</release>
<release version="3.36.0" date="2020-05-06"/>
<release version="3.22.0" date="2018-03-12"/>
</releases>
<content_rating type="oars-1.1">
<content_attribute id="violence-cartoon">none</content_attribute>
<content_attribute id="violence-fantasy">none</content_attribute>
<content_attribute id="violence-realistic">none</content_attribute>
<content_attribute id="violence-bloodshed">none</content_attribute>
<content_attribute id="violence-sexual">none</content_attribute>
<content_attribute id="violence-desecration">none</content_attribute>
<content_attribute id="violence-slavery">none</content_attribute>
<content_attribute id="violence-worship">none</content_attribute>
<content_attribute id="drugs-alcohol">none</content_attribute>
<content_attribute id="drugs-narcotics">none</content_attribute>
<content_attribute id="drugs-tobacco">none</content_attribute>
<content_attribute id="sex-nudity">none</content_attribute>
<content_attribute id="sex-themes">none</content_attribute>
<content_attribute id="sex-homosexuality">none</content_attribute>
<content_attribute id="sex-prostitution">none</content_attribute>
<content_attribute id="sex-adultery">none</content_attribute>
<content_attribute id="sex-appearance">none</content_attribute>
<content_attribute id="language-profanity">none</content_attribute>
<content_attribute id="language-humor">none</content_attribute>
<content_attribute id="language-discrimination">none</content_attribute>
<content_attribute id="social-chat">none</content_attribute>
<content_attribute id="social-info">none</content_attribute>
<content_attribute id="social-audio">none</content_attribute>
<content_attribute id="social-location">none</content_attribute>
<content_attribute id="social-contacts">none</content_attribute>
<content_attribute id="money-purchasing">none</content_attribute>
<content_attribute id="money-gambling">none</content_attribute>
</content_rating>
</component>

View File

@ -1,15 +0,0 @@
[Desktop Entry]
Name=Glade
GenericName=Interface Designer
Comment=Create or open user interface designs for GTK+ applications
# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
Keywords=GUI designer;user interface;ui builder;
Exec=glade %F
Terminal=false
StartupNotify=true
Type=Application
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.Glade
Categories=GNOME;GTK;Development;GUIDesigner;
MimeType=application/x-gtk-builder;application/x-glade;
X-GNOME-DocPath=glade/glade.xml

1
doc/.gitignore vendored
View File

@ -1 +0,0 @@
/version.xml

141
doc/Makefile.am Normal file
View File

@ -0,0 +1,141 @@
## Process this file with automake to produce Makefile.in
# We require automake 1.6 at least.
AUTOMAKE_OPTIONS = 1.9
# This is a blank Makefile.am for using gtk-doc.
# Copy this to your project's API docs directory and modify the variables to
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
# of using the various options.
# The name of the module, e.g. 'glib'.
DOC_MODULE=gladeui
# The top-level SGML file. You can change this if you want to.
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
# The directory containing the source code. Relative to $(srcdir).
# gtk-doc will search all .c & .h files beneath here for inline comments
# documenting the functions and macros.
DOC_SOURCE_DIR=../gladeui
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
SCANGOBJ_OPTIONS=
# Extra options to supply to gtkdoc-scan.
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
SCAN_OPTIONS=
# Extra options to supply to gtkdoc-mkdb.
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
MKDB_OPTIONS=--sgml-mode --output-format=xml
# Extra options to supply to gtkdoc-mktmpl
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
MKTMPL_OPTIONS=
# Extra options to supply to gtkdoc-fixref. Not normally needed.
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
# XXX We'll maybe want to use this to cross-ref into GTK+ docs...
FIXXREF_OPTIONS=
# Used for dependencies. The docs will be rebuilt if any of these change.
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
HFILE_GLOB=$(top_srcdir)/gladeui/*.h
CFILE_GLOB=$(top_srcdir)/gladeui/*.c
# Header files to ignore when scanning.
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
IGNORE_HFILES=\
glade-builtins.h \
glade-debug.h \
glade-accumulators.h \
glade-marshallers.h \
glade-paths.h \
glade-custom.h \
glade-cursor.h \
glade-id-allocator.h \
glade-catalog.h \
glade.h \
glade-xml-utils.h \
glade-popup.h \
glade-devhelp.h \
glade-gtk.h \
glade-palette-expander.h \
glade-palette-item.h \
glade-palette-box.h
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
HTML_IMAGES=
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
content_files=\
version.xml \
catalogintro.sgml \
widgetclasses.sgml \
properties.sgml \
children.sgml
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
# These files must be listed here *and* in content_files
# e.g. expand_content_files=running.sgml
expand_content_files=\
catalogintro.sgml \
widgetclasses.sgml \
properties.sgml \
children.sgml
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
# signals and properties.
# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
GTKDOC_CFLAGS= \
-I$(top_srcdir)/gladeui \
-I$(top_builddir)/gladeui \
-I$(top_srcdir) \
-I$(top_builddir) \
`pkg-config --cflags gtk+-2.0`
GTKDOC_LIBS=${top_builddir}/gladeui/libgladeui-1.la
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
# e.g. EXTRA_DIST += version.xml.in
EXTRA_DIST += version.xml.in
GTK_HOME = http://developer.gnome.org/doc/API/2.0/gtk
GDK_HOME = http://developer.gnome.org/doc/API/2.0/gdk
GOBJECT_HOME = http://developer.gnome.org/doc/API/2.0/gobject
GLIB_HOME = http://developer.gnome.org/doc/API/2.0/glib
webdocs: all
rm -rf html-web
mkdir -p html-web
for file in `find html`; do \
ROOT_PATH=`echo $${file} | sed 's/^html//'`; \
if test "" != "$${ROOT_PATH}"; then \
if test -d $$file; then \
echo "Creating directory html-web$${ROOT_PATH}..."; \
mkdir -p html-web$${ROOT_PATH}; \
else \
if echo $$file | grep -q '\.html$$'; then \
echo "Creating file html-web$${ROOT_PATH}..."; \
cat $$file | sed \
-e 's!href="../gtk!href="$(GTK_HOME)!g' \
-e 's!href="../gdk!href="$(GDK_HOME)!g' \
-e 's!href="../gobject!href="$(GOBJECT_HOME)!g' \
-e 's!href="../glib!href="$(GLIB_HOME)!g' \
> html-web$${ROOT_PATH}; \
else \
echo "Copying file html-web$${ROOT_PATH}..."; \
cp $$file html-web$${ROOT_PATH}; \
fi \
fi; \
fi; \
done

View File

@ -12,74 +12,63 @@ How to write and install a catalog
<refsect1>
<title>Introduction</title>
<para>
You can provide support for your custom widgets in a few ways, you can
make a package and install it to the system directories, load additional
catalogs in user directories, project directories for example, and
you can optionally provide code support and/or icons, normally you need
to at least have the object type in a library somewhere, but you can work
around this using the 'parent' property described in the next section.
If you dont provide icons for the inspector and palette Glade will simply
print a warning and use a default icon. The catalog file is written in an
XML format and a DTD for the format can be found in the plugins/ directory
of the Glade tarball.
The widgets that are available in the Glade UI builder are handled in a
dynamic way and additional widgets can be added, for example from other
libraries, by installing a widget plugin.
</para>
<para>
In most cases gtk+ derived widgets can be added with little effort and it
is enough to simply specify the widget's type; glade will introspect
its properties and signals - but due to the organic nature of a widget
toolkit there are always exceptions. In this document we'll try to provide
some basic examples and describe a wealth of options that can be used to
enhance UI editing and workaround exceptions.
A widget plugin consists of a catalog file and a shared library and
icons for the widgets to use in the widget palette and widget tree.
</para>
<para>
Keep in mind you need to take extra steps to ensure GtkBuilder can pick up your
new object types at runtime. Ussualy all you need is to link your executable
with your widget library assuming it has properly named get_type() functions.
<![CDATA[GtkWindow -> gtk_window_get_type
GtkHBox -> gtk_hbox_get_type
GtkUIManager -> gtk_ui_manager_get_type
GWeatherLocation -> gweather_location_get_type]]>
If not you can always register your widgets with the type system with g_type_ensure ()
The catalog file is written in an XML format that will be described
below. There is also a DTD for the format which can be found in the widgets
directory of the glade-3 package.
</para>
<para>
The catalog file starts by specifying the name of the catalog and the plugin
library to use, the following examples assume you have a namespace "Foo" and
are integrating an object "Frobnicator":
Many properties of widgets can be handled automatically by the GObject
introspection features. Not all of them can though, and advanced widgets
often also need additional support from code. This is specified in the
catalog file, where you can override default values, hide properties,
specify functions to call in the installed plugin, etc.
</para>
<para>
The catalog file is also used to group the widgets in groups that
correspond to the groups in the Glade widget palette.
</para>
<para>
In theory, the catalog file should be enough, but many widgets also need
supporting code to be usable in Glade, which is where the plugin library
comes in. An example of both a catalog file and plugin library can be
found in the Glade sources, since the GTK+ widget set that is supported
by default in Glade also is implemented this way. The catalog file is
located in widgets/gtk+.xml, and the source code in src/glade-gtk.c. The
catalog file starts by specifying the name of the catalog and the plugin
library to use:
<programlisting>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<glade-catalog name="foo" library="foo" depends="gtk+">
<![CDATA[<glade-catalog name="gtk+" library="gladegtk">
<init-function>my_catalog_init</init-function>
<glade-widget-classes>
<glade-widget-class name="FooFrobnicator" generic-name="frobnicator" title="Frobnicator"/>
... widget classes go here
</glade-widget-classes>
<glade-widget-group name="foo" title="Foo">
<glade-widget-class-ref name="FooFrobnicator"/>
... widget class references go here
</glade-widget-group>
... widget groups go here
</glade-catalog>]]></programlisting>
</para>
</refsect1>
<refsect1>
<refsect2>
<title>Toplevel catalog properties and tags</title>
<para>
When defining the catalog, the 'name' and 'library'
are both mandatory attributes of the 'glade-catalog' tag; optionally
you can also use 'icon-prefix', 'depends' and 'domain'.
are both manditory properties of the 'glade-catalog' tag; optionally
you can also use 'depends' and 'domain'.
</para>
<variablelist>
@ -87,40 +76,9 @@ you can also use 'icon-prefix', 'depends' and 'domain'.
<term>name</term>
<listitem>
<para>
A string identifier for the catalog in question, it will be used to identify your
catalog so that the glade file can explicitly require it and to manage inter
catalog dependencies.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>version</term>
<listitem>
<para>
A 'major.minor' formed version describing the current version of underlying widget kit;
example: <literal>version="1.0"</literal>. This is needed for version checking to work.
Please note that all versioning related support is completely optional.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>targetable</term>
<listitem>
<para>
A comma separated list of 'major.minor' formed versions describing sensible previous
targetable versions of the underlying toolkit not including the current version;
example: <literal>targetable="0.6,0.8"</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>icon-prefix</term>
<listitem>
<para>
Used to form icon names for widgets. This property defaults to the value of the 'name' attribute.
The 'name' property is simply a string identifier for the catalog in
question, it will be used to identify your catalog so that the glade file can explicitly
require it and to manage inter catalog dependencies.
</para>
</listitem>
</varlistentry>
@ -129,13 +87,8 @@ Used to form icon names for widgets. This property defaults to the value of the
<term>library</term>
<listitem>
<para>
Used to load the types and introspect properties, unless you are faking your widget
classes (which will be described later on), glade will need to load this library,
it can either be the name of the library containing the widgets or the plugin library
which is assumed to implicitly link to your widget library. The library will be loaded
either by a user specified path, the system plugin directory:
<literal>$prefix/lib/glade-3/modules/</literal>, or from the default system library
paths in the afore mentioned order of precedence.
The 'library' property is a shorthand name for the plugin library which shall
be dlopen'd from <literal>$prefix/lib/glade-3/modules/</literal>
</para>
</listitem>
</varlistentry>
@ -144,11 +97,11 @@ paths in the afore mentioned order of precedence.
<term>depends</term>
<listitem>
<para>
Used for inheritance of support code to work properly (i.e. if your object derives
from an object in gtk+, you'll want the default support code in the gladegtk plugin
to be enabled for your widget too). This property's value is the `name' property of
another installed glade plugin; usually you'll want to declare: 'depends="gtk+"'
for your plugin.
The 'depends' property is used for inheritance of support code to work
properly (i.e. if your object derives from an object in gtk+, you'll want the default
support code in the gladegtk plugin to be enabled for your widget too). This property's
value is the `name' property of another installed glade plugin; usually you'll want to
declare: 'depends="gtk+"' for your plugin.
</para>
</listitem>
</varlistentry>
@ -157,10 +110,11 @@ for your plugin.
<term>domain</term>
<listitem>
<para>
The domain in which to search for translatable strings from the
catalog file; please note that all strings from the catalog that will appear in the UI are
translated using this domain. If the 'domain' is not specified, the library property will
be used in it's stead.
The 'domain' property is the domain in which to search for translatable
strings from the catalog file (such as glade-widget-group `title's and such; translatable
values will be marked in this document as we go along and should be any strings
that are displayed in the glade UI). If the 'domain' property is not specified,
the library property will be used in it's stead.
</para>
</listitem>
</varlistentry>
@ -169,8 +123,18 @@ be used in it's stead.
<term>book</term>
<listitem>
<para>
Used to specify a namespace to search devhelp docs library with
(specifically, it is the $(DOC_MODULE) that you specified in your gtk-doc Makefile.am).
The 'book' property is used to specify a namespace to search devhelp docs library with
(specificly, it is the $(DOC_MODULE) that you specified in your gtk-doc Makefile.am).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>fixed</term>
<listitem>
<para>
The 'fixed' property is used to mark a #GladeWidgetClass for free form placement capacities
to be handled with a #GladeFixed.
</para>
</listitem>
</varlistentry>
@ -179,15 +143,15 @@ Used to specify a namespace to search devhelp docs library with
<term>init-function</term>
<listitem>
<para>
Used to retrieve an optional global entry point to your plugin;
The 'init-function' tag is used to retrieve an optional global entry point to your plugin;
if you need to initialize any backends or whatnot this is a good place.
Your catalog's init-function will be called before any widget classes are instantiated.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
</refsect2>
<refsect3>
<title>Validating and installing</title>
<para>
The DTD that is shipped with Glade can be used to validate your catalog
@ -202,25 +166,10 @@ To validate a file, do this:
To install a widget plugin, the catalog XML file should be copied into
the catalog directory, which can be retrieved as:
<programlisting>pkg-config --variable=catalogdir gladeui-1.0</programlisting>
The icons for palette etc go into the pixmap directory:
<programlisting>pkg-config --variable=pixmapdir gladeui-1.0</programlisting>
The plugin library should be installed into the modules directory:
<programlisting>pkg-config --variable=moduledir gladeui-1.0</programlisting>
Widget icons if provided (recommended) need to be installed into the icon theme,
this is described in the next chapter.
</para>
<para>
You can also load your catalog from a user directory by specifying
additional load path(s) in the environment, for instance:
<programlisting>GLADE_CATALOG_SEARCH_PATH=~/mycatalogs:~/work/foo/glade</programlisting>
</para>
<para>
Same goes for optional plugin libraries, for instance:
<programlisting>GLADE_MODULE_SEARCH_PATH=~/work/foo/src</programlisting>
</para>
<para>
Currently loading icons without installing them is unsupported.
</para>
</refsect1>
</refsect3>
</refentry>

125
doc/children.sgml Normal file
View File

@ -0,0 +1,125 @@
<refentry id="children" revision="8 Feb 2006">
<refmeta>
<refentrytitle>Container Objects</refentrytitle>
<refmiscinfo>Glade UI</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Containers</refname>
<refpurpose>
How to add support for hierarchic widget relationships
</refpurpose>
</refnamediv>
<refsect1>
<title>Defining Containers in the Catalog</title>
<para>
GtkContainer objects which parent GtkWidget objects have built-in detection in the
glade core; but other container relationships may be constructed; if for example you
wished to treat a GtkMenuBar --> GtkMenuItem relationship specially in the plugin;
Any GObject can parent any GObject. The default GtkContainer --> GtkWidget relationship
can also be modified for a GtkContainer derived object.
</para>
<para>
Child support definitions are identified by the GType of supported child class and
are embedded into a glade-widget-class block like so:
<programlisting>
<![CDATA[<glade-widget-class name="Foo">
<children>
<child>
<type>Bar</type>
... 'Foo --> Bar' container relationship parameters go here
<properties>
... packing property definition for this container relationship
</properties>
</child>
... more child definitions here ...
</children>
</glade-widget-class>]]></programlisting>
Note that you can access and modify and even add virtual packing properties in
exactly the same way as previously described with normal object properties.
</para>
</refsect1>
<refsect2>
<title>Container Relationship Parameter Tag Definitions</title>
<para>
<variablelist>
<varlistentry>
<term>add-child-function</term>
<listitem>
<para>
A #GladeAddChildFunc used to add child objects from parent objects.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>remove-child-function</term>
<listitem>
<para>
A #GladeRemoveChildFunc used to remove child objects from parent objects.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>replace-child-function</term>
<listitem>
<para>
A #GladeReplaceChildFunc Used to swap placholders with project widgets.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>get-children-function</term>
<listitem>
<para>
A #GladeGetChildrenFunc to return a list of children for this container. If you
have any anarchist internal children; they should be listed here along with
normal children.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>child-set-property-function</term>
<listitem>
<para>
A #GladeChildSetPropertyFunc to set a packing property on this child.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>child-get-property-function</term>
<listitem>
<para>
A #GladeChildGetPropertyFunc to get a packing property on this child.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>special-child-type</term>
<listitem>
<para>
A special type identifier that will indicate whether this is an alternate
child type; such as a notebook tab label or a frame label. The value of
special-child-type is the name of the added packing property for this child type;
you must then use the type to add children to the "correct port" at load time.
</para>
<para>
Currently this isnt very neatly done; you must do:
<programlisting>g_object_set_data (child, "special-child-type", type);</programlisting>
when creating special child types and handle it on replace-child; look at glade-gtk.c for
examples.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refentry>

View File

@ -1,99 +0,0 @@
<refentry id="gjssupport" revision="5 Jun 2020">
<refmeta>
<refentrytitle>JavaScript Gtk widgets support</refentrytitle>
<refmiscinfo>Glade UI</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Add GJS/JavaScript support to your catalog</refname>
<refpurpose>
How to write and install a catalog for a JavaScript widget library
</refpurpose>
</refnamediv>
<refsect1>
<title>Introduction</title>
<para>
Glade supports loading widgets programed in JavaScript by linking and running GJS from the gladegjs catalog plugin.
</para>
<para>
So in order for glade to support your JavaScript widgets you will have to:
<varlistentry><listitem>
a) specify gladegjs support code as your plugin library.
</listitem></varlistentry>
<varlistentry><listitem>
b) set glade_gjs_init as you init function.
</listitem></varlistentry>
<varlistentry><listitem>
c) make sure your catalog name is the same as your JavaScript import library since
glade_gjs_init() will use this name to import your widgets into the
interpreter.
</listitem></varlistentry>
<programlisting>
<![CDATA[
<glade-catalog name="gjsplugin" library="gladegjs" domain="glade-3" depends="gtk+">
<init-function>glade_gjs_init</init-function>
<glade-widget-classes>
<glade-widget-class title="MyJSGrid" name="MyJSGrid" generic-name="mygrid"/>
</glade-widget-classes>
<glade-widget-group name="gjs" title="Gjs">
<glade-widget-class-ref name="MyJSGrid"/>
</glade-widget-group>
</glade-catalog>]]>
</programlisting>
</para>
<para>
GJS will look up for your widgets in the same places it looks
for regular catalogs plugins, that is $GLADE_ENV_MODULE_PATH
environment variable and `pkg-config --variable=moduledir gladeui-2.0`
So the easiest thing would be to make a symlink in one of those directory, just
do not forget that the name should be the one specified in your catalog name.
</para>
<para>
gjsplugin.js
<programlisting>
<![CDATA[
#!/usr/bin/gjs
const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk;
var MyJSGrid = GObject.registerClass({
GTypeName: 'MyJSGrid',
Properties: {
'string-property': GObject.ParamSpec.string('string-property', 'String Prop',
'Longer description', GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT,
'Foobar'),
'int-property': GObject.ParamSpec.int('int-property', 'Integer Prop',
'Longer description',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT,
0, 10, 5)
},
Signals: {'mysignal': {param_types: [GObject.TYPE_INT]}},
}, class MyJSGrid extends Gtk.Grid {
_init(props) {
super._init(props);
this.label = new Gtk.Label ({ visible: true });
this.add (this.label);
this.connect('notify::string-property', this._update.bind(this));
this.connect('notify::int-property', this._update.bind(this));
this._update();
}
_update (obj, pspec) {
this.label.set_text ('JS Properties\nInteger = ' + this.int_property + '\nString = \'' + this.string_property + '\'');
}
});
]]>
</programlisting>
</para>
</refsect1>
</refentry>

View File

@ -1,92 +0,0 @@
<refentry id="pythonsupport" revision="26 Feb 2011">
<refmeta>
<refentrytitle>Python Gtk widgets support</refentrytitle>
<refmiscinfo>Glade UI</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Add python support to your catalog</refname>
<refpurpose>
How to write and install a catalog for a python widget library
</refpurpose>
</refnamediv>
<refsect1>
<title>Introduction</title>
<para>
Glade supports loading widgets coded in python by linking and running the python
interpreter from the gladepython catalog plugin.
</para>
<para>
So in order for glade to include your python gtk widgets you will have to:
<varlistentry><listitem>
a) specify gladepython support code as your plugin library.
</listitem></varlistentry>
<varlistentry><listitem>
b) set glade_python_init as you init function.
</listitem></varlistentry>
<varlistentry><listitem>
c) make sure your catalog name is the same as your python import library since
glade_python_init() will use this name to import your widgets into the
interpreter.
</listitem></varlistentry>
pythonplugin.xml
<programlisting>
<![CDATA[
<glade-catalog name="pythonplugin" library="gladepython"
domain="glade-3" depends="gtk+">
<init-function>glade_python_init</init-function>
<glade-widget-classes>
<glade-widget-class title="MyPythonBox" name="MyPythonBox" generic-name="mypythonbox"/>
</glade-widget-classes>
<glade-widget-group name="python" title="Python">
<glade-widget-class-ref name="MyPythonBox"/>
</glade-widget-group>
</glade-catalog>]]>
</programlisting>
</para>
<para>
Glade's python interpreter will look up for your widgets in the same
places it looks
for regular catalogs plugins, that is $GLADE_ENV_MODULE_PATH
environment variable
and `pkg-config --variable=moduledir gladeui-2.0`
So the easiest thing would be to make a symlink in one of those directory, just
do not forget that the name should be the one specified in your catalog name.
</para>
<para>
pythonplugin.py
<programlisting>
<![CDATA[
from gi.repository import GLib, Gtk, GObject
class MyPythonBox(Gtk.Box):
__gtype_name__ = 'MyPythonBox'
foo = GObject.Property(type=int, nick='An integer')
bar = GObject.Property(type=str, nick='A String')
def _update(self, obj, pspec):
self.label.set_text ('Python Properties\nInteger = ' + str(self.foo) + '\nString = \'' + self.bar + '\'')
def __init__ (self):
Gtk.Box.__init__ (self)
self.label = Gtk.Label (visible = True)
self.add (self.label)
self.connect('notify::foo', self._update)
self.connect('notify::bar', self._update)
self._update(None, None)
]]>
</programlisting>
</para>
</refsect1>
</refentry>

92
doc/gladeui-docs.sgml Normal file
View File

@ -0,0 +1,92 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY CatalogIntro SYSTEM "xml/catalogintro.sgml">
<!ENTITY WidgetClasses SYSTEM "xml/widgetclasses.sgml">
<!ENTITY Properties SYSTEM "xml/properties.sgml">
<!ENTITY Children SYSTEM "xml/children.sgml">
<!ENTITY GladeCommand SYSTEM "xml/glade-command.xml">
<!ENTITY GladeApp SYSTEM "xml/glade-app.xml">
<!ENTITY GladeClipboardView SYSTEM "xml/glade-clipboard-view.xml">
<!ENTITY GladeClipboard SYSTEM "xml/glade-clipboard.xml">
<!ENTITY GladeEditorProperty SYSTEM "xml/glade-editor-property.xml">
<!ENTITY GladeEditor SYSTEM "xml/glade-editor.xml">
<!ENTITY GladePalette SYSTEM "xml/glade-palette.xml">
<!ENTITY GladeParameter SYSTEM "xml/glade-parameter.xml">
<!ENTITY GladePlaceholder SYSTEM "xml/glade-placeholder.xml">
<!ENTITY GladeProjectView SYSTEM "xml/glade-project-view.xml">
<!ENTITY GladeProject SYSTEM "xml/glade-project.xml">
<!ENTITY GladePropertyClass SYSTEM "xml/glade-property-class.xml">
<!ENTITY GladeProperty SYSTEM "xml/glade-property.xml">
<!ENTITY GladeSignalEditor SYSTEM "xml/glade-signal-editor.xml">
<!ENTITY GladeUtils SYSTEM "xml/glade-utils.xml">
<!ENTITY GladeWidgetClass SYSTEM "xml/glade-widget-class.xml">
<!ENTITY GladeWidget SYSTEM "xml/glade-widget.xml">
<!ENTITY GladeFixed SYSTEM "xml/glade-fixed.xml">
<!ENTITY GladeBaseEditor SYSTEM "xml/glade-base-editor.xml">
<!ENTITY version SYSTEM "version.xml">
]>
<book id="index">
<bookinfo>
<title>Glade UI Builder Reference Manual</title>
<abstract>
<para>This document attempts to describe how to use the Glade UI Builder core
library to integrate Glade into your application and how to integrate your
custom (GTK+ based) widget toolkit into the Glade UI Builder.</para>
<para>You can always get the latest version of this document here (XXX linkme)
and you should have received a copy with the glade-3 tarball.</para>
</abstract>
<releaseinfo>for &version;</releaseinfo>
<authorgroup>
<author>
<firstname>Tristan</firstname>
<surname>Van Berkom</surname>
</author>
</authorgroup>
</bookinfo>
<part id="catalog">
<title>Adding your custom widgets</title>
&CatalogIntro;
&WidgetClasses;
&Properties;
&Children;
</part>
<part id="core">
<title>Glade Core</title>
&GladeApp;
&GladeProject;
&GladeWidget;
&GladeFixed;
&GladeProperty;
&GladeWidgetClass;
&GladePropertyClass;
&GladeCommand;
&GladeClipboard;
&GladeBaseEditor;
&GladePlaceholder;
</part>
<part id="dockables">
<title>Dockable Glade UI Widgets</title>
&GladeEditor;
&GladeEditorProperty;
&GladePalette;
&GladeClipboardView;
&GladeProjectView;
&GladeSignalEditor;
</part>
<part id="misc">
<title>Miscellaneous utilities</title>
&GladeParameter;
&GladeUtils;
</part>
<index>
<title>Index</title>
</index>
</book>

View File

@ -1,90 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN'
'http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd' [
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
<bookinfo>
<title>Glade User Interface Designer Reference Manual</title>
<releaseinfo>
for gladeui &version;.
This document attempts to describe how to use the Glade UI Designer core
library to integrate Glade into your application and how to integrate your
custom GTK+ derived widgets into the Glade UI Designer.
The latest version of this documentation can be found on-line at
<ulink role="online-location" url="https://developer.gnome.org/gladeui/stable/">
https://developer.gnome.org/gladeui/stable
</ulink>.
</releaseinfo>
</bookinfo>
<part id="catalog">
<title>Adding your custom widgets</title>
<xi:include href="catalogintro.sgml"/>
<xi:include href="widgetclasses.sgml"/>
<xi:include href="properties.sgml"/>
<xi:include href="gladepython.sgml"/>
<xi:include href="gladegjs.sgml"/>
</part>
<part id="core">
<title>Glade Core</title>
<xi:include href="xml/glade-init.xml"/>
<xi:include href="xml/glade-catalog.xml"/>
<xi:include href="xml/glade-app.xml"/>
<xi:include href="xml/glade-project.xml"/>
<xi:include href="xml/glade-widget.xml"/>
<xi:include href="xml/glade-widget-adaptor.xml"/>
<xi:include href="xml/glade-widget-action.xml"/>
<xi:include href="xml/glade-widget-action-def.xml"/>
<xi:include href="xml/glade-fixed.xml"/>
<xi:include href="xml/glade-property.xml"/>
<xi:include href="xml/glade-property-def.xml"/>
<xi:include href="xml/glade-command.xml"/>
<xi:include href="xml/glade-clipboard.xml"/>
<xi:include href="xml/glade-base-editor.xml"/>
<xi:include href="xml/glade-placeholder.xml"/>
<xi:include href="xml/glade-signal.xml"/>
<xi:include href="xml/glade-signal-def.xml"/>
<xi:include href="xml/glade-name-context.xml"/>
<xi:include href="xml/glade-xml-utils.xml"/>
</part>
<part id="dockables">
<title>Dockable Glade UI Widgets</title>
<xi:include href="xml/glade-editable.xml"/>
<xi:include href="xml/glade-editor.xml"/>
<xi:include href="xml/glade-editor-property.xml"/>
<xi:include href="xml/glade-palette.xml"/>
<xi:include href="xml/glade-inspector.xml"/>
<xi:include href="xml/glade-signal-editor.xml"/>
<xi:include href="xml/glade-previewer.xml"/>
<xi:include href="xml/glade-design-view.xml"/>
<xi:include href="xml/glade-preview.xml"/>
<xi:include href="xml/glade-adaptor-chooser.xml"/>
<xi:include href="xml/glade-property-label.xml"/>
<xi:include href="xml/glade-property-shell.xml"/>
</part>
<part id="misc">
<title>Miscellaneous utilities</title>
<xi:include href="xml/glade-cell-renderer-icon.xml"/>
<xi:include href="xml/glade-object-stub.xml"/>
<xi:include href="xml/glade-signal-model.xml"/>
<xi:include href="xml/glade-utils.xml"/>
</part>
<index id="api-index-full">
<title>Index</title>
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
</index>
<index id="api-index-deprecated" role="deprecated">
<title>Index of deprecated symbols</title>
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
</index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>

View File

File diff suppressed because it is too large Load Diff

View File

@ -2,17 +2,14 @@
glade_app_get_type
glade_clipboard_get_type
glade_clipboard_view_get_type
glade_command_get_type
glade_editor_get_type
glade_editor_property_get_type
glade_fixed_get_type
glade_palette_get_type
glade_placeholder_get_type
glade_project_get_type
glade_inspector_get_type
glade_project_view_get_type
glade_property_get_type
glade_signal_get_type
glade_widget_get_type
glade_widget_adaptor_get_type
glade_design_view_get_type
glade_base_editor_get_type
glade_widget_action_get_type

View File

@ -1,49 +0,0 @@
private_doc_headers = [
'glade-builtins.h',
'glade-debug.h',
'glade-design-private.h',
'glade-drag.h',
'glade-accumulators.h',
'glade-marshallers.h',
'glade-paths.h',
'glade-custom.h',
'glade-cursor.h',
'glade-id-allocator.h',
'glade.h',
'glade-design-layout.h',
'glade-popup.h',
'glade-gtk.h',
'glade-palette-expander.h',
'glade-palette-item.h',
'glade-named-icon-chooser-dialog.h',
'glade-palette-box.h',
'glade-private.h',
]
content_files = files(
'catalogintro.sgml',
'gladepython.sgml',
'properties.sgml',
'widgetclasses.sgml',
)
version_conf = configuration_data()
version_conf.set('PACKAGE_STRING', '@0@ @1@'.format(glade_name, glade_version))
content_files += configure_file(
input: 'version.xml.in',
output: '@BASENAME@',
configuration: version_conf,
)
gnome.gtkdoc(
gladeui_name,
main_xml: gladeui_name + '-docs.xml',
module_version: gladeui_major_version.to_string(),
src_dir: gladeui_inc,
ignore_headers: private_doc_headers,
include_directories: top_inc,
dependencies: libgladeui_dep,
content_files: content_files,
install: true,
)

View File

@ -1,70 +1,40 @@
<refentry id="properties" revision="8 Feb 2006">
<refmeta>
<refentrytitle>Property Definitions</refentrytitle>
<refentrytitle>Property Class Definitions</refentrytitle>
<refmiscinfo>Glade UI</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Property Definitions</refname>
<refname>Property Classes</refname>
<refpurpose>
How to augment or define a #GladePropertyDef
How to augment or define a #GladePropertyClass
</refpurpose>
</refnamediv>
<refsect1>
<title>Property Definition Configuration</title>
<title>Property Class Parameters</title>
<para>
Properties are introspected at load time and loaded into #GladePropertyDef structures.
The behaviour of properties can be modified by the catalog and fake properties can be added
for editing purposes. Here is an example of the xml form:
<programlisting><![CDATA[...
<property id="frobnicate-mode" default="FOO_FROBNICATE_RED">
... spec, tooltip etc
<displayable-values>
<value id="FOO_FROBNICATE_RED" name="Red"/>
<value id="FOO_FROBNICATE_BLUE" name="Blue"/>
... values here
</displayable-values>
</property>
...]]></programlisting>
There are alot of things that can be done with properties in glade; properties
can be added and removed from widget classes, lets list all the different
things you can do with properties.
</para>
<para>
Properties of the 'property' tag:
<variablelist>
<varlistentry>
<term>id</term>
<listitem>
<para>
This is mandatory and specifies the property that we are modifying (or adding)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>name</term>
<listitem>
<para>
The name to be used in the interface.
The name to be used in the interface, this string is translated.
(if name is not specified; it defaults to the nickname of the #GParamSpec)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>since</term>
<term>id</term>
<listitem>
<para>
A 'major.minor' formed version describing the version of the owning catalog in which this
property was introduced; example: <literal>since="1.0"</literal>. Properties are initialized
to be supported since the introducing #GladeWidgetAdaptor was supported.
This is manditory and specifies the property that we are modifying (or adding)
</para>
</listitem>
</varlistentry>
@ -150,18 +120,7 @@ Whether to save this property to the glade file (default "True")
<term>visible</term>
<listitem>
<para>
Whether to show the property in the editor and reset dialog (default "True")
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>custom-layout</term>
<listitem>
<para>
This is used to avoid loading this property in the editor when implementing
a custom #GladeEditable that embeds the base #GladeEditorTable implementation,
custom-layout properties will still show up in the reset dialog (default "False)
Whether to show the property in the editor (default "True")
</para>
</listitem>
</varlistentry>
@ -178,40 +137,12 @@ is the value saved).
</varlistentry>
<varlistentry>
<term>themed-icon</term>
<term>resource</term>
<listitem>
<para>
Depicts a string property that is used for an icon from the theme. These will
the appropriate editor.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>weight</term>
<listitem>
<para>
A numerical value to specify this properties position in the property editor.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>transfer-on-paste</term>
<listitem>
<para>
Used for packing properties; depicts packing properties that should follow
the widget when pasted to a new container that supports the same properties.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>save-always</term>
<listitem>
<para>
Specifies that the property should be saved regardless of its value (properties at their
default values are normally not saved).
This is for string properties that represent filenames that are packaged with
the glade file (like pixbufs); you can set this to "True" and the string
property will be treated like a resource.
</para>
</listitem>
</varlistentry>
@ -237,8 +168,9 @@ on #GtkBox).
<term>tooltip</term>
<listitem>
<para>
The tooltip to be displayed in the property editor for this property.
The tooltip defaults to the blurb of the associated #GParamSpec.
The tooltip to be displayed in the property editor for this property, this
is also translated. The tooltip defaults to the blurb of the associated
#GParamSpec.
</para>
</listitem>
</varlistentry>
@ -256,17 +188,92 @@ to be edited in a textview with a scrolled window as opposed to a simple text en
</varlistentry>
<varlistentry>
<term>displayable-values</term>
<term>set-function</term>
<listitem>
<para>
Allows you to specify user friendly strings for enum and flag values as shown in the
example above, use the `id' property in the value tag to depict the real value name
and the `name' property for the human readable one.
A #GladeSetPropertyFunc used to set the property instead of g_object_set()
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>get-function</term>
<listitem>
<para>
A #GladeSetPropertyFunc function used to set the property instead of g_object_get()
</para>
<para>
Technical note: that the get-function is hardly ever used, the only
time glade-3 will actually ask the object what a property's value should be;
is when adding a widget to a container and introspecting the values that
the container assigned the child as packing properties.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>verify-function</term>
<listitem>
<para>
A #GladeVerifyPropertyFunc function to verify whether the requested value is valid.
If specified; the editor will not allow the user to commit a value that this
function returns False for.
</para>
<para>
Technical note: verify functions are nescisary in glade-3 because of
the abstraction between the value maintained in the glade-3 core and
the value that is actually on the said GObject's property. In other words,
if verify-function returns false; glade's value won't change and set-function
won't be called, if set-function decides not commit the said value, thats
its own rotten business (hehe) and if the property is set to ignore="True",
verify functions will still function properly even if set-functions are not
called for that property.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect2>
<title>Displayable Values, Packing defaults and such</title>
<para>
Enum and Flag type properties tend to have long complicated names unsuited for the glade
environment, glade will allow you to substitute these names using the displayable-values
child tag; the form looks like this:
<programlisting>
<![CDATA[<property id="pack-type">
<displayable-values>
<value id="GTK_PACK_START" name="Start"></value>
<value id="GTK_PACK_END" name="End"></value>
</displayable-values>
</property>]]></programlisting>
Note that the "name" (which will be the resulting name for each `id') is a translated
string.
</para>
<para>
A widget class may have default packing properties for each type of container that
it can be added to; a short example should suffice as a description of how this works:
<programlisting>
<![CDATA[<packing-defaults>
<parent-class name="GtkVBox">
<child-property id="expand" default="false"/>
</parent-class>
</packing-defaults>]]></programlisting>
Note that you can list any number of 'packing-defaults' in a row.
</para>
<para>
Properties can have additional parameters; these are completely unused by glade
but may be usefull for a plugin writer who may want to use the GladeParameter
api to find parameters on property classes; the form looks like this:
<programlisting>
<![CDATA[<property id="foo">
<parameters>
<parameter key="Min" value="1"/>
<parameter key="Max" value="10000"/>
</parameters>
</property>]]></programlisting>
</para>
</refsect2>
</refentry>

357
doc/tmpl/glade-app.sgml Normal file
View File

@ -0,0 +1,357 @@
<!-- ##### SECTION Title ##### -->
GladeApp
<!-- ##### SECTION Short_Description ##### -->
The central control point of the Glade core
<!-- ##### SECTION Long_Description ##### -->
<para>
This main control object is where we try to draw the line between
what is the Glade core and what is the main application. The main
application must derive from the GladeApp object and create an instance
to initialize the Glade core.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeApp ##### -->
<para>
</para>
<!-- ##### SIGNAL GladeApp::update-ui ##### -->
<para>
</para>
@gladeapp: the object which received the signal.
<!-- ##### ARG GladeApp:active-project ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_get ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_update_ui ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_set_window ##### -->
<para>
</para>
@window:
<!-- ##### FUNCTION glade_app_get_window ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_get_editor ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_get_palette ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_get_clipboard ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_get_clipboard_view ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_set_project ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_app_get_project ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_add_project ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_app_remove_project ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_app_get_project_by_path ##### -->
<para>
</para>
@project_path:
@Returns:
<!-- ##### FUNCTION glade_app_get_projects ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_get_config ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_is_project_loaded ##### -->
<para>
</para>
@project_path:
@Returns:
<!-- ##### FUNCTION glade_app_show_properties ##### -->
<para>
</para>
@raise:
<!-- ##### FUNCTION glade_app_hide_properties ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_add_project_view ##### -->
<para>
</para>
@view:
<!-- ##### FUNCTION glade_app_command_undo ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_command_redo ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_command_copy ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_command_cut ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_command_paste ##### -->
<para>
</para>
@placeholder:
<!-- ##### FUNCTION glade_app_command_delete ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_command_delete_clipboard ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_config_save ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_set_transient_parent ##### -->
<para>
</para>
@parent:
<!-- ##### FUNCTION glade_app_get_transient_parent ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_set_accel_group ##### -->
<para>
</para>
@accel_group:
<!-- ##### FUNCTION glade_app_update_instance_count ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_app_undo_button_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_redo_button_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_selection_add ##### -->
<para>
</para>
@object:
@emit_signal:
<!-- ##### FUNCTION glade_app_selection_remove ##### -->
<para>
</para>
@object:
@emit_signal:
<!-- ##### FUNCTION glade_app_selection_changed ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_app_get_selection ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_app_selection_clear ##### -->
<para>
</para>
@emit_signal:
<!-- ##### FUNCTION glade_app_selection_set ##### -->
<para>
</para>
@object:
@emit_signal:
<!-- ##### FUNCTION glade_app_is_selected ##### -->
<para>
</para>
@object:
@Returns:

View File

@ -0,0 +1,62 @@
<!-- ##### SECTION Title ##### -->
GladeClipboardView
<!-- ##### SECTION Short_Description ##### -->
A widget to view and control the #GladeClipboard
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GladeClipboardView is a widget to view the #GladeWidget objects
in the #GladeClipboard; the user can paste or delete objects on the
clipboard.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeClipboardView ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_clipboard_view_new ##### -->
<para>
</para>
@clipboard:
@Returns:
<!-- ##### FUNCTION glade_clipboard_view_add ##### -->
<para>
</para>
@view:
@widget:
<!-- ##### FUNCTION glade_clipboard_view_remove ##### -->
<para>
</para>
@view:
@widget:
<!-- ##### FUNCTION glade_clipboard_view_refresh_sel ##### -->
<para>
</para>
@view:

View File

@ -0,0 +1,93 @@
<!-- ##### SECTION Title ##### -->
GladeClipboard
<!-- ##### SECTION Short_Description ##### -->
A list of #GladeWidget objects not in any #GladeProject
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GladeClipboard is a singleton and is an accumulative shelf
of all cut or copied #GladeWidget in the application. A #GladeWidget
can be cut from one #GladeProject and pasted to another.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeClipboard ##### -->
<para>
</para>
<!-- ##### ARG GladeClipboard:has-selection ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_clipboard_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_clipboard_add ##### -->
<para>
</para>
@clipboard:
@widgets:
<!-- ##### FUNCTION glade_clipboard_remove ##### -->
<para>
</para>
@clipboard:
@widgets:
<!-- ##### FUNCTION glade_clipboard_selection_add ##### -->
<para>
</para>
@clipboard:
@widget:
<!-- ##### FUNCTION glade_clipboard_selection_remove ##### -->
<para>
</para>
@clipboard:
@widget:
<!-- ##### FUNCTION glade_clipboard_selection_clear ##### -->
<para>
</para>
@clipboard:
<!-- ##### FUNCTION glade_clipboard_get_has_selection ##### -->
<para>
</para>
@clipboard:
@Returns:

196
doc/tmpl/glade-command.sgml Normal file
View File

@ -0,0 +1,196 @@
<!-- ##### SECTION Title ##### -->
Glade Commands
<!-- ##### SECTION Short_Description ##### -->
An event filter to implement the Undo/Redo stack
<!-- ##### SECTION Long_Description ##### -->
<para>
The Glade Command api allows us to view user actions as items and execute
and undo those items; each #GladeProject has its own Undo/Redo stack.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### FUNCTION glade_command_execute ##### -->
<para>
</para>
@command:
@Returns:
<!-- ##### FUNCTION glade_command_undo ##### -->
<para>
</para>
@command:
@Returns:
<!-- ##### FUNCTION glade_command_unifies ##### -->
<para>
</para>
@command:
@other:
@Returns:
<!-- ##### FUNCTION glade_command_collapse ##### -->
<para>
</para>
@command:
@other:
<!-- ##### FUNCTION glade_command_push_group ##### -->
<para>
</para>
@fmt:
@Varargs:
<!-- ##### FUNCTION glade_command_pop_group ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_command_set_name ##### -->
<para>
</para>
@glade_widget:
@name:
<!-- ##### FUNCTION glade_command_create ##### -->
<para>
</para>
@adaptor:
@parent:
@placeholder:
@project:
@Returns:
<!-- ##### FUNCTION glade_command_delete ##### -->
<para>
</para>
@widgets:
<!-- ##### STRUCT GCSetPropData ##### -->
<para>
#GladeProperties can be set in a list as one command,
for Undo purposes; we store the list of #GCSetPropData with
their old and new #GValue.
</para>
@property: A #GladeProperty to set
@new_value: The new #GValue to assign to @property
@old_value: The old #GValue of @property
<!-- ##### FUNCTION glade_command_set_property ##### -->
<para>
</para>
@property:
@Varargs:
<!-- ##### FUNCTION glade_command_set_properties ##### -->
<para>
</para>
@property:
@old_value:
@new_value:
@Varargs:
<!-- ##### FUNCTION glade_command_set_properties_list ##### -->
<para>
</para>
@project:
@props:
<!-- ##### FUNCTION glade_command_cut ##### -->
<para>
</para>
@widgets:
<!-- ##### FUNCTION glade_command_copy ##### -->
<para>
</para>
@widgets:
<!-- ##### FUNCTION glade_command_paste ##### -->
<para>
</para>
@widgets:
@parent:
@placeholder:
<!-- ##### FUNCTION glade_command_add_signal ##### -->
<para>
</para>
@glade_widget:
@signal:
<!-- ##### FUNCTION glade_command_remove_signal ##### -->
<para>
</para>
@glade_widget:
@signal:
<!-- ##### FUNCTION glade_command_change_signal ##### -->
<para>
</para>
@glade_widget:
@old:
@new_signal:

View File

@ -0,0 +1,116 @@
<!-- ##### SECTION Title ##### -->
GladeEditorProperty
<!-- ##### SECTION Short_Description ##### -->
A generic widget to edit a #GladeProperty
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GladeEditorProperty is a factory that will create the correct
control for the #GladePropertyClass it was created for and provides
a simple unified api to them.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeEditorProperty ##### -->
<para>
</para>
<!-- ##### SIGNAL GladeEditorProperty::gtk-doc-search ##### -->
<para>
</para>
@gladeeditorproperty: the object which received the signal.
@arg1:
@arg2:
@arg3:
<!-- ##### ARG GladeEditorProperty:property-class ##### -->
<para>
</para>
<!-- ##### ARG GladeEditorProperty:show-info ##### -->
<para>
</para>
<!-- ##### ARG GladeEditorProperty:use-command ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_editor_property_new ##### -->
<para>
</para>
@klass:
@use_command:
@Returns:
<!-- ##### FUNCTION glade_editor_property_load ##### -->
<para>
</para>
@eprop:
@property:
<!-- ##### FUNCTION glade_editor_property_load_by_widget ##### -->
<para>
</para>
@eprop:
@widget:
<!-- ##### FUNCTION glade_editor_property_supported ##### -->
<para>
</para>
@pspec:
@Returns:
<!-- ##### FUNCTION glade_editor_property_new_from_widget ##### -->
<para>
</para>
@widget:
@property:
@use_command:
@Returns:
<!-- ##### FUNCTION glade_editor_property_hide_info ##### -->
<para>
</para>
@eprop:
<!-- ##### FUNCTION glade_editor_property_show_info ##### -->
<para>
</para>
@eprop:

121
doc/tmpl/glade-editor.sgml Normal file
View File

@ -0,0 +1,121 @@
<!-- ##### SECTION Title ##### -->
GladeEditor
<!-- ##### SECTION Short_Description ##### -->
A Widget to edit a #GladeWidget
<!-- ##### SECTION Long_Description ##### -->
<para>
This is the Glade Notebook containing all the controls needed to
configure a #GladeWidget.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeEditor ##### -->
<para>
</para>
<!-- ##### SIGNAL GladeEditor::gtk-doc-search ##### -->
<para>
</para>
@gladeeditor: the object which received the signal.
@arg1:
@arg2:
@arg3:
<!-- ##### ARG GladeEditor:show-context-info ##### -->
<para>
</para>
<!-- ##### ARG GladeEditor:show-info ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_editor_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_editor_load_widget ##### -->
<para>
</para>
@editor:
@widget:
<!-- ##### FUNCTION glade_editor_refresh ##### -->
<para>
</para>
@editor:
<!-- ##### FUNCTION glade_editor_update_widget_name ##### -->
<para>
</para>
@editor:
<!-- ##### FUNCTION glade_editor_query_dialog ##### -->
<para>
</para>
@editor:
@widget:
@Returns:
<!-- ##### FUNCTION glade_editor_show_info ##### -->
<para>
</para>
@editor:
<!-- ##### FUNCTION glade_editor_hide_info ##### -->
<para>
</para>
@editor:
<!-- ##### FUNCTION glade_editor_show_context_info ##### -->
<para>
</para>
@editor:
<!-- ##### FUNCTION glade_editor_hide_context_info ##### -->
<para>
</para>
@editor:

132
doc/tmpl/glade-fixed.sgml Normal file
View File

@ -0,0 +1,132 @@
<!-- ##### SECTION Title ##### -->
GladeFixed
<!-- ##### SECTION Short_Description ##### -->
An object wrapper for free-form placement container widgets
<!-- ##### SECTION Long_Description ##### -->
<para>
#GladeFixed is a specialized #GladeWidget to handle free-form child
placements in containers that support this, it is designed with properties
and signals with flexable integration in mind.
</para>
<para>
If you set the x-prop/y-prop/width-prop/height-prop properties and
leave the signals alone, #GladeFixed will assume you are like a
GtkFixed/GtkLayout widget and will use pixel counts as units for
these properties.
</para>
<para>
If you handle the configure-child/configure-end[/configure-begin] signals
and dont let them propagate to the GladeFixed, then the x-prop/y-prop/width-prop/height-prop
properties will be completely ignored and it is up to the implementor to play
with whatever child packing properties are available to make a closest match
for the values passed to configure-child via the #GdkRectangle.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeFixed ##### -->
<para>
</para>
<!-- ##### SIGNAL GladeFixed::configure-begin ##### -->
<para>
</para>
@gladefixed: the object which received the signal.
@arg1:
@Returns:
<!-- ##### SIGNAL GladeFixed::configure-child ##### -->
<para>
</para>
@gladefixed: the object which received the signal.
@arg1:
@arg2:
@Returns:
<!-- ##### SIGNAL GladeFixed::configure-end ##### -->
<para>
</para>
@gladefixed: the object which received the signal.
@arg1:
@Returns:
<!-- ##### ARG GladeFixed:can-resize ##### -->
<para>
</para>
<!-- ##### ARG GladeFixed:height-prop ##### -->
<para>
</para>
<!-- ##### ARG GladeFixed:use-placeholders ##### -->
<para>
</para>
<!-- ##### ARG GladeFixed:width-prop ##### -->
<para>
</para>
<!-- ##### ARG GladeFixed:x-prop ##### -->
<para>
</para>
<!-- ##### ARG GladeFixed:y-prop ##### -->
<para>
</para>
<!-- ##### MACRO GLADE_FIXED_CURSOR_BOTTOM ##### -->
<para>
</para>
@type:
<!-- ##### MACRO GLADE_FIXED_CURSOR_RIGHT ##### -->
<para>
</para>
@type:
<!-- ##### MACRO GLADE_FIXED_CURSOR_TOP ##### -->
<para>
</para>
@type:
<!-- ##### MACRO GLADE_FIXED_CURSOR_LEFT ##### -->
<para>
</para>
@type:

113
doc/tmpl/glade-palette.sgml Normal file
View File

@ -0,0 +1,113 @@
<!-- ##### SECTION Title ##### -->
GladePalette
<!-- ##### SECTION Short_Description ##### -->
A widget to select a #GladeWidgetClass for addition
<!-- ##### SECTION Long_Description ##### -->
<para>
#GladePalette is responsible for displaying the list of available
#GladeWidgetClass types and publishing the currently selected class
to the Glade core.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladePalette ##### -->
<para>
</para>
<!-- ##### SIGNAL GladePalette::toggled ##### -->
<para>
</para>
@gladepalette: the object which received the signal.
<!-- ##### ARG GladePalette:catalogs ##### -->
<para>
</para>
<!-- ##### ARG GladePalette:current-item ##### -->
<para>
</para>
<!-- ##### ARG GladePalette:item-appearance ##### -->
<para>
</para>
<!-- ##### ARG GladePalette:show-selector-button ##### -->
<para>
</para>
<!-- ##### ARG GladePalette:use-small-item-icons ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_palette_new ##### -->
<para>
</para>
@catalogs:
@Returns:
<!-- ##### FUNCTION glade_palette_get_item_appearance ##### -->
<para>
</para>
@palette:
@Returns:
<!-- ##### FUNCTION glade_palette_set_item_appearance ##### -->
<para>
</para>
@palette:
@appearance:
<!-- ##### FUNCTION glade_palette_deselect_current_item ##### -->
<para>
</para>
@palette:
@sticky_aware:
<!-- ##### FUNCTION glade_palette_get_use_small_item_icons ##### -->
<para>
</para>
@palette:
@Returns:
<!-- ##### FUNCTION glade_palette_set_use_small_item_icons ##### -->
<para>
</para>
@palette:
@use_small_item_icons:

View File

@ -0,0 +1,103 @@
<!-- ##### SECTION Title ##### -->
Catalog Parameters
<!-- ##### SECTION Short_Description ##### -->
Parameters set in the catalog retrievable from the plugin
<!-- ##### SECTION Long_Description ##### -->
<para>
Parameters can be set in your catalog file that may determine how
your plugin will treat certain widget classes.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeParameter ##### -->
<para>
</para>
@key:
@value:
<!-- ##### FUNCTION glade_parameter_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_parameter_clone ##### -->
<para>
</para>
@parameter:
@Returns:
<!-- ##### FUNCTION glade_parameter_free ##### -->
<para>
</para>
@parameter:
<!-- ##### FUNCTION glade_parameter_get_float ##### -->
<para>
</para>
@parameters:
@key:
@value:
<!-- ##### FUNCTION glade_parameter_get_integer ##### -->
<para>
</para>
@parameters:
@key:
@value:
<!-- ##### FUNCTION glade_parameter_get_boolean ##### -->
<para>
</para>
@parameters:
@key:
@value:
<!-- ##### FUNCTION glade_parameter_get_string ##### -->
<para>
</para>
@parameters:
@key:
@value:
<!-- ##### FUNCTION glade_parameter_list_new_from_node ##### -->
<para>
</para>
@list:
@node:
@Returns:

127
doc/tmpl/glade-parser.sgml Normal file
View File

@ -0,0 +1,127 @@
<!-- ##### SECTION Title ##### -->
glade-parser
<!-- ##### SECTION Short_Description ##### -->
<!-- ##### SECTION Long_Description ##### -->
<para>
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### MACRO CAST_BAD ##### -->
<para>
</para>
<!-- ##### STRUCT GladePropInfo ##### -->
<para>
</para>
@name:
@value:
@comment:
@translatable:
@has_context:
<!-- ##### STRUCT GladeSignalInfo ##### -->
<para>
</para>
@name:
@handler:
@object:
@after:
@lookup:
<!-- ##### STRUCT GladeAtkActionInfo ##### -->
<para>
</para>
@action_name:
@description:
<!-- ##### STRUCT GladeAccelInfo ##### -->
<para>
</para>
@key:
@modifiers:
@signal:
<!-- ##### STRUCT GladeWidgetInfo ##### -->
<para>
</para>
@parent:
@classname:
@name:
@properties:
@n_properties:
@atk_props:
@n_atk_props:
@signals:
@n_signals:
@atk_actions:
@n_atk_actions:
@relations:
@n_relations:
@accels:
@n_accels:
@children:
@n_children:
<!-- ##### STRUCT GladeChildInfo ##### -->
<para>
</para>
@properties:
@n_properties:
@child:
@internal_child:
<!-- ##### STRUCT GladeInterface ##### -->
<para>
</para>
@requires:
@n_requires:
@toplevels:
@n_toplevels:
@names:
@strings:
@comment:
<!-- ##### STRUCT GladeAtkRelationInfo ##### -->
<para>
</para>
@target:
@type:
<!-- ##### STRUCT GladePackingDefault ##### -->
<para>
</para>
@id:
@value:

View File

@ -0,0 +1,46 @@
<!-- ##### SECTION Title ##### -->
GladePlaceholder
<!-- ##### SECTION Short_Description ##### -->
A #GtkWidget to fill empty places
<!-- ##### SECTION Long_Description ##### -->
<para>
Generally in Glade, container widgets are implemented with #GladePlaceholder
children to allow users to 'click' and add thier widgets to a container.
It is the responsability of the plugin writer to create placeholders for
container widgets where appropriate; usually in #GladePostCreateFunc
when the #GladeCreateReason is %GLADE_CREATE_USER.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladePlaceholder ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_placeholder_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_placeholder_get_parent ##### -->
<para>
</para>
@placeholder:
@Returns:

View File

@ -0,0 +1,61 @@
<!-- ##### SECTION Title ##### -->
GladeProjectView
<!-- ##### SECTION Short_Description ##### -->
A widget to view the project hierarchy
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GladeProjectView is a heirarchical treeview that allows the
user to control selection and cut/copy/paste/delete #GladeWidget
objects in the #GladeProject.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeProjectView ##### -->
<para>
</para>
<!-- ##### SIGNAL GladeProjectView::item-activated ##### -->
<para>
</para>
@gladeprojectview: the object which received the signal.
@arg1:
<!-- ##### FUNCTION glade_project_view_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_project_view_get_project ##### -->
<para>
</para>
@view:
@Returns:
<!-- ##### FUNCTION glade_project_view_set_project ##### -->
<para>
</para>
@view:
@project:

403
doc/tmpl/glade-project.sgml Normal file
View File

@ -0,0 +1,403 @@
<!-- ##### SECTION Title ##### -->
GladeProject
<!-- ##### SECTION Short_Description ##### -->
The Glade document hub and Load/Save interface
<!-- ##### SECTION Long_Description ##### -->
<para>
This object owns all project objects and is responsable for loading and
saving the glade document, you can monitor the project state via this
object and its signals.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeProject ##### -->
<para>
</para>
<!-- ##### SIGNAL GladeProject::add-widget ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GladeProject::changed ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
@arg1:
@arg2:
<!-- ##### SIGNAL GladeProject::close ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
<!-- ##### SIGNAL GladeProject::parse-finished ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
<!-- ##### SIGNAL GladeProject::remove-widget ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GladeProject::resource-added ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GladeProject::resource-removed ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GladeProject::selection-changed ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
<!-- ##### SIGNAL GladeProject::widget-name-changed ##### -->
<para>
</para>
@gladeproject: the object which received the signal.
@arg1:
<!-- ##### ARG GladeProject:has-selection ##### -->
<para>
</para>
<!-- ##### ARG GladeProject:has-unsaved-changes ##### -->
<para>
</para>
<!-- ##### ARG GladeProject:read-only ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_project_new ##### -->
<para>
</para>
@untitled:
@Returns:
<!-- ##### FUNCTION glade_project_open ##### -->
<para>
</para>
@path:
@Returns:
<!-- ##### FUNCTION glade_project_save ##### -->
<para>
</para>
@project:
@path:
@error:
@Returns:
<!-- ##### FUNCTION glade_project_push_undo ##### -->
<para>
</para>
@project:
@cmd:
<!-- ##### FUNCTION glade_project_redo ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_project_undo ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_project_next_redo_item ##### -->
<para>
</para>
@project:
@Returns:
<!-- ##### FUNCTION glade_project_next_undo_item ##### -->
<para>
</para>
@project:
@Returns:
<!-- ##### FUNCTION glade_project_reset_path ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_project_add_object ##### -->
<para>
</para>
@project:
@old_project:
@object:
<!-- ##### FUNCTION glade_project_remove_object ##### -->
<para>
</para>
@project:
@object:
<!-- ##### FUNCTION glade_project_has_object ##### -->
<para>
</para>
@project:
@object:
@Returns:
<!-- ##### FUNCTION glade_project_get_widget_by_name ##### -->
<para>
</para>
@project:
@name:
@Returns:
<!-- ##### FUNCTION glade_project_new_widget_name ##### -->
<para>
</para>
@project:
@base_name:
@Returns:
<!-- ##### FUNCTION glade_project_widget_name_changed ##### -->
<para>
</para>
@project:
@widget:
@old_name:
<!-- ##### FUNCTION glade_project_get_tooltips ##### -->
<para>
</para>
@project:
@Returns:
<!-- ##### FUNCTION glade_project_is_selected ##### -->
<para>
</para>
@project:
@object:
@Returns:
<!-- ##### FUNCTION glade_project_selection_set ##### -->
<para>
</para>
@project:
@object:
@emit_signal:
<!-- ##### FUNCTION glade_project_selection_add ##### -->
<para>
</para>
@project:
@object:
@emit_signal:
<!-- ##### FUNCTION glade_project_selection_remove ##### -->
<para>
</para>
@project:
@object:
@emit_signal:
<!-- ##### FUNCTION glade_project_selection_clear ##### -->
<para>
</para>
@project:
@emit_signal:
<!-- ##### FUNCTION glade_project_selection_changed ##### -->
<para>
</para>
@project:
<!-- ##### FUNCTION glade_project_selection_get ##### -->
<para>
</para>
@project:
@Returns:
<!-- ##### FUNCTION glade_project_set_accel_group ##### -->
<para>
</para>
@project:
@accel_group:
<!-- ##### FUNCTION glade_project_set_resource ##### -->
<para>
</para>
@project:
@property:
@resource:
<!-- ##### FUNCTION glade_project_list_resources ##### -->
<para>
</para>
@project:
@Returns:
<!-- ##### FUNCTION glade_project_resource_fullpath ##### -->
<para>
</para>
@project:
@resource:
@Returns:
<!-- ##### FUNCTION glade_project_display_name ##### -->
<para>
</para>
@project:
@unsaved_changes:
@tab_aligned:
@mnemonic:
@Returns:
<!-- ##### FUNCTION glade_project_is_loading ##### -->
<para>
</para>
@project:
@Returns:
<!-- ##### FUNCTION glade_project_get_has_selection ##### -->
<para>
</para>
@project:
@Returns:
<!-- ##### FUNCTION glade_project_get_readonly ##### -->
<para>
</para>
@project:
@Returns:

View File

@ -0,0 +1,295 @@
<!-- ##### SECTION Title ##### -->
GladePropertyClass
<!-- ##### SECTION Short_Description ##### -->
Property Class-wide metadata
<!-- ##### SECTION Long_Description ##### -->
<para>
#GladePropertyClass is a structure based on a #GParamSpec and parameters
from the Glade catalog files and describes how properties are to be handled
in Glade; it also provides an interface to convert #GValue to strings and
va_lists etc (back and forth).
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladePropertyClass ##### -->
<para>
</para>
@type:
@handle:
@pspec:
@id:
@name:
@tooltip:
@virt:
@def:
@orig_def:
@parameters:
@displayable_values:
@query:
@optional:
@optional_default:
@construct_only:
@common:
@packing:
@translatable:
@visible_lines:
@save:
@visible:
@ignore:
@is_modified:
@resource:
@transfer_on_paste:
@weight:
<!-- ##### ENUM GPCType ##### -->
<para>
</para>
@GPC_NORMAL:
@GPC_ATK_PROPERTY:
@GPC_ATK_RELATION:
@GPC_ATK_ACTION:
@GPC_ACCEL_PROPERTY:
<!-- ##### USER_FUNCTION GladeVerifyPropertyFunc ##### -->
<para>
</para>
@adaptor:
@object:
@property_name:
@value:
@Returns:
<!-- ##### USER_FUNCTION GladeGetPropertyFunc ##### -->
<para>
</para>
@adaptor:
@object:
@property_name:
@value:
<!-- ##### USER_FUNCTION GladeSetPropertyFunc ##### -->
<para>
</para>
@adaptor:
@object:
@property_name:
@value:
<!-- ##### FUNCTION glade_property_class_new ##### -->
<para>
</para>
@handle:
@Returns:
<!-- ##### FUNCTION glade_property_class_new_from_spec ##### -->
<para>
</para>
@handle:
@spec:
@Returns:
<!-- ##### FUNCTION glade_property_class_clone ##### -->
<para>
</para>
@property_class:
@Returns:
<!-- ##### FUNCTION glade_property_class_free ##### -->
<para>
</para>
@property_class:
<!-- ##### FUNCTION glade_property_class_is_visible ##### -->
<para>
</para>
@property_class:
@Returns:
<!-- ##### FUNCTION glade_property_class_is_object ##### -->
<para>
</para>
@property_class:
@Returns:
<!-- ##### FUNCTION glade_property_class_make_gvalue_from_string ##### -->
<para>
</para>
@property_class:
@string:
@project:
@Returns:
<!-- ##### FUNCTION glade_property_class_make_string_from_gvalue ##### -->
<para>
</para>
@property_class:
@value:
@Returns:
<!-- ##### FUNCTION glade_property_class_make_gvalue_from_vl ##### -->
<para>
</para>
@property_class:
@vl:
@Returns:
<!-- ##### FUNCTION glade_property_class_set_vl_from_gvalue ##### -->
<para>
</para>
@klass:
@value:
@vl:
<!-- ##### FUNCTION glade_property_class_get_from_gvalue ##### -->
<para>
</para>
@klass:
@value:
@Varargs:
<!-- ##### FUNCTION glade_property_class_make_gvalue ##### -->
<para>
</para>
@klass:
@Varargs:
@Returns:
<!-- ##### FUNCTION glade_property_class_update_from_node ##### -->
<para>
</para>
@node:
@module:
@object_type:
@property_class:
@domain:
@Returns:
<!-- ##### FUNCTION glade_property_class_get_displayable_value ##### -->
<para>
</para>
@klass:
@value:
@Returns:
<!-- ##### FUNCTION glade_property_class_make_adjustment ##### -->
<para>
</para>
@property_class:
@Returns:
<!-- ##### FUNCTION glade_property_class_match ##### -->
<para>
</para>
@klass:
@comp:
@Returns:
<!-- ##### FUNCTION glade_property_class_void_value ##### -->
<para>
</para>
@klass:
@value:
@Returns:
<!-- ##### FUNCTION glade_property_class_atk_realname ##### -->
<para>
</para>
@atk_name:
@Returns:
<!-- ##### FUNCTION glade_property_class_list_atk_relations ##### -->
<para>
</para>
@handle:
@owner_type:
@Returns:
<!-- ##### FUNCTION glade_property_class_accel_property ##### -->
<para>
</para>
@handle:
@owner_type:
@Returns:

View File

@ -0,0 +1,375 @@
<!-- ##### SECTION Title ##### -->
GladeProperty
<!-- ##### SECTION Short_Description ##### -->
An interface to properties on the #GladeWidget
<!-- ##### SECTION Long_Description ##### -->
<para>
Every object property of every #GladeWidget in every #GladeProject has
a #GladeProperty to interface with, #GladeProperty provides a means
to handle properties in the runtime environment.
</para>
<para>
A #GladeProperty can be seen as an instance of a #GladePropertyClass,
the #GladePropertyClass describes how a #GladeProperty will function.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeProperty ##### -->
<para>
</para>
<!-- ##### SIGNAL GladeProperty::tooltip-changed ##### -->
<para>
</para>
@gladeproperty: the object which received the signal.
@arg1:
<!-- ##### SIGNAL GladeProperty::value-changed ##### -->
<para>
</para>
@gladeproperty: the object which received the signal.
@arg1:
@Param3:
<!-- ##### ARG GladeProperty:enabled ##### -->
<para>
</para>
<!-- ##### ARG GladeProperty:i18n-comment ##### -->
<para>
</para>
<!-- ##### ARG GladeProperty:i18n-has-context ##### -->
<para>
</para>
<!-- ##### ARG GladeProperty:i18n-translatable ##### -->
<para>
</para>
<!-- ##### ARG GladeProperty:sensitive ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_property_new ##### -->
<para>
</para>
@klass:
@widget:
@value:
@catalog_default:
@Returns:
<!-- ##### FUNCTION glade_property_dup ##### -->
<para>
</para>
@template_prop:
@widget:
@Returns:
<!-- ##### FUNCTION glade_property_reset ##### -->
<para>
</para>
@property:
<!-- ##### FUNCTION glade_property_default ##### -->
<para>
</para>
@property:
@Returns:
<!-- ##### FUNCTION glade_property_equals_value ##### -->
<para>
</para>
@property:
@value:
@Returns:
<!-- ##### FUNCTION glade_property_equals ##### -->
<para>
</para>
@property:
@Varargs:
@Returns:
<!-- ##### FUNCTION glade_property_set_value ##### -->
<para>
</para>
@property:
@value:
<!-- ##### FUNCTION glade_property_set_va_list ##### -->
<para>
</para>
@property:
@vl:
<!-- ##### FUNCTION glade_property_set ##### -->
<para>
</para>
@property:
@Varargs:
<!-- ##### FUNCTION glade_property_get_value ##### -->
<para>
</para>
@property:
@value:
<!-- ##### FUNCTION glade_property_get_default ##### -->
<para>
</para>
@property:
@value:
<!-- ##### FUNCTION glade_property_get_va_list ##### -->
<para>
</para>
@property:
@vl:
<!-- ##### FUNCTION glade_property_get ##### -->
<para>
</para>
@property:
@Varargs:
<!-- ##### FUNCTION glade_property_add_object ##### -->
<para>
</para>
@property:
@object:
<!-- ##### FUNCTION glade_property_remove_object ##### -->
<para>
</para>
@property:
@object:
<!-- ##### FUNCTION glade_property_sync ##### -->
<para>
</para>
@property:
<!-- ##### FUNCTION glade_property_load ##### -->
<para>
</para>
@property:
<!-- ##### FUNCTION glade_property_read ##### -->
<para>
</para>
@property:
@pclass:
@project:
@info:
@free_value:
@Returns:
<!-- ##### FUNCTION glade_property_write ##### -->
<para>
</para>
@property:
@interface:
@props:
@Returns:
<!-- ##### FUNCTION glade_property_superuser ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_property_push_superuser ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_property_pop_superuser ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_property_get_tooltip ##### -->
<para>
</para>
@property:
@Returns:
<!-- ##### FUNCTION glade_property_set_sensitive ##### -->
<para>
</para>
@property:
@sensitive:
@reason:
<!-- ##### FUNCTION glade_property_get_sensitive ##### -->
<para>
</para>
@property:
@Returns:
<!-- ##### FUNCTION glade_property_set_enabled ##### -->
<para>
</para>
@property:
@enabled:
<!-- ##### FUNCTION glade_property_get_enabled ##### -->
<para>
</para>
@property:
@Returns:
<!-- ##### FUNCTION glade_property_i18n_set_comment ##### -->
<para>
</para>
@property:
@str:
<!-- ##### FUNCTION glade_property_i18n_get_comment ##### -->
<para>
</para>
@property:
@Returns:
<!-- ##### FUNCTION glade_property_i18n_set_translatable ##### -->
<para>
</para>
@property:
@translatable:
<!-- ##### FUNCTION glade_property_i18n_get_translatable ##### -->
<para>
</para>
@property:
@Returns:
<!-- ##### FUNCTION glade_property_i18n_set_has_context ##### -->
<para>
</para>
@property:
@has_context:
<!-- ##### FUNCTION glade_property_i18n_get_has_context ##### -->
<para>
</para>
@property:
@Returns:

View File

@ -0,0 +1,64 @@
<!-- ##### SECTION Title ##### -->
Glade Signal Editor
<!-- ##### SECTION Short_Description ##### -->
An interface to edit signals for a #GladeWidget
<!-- ##### SECTION Long_Description ##### -->
<para>
This isnt really a dockable widget, since you need to access the
#GladeSignalEditor struct's '->main_window' widget, the signal editor
is mostly of interest when implementing a custom object editor.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeSignalEditor ##### -->
<para>
</para>
@main_window:
@widget:
@adaptor:
@editor:
@signals_list:
@model:
@tree_view:
@handler_store:
@completion:
@iters:
<!-- ##### FUNCTION glade_signal_editor_get_widget ##### -->
<para>
</para>
@editor:
@Returns:
<!-- ##### FUNCTION glade_signal_editor_new ##### -->
<para>
</para>
@editor:
@Returns:
<!-- ##### FUNCTION glade_signal_editor_load_widget ##### -->
<para>
</para>
@editor:
@widget:

View File

@ -0,0 +1,90 @@
<!-- ##### SECTION Title ##### -->
glade-signal
<!-- ##### SECTION Short_Description ##### -->
<!-- ##### SECTION Long_Description ##### -->
<para>
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GladeSignal ##### -->
<para>
</para>
@name:
@handler:
@userdata:
@lookup:
@after:
<!-- ##### FUNCTION glade_signal_new ##### -->
<para>
</para>
@name:
@handler:
@userdata:
@lookup:
@after:
@Returns:
<!-- ##### FUNCTION glade_signal_clone ##### -->
<para>
</para>
@signal:
@Returns:
<!-- ##### FUNCTION glade_signal_free ##### -->
<para>
</para>
@signal:
<!-- ##### FUNCTION glade_signal_equal ##### -->
<para>
</para>
@sig1:
@sig2:
@Returns:
<!-- ##### FUNCTION glade_signal_write ##### -->
<para>
</para>
@info:
@signal:
@interface:
@Returns:
<!-- ##### FUNCTION glade_signal_new_from_signal_info ##### -->
<para>
</para>
@info:
@Returns:

387
doc/tmpl/glade-utils.sgml Normal file
View File

@ -0,0 +1,387 @@
<!-- ##### SECTION Title ##### -->
Utilities
<!-- ##### SECTION Short_Description ##### -->
Welcome to the zoo
<!-- ##### SECTION Long_Description ##### -->
<para>
This is where all of that really usefull miscalanious stuff lands up.
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### FUNCTION glade_util_widget_set_tooltip ##### -->
<para>
</para>
@widget:
@str:
<!-- ##### FUNCTION glade_util_get_type_from_name ##### -->
<para>
</para>
@name:
@have_func:
@Returns:
<!-- ##### FUNCTION glade_utils_get_pspec_from_funcname ##### -->
<para>
</para>
@funcname:
@Returns:
<!-- ##### ENUM GladeUIMessageType ##### -->
<para>
</para>
@GLADE_UI_INFO:
@GLADE_UI_WARN:
@GLADE_UI_ERROR:
@GLADE_UI_ARE_YOU_SURE:
@GLADE_UI_YES_OR_NO:
<!-- ##### FUNCTION glade_util_ui_message ##### -->
<para>
</para>
@parent:
@type:
@format:
@Varargs:
@Returns:
<!-- ##### FUNCTION glade_util_flash_message ##### -->
<para>
</para>
@statusbar:
@context_id:
@format:
@Varargs:
<!-- ##### FUNCTION glade_util_compare_stock_labels ##### -->
<para>
</para>
@a:
@b:
@Returns:
<!-- ##### FUNCTION glade_util_hide_window ##### -->
<para>
</para>
@window:
<!-- ##### FUNCTION glade_util_gtk_combo_func ##### -->
<para>
</para>
@data:
@Returns:
<!-- ##### FUNCTION glade_util_gtk_combo_find ##### -->
<para>
</para>
@combo:
@Returns:
<!-- ##### FUNCTION glade_util_file_dialog_new ##### -->
<para>
</para>
@title:
@parent:
@action:
@Returns:
<!-- ##### FUNCTION glade_util_replace ##### -->
<para>
</para>
@str:
@a:
@b:
<!-- ##### FUNCTION glade_util_read_prop_name ##### -->
<para>
</para>
@str:
@Returns:
<!-- ##### FUNCTION glade_util_duplicate_underscores ##### -->
<para>
</para>
@name:
@Returns:
<!-- ##### FUNCTION glade_util_add_selection ##### -->
<para>
</para>
@widget:
<!-- ##### FUNCTION glade_util_remove_selection ##### -->
<para>
</para>
@widget:
<!-- ##### FUNCTION glade_util_has_selection ##### -->
<para>
</para>
@widget:
@Returns:
<!-- ##### FUNCTION glade_util_clear_selection ##### -->
<para>
</para>
<!-- ##### FUNCTION glade_util_get_selection ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_util_queue_draw_nodes ##### -->
<para>
</para>
@window:
<!-- ##### FUNCTION glade_util_get_parent ##### -->
<para>
</para>
@w:
@Returns:
<!-- ##### FUNCTION glade_util_container_get_all_children ##### -->
<para>
</para>
@container:
@Returns:
<!-- ##### FUNCTION glade_util_gtkcontainer_relation ##### -->
<para>
</para>
@parent:
@widget:
@Returns:
<!-- ##### FUNCTION glade_util_any_gtkcontainer_relation ##### -->
<para>
</para>
@parent:
@widgets:
@Returns:
<!-- ##### FUNCTION glade_util_widget_pastable ##### -->
<para>
</para>
@child:
@parent:
@Returns:
<!-- ##### FUNCTION glade_util_count_placeholders ##### -->
<para>
</para>
@parent:
@Returns:
<!-- ##### FUNCTION glade_util_find_iter_by_widget ##### -->
<para>
</para>
@model:
@findme:
@column:
@Returns:
<!-- ##### FUNCTION glade_util_basenames_match ##### -->
<para>
</para>
@path1:
@path2:
@Returns:
<!-- ##### FUNCTION glade_util_purify_list ##### -->
<para>
</para>
@list:
@Returns:
<!-- ##### FUNCTION glade_util_removed_from_list ##### -->
<para>
</para>
@old_list:
@new_list:
@Returns:
<!-- ##### FUNCTION glade_util_added_in_list ##### -->
<para>
</para>
@old_list:
@new_list:
@Returns:
<!-- ##### FUNCTION glade_util_canonical_path ##### -->
<para>
</para>
@path:
@Returns:
<!-- ##### FUNCTION glade_util_copy_file ##### -->
<para>
</para>
@src_path:
@dest_path:
@Returns:
<!-- ##### FUNCTION glade_util_file_is_writeable ##### -->
<para>
</para>
@path:
@Returns:
<!-- ##### FUNCTION glade_util_load_library ##### -->
<para>
</para>
@library_name:
@Returns:
<!-- ##### FUNCTION glade_util_class_implements_interface ##### -->
<para>
</para>
@class_type:
@iface_type:
@Returns:
<!-- ##### FUNCTION glade_util_have_devhelp ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION glade_util_search_devhelp ##### -->
<para>
</para>
@book:
@page:
@search:
<!-- ##### FUNCTION glade_util_deep_fixed_event ##### -->
<para>
</para>
@widget:
@event:
@gwidget:
@Returns:

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