gtk2 2.24.30 and gtk3 3.20.2
next time: write a script that copies all required files from /usr/local to the git repo...
							
								
								
									
										48
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @@ -3,7 +3,7 @@ GTK+ for Windows Runtime Environment Installer: 64-bit | |||||||
|  |  | ||||||
| This repository is a fork of the  [GTK+ for Windows Runtime Environment Installer](http://gtk-win.sourceforge.net) that was originally created | This repository is a fork of the  [GTK+ for Windows Runtime Environment Installer](http://gtk-win.sourceforge.net) that was originally created | ||||||
| by Alexander Shaduri. | by Alexander Shaduri. | ||||||
| My efforts here will focus on creating a **64-bit version** of the GTK+-2 runtime that he has been providing so far, using up to date versions of GTK+ and its dependencies. Recently I have also created a 64-bit **GTK+-3 runtime package**. All packages now contain **Gtkmm** and its dependencies too. Since the GTK+ developers recently dropped support for stock icons (a mistake of epic proportions IMHO...), I added the Adwaita icon theme to the GTK+-3 runtime, so you can still enjoy pretty filechooserdialogs etc! I have also added a couple of commonly used libraries such as libxml++ and libxslt. | My efforts here will focus on creating a **64-bit version** of the GTK+-2 runtime that he has been providing so far, using up to date versions of GTK+ and its dependencies. Recently I have also created a 64-bit **GTK+-3 runtime package**. All packages now contain **Gtkmm** and its dependencies too. Since the GTK+ developers recently dropped support for stock icons (a mistake of epic proportions IMHO...), I added the Adwaita icon theme to the GTK+-3 runtime, so you can still enjoy pretty filechooserdialogs etc! I have also added a couple of commonly used libraries such as libxml++, libxslt and gtksourceview. | ||||||
|  |  | ||||||
| The installers can be found [here](http://lvserver.ugent.be/gtk-win64/). | The installers can be found [here](http://lvserver.ugent.be/gtk-win64/). | ||||||
|  |  | ||||||
| @@ -11,42 +11,48 @@ The installers can be found [here](http://lvserver.ugent.be/gtk-win64/). | |||||||
|  |  | ||||||
| Both for convencience as well as for increased reliability across installations, it is recommended for developers to compile and link against the GTK+ SDK that I used to create the installers. This SDK can also be obtained at the aforementioned url. | Both for convencience as well as for increased reliability across installations, it is recommended for developers to compile and link against the GTK+ SDK that I used to create the installers. This SDK can also be obtained at the aforementioned url. | ||||||
|  |  | ||||||
| The current releases ([gtk2-runtime-2.24.29-2016-01-10-ts-win64.exe](http://lvserver.ugent.be/gtk-win64/gtk2-runtime/gtk2-runtime-2.24.29-2016-01-10-ts-win64.exe) and [gtk3-runtime-3.18.6-2016-01-10-ts-win64.exe](http://lvserver.ugent.be/gtk-win64/gtk3-runtime/gtk3-runtime-3.18.6-2016-01-10-ts-win64.exe)) have been compiled using GCC 5.1.0 (MinGW-w64 installed from TDM-GCC).  | The current releases ([gtk2-runtime-2.24.30-2016-04-09-ts-win64.exe](http://lvserver.ugent.be/gtk-win64/gtk2-runtime/gtk2-runtime-2.24.30-2016-04-09-ts-win64.exe) and [gtk3-runtime-3.20.2-2016-04-09-ts-win64.exe](http://lvserver.ugent.be/gtk-win64/gtk3-runtime/gtk3-runtime-3.20.2-2016-04-09-ts-win64.exe)) have been compiled using GCC 5.1.0 (MinGW-w64 installed from TDM-GCC).  | ||||||
| The included GTK+ dependencies were selected according to the flowchart used by [Hexchat](http://hexchat.github.io/gtk-win32/). The source tarballs can be obtained by clicking on the names of the dependencies in the following list: | The included GTK+ dependencies were selected according to the flowchart used by [Hexchat](http://hexchat.github.io/gtk-win32/). The source tarballs can be obtained by clicking on the names of the dependencies in the following list: | ||||||
|  |  | ||||||
| * [adwaita icon theme](http://ftp.gnome.org/pub/GNOME/sources/adwaita-icon-theme/) (3.18.0) | * [adwaita icon theme](http://ftp.gnome.org/pub/GNOME/sources/adwaita-icon-theme/) (3.20) | ||||||
| * [atk](http://ftp.gnome.org/pub/GNOME/sources/atk/) (2.18.0) | * [atk](http://ftp.gnome.org/pub/GNOME/sources/atk/) (2.20.0) | ||||||
| * [atkmm](http://ftp.gnome.org/pub/GNOME/sources/atkmm/) (2.24.2) | * [atkmm](http://ftp.gnome.org/pub/GNOME/sources/atkmm/) (2.24.2) | ||||||
| * [cairo](http://cairographics.org/releases/) (1.14.6) | * [cairo](http://cairographics.org/releases/) (1.14.6) | ||||||
| * [cairomm](http://cairographics.org/releases/) (1.12.0) | * [cairomm](http://cairographics.org/releases/) (1.12.0) | ||||||
| * [fontconfig](http://www.freedesktop.org/software/fontconfig/release/) (2.11.1) | * [fontconfig](http://www.freedesktop.org/software/fontconfig/release/) (2.11.1) | ||||||
| * [freetype](http://www.freetype.org/download.html) (2.6.2) | * [freetype](http://www.freetype.org/download.html) (2.6.3) | ||||||
| * [gdk-pixbuf](http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/) (2.32.3) | * [gdk-pixbuf](http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/) (2.34.0) | ||||||
| * [gettext](http://ftp.gnu.org/pub/gnu/gettext/) (0.19.7) | * [gettext](http://ftp.gnu.org/pub/gnu/gettext/) (0.19.7) | ||||||
| * [glib](http://ftp.gnome.org/pub/GNOME/sources/glib/) (2.46.2) | * [glib](http://ftp.gnome.org/pub/GNOME/sources/glib/) (2.48.0) | ||||||
| * [glibmm](http://ftp.gnome.org/pub/GNOME/sources/glibmm/) (2.46.3) | * [glibmm](http://ftp.gnome.org/pub/GNOME/sources/glibmm/) (2.48.1) | ||||||
| * [gtk2](http://ftp.gnome.org/pub/GNOME/sources/gtk+/) (2.24.29) | * [gtk2](http://ftp.gnome.org/pub/GNOME/sources/gtk+/) (2.24.30) | ||||||
| * [gtk3](http://ftp.gnome.org/pub/GNOME/sources/gtk+/) (3.18.6) | * [gtk3](http://ftp.gnome.org/pub/GNOME/sources/gtk+/) (3.20.2) | ||||||
| * [gtkmm2](http://ftp.gnome.org/pub/GNOME/sources/gtkmm) (2.24.4) | * [gtkmm2](http://ftp.gnome.org/pub/GNOME/sources/gtkmm) (2.24.4) | ||||||
| * [gtkmm3](http://ftp.gnome.org/pub/GNOME/sources/gtkmm) (3.18.0) | * [gtkmm3](http://ftp.gnome.org/pub/GNOME/sources/gtkmm) (3.20.0) | ||||||
| * [harfbuzz](http://www.freedesktop.org/software/harfbuzz/release/) (1.1.2) | * [gtksourceview2](http://ftp.gnome.org/pub/GNOME/sources/gtksourceview/) (2.10.5) | ||||||
|  | * [gtksourceview3](http://ftp.gnome.org/pub/GNOME/sources/gtksourceview/) (3.20.1) | ||||||
|  | * [gtksourceviewmm2](http://ftp.gnome.org/pub/GNOME/sources/gtksourceviewmm/) (2.10.3) | ||||||
|  | * [gtksourceviewmm3](http://ftp.gnome.org/pub/GNOME/sources/gtksourceviewmm/) (3.18.0) | ||||||
|  | * [harfbuzz](http://www.freedesktop.org/software/harfbuzz/release/) (1.1.4) | ||||||
| * [hicolor-icon-theme](http://icon-theme.freedesktop.org/releases/) (0.15) | * [hicolor-icon-theme](http://icon-theme.freedesktop.org/releases/) (0.15) | ||||||
| * [icon-naming-utils](http://tango.freedesktop.org/releases/) (0.8.90) | * [icon-naming-utils](http://tango.freedesktop.org/releases/) (0.8.90) | ||||||
| * [intltool](http://ftp.gnome.org/pub/gnome/sources/intltool/) (0.51.0) | * [intltool](http://ftp.gnome.org/pub/gnome/sources/intltool/) (0.51.0) | ||||||
| * [json-glib](http://ftp.gnome.org/pub/gnome/sources/json-glib/) (1.0.4) | * [json-glib](http://ftp.gnome.org/pub/gnome/sources/json-glib/) (1.2.0) | ||||||
| * [libepoxy](https://github.com/anholt/libepoxy) (1.3.1) | * [libepoxy](https://github.com/anholt/libepoxy) (1.3.1) | ||||||
| * [libffi](http://sourceware.org/libffi/) (3.2.1) | * [libffi](http://sourceware.org/libffi/) (3.2.1) | ||||||
| * [libpng](http://sourceforge.net/project/showfiles.php?group_id=5624) (1.6.20) | * [libpng](http://sourceforge.net/project/showfiles.php?group_id=5624) (1.6.21) | ||||||
| * [libsigc++](http://ftp.gnome.org/pub/GNOME/sources/libsigc++/) (2.6.2) | * [libsigc++](http://ftp.gnome.org/pub/GNOME/sources/libsigc++/) (2.8.0) | ||||||
| * [libxml2](http://xmlsoft.org/sources/) (2.9.3) | * [libxml2](http://xmlsoft.org/sources/) (2.9.3) | ||||||
| * [libxml++](http://ftp.gnome.org/pub/GNOME/sources/libxml++/) (2.38.1) | * [libxml++2](http://ftp.gnome.org/pub/GNOME/sources/libxml++/) (2.40.1) | ||||||
|  | * [libxml++3](http://ftp.gnome.org/pub/GNOME/sources/libxml++/) (3.0.0) | ||||||
| * [libxslt](http://xmlsoft.org/sources/) (1.1.28) | * [libxslt](http://xmlsoft.org/sources/) (1.1.28) | ||||||
| * [mm-common](http://ftp.gnome.org/pub/GNOME/sources/mm-common/) (0.9.9) | * [mm-common](http://ftp.gnome.org/pub/GNOME/sources/mm-common/) (0.9.9) | ||||||
| * [pango](http://ftp.gnome.org/pub/GNOME/sources/pango/) (1.38.1) | * [pango](http://ftp.gnome.org/pub/GNOME/sources/pango/) (1.40.0) | ||||||
| * [pangomm](http://ftp.gnome.org/pub/GNOME/sources/pangomm/) (2.38.1) | * [pangomm](http://ftp.gnome.org/pub/GNOME/sources/pangomm/) (2.40.0) | ||||||
| * [pixman](http://cairographics.org/releases/) (0.32.8) | * [pcre](ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/) (8.38) | ||||||
| * [pkg-config](http://pkgconfig.freedesktop.org/releases/) (0.29) | * [pixman](http://cairographics.org/releases/) (0.34.0) | ||||||
| * [win-iconv](http://code.google.com/p/win-iconv/downloads/list) (0.0.6) | * [pkg-config](http://pkgconfig.freedesktop.org/releases/) (0.29.1) | ||||||
|  | * [win-iconv](https://github.com/win-iconv/win-iconv) (0.0.8) | ||||||
| * [zlib](http://www.zlib.net) (1.2.8) | * [zlib](http://www.zlib.net) (1.2.8) | ||||||
|  |  | ||||||
| For all other information regarding how to use the installer, the reader is kindly referred to [Alexander Shaduri's website](http://gtk-win.sourceforge.net) of the GTK for Windows runtime environment installer. The only difference with the installers found at his website is that mine DO NOT have the `compatdlls` option, but this should present no problems to any user.   | For all other information regarding how to use the installer, the reader is kindly referred to [Alexander Shaduri's website](http://gtk-win.sourceforge.net) of the GTK for Windows runtime environment installer. The only difference with the installers found at his website is that mine DO NOT have the `compatdlls` option, but this should present no problems to any user.   | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/iconv.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/libgtksourceview-2.0-0.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/libgtksourceview-3.0-1.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/libgtksourceviewmm-2.0-2.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/libgtksourceviewmm-3.0-0.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/libpcre-1.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/libwinpthread_64-1.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/bin/libxml++-3.0-1.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -12,9 +12,9 @@ | |||||||
| ; should be installable side by side with this package. | ; should be installable side by side with this package. | ||||||
|  |  | ||||||
|  |  | ||||||
| !define GTK_VERSION "2.24.29" | !define GTK_VERSION "2.24.30" | ||||||
| !define GTK_BIN_VERSION "2.10.0" | !define GTK_BIN_VERSION "2.10.0" | ||||||
| !define PRODUCT_VERSION "${GTK_VERSION}-2016-01-10-ts-win64" | !define PRODUCT_VERSION "${GTK_VERSION}-2016-04-09-ts-win64" | ||||||
| !define PRODUCT_NAME "GTK2-Runtime Win64" | !define PRODUCT_NAME "GTK2-Runtime Win64" | ||||||
| !define PRODUCT_PUBLISHER "Tom Schoonjans" | !define PRODUCT_PUBLISHER "Tom Schoonjans" | ||||||
| !define PRODUCT_WEB_SITE "https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer" | !define PRODUCT_WEB_SITE "https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer" | ||||||
| @@ -256,9 +256,12 @@ SectionIn 1 2 RO | |||||||
| 	File bin\libgobject-2.0-0.dll  ; from glib | 	File bin\libgobject-2.0-0.dll  ; from glib | ||||||
| 	File bin\libgthread-2.0-0.dll  ; from glib | 	File bin\libgthread-2.0-0.dll  ; from glib | ||||||
| 	File bin\libgtk-win32-2.0-0.dll  ; gtk | 	File bin\libgtk-win32-2.0-0.dll  ; gtk | ||||||
|  | 	File bin\libgtksourceview-2.0-0.dll | ||||||
| 	File bin\libgtkmm-2.4-1.dll | 	File bin\libgtkmm-2.4-1.dll | ||||||
|  | 	File bin\libgtksourceviewmm-2.0-2.dll | ||||||
| 	File bin\libharfbuzz-0.dll | 	File bin\libharfbuzz-0.dll | ||||||
| 	File bin\libintl-8.dll  ; gettext, needed by all i18n libs | 	File bin\libintl-8.dll  ; gettext, needed by all i18n libs | ||||||
|  | 	File bin\iconv.dll | ||||||
| 	File bin\libjson-glib-1.0-0.dll  ; gettext, needed by all i18n libs | 	File bin\libjson-glib-1.0-0.dll  ; gettext, needed by all i18n libs | ||||||
| 	File bin\libpango-1.0-0.dll  ; pango, needed by gtk | 	File bin\libpango-1.0-0.dll  ; pango, needed by gtk | ||||||
| 	File bin\libpangocairo-1.0-0.dll  ; pango, needed by gtk | 	File bin\libpangocairo-1.0-0.dll  ; pango, needed by gtk | ||||||
| @@ -268,11 +271,14 @@ SectionIn 1 2 RO | |||||||
| 	File bin\libpixman-1-0.dll  ; libpixman, needed by cairo | 	File bin\libpixman-1-0.dll  ; libpixman, needed by cairo | ||||||
| 	File bin\libpng16-16.dll  ; for gdk_pixbuf loader. | 	File bin\libpng16-16.dll  ; for gdk_pixbuf loader. | ||||||
| 	File bin\libxml++-2.6-2.dll  ; fontconfig needs this | 	File bin\libxml++-2.6-2.dll  ; fontconfig needs this | ||||||
|  | 	File bin\libxml++-3.0-1.dll | ||||||
|  | 	File bin\libpcre-1.dll | ||||||
| 	File bin\libxml2-2.dll  ; fontconfig needs this | 	File bin\libxml2-2.dll  ; fontconfig needs this | ||||||
| 	File bin\libxslt-1.dll  ; fontconfig needs this | 	File bin\libxslt-1.dll  ; fontconfig needs this | ||||||
| 	File bin\zlib1.dll  ; png and many others need this | 	File bin\zlib1.dll  ; png and many others need this | ||||||
| 	File bin\libstdc++_64-6.dll | 	File bin\libstdc++_64-6.dll | ||||||
| 	File bin\libgcc_s_seh_64-1.dll | 	File bin\libgcc_s_seh_64-1.dll | ||||||
|  | 	File bin\libwinpthread_64-1.dll | ||||||
|  |  | ||||||
| 	; We install this into the same place as the DLLs to avoid any PATH manipulation. | 	; We install this into the same place as the DLLs to avoid any PATH manipulation. | ||||||
| 	SetOutPath "$LIB_INSTDIR" | 	SetOutPath "$LIB_INSTDIR" | ||||||
| @@ -601,9 +607,12 @@ Function un.DeleteDlls | |||||||
| 	Delete $LIB_INSTDIR\libgobject-2.0-0.dll  ; from glib | 	Delete $LIB_INSTDIR\libgobject-2.0-0.dll  ; from glib | ||||||
| 	Delete $LIB_INSTDIR\libgthread-2.0-0.dll  ; from glib | 	Delete $LIB_INSTDIR\libgthread-2.0-0.dll  ; from glib | ||||||
| 	Delete $LIB_INSTDIR\libgtk-win32-2.0-0.dll  ; gtk | 	Delete $LIB_INSTDIR\libgtk-win32-2.0-0.dll  ; gtk | ||||||
|  | 	Delete $LIB_INSTDIR\libgtksourceview-2.0-0.dll | ||||||
|  | 	Delete $LIB_INSTDIR\libgtksourceviewmm-2.0-2.dll | ||||||
| 	Delete $LIB_INSTDIR\libgtkmm-2.4-1.dll | 	Delete $LIB_INSTDIR\libgtkmm-2.4-1.dll | ||||||
| 	Delete $LIB_INSTDIR\libharfbuzz-0.dll | 	Delete $LIB_INSTDIR\libharfbuzz-0.dll | ||||||
| 	Delete $LIB_INSTDIR\libintl-8.dll  ; gettext, needed by all i18n libs | 	Delete $LIB_INSTDIR\libintl-8.dll  ; gettext, needed by all i18n libs | ||||||
|  | 	Delete $LIB_INSTDIR\iconv.dll | ||||||
| 	Delete $LIB_INSTDIR\libjson-glib-1.0-0.dll  | 	Delete $LIB_INSTDIR\libjson-glib-1.0-0.dll  | ||||||
| 	Delete $LIB_INSTDIR\libpango-1.0-0.dll  ; pango, needed by gtk | 	Delete $LIB_INSTDIR\libpango-1.0-0.dll  ; pango, needed by gtk | ||||||
| 	Delete $LIB_INSTDIR\libpangocairo-1.0-0.dll  ; pango, needed by gtk | 	Delete $LIB_INSTDIR\libpangocairo-1.0-0.dll  ; pango, needed by gtk | ||||||
| @@ -615,9 +624,12 @@ Function un.DeleteDlls | |||||||
| 	Delete $LIB_INSTDIR\libxml2-2.dll  ; fontconfig needs this | 	Delete $LIB_INSTDIR\libxml2-2.dll  ; fontconfig needs this | ||||||
| 	Delete $LIB_INSTDIR\libxslt-1.dll  ; fontconfig needs this | 	Delete $LIB_INSTDIR\libxslt-1.dll  ; fontconfig needs this | ||||||
| 	Delete $LIB_INSTDIR\libxml++-2.6-2.dll  ; fontconfig needs this | 	Delete $LIB_INSTDIR\libxml++-2.6-2.dll  ; fontconfig needs this | ||||||
|  | 	Delete $LIB_INSTDIR\libxml++-3.0-1.dll | ||||||
|  | 	Delete $LIB_INSTDIR\libpcre-1.dll | ||||||
| 	Delete $LIB_INSTDIR\zlib1.dll  ; png and many others need this | 	Delete $LIB_INSTDIR\zlib1.dll  ; png and many others need this | ||||||
| 	Delete $LIB_INSTDIR\libstdc++_64-6.dll | 	Delete $LIB_INSTDIR\libstdc++_64-6.dll | ||||||
| 	Delete $LIB_INSTDIR\libgcc_s_seh_64-1.dll | 	Delete $LIB_INSTDIR\libgcc_s_seh_64-1.dll | ||||||
|  | 	Delete $LIB_INSTDIR\libwinpthread_64-1.dll | ||||||
|  |  | ||||||
|  |  | ||||||
| FunctionEnd | FunctionEnd | ||||||
|   | |||||||
| @@ -11,9 +11,9 @@ | |||||||
| ; Directory and package names: gtk3-runtime. | ; Directory and package names: gtk3-runtime. | ||||||
|  |  | ||||||
|  |  | ||||||
| !define GTK_VERSION "3.18.6" | !define GTK_VERSION "3.20.2" | ||||||
| !define GTK_BIN_VERSION "3.0.0" | !define GTK_BIN_VERSION "3.0.0" | ||||||
| !define PRODUCT_VERSION "${GTK_VERSION}-2016-01-10-ts-win64" | !define PRODUCT_VERSION "${GTK_VERSION}-2016-04-09-ts-win64" | ||||||
| !define PRODUCT_NAME "GTK3-Runtime Win64" | !define PRODUCT_NAME "GTK3-Runtime Win64" | ||||||
| !define PRODUCT_PUBLISHER "Tom Schoonjans" | !define PRODUCT_PUBLISHER "Tom Schoonjans" | ||||||
| !define PRODUCT_WEB_SITE "https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer" | !define PRODUCT_WEB_SITE "https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer" | ||||||
| @@ -256,9 +256,12 @@ SectionIn 1 2 RO | |||||||
| 	File bin\libgobject-2.0-0.dll  ; from glib | 	File bin\libgobject-2.0-0.dll  ; from glib | ||||||
| 	File bin\libgthread-2.0-0.dll  ; from glib | 	File bin\libgthread-2.0-0.dll  ; from glib | ||||||
| 	File bin\libgtk-3-0.dll  ; gtk | 	File bin\libgtk-3-0.dll  ; gtk | ||||||
|  | 	File bin\libgtksourceview-3.0-1.dll | ||||||
|  | 	File bin\libgtksourceviewmm-3.0-0.dll | ||||||
| 	File bin\libgtkmm-3.0-1.dll | 	File bin\libgtkmm-3.0-1.dll | ||||||
| 	File bin\libharfbuzz-0.dll | 	File bin\libharfbuzz-0.dll | ||||||
| 	File bin\libintl-8.dll  ; gettext, needed by all i18n libs | 	File bin\libintl-8.dll  ; gettext, needed by all i18n libs | ||||||
|  | 	File bin\iconv.dll | ||||||
| 	File bin\libjson-glib-1.0-0.dll  ; gettext, needed by all i18n libs | 	File bin\libjson-glib-1.0-0.dll  ; gettext, needed by all i18n libs | ||||||
| 	File bin\libpango-1.0-0.dll  ; pango, needed by gtk | 	File bin\libpango-1.0-0.dll  ; pango, needed by gtk | ||||||
| 	File bin\libpangocairo-1.0-0.dll  ; pango, needed by gtk | 	File bin\libpangocairo-1.0-0.dll  ; pango, needed by gtk | ||||||
| @@ -268,11 +271,14 @@ SectionIn 1 2 RO | |||||||
| 	File bin\libpixman-1-0.dll  ; libpixman, needed by cairo | 	File bin\libpixman-1-0.dll  ; libpixman, needed by cairo | ||||||
| 	File bin\libpng16-16.dll  ; for gdk_pixbuf loader. | 	File bin\libpng16-16.dll  ; for gdk_pixbuf loader. | ||||||
| 	File bin\libxml++-2.6-2.dll  ; fontconfig needs this | 	File bin\libxml++-2.6-2.dll  ; fontconfig needs this | ||||||
|  | 	File bin\libxml++-3.0-1.dll | ||||||
| 	File bin\libxml2-2.dll  ; fontconfig needs this | 	File bin\libxml2-2.dll  ; fontconfig needs this | ||||||
| 	File bin\libxslt-1.dll  ; fontconfig needs this | 	File bin\libxslt-1.dll  ; fontconfig needs this | ||||||
|  | 	File bin\libpcre-1.dll  ; fontconfig needs this | ||||||
| 	File bin\zlib1.dll  ; png and many others need this | 	File bin\zlib1.dll  ; png and many others need this | ||||||
| 	File bin\libstdc++_64-6.dll | 	File bin\libstdc++_64-6.dll | ||||||
| 	File bin\libgcc_s_seh_64-1.dll | 	File bin\libgcc_s_seh_64-1.dll | ||||||
|  | 	File bin\libwinpthread_64-1.dll | ||||||
|  |  | ||||||
| 	; We install this into the same place as the DLLs to avoid any PATH manipulation. | 	; We install this into the same place as the DLLs to avoid any PATH manipulation. | ||||||
| 	SetOutPath "$LIB_INSTDIR" | 	SetOutPath "$LIB_INSTDIR" | ||||||
| @@ -603,9 +609,12 @@ Function un.DeleteDlls | |||||||
| 	Delete $LIB_INSTDIR\libgobject-2.0-0.dll  ; from glib | 	Delete $LIB_INSTDIR\libgobject-2.0-0.dll  ; from glib | ||||||
| 	Delete $LIB_INSTDIR\libgthread-2.0-0.dll  ; from glib | 	Delete $LIB_INSTDIR\libgthread-2.0-0.dll  ; from glib | ||||||
| 	Delete $LIB_INSTDIR\libgtk-3-0.dll  ; gtk | 	Delete $LIB_INSTDIR\libgtk-3-0.dll  ; gtk | ||||||
|  | 	Delete $LIB_INSTDIR\libgtksourceview-3.0-1.dll  ; gtk | ||||||
|  | 	Delete $LIB_INSTDIR\libgtksourceviewmm-3.0-0.dll  ; gtk | ||||||
| 	Delete $LIB_INSTDIR\libgtkmm-3.0-1.dll | 	Delete $LIB_INSTDIR\libgtkmm-3.0-1.dll | ||||||
| 	Delete $LIB_INSTDIR\libharfbuzz-0.dll | 	Delete $LIB_INSTDIR\libharfbuzz-0.dll | ||||||
| 	Delete $LIB_INSTDIR\libintl-8.dll  ; gettext, needed by all i18n libs | 	Delete $LIB_INSTDIR\libintl-8.dll  ; gettext, needed by all i18n libs | ||||||
|  | 	Delete $LIB_INSTDIR\iconv.dll | ||||||
| 	Delete $LIB_INSTDIR\libjson-glib-1.0-0.dll  | 	Delete $LIB_INSTDIR\libjson-glib-1.0-0.dll  | ||||||
| 	Delete $LIB_INSTDIR\libpango-1.0-0.dll  ; pango, needed by gtk | 	Delete $LIB_INSTDIR\libpango-1.0-0.dll  ; pango, needed by gtk | ||||||
| 	Delete $LIB_INSTDIR\libpangocairo-1.0-0.dll  ; pango, needed by gtk | 	Delete $LIB_INSTDIR\libpangocairo-1.0-0.dll  ; pango, needed by gtk | ||||||
| @@ -615,11 +624,14 @@ Function un.DeleteDlls | |||||||
| 	Delete $LIB_INSTDIR\libpixman-1-0.dll  ; libpixman, needed by cairo | 	Delete $LIB_INSTDIR\libpixman-1-0.dll  ; libpixman, needed by cairo | ||||||
| 	Delete $LIB_INSTDIR\libpng16-16.dll  ; for gdk_pixbuf loader. | 	Delete $LIB_INSTDIR\libpng16-16.dll  ; for gdk_pixbuf loader. | ||||||
| 	Delete $LIB_INSTDIR\libxslt-1.dll  ; fontconfig needs this | 	Delete $LIB_INSTDIR\libxslt-1.dll  ; fontconfig needs this | ||||||
|  | 	Delete $LIB_INSTDIR\libpcre-1.dll  ; fontconfig needs this | ||||||
| 	Delete $LIB_INSTDIR\libxml2-2.dll  ; fontconfig needs this | 	Delete $LIB_INSTDIR\libxml2-2.dll  ; fontconfig needs this | ||||||
| 	Delete $LIB_INSTDIR\libxml++-2.6-2.dll  ; fontconfig needs this | 	Delete $LIB_INSTDIR\libxml++-2.6-2.dll  ; fontconfig needs this | ||||||
|  | 	Delete $LIB_INSTDIR\libxml++-3.0-1.dll | ||||||
| 	Delete $LIB_INSTDIR\zlib1.dll  ; png and many others need this | 	Delete $LIB_INSTDIR\zlib1.dll  ; png and many others need this | ||||||
| 	Delete $LIB_INSTDIR\libstdc++_64-6.dll | 	Delete $LIB_INSTDIR\libstdc++_64-6.dll | ||||||
| 	Delete $LIB_INSTDIR\libgcc_s_seh_64-1.dll | 	Delete $LIB_INSTDIR\libgcc_s_seh_64-1.dll | ||||||
|  | 	Delete $LIB_INSTDIR\libwinpthread_64-1.dll | ||||||
|  |  | ||||||
|  |  | ||||||
| FunctionEnd | FunctionEnd | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,27 @@ | |||||||
|  | # -*- Mode: Python -*- | ||||||
|  |  | ||||||
|  | # GDBus - GLib D-Bus Library | ||||||
|  | # | ||||||
|  | # Copyright (C) 2008-2011 Red Hat, Inc. | ||||||
|  | # | ||||||
|  | # This library is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU Lesser 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 | ||||||
|  | # Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General | ||||||
|  | # Public License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # Author: David Zeuthen <davidz@redhat.com> | ||||||
|  |  | ||||||
|  | import os | ||||||
|  |  | ||||||
|  | builddir = os.environ.get('UNINSTALLED_GLIB_BUILDDIR') | ||||||
|  |  | ||||||
|  | if builddir is not None: | ||||||
|  |     __path__.append(os.path.abspath(os.path.join(builddir, 'gio', 'gdbus-2.0', 'codegen'))) | ||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/__init__.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3434
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/codegen.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/codegen.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										329
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/codegen_docbook.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,329 @@ | |||||||
|  | # -*- Mode: Python -*- | ||||||
|  |  | ||||||
|  | # GDBus - GLib D-Bus Library | ||||||
|  | # | ||||||
|  | # Copyright (C) 2008-2011 Red Hat, Inc. | ||||||
|  | # | ||||||
|  | # This library is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU Lesser 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 | ||||||
|  | # Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General | ||||||
|  | # Public License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # Author: David Zeuthen <davidz@redhat.com> | ||||||
|  |  | ||||||
|  | import sys | ||||||
|  | import re | ||||||
|  |  | ||||||
|  | from . import config | ||||||
|  | from . import utils | ||||||
|  | from . import dbustypes | ||||||
|  | from . import parser | ||||||
|  |  | ||||||
|  | # ---------------------------------------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | class DocbookCodeGenerator: | ||||||
|  |     def __init__(self, ifaces, docbook): | ||||||
|  |         self.ifaces = ifaces | ||||||
|  |         self.docbook = docbook | ||||||
|  |         self.generate_expand_dicts() | ||||||
|  |  | ||||||
|  |     def print_method_prototype(self, i, m, in_synopsis): | ||||||
|  |         max_method_len = 0 | ||||||
|  |         if in_synopsis: | ||||||
|  |             for _m in i.methods: | ||||||
|  |                 max_method_len = max(len(_m.name), max_method_len) | ||||||
|  |         else: | ||||||
|  |             max_method_len = max(len(m.name), max_method_len) | ||||||
|  |  | ||||||
|  |         max_signature_len = 0 | ||||||
|  |         if in_synopsis: | ||||||
|  |             for _m in i.methods: | ||||||
|  |                 for a in _m.in_args: | ||||||
|  |                     max_signature_len = max(len(a.signature), max_signature_len) | ||||||
|  |                 for a in _m.out_args: | ||||||
|  |                     max_signature_len = max(len(a.signature), max_signature_len) | ||||||
|  |         else: | ||||||
|  |             for a in m.in_args: | ||||||
|  |                 max_signature_len = max(len(a.signature), max_signature_len) | ||||||
|  |             for a in m.out_args: | ||||||
|  |                 max_signature_len = max(len(a.signature), max_signature_len) | ||||||
|  |  | ||||||
|  |         if in_synopsis: | ||||||
|  |             self.out.write('<link linkend="gdbus-method-%s.%s">%s</link>%*s (' | ||||||
|  |                            %(utils.dots_to_hyphens(i.name), m.name, m.name, max_method_len - len(m.name), '')) | ||||||
|  |         else: | ||||||
|  |             self.out.write('%s%*s (' | ||||||
|  |                            %(m.name, max_method_len - len(m.name), '')) | ||||||
|  |         count = 0 | ||||||
|  |         for a in m.in_args: | ||||||
|  |             if (count > 0): | ||||||
|  |                 self.out.write(',\n%*s'%(max_method_len + 2, '')) | ||||||
|  |             self.out.write('IN  %s%*s %s'%(a.signature, max_signature_len - len(a.signature), '', a.name)) | ||||||
|  |             count = count + 1 | ||||||
|  |         for a in m.out_args: | ||||||
|  |             if (count > 0): | ||||||
|  |                 self.out.write(',\n%*s'%(max_method_len + 2, '')) | ||||||
|  |             self.out.write('OUT %s%*s %s'%(a.signature, max_signature_len - len(a.signature), '', a.name)) | ||||||
|  |             count = count + 1 | ||||||
|  |         self.out.write(');\n') | ||||||
|  |  | ||||||
|  |     def print_signal_prototype(self, i, s, in_synopsis): | ||||||
|  |         max_signal_len = 0 | ||||||
|  |         if in_synopsis: | ||||||
|  |             for _s in i.signals: | ||||||
|  |                 max_signal_len = max(len(_s.name), max_signal_len) | ||||||
|  |         else: | ||||||
|  |             max_signal_len = max(len(s.name), max_signal_len) | ||||||
|  |  | ||||||
|  |         max_signature_len = 0 | ||||||
|  |         if in_synopsis: | ||||||
|  |             for _s in i.signals: | ||||||
|  |                 for a in _s.args: | ||||||
|  |                     max_signature_len = max(len(a.signature), max_signature_len) | ||||||
|  |         else: | ||||||
|  |             for a in s.args: | ||||||
|  |                 max_signature_len = max(len(a.signature), max_signature_len) | ||||||
|  |  | ||||||
|  |         if in_synopsis: | ||||||
|  |             self.out.write('<link linkend="gdbus-signal-%s.%s">%s</link>%*s (' | ||||||
|  |                            %(utils.dots_to_hyphens(i.name), s.name, s.name, max_signal_len - len(s.name), '')) | ||||||
|  |         else: | ||||||
|  |             self.out.write('%s%*s (' | ||||||
|  |                            %(s.name, max_signal_len - len(s.name), '')) | ||||||
|  |         count = 0 | ||||||
|  |         for a in s.args: | ||||||
|  |             if (count > 0): | ||||||
|  |                 self.out.write(',\n%*s'%(max_signal_len + 2, '')) | ||||||
|  |             self.out.write('%s%*s %s'%(a.signature, max_signature_len - len(a.signature), '', a.name)) | ||||||
|  |             count = count + 1 | ||||||
|  |         self.out.write(');\n') | ||||||
|  |  | ||||||
|  |     def print_property_prototype(self, i, p, in_synopsis): | ||||||
|  |         max_property_len = 0 | ||||||
|  |         if in_synopsis: | ||||||
|  |             for _p in i.properties: | ||||||
|  |                 max_property_len = max(len(_p.name), max_property_len) | ||||||
|  |         else: | ||||||
|  |             max_property_len = max(len(p.name), max_property_len) | ||||||
|  |  | ||||||
|  |         max_signature_len = 0 | ||||||
|  |         if in_synopsis: | ||||||
|  |             for _p in i.properties: | ||||||
|  |                 max_signature_len = max(len(_p.signature), max_signature_len) | ||||||
|  |         else: | ||||||
|  |             max_signature_len = max(len(p.signature), max_signature_len) | ||||||
|  |  | ||||||
|  |         if in_synopsis: | ||||||
|  |             self.out.write('<link linkend="gdbus-property-%s.%s">%s</link>%*s' | ||||||
|  |                            %(utils.dots_to_hyphens(i.name), p.name, p.name, max_property_len - len(p.name), '')) | ||||||
|  |         else: | ||||||
|  |             self.out.write('%s%*s' | ||||||
|  |                            %(p.name, max_property_len - len(p.name), '')) | ||||||
|  |         if p.readable and p.writable: | ||||||
|  |             access = 'readwrite' | ||||||
|  |         elif p.readable: | ||||||
|  |             access = 'readable ' | ||||||
|  |         else: | ||||||
|  |             access = 'writable ' | ||||||
|  |         self.out.write('  %s  %s\n'%(access, p.signature)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     def print_synopsis_methods(self, i): | ||||||
|  |         self.out.write('  <refsynopsisdiv role="synopsis">\n'%()) | ||||||
|  |         self.out.write('    <title role="synopsis.title">Methods</title>\n'%()) | ||||||
|  |         self.out.write('    <synopsis>\n'%()) | ||||||
|  |         for m in i.methods: | ||||||
|  |             self.print_method_prototype(i, m, in_synopsis=True) | ||||||
|  |         self.out.write('</synopsis>\n'%()) | ||||||
|  |         self.out.write('  </refsynopsisdiv>\n'%()) | ||||||
|  |  | ||||||
|  |     def print_synopsis_signals(self, i): | ||||||
|  |         self.out.write('  <refsect1 role="signal_proto">\n'%()) | ||||||
|  |         self.out.write('    <title role="signal_proto.title">Signals</title>\n'%()) | ||||||
|  |         self.out.write('    <synopsis>\n'%()) | ||||||
|  |         for s in i.signals: | ||||||
|  |             self.print_signal_prototype(i, s, in_synopsis=True) | ||||||
|  |         self.out.write('</synopsis>\n'%()) | ||||||
|  |         self.out.write('  </refsect1>\n'%()) | ||||||
|  |  | ||||||
|  |     def print_synopsis_properties(self, i): | ||||||
|  |         self.out.write('  <refsect1 role="properties">\n'%()) | ||||||
|  |         self.out.write('    <title role="properties.title">Properties</title>\n'%()) | ||||||
|  |         self.out.write('    <synopsis>\n'%()) | ||||||
|  |         for p in i.properties: | ||||||
|  |             self.print_property_prototype(i, p, in_synopsis=True) | ||||||
|  |         self.out.write('</synopsis>\n'%()) | ||||||
|  |         self.out.write('  </refsect1>\n'%()) | ||||||
|  |  | ||||||
|  |     def print_method(self, i, m): | ||||||
|  |         self.out.write('<refsect2 role="method" id="gdbus-method-%s.%s">\n'%(utils.dots_to_hyphens(i.name), m.name)) | ||||||
|  |         self.out.write('  <title>The %s() method</title>\n'%(m.name)) | ||||||
|  |         self.out.write('  <indexterm zone="gdbus-method-%s.%s"><primary sortas="%s.%s">%s.%s()</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), m.name, i.name_without_prefix, m.name, i.name, m.name)) | ||||||
|  |         self.out.write('<programlisting>\n') | ||||||
|  |         self.print_method_prototype(i, m, in_synopsis=False) | ||||||
|  |         self.out.write('</programlisting>\n') | ||||||
|  |         self.out.write('%s\n'%(self.expand_paras(m.doc_string, True))) | ||||||
|  |         if m.in_args or m.out_args: | ||||||
|  |             self.out.write('<variablelist role="params">\n') | ||||||
|  |             for a in m.in_args: | ||||||
|  |                 self.out.write('<varlistentry>\n'%()) | ||||||
|  |                 self.out.write('  <term><literal>IN %s <parameter>%s</parameter></literal>:</term>\n'%(a.signature, a.name)) | ||||||
|  |                 self.out.write('  <listitem>%s</listitem>\n'%(self.expand_paras(a.doc_string, True))) | ||||||
|  |                 self.out.write('</varlistentry>\n'%()) | ||||||
|  |             for a in m.out_args: | ||||||
|  |                 self.out.write('<varlistentry>\n'%()) | ||||||
|  |                 self.out.write('  <term><literal>OUT %s <parameter>%s</parameter></literal>:</term>\n'%(a.signature, a.name)) | ||||||
|  |                 self.out.write('  <listitem>%s</listitem>\n'%(self.expand_paras(a.doc_string, True))) | ||||||
|  |                 self.out.write('</varlistentry>\n'%()) | ||||||
|  |             self.out.write('</variablelist>\n') | ||||||
|  |         if len(m.since) > 0: | ||||||
|  |             self.out.write('<para role="since">Since %s</para>\n'%(m.since)) | ||||||
|  |         if m.deprecated: | ||||||
|  |             self.out.write('<warning><para>The %s() method is deprecated.</para></warning>'%(m.name)) | ||||||
|  |         self.out.write('</refsect2>\n') | ||||||
|  |  | ||||||
|  |     def print_signal(self, i, s): | ||||||
|  |         self.out.write('<refsect2 role="signal" id="gdbus-signal-%s.%s">\n'%(utils.dots_to_hyphens(i.name), s.name)) | ||||||
|  |         self.out.write('  <title>The "%s" signal</title>\n'%(s.name)) | ||||||
|  |         self.out.write('  <indexterm zone="gdbus-signal-%s.%s"><primary sortas="%s::%s">%s::%s</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), s.name, i.name_without_prefix, s.name, i.name, s.name)) | ||||||
|  |         self.out.write('<programlisting>\n') | ||||||
|  |         self.print_signal_prototype(i, s, in_synopsis=False) | ||||||
|  |         self.out.write('</programlisting>\n') | ||||||
|  |         self.out.write('%s\n'%(self.expand_paras(s.doc_string, True))) | ||||||
|  |         if s.args: | ||||||
|  |             self.out.write('<variablelist role="params">\n') | ||||||
|  |             for a in s.args: | ||||||
|  |                 self.out.write('<varlistentry>\n'%()) | ||||||
|  |                 self.out.write('  <term><literal>%s <parameter>%s</parameter></literal>:</term>\n'%(a.signature, a.name)) | ||||||
|  |                 self.out.write('  <listitem>%s</listitem>\n'%(self.expand_paras(a.doc_string, True))) | ||||||
|  |                 self.out.write('</varlistentry>\n'%()) | ||||||
|  |             self.out.write('</variablelist>\n') | ||||||
|  |         if len(s.since) > 0: | ||||||
|  |             self.out.write('<para role="since">Since %s</para>\n'%(s.since)) | ||||||
|  |         if s.deprecated: | ||||||
|  |             self.out.write('<warning><para>The "%s" signal is deprecated.</para></warning>'%(s.name)) | ||||||
|  |         self.out.write('</refsect2>\n') | ||||||
|  |  | ||||||
|  |     def print_property(self, i, p): | ||||||
|  |         self.out.write('<refsect2 role="property" id="gdbus-property-%s.%s">\n'%(utils.dots_to_hyphens(i.name), p.name)) | ||||||
|  |         self.out.write('  <title>The "%s" property</title>\n'%(p.name)) | ||||||
|  |         self.out.write('  <indexterm zone="gdbus-property-%s.%s"><primary sortas="%s:%s">%s:%s</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), p.name, i.name_without_prefix, p.name, i.name, p.name)) | ||||||
|  |         self.out.write('<programlisting>\n') | ||||||
|  |         self.print_property_prototype(i, p, in_synopsis=False) | ||||||
|  |         self.out.write('</programlisting>\n') | ||||||
|  |         self.out.write('%s\n'%(self.expand_paras(p.doc_string, True))) | ||||||
|  |         if len(p.since) > 0: | ||||||
|  |             self.out.write('<para role="since">Since %s</para>\n'%(p.since)) | ||||||
|  |         if p.deprecated: | ||||||
|  |             self.out.write('<warning><para>The "%s" property is deprecated.</para></warning>'%(p.name)) | ||||||
|  |         self.out.write('</refsect2>\n') | ||||||
|  |  | ||||||
|  |     def expand(self, s, expandParamsAndConstants): | ||||||
|  |         for key in self.expand_member_dict_keys: | ||||||
|  |             s = s.replace(key, self.expand_member_dict[key]) | ||||||
|  |         for key in self.expand_iface_dict_keys: | ||||||
|  |             s = s.replace(key, self.expand_iface_dict[key]) | ||||||
|  |         if expandParamsAndConstants: | ||||||
|  |             # replace @foo with <parameter>foo</parameter> | ||||||
|  |             s = re.sub('@[a-zA-Z0-9_]*', lambda m: '<parameter>' + m.group(0)[1:] + '</parameter>', s) | ||||||
|  |             # replace e.g. %TRUE with <constant>TRUE</constant> | ||||||
|  |             s = re.sub('%[a-zA-Z0-9_]*', lambda m: '<constant>' + m.group(0)[1:] + '</constant>', s) | ||||||
|  |         return s | ||||||
|  |  | ||||||
|  |     def expand_paras(self, s, expandParamsAndConstants): | ||||||
|  |         s = self.expand(s, expandParamsAndConstants).strip() | ||||||
|  |         if not s.startswith("<para"): | ||||||
|  |             s = "<para>%s</para>" % s | ||||||
|  |         return s | ||||||
|  |  | ||||||
|  |     def generate_expand_dicts(self): | ||||||
|  |         self.expand_member_dict = {} | ||||||
|  |         self.expand_iface_dict = {} | ||||||
|  |         for i in self.ifaces: | ||||||
|  |             key = '#%s'%(i.name) | ||||||
|  |             value = '<link linkend="gdbus-interface-%s.top_of_page">%s</link>'%(utils.dots_to_hyphens(i.name), i.name) | ||||||
|  |             self.expand_iface_dict[key] = value | ||||||
|  |             for m in i.methods: | ||||||
|  |                 key = '%s.%s()'%(i.name, m.name) | ||||||
|  |                 value = '<link linkend="gdbus-method-%s.%s">%s()</link>'%(utils.dots_to_hyphens(i.name), m.name, m.name) | ||||||
|  |                 self.expand_member_dict[key] = value | ||||||
|  |             for s in i.signals: | ||||||
|  |                 key = '#%s::%s'%(i.name, s.name) | ||||||
|  |                 value = '<link linkend="gdbus-signal-%s.%s">"%s"</link>'%(utils.dots_to_hyphens(i.name), s.name, s.name) | ||||||
|  |                 self.expand_member_dict[key] = value | ||||||
|  |             for p in i.properties: | ||||||
|  |                 key = '#%s:%s'%(i.name, p.name) | ||||||
|  |                 value = '<link linkend="gdbus-property-%s.%s">"%s"</link>'%(utils.dots_to_hyphens(i.name), p.name, p.name) | ||||||
|  |                 self.expand_member_dict[key] = value | ||||||
|  |         # Make sure to expand the keys in reverse order so e.g. #org.foo.Iface:MediaCompat | ||||||
|  |         # is evaluated before #org.foo.Iface:Media ... | ||||||
|  |         self.expand_member_dict_keys = sorted(self.expand_member_dict.keys(), reverse=True) | ||||||
|  |         self.expand_iface_dict_keys = sorted(self.expand_iface_dict.keys(), reverse=True) | ||||||
|  |  | ||||||
|  |     def generate(self): | ||||||
|  |         for i in self.ifaces: | ||||||
|  |             self.out = open('%s-%s.xml'%(self.docbook, i.name), 'w') | ||||||
|  |             self.out.write(''%()) | ||||||
|  |             self.out.write('<?xml version="1.0" encoding="utf-8"?>\n'%()) | ||||||
|  |             self.out.write('<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"\n'%()) | ||||||
|  |             self.out.write('               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [\n'%()) | ||||||
|  |             self.out.write(']>\n'%()) | ||||||
|  |             self.out.write('<refentry id="gdbus-%s">\n'%(i.name)) | ||||||
|  |             self.out.write('  <refmeta>'%()) | ||||||
|  |             self.out.write('    <refentrytitle role="top_of_page" id="gdbus-interface-%s.top_of_page">%s</refentrytitle>\n'%(utils.dots_to_hyphens(i.name), i.name)) | ||||||
|  |             self.out.write('  <indexterm zone="gdbus-interface-%s.top_of_page"><primary sortas="%s">%s</primary></indexterm>\n'%(utils.dots_to_hyphens(i.name), i.name_without_prefix, i.name)) | ||||||
|  |             self.out.write('  </refmeta>'%()) | ||||||
|  |  | ||||||
|  |             self.out.write('  <refnamediv>'%()) | ||||||
|  |             self.out.write('    <refname>%s</refname>'%(i.name)) | ||||||
|  |             self.out.write('    <refpurpose>%s</refpurpose>'%(i.doc_string_brief)) | ||||||
|  |             self.out.write('  </refnamediv>'%()) | ||||||
|  |  | ||||||
|  |             if len(i.methods) > 0: | ||||||
|  |                 self.print_synopsis_methods(i) | ||||||
|  |             if len(i.signals) > 0: | ||||||
|  |                 self.print_synopsis_signals(i) | ||||||
|  |             if len(i.properties) > 0: | ||||||
|  |                 self.print_synopsis_properties(i) | ||||||
|  |  | ||||||
|  |             self.out.write('<refsect1 role="desc" id="gdbus-interface-%s">\n'%(utils.dots_to_hyphens(i.name))) | ||||||
|  |             self.out.write('  <title role="desc.title">Description</title>\n'%()) | ||||||
|  |             self.out.write('  %s\n'%(self.expand_paras(i.doc_string, True))) | ||||||
|  |             if len(i.since) > 0: | ||||||
|  |                 self.out.write('  <para role="since">Since %s</para>\n'%(i.since)) | ||||||
|  |             if i.deprecated: | ||||||
|  |                 self.out.write('<warning><para>The %s interface is deprecated.</para></warning>'%(i.name)) | ||||||
|  |             self.out.write('</refsect1>\n'%()) | ||||||
|  |  | ||||||
|  |             if len(i.methods) > 0: | ||||||
|  |                 self.out.write('<refsect1 role="details" id="gdbus-methods-%s">\n'%(i.name)) | ||||||
|  |                 self.out.write('  <title role="details.title">Method Details</title>\n'%()) | ||||||
|  |                 for m in i.methods: | ||||||
|  |                     self.print_method(i, m) | ||||||
|  |                 self.out.write('</refsect1>\n'%()) | ||||||
|  |  | ||||||
|  |             if len(i.signals) > 0: | ||||||
|  |                 self.out.write('<refsect1 role="details" id="gdbus-signals-%s">\n'%(i.name)) | ||||||
|  |                 self.out.write('  <title role="details.title">Signal Details</title>\n'%()) | ||||||
|  |                 for s in i.signals: | ||||||
|  |                     self.print_signal(i, s) | ||||||
|  |                 self.out.write('</refsect1>\n'%()) | ||||||
|  |  | ||||||
|  |             if len(i.properties) > 0: | ||||||
|  |                 self.out.write('<refsect1 role="details" id="gdbus-properties-%s">\n'%(i.name)) | ||||||
|  |                 self.out.write('  <title role="details.title">Property Details</title>\n'%()) | ||||||
|  |                 for s in i.properties: | ||||||
|  |                     self.print_property(i, s) | ||||||
|  |                 self.out.write('</refsect1>\n'%()) | ||||||
|  |  | ||||||
|  |             self.out.write('</refentry>\n') | ||||||
|  |             self.out.write('\n') | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/codegen_docbook.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										201
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/codegen_main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,201 @@ | |||||||
|  | # -*- Mode: Python -*- | ||||||
|  |  | ||||||
|  | # GDBus - GLib D-Bus Library | ||||||
|  | # | ||||||
|  | # Copyright (C) 2008-2011 Red Hat, Inc. | ||||||
|  | # | ||||||
|  | # This library is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU Lesser 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 | ||||||
|  | # Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General | ||||||
|  | # Public License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # Author: David Zeuthen <davidz@redhat.com> | ||||||
|  |  | ||||||
|  | import sys | ||||||
|  | import optparse | ||||||
|  |  | ||||||
|  | from . import config | ||||||
|  | from . import utils | ||||||
|  | from . import dbustypes | ||||||
|  | from . import parser | ||||||
|  | from . import codegen | ||||||
|  | from . import codegen_docbook | ||||||
|  |  | ||||||
|  | def find_arg(arg_list, arg_name): | ||||||
|  |     for a in arg_list: | ||||||
|  |         if a.name == arg_name: | ||||||
|  |             return a | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def find_method(iface, method): | ||||||
|  |     for m in iface.methods: | ||||||
|  |         if m.name == method: | ||||||
|  |             return m | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def find_signal(iface, signal): | ||||||
|  |     for m in iface.signals: | ||||||
|  |         if m.name == signal: | ||||||
|  |             return m | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def find_prop(iface, prop): | ||||||
|  |     for m in iface.properties: | ||||||
|  |         if m.name == prop: | ||||||
|  |             return m | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def apply_annotation(iface_list, iface, method, signal, prop, arg, key, value): | ||||||
|  |     iface_obj = None | ||||||
|  |     for i in iface_list: | ||||||
|  |         if i.name == iface: | ||||||
|  |             iface_obj = i | ||||||
|  |             break | ||||||
|  |  | ||||||
|  |     if iface_obj == None: | ||||||
|  |         raise RuntimeError('No interface %s'%iface) | ||||||
|  |  | ||||||
|  |     target_obj = None | ||||||
|  |  | ||||||
|  |     if method: | ||||||
|  |         method_obj = find_method(iface_obj, method) | ||||||
|  |         if method_obj == None: | ||||||
|  |             raise RuntimeError('No method %s on interface %s'%(method, iface)) | ||||||
|  |         if arg: | ||||||
|  |             arg_obj = find_arg(method_obj.in_args, arg) | ||||||
|  |             if (arg_obj == None): | ||||||
|  |                 arg_obj = find_arg(method_obj.out_args, arg) | ||||||
|  |                 if (arg_obj == None): | ||||||
|  |                     raise RuntimeError('No arg %s on method %s on interface %s'%(arg, method, iface)) | ||||||
|  |             target_obj = arg_obj | ||||||
|  |         else: | ||||||
|  |             target_obj = method_obj | ||||||
|  |     elif signal: | ||||||
|  |         signal_obj = find_signal(iface_obj, signal) | ||||||
|  |         if signal_obj == None: | ||||||
|  |             raise RuntimeError('No signal %s on interface %s'%(signal, iface)) | ||||||
|  |         if arg: | ||||||
|  |             arg_obj = find_arg(signal_obj.args, arg) | ||||||
|  |             if (arg_obj == None): | ||||||
|  |                 raise RuntimeError('No arg %s on signal %s on interface %s'%(arg, signal, iface)) | ||||||
|  |             target_obj = arg_obj | ||||||
|  |         else: | ||||||
|  |             target_obj = signal_obj | ||||||
|  |     elif prop: | ||||||
|  |         prop_obj = find_prop(iface_obj, prop) | ||||||
|  |         if prop_obj == None: | ||||||
|  |             raise RuntimeError('No property %s on interface %s'%(prop, iface)) | ||||||
|  |         target_obj = prop_obj | ||||||
|  |     else: | ||||||
|  |         target_obj = iface_obj | ||||||
|  |     target_obj.annotations.insert(0, dbustypes.Annotation(key, value)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def apply_annotations(iface_list, annotation_list): | ||||||
|  |     # apply annotations given on the command line | ||||||
|  |     for (what, key, value) in annotation_list: | ||||||
|  |         pos = what.find('::') | ||||||
|  |         if pos != -1: | ||||||
|  |             # signal | ||||||
|  |             iface = what[0:pos]; | ||||||
|  |             signal = what[pos + 2:] | ||||||
|  |             pos = signal.find('[') | ||||||
|  |             if pos != -1: | ||||||
|  |                 arg = signal[pos + 1:] | ||||||
|  |                 signal = signal[0:pos] | ||||||
|  |                 pos = arg.find(']') | ||||||
|  |                 arg = arg[0:pos] | ||||||
|  |                 apply_annotation(iface_list, iface, None, signal, None, arg, key, value) | ||||||
|  |             else: | ||||||
|  |                 apply_annotation(iface_list, iface, None, signal, None, None, key, value) | ||||||
|  |         else: | ||||||
|  |             pos = what.find(':') | ||||||
|  |             if pos != -1: | ||||||
|  |                 # property | ||||||
|  |                 iface = what[0:pos]; | ||||||
|  |                 prop = what[pos + 1:] | ||||||
|  |                 apply_annotation(iface_list, iface, None, None, prop, None, key, value) | ||||||
|  |             else: | ||||||
|  |                 pos = what.find('()') | ||||||
|  |                 if pos != -1: | ||||||
|  |                     # method | ||||||
|  |                     combined = what[0:pos] | ||||||
|  |                     pos = combined.rfind('.') | ||||||
|  |                     iface = combined[0:pos] | ||||||
|  |                     method = combined[pos + 1:] | ||||||
|  |                     pos = what.find('[') | ||||||
|  |                     if pos != -1: | ||||||
|  |                         arg = what[pos + 1:] | ||||||
|  |                         pos = arg.find(']') | ||||||
|  |                         arg = arg[0:pos] | ||||||
|  |                         apply_annotation(iface_list, iface, method, None, None, arg, key, value) | ||||||
|  |                     else: | ||||||
|  |                         apply_annotation(iface_list, iface, method, None, None, None, key, value) | ||||||
|  |                 else: | ||||||
|  |                     # must be an interface | ||||||
|  |                     iface = what | ||||||
|  |                     apply_annotation(iface_list, iface, None, None, None, None, key, value) | ||||||
|  |  | ||||||
|  | def codegen_main(): | ||||||
|  |     arg_parser = optparse.OptionParser('%prog [options]') | ||||||
|  |     arg_parser.add_option('', '--xml-files', metavar='FILE', action='append', | ||||||
|  |                           help='D-Bus introspection XML file') | ||||||
|  |     arg_parser.add_option('', '--interface-prefix', metavar='PREFIX', default='', | ||||||
|  |                             help='String to strip from D-Bus interface names for code and docs') | ||||||
|  |     arg_parser.add_option('', '--c-namespace', metavar='NAMESPACE', default='', | ||||||
|  |                             help='The namespace to use for generated C code') | ||||||
|  |     arg_parser.add_option('', '--c-generate-object-manager', action='store_true', | ||||||
|  |                             help='Generate a GDBusObjectManagerClient subclass when generating C code') | ||||||
|  |     arg_parser.add_option('', '--generate-c-code', metavar='OUTFILES', | ||||||
|  |                           help='Generate C code in OUTFILES.[ch]') | ||||||
|  |     arg_parser.add_option('', '--generate-docbook', metavar='OUTFILES', | ||||||
|  |                           help='Generate Docbook in OUTFILES-org.Project.IFace.xml') | ||||||
|  |     arg_parser.add_option('', '--annotate', nargs=3, action='append', metavar='WHAT KEY VALUE', | ||||||
|  |                           help='Add annotation (may be used several times)') | ||||||
|  |     (opts, args) = arg_parser.parse_args(); | ||||||
|  |  | ||||||
|  |     all_ifaces = [] | ||||||
|  |     for fname in args: | ||||||
|  |         f = open(fname, 'rb') | ||||||
|  |         xml_data = f.read() | ||||||
|  |         f.close() | ||||||
|  |         parsed_ifaces = parser.parse_dbus_xml(xml_data) | ||||||
|  |         all_ifaces.extend(parsed_ifaces) | ||||||
|  |  | ||||||
|  |     if opts.annotate != None: | ||||||
|  |         apply_annotations(all_ifaces, opts.annotate) | ||||||
|  |  | ||||||
|  |     for i in all_ifaces: | ||||||
|  |         i.post_process(opts.interface_prefix, opts.c_namespace) | ||||||
|  |  | ||||||
|  |     docbook = opts.generate_docbook | ||||||
|  |     docbook_gen = codegen_docbook.DocbookCodeGenerator(all_ifaces, docbook); | ||||||
|  |     if docbook: | ||||||
|  |         ret = docbook_gen.generate() | ||||||
|  |  | ||||||
|  |     c_code = opts.generate_c_code | ||||||
|  |     if c_code: | ||||||
|  |         h = open(c_code + '.h', 'w') | ||||||
|  |         c = open(c_code + '.c', 'w') | ||||||
|  |         gen = codegen.CodeGenerator(all_ifaces, | ||||||
|  |                                     opts.c_namespace, | ||||||
|  |                                     opts.interface_prefix, | ||||||
|  |                                     opts.c_generate_object_manager, | ||||||
|  |                                     docbook_gen, | ||||||
|  |                                     h, c); | ||||||
|  |         ret = gen.generate() | ||||||
|  |         h.close() | ||||||
|  |         c.close() | ||||||
|  |  | ||||||
|  |     sys.exit(0) | ||||||
|  |  | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     codegen_main() | ||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/codegen_main.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										25
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/config.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,25 @@ | |||||||
|  | # -*- Mode: Python -*- | ||||||
|  |  | ||||||
|  | # GDBus - GLib D-Bus Library | ||||||
|  | # | ||||||
|  | # Copyright (C) 2008-2011 Red Hat, Inc. | ||||||
|  | # | ||||||
|  | # This library is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU Lesser 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 | ||||||
|  | # Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General | ||||||
|  | # Public License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # Author: David Zeuthen <davidz@redhat.com> | ||||||
|  |  | ||||||
|  | DATADIR = "${prefix}/share" | ||||||
|  | DATADIR = DATADIR.replace( | ||||||
|  |     "${prefix}", "/usr/local") | ||||||
|  | VERSION = "2.48.0" | ||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/config.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										424
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/dbustypes.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,424 @@ | |||||||
|  | # -*- Mode: Python -*- | ||||||
|  |  | ||||||
|  | # GDBus - GLib D-Bus Library | ||||||
|  | # | ||||||
|  | # Copyright (C) 2008-2011 Red Hat, Inc. | ||||||
|  | # | ||||||
|  | # This library is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU Lesser 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 | ||||||
|  | # Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General | ||||||
|  | # Public License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # Author: David Zeuthen <davidz@redhat.com> | ||||||
|  |  | ||||||
|  | from . import utils | ||||||
|  |  | ||||||
|  | class Annotation: | ||||||
|  |     def __init__(self, key, value): | ||||||
|  |         self.key = key | ||||||
|  |         self.value = value | ||||||
|  |         self.annotations = [] | ||||||
|  |  | ||||||
|  | class Arg: | ||||||
|  |     def __init__(self, name, signature): | ||||||
|  |         self.name = name | ||||||
|  |         self.signature = signature | ||||||
|  |         self.annotations = [] | ||||||
|  |         self.doc_string = '' | ||||||
|  |         self.since = '' | ||||||
|  |  | ||||||
|  |     def post_process(self, interface_prefix, cns, cns_upper, cns_lower, arg_number): | ||||||
|  |         if len(self.doc_string) == 0: | ||||||
|  |             self.doc_string = utils.lookup_docs(self.annotations) | ||||||
|  |         if len(self.since) == 0: | ||||||
|  |             self.since = utils.lookup_since(self.annotations) | ||||||
|  |  | ||||||
|  |         if self.name == None: | ||||||
|  |             self.name = 'unnamed_arg%d'%arg_number | ||||||
|  |         # default to GVariant | ||||||
|  |         self.ctype_in_g  = 'GVariant *' | ||||||
|  |         self.ctype_in  = 'GVariant *' | ||||||
|  |         self.ctype_in_dup  = 'GVariant *' | ||||||
|  |         self.ctype_out = 'GVariant **' | ||||||
|  |         self.gtype = 'G_TYPE_VARIANT' | ||||||
|  |         self.free_func = 'g_variant_unref' | ||||||
|  |         self.format_in = '@' + self.signature | ||||||
|  |         self.format_out = '@' + self.signature | ||||||
|  |         self.gvariant_get = 'XXX' | ||||||
|  |         self.gvalue_get = 'g_value_get_variant' | ||||||
|  |         if not utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.ForceGVariant'): | ||||||
|  |             if self.signature == 'b': | ||||||
|  |                 self.ctype_in_g  = 'gboolean ' | ||||||
|  |                 self.ctype_in  = 'gboolean ' | ||||||
|  |                 self.ctype_out = 'gboolean *' | ||||||
|  |                 self.gtype = 'G_TYPE_BOOLEAN' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'b' | ||||||
|  |                 self.format_out = 'b' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_boolean' | ||||||
|  |                 self.gvalue_get = 'g_value_get_boolean' | ||||||
|  |             elif self.signature == 'y': | ||||||
|  |                 self.ctype_in_g  = 'guchar ' | ||||||
|  |                 self.ctype_in  = 'guchar ' | ||||||
|  |                 self.ctype_out = 'guchar *' | ||||||
|  |                 self.gtype = 'G_TYPE_UCHAR' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'y' | ||||||
|  |                 self.format_out = 'y' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_byte' | ||||||
|  |                 self.gvalue_get = 'g_value_get_uchar' | ||||||
|  |             elif self.signature == 'n': | ||||||
|  |                 self.ctype_in_g  = 'gint ' | ||||||
|  |                 self.ctype_in  = 'gint16 ' | ||||||
|  |                 self.ctype_out = 'gint16 *' | ||||||
|  |                 self.gtype = 'G_TYPE_INT' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'n' | ||||||
|  |                 self.format_out = 'n' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_int16' | ||||||
|  |                 self.gvalue_get = 'g_value_get_int' | ||||||
|  |             elif self.signature == 'q': | ||||||
|  |                 self.ctype_in_g  = 'guint ' | ||||||
|  |                 self.ctype_in  = 'guint16 ' | ||||||
|  |                 self.ctype_out = 'guint16 *' | ||||||
|  |                 self.gtype = 'G_TYPE_UINT' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'q' | ||||||
|  |                 self.format_out = 'q' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_uint16' | ||||||
|  |                 self.gvalue_get = 'g_value_get_uint' | ||||||
|  |             elif self.signature == 'i': | ||||||
|  |                 self.ctype_in_g  = 'gint ' | ||||||
|  |                 self.ctype_in  = 'gint ' | ||||||
|  |                 self.ctype_out = 'gint *' | ||||||
|  |                 self.gtype = 'G_TYPE_INT' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'i' | ||||||
|  |                 self.format_out = 'i' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_int32' | ||||||
|  |                 self.gvalue_get = 'g_value_get_int' | ||||||
|  |             elif self.signature == 'u': | ||||||
|  |                 self.ctype_in_g  = 'guint ' | ||||||
|  |                 self.ctype_in  = 'guint ' | ||||||
|  |                 self.ctype_out = 'guint *' | ||||||
|  |                 self.gtype = 'G_TYPE_UINT' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'u' | ||||||
|  |                 self.format_out = 'u' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_uint32' | ||||||
|  |                 self.gvalue_get = 'g_value_get_uint' | ||||||
|  |             elif self.signature == 'x': | ||||||
|  |                 self.ctype_in_g  = 'gint64 ' | ||||||
|  |                 self.ctype_in  = 'gint64 ' | ||||||
|  |                 self.ctype_out = 'gint64 *' | ||||||
|  |                 self.gtype = 'G_TYPE_INT64' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'x' | ||||||
|  |                 self.format_out = 'x' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_int64' | ||||||
|  |                 self.gvalue_get = 'g_value_get_int64' | ||||||
|  |             elif self.signature == 't': | ||||||
|  |                 self.ctype_in_g  = 'guint64 ' | ||||||
|  |                 self.ctype_in  = 'guint64 ' | ||||||
|  |                 self.ctype_out = 'guint64 *' | ||||||
|  |                 self.gtype = 'G_TYPE_UINT64' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 't' | ||||||
|  |                 self.format_out = 't' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_uint64' | ||||||
|  |                 self.gvalue_get = 'g_value_get_uint64' | ||||||
|  |             elif self.signature == 'd': | ||||||
|  |                 self.ctype_in_g  = 'gdouble ' | ||||||
|  |                 self.ctype_in  = 'gdouble ' | ||||||
|  |                 self.ctype_out = 'gdouble *' | ||||||
|  |                 self.gtype = 'G_TYPE_DOUBLE' | ||||||
|  |                 self.free_func = None | ||||||
|  |                 self.format_in = 'd' | ||||||
|  |                 self.format_out = 'd' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_double' | ||||||
|  |                 self.gvalue_get = 'g_value_get_double' | ||||||
|  |             elif self.signature == 's': | ||||||
|  |                 self.ctype_in_g  = 'const gchar *' | ||||||
|  |                 self.ctype_in  = 'const gchar *' | ||||||
|  |                 self.ctype_in_dup  = 'gchar *' | ||||||
|  |                 self.ctype_out = 'gchar **' | ||||||
|  |                 self.gtype = 'G_TYPE_STRING' | ||||||
|  |                 self.free_func = 'g_free' | ||||||
|  |                 self.format_in = 's' | ||||||
|  |                 self.format_out = 's' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_string' | ||||||
|  |                 self.gvalue_get = 'g_value_get_string' | ||||||
|  |             elif self.signature == 'o': | ||||||
|  |                 self.ctype_in_g  = 'const gchar *' | ||||||
|  |                 self.ctype_in  = 'const gchar *' | ||||||
|  |                 self.ctype_in_dup  = 'gchar *' | ||||||
|  |                 self.ctype_out = 'gchar **' | ||||||
|  |                 self.gtype = 'G_TYPE_STRING' | ||||||
|  |                 self.free_func = 'g_free' | ||||||
|  |                 self.format_in = 'o' | ||||||
|  |                 self.format_out = 'o' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_string' | ||||||
|  |                 self.gvalue_get = 'g_value_get_string' | ||||||
|  |             elif self.signature == 'g': | ||||||
|  |                 self.ctype_in_g  = 'const gchar *' | ||||||
|  |                 self.ctype_in  = 'const gchar *' | ||||||
|  |                 self.ctype_in_dup  = 'gchar *' | ||||||
|  |                 self.ctype_out = 'gchar **' | ||||||
|  |                 self.gtype = 'G_TYPE_STRING' | ||||||
|  |                 self.free_func = 'g_free' | ||||||
|  |                 self.format_in = 'g' | ||||||
|  |                 self.format_out = 'g' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_string' | ||||||
|  |                 self.gvalue_get = 'g_value_get_string' | ||||||
|  |             elif self.signature == 'ay': | ||||||
|  |                 self.ctype_in_g  = 'const gchar *' | ||||||
|  |                 self.ctype_in  = 'const gchar *' | ||||||
|  |                 self.ctype_in_dup  = 'gchar *' | ||||||
|  |                 self.ctype_out = 'gchar **' | ||||||
|  |                 self.gtype = 'G_TYPE_STRING' | ||||||
|  |                 self.free_func = 'g_free' | ||||||
|  |                 self.format_in = '^ay' | ||||||
|  |                 self.format_out = '^ay' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_bytestring' | ||||||
|  |                 self.gvalue_get = 'g_value_get_string' | ||||||
|  |             elif self.signature == 'as': | ||||||
|  |                 self.ctype_in_g  = 'const gchar *const *' | ||||||
|  |                 self.ctype_in  = 'const gchar *const *' | ||||||
|  |                 self.ctype_in_dup  = 'gchar **' | ||||||
|  |                 self.ctype_out = 'gchar ***' | ||||||
|  |                 self.gtype = 'G_TYPE_STRV' | ||||||
|  |                 self.free_func = 'g_strfreev' | ||||||
|  |                 self.format_in = '^as' | ||||||
|  |                 self.format_out = '^as' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_strv' | ||||||
|  |                 self.gvalue_get = 'g_value_get_boxed' | ||||||
|  |             elif self.signature == 'ao': | ||||||
|  |                 self.ctype_in_g  = 'const gchar *const *' | ||||||
|  |                 self.ctype_in  = 'const gchar *const *' | ||||||
|  |                 self.ctype_in_dup  = 'gchar **' | ||||||
|  |                 self.ctype_out = 'gchar ***' | ||||||
|  |                 self.gtype = 'G_TYPE_STRV' | ||||||
|  |                 self.free_func = 'g_strfreev' | ||||||
|  |                 self.format_in = '^ao' | ||||||
|  |                 self.format_out = '^ao' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_objv' | ||||||
|  |                 self.gvalue_get = 'g_value_get_boxed' | ||||||
|  |             elif self.signature == 'aay': | ||||||
|  |                 self.ctype_in_g  = 'const gchar *const *' | ||||||
|  |                 self.ctype_in  = 'const gchar *const *' | ||||||
|  |                 self.ctype_in_dup  = 'gchar **' | ||||||
|  |                 self.ctype_out = 'gchar ***' | ||||||
|  |                 self.gtype = 'G_TYPE_STRV' | ||||||
|  |                 self.free_func = 'g_strfreev' | ||||||
|  |                 self.format_in = '^aay' | ||||||
|  |                 self.format_out = '^aay' | ||||||
|  |                 self.gvariant_get = 'g_variant_get_bytestring_array' | ||||||
|  |                 self.gvalue_get = 'g_value_get_boxed' | ||||||
|  |  | ||||||
|  | class Method: | ||||||
|  |     def __init__(self, name): | ||||||
|  |         self.name = name | ||||||
|  |         self.in_args = [] | ||||||
|  |         self.out_args = [] | ||||||
|  |         self.annotations = [] | ||||||
|  |         self.doc_string = '' | ||||||
|  |         self.since = '' | ||||||
|  |         self.deprecated = False | ||||||
|  |  | ||||||
|  |     def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface): | ||||||
|  |         if len(self.doc_string) == 0: | ||||||
|  |             self.doc_string = utils.lookup_docs(self.annotations) | ||||||
|  |         if len(self.since) == 0: | ||||||
|  |             self.since = utils.lookup_since(self.annotations) | ||||||
|  |             if len(self.since) == 0: | ||||||
|  |                 self.since = containing_iface.since | ||||||
|  |  | ||||||
|  |         name = self.name | ||||||
|  |         overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name') | ||||||
|  |         if utils.is_ugly_case(overridden_name): | ||||||
|  |             self.name_lower = overridden_name.lower() | ||||||
|  |         else: | ||||||
|  |             if overridden_name: | ||||||
|  |                 name = overridden_name | ||||||
|  |             self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_') | ||||||
|  |         self.name_hyphen = self.name_lower.replace('_', '-') | ||||||
|  |  | ||||||
|  |         arg_count = 0 | ||||||
|  |         for a in self.in_args: | ||||||
|  |             a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count) | ||||||
|  |             arg_count += 1 | ||||||
|  |  | ||||||
|  |         for a in self.out_args: | ||||||
|  |             a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count) | ||||||
|  |             arg_count += 1 | ||||||
|  |  | ||||||
|  |         if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true': | ||||||
|  |             self.deprecated = True | ||||||
|  |  | ||||||
|  | class Signal: | ||||||
|  |     def __init__(self, name): | ||||||
|  |         self.name = name | ||||||
|  |         self.args = [] | ||||||
|  |         self.annotations = [] | ||||||
|  |         self.doc_string = '' | ||||||
|  |         self.since = '' | ||||||
|  |         self.deprecated = False | ||||||
|  |  | ||||||
|  |     def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface): | ||||||
|  |         if len(self.doc_string) == 0: | ||||||
|  |             self.doc_string = utils.lookup_docs(self.annotations) | ||||||
|  |         if len(self.since) == 0: | ||||||
|  |             self.since = utils.lookup_since(self.annotations) | ||||||
|  |             if len(self.since) == 0: | ||||||
|  |                 self.since = containing_iface.since | ||||||
|  |  | ||||||
|  |         name = self.name | ||||||
|  |         overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name') | ||||||
|  |         if utils.is_ugly_case(overridden_name): | ||||||
|  |             self.name_lower = overridden_name.lower() | ||||||
|  |         else: | ||||||
|  |             if overridden_name: | ||||||
|  |                 name = overridden_name | ||||||
|  |             self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_') | ||||||
|  |         self.name_hyphen = self.name_lower.replace('_', '-') | ||||||
|  |  | ||||||
|  |         arg_count = 0 | ||||||
|  |         for a in self.args: | ||||||
|  |             a.post_process(interface_prefix, cns, cns_upper, cns_lower, arg_count) | ||||||
|  |             arg_count += 1 | ||||||
|  |  | ||||||
|  |         if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true': | ||||||
|  |             self.deprecated = True | ||||||
|  |  | ||||||
|  | class Property: | ||||||
|  |     def __init__(self, name, signature, access): | ||||||
|  |         self.name = name | ||||||
|  |         self.signature = signature | ||||||
|  |         self.access = access | ||||||
|  |         self.annotations = [] | ||||||
|  |         self.arg = Arg('value', self.signature) | ||||||
|  |         self.arg.annotations = self.annotations | ||||||
|  |         self.readable = False | ||||||
|  |         self.writable = False | ||||||
|  |         if self.access == 'readwrite': | ||||||
|  |             self.readable = True | ||||||
|  |             self.writable = True | ||||||
|  |         elif self.access == 'read': | ||||||
|  |             self.readable = True | ||||||
|  |         elif self.access == 'write': | ||||||
|  |             self.writable = True | ||||||
|  |         else: | ||||||
|  |             raise RuntimeError('Invalid access type %s'%self.access) | ||||||
|  |         self.doc_string = '' | ||||||
|  |         self.since = '' | ||||||
|  |         self.deprecated = False | ||||||
|  |  | ||||||
|  |     def post_process(self, interface_prefix, cns, cns_upper, cns_lower, containing_iface): | ||||||
|  |         if len(self.doc_string) == 0: | ||||||
|  |             self.doc_string = utils.lookup_docs(self.annotations) | ||||||
|  |         if len(self.since) == 0: | ||||||
|  |             self.since = utils.lookup_since(self.annotations) | ||||||
|  |             if len(self.since) == 0: | ||||||
|  |                 self.since = containing_iface.since | ||||||
|  |  | ||||||
|  |         name = self.name | ||||||
|  |         overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name') | ||||||
|  |         if utils.is_ugly_case(overridden_name): | ||||||
|  |             self.name_lower = overridden_name.lower() | ||||||
|  |         else: | ||||||
|  |             if overridden_name: | ||||||
|  |                 name = overridden_name | ||||||
|  |             self.name_lower = utils.camel_case_to_uscore(name).lower().replace('-', '_') | ||||||
|  |         self.name_hyphen = self.name_lower.replace('_', '-') | ||||||
|  |         # don't clash with the GType getter, e.g.: GType foo_bar_get_type (void); G_GNUC_CONST | ||||||
|  |         if self.name_lower == 'type': | ||||||
|  |             self.name_lower = 'type_' | ||||||
|  |  | ||||||
|  |         # recalculate arg | ||||||
|  |         self.arg.annotations = self.annotations | ||||||
|  |         self.arg.post_process(interface_prefix, cns, cns_upper, cns_lower, 0) | ||||||
|  |  | ||||||
|  |         if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true': | ||||||
|  |             self.deprecated = True | ||||||
|  |  | ||||||
|  | class Interface: | ||||||
|  |     def __init__(self, name): | ||||||
|  |         self.name = name | ||||||
|  |         self.methods = [] | ||||||
|  |         self.signals = [] | ||||||
|  |         self.properties = [] | ||||||
|  |         self.annotations = [] | ||||||
|  |         self.doc_string = '' | ||||||
|  |         self.doc_string_brief = '' | ||||||
|  |         self.since = '' | ||||||
|  |         self.deprecated = False | ||||||
|  |  | ||||||
|  |     def post_process(self, interface_prefix, c_namespace): | ||||||
|  |         if len(self.doc_string) == 0: | ||||||
|  |             self.doc_string = utils.lookup_docs(self.annotations) | ||||||
|  |         if len(self.doc_string_brief) == 0: | ||||||
|  |             self.doc_string_brief = utils.lookup_brief_docs(self.annotations) | ||||||
|  |         if len(self.since) == 0: | ||||||
|  |             self.since = utils.lookup_since(self.annotations) | ||||||
|  |  | ||||||
|  |         if len(c_namespace) > 0: | ||||||
|  |             if utils.is_ugly_case(c_namespace): | ||||||
|  |                 cns = c_namespace.replace('_', '') | ||||||
|  |                 cns_upper = c_namespace.upper() + '_' | ||||||
|  |                 cns_lower = c_namespace.lower() + '_' | ||||||
|  |             else: | ||||||
|  |                 cns = c_namespace | ||||||
|  |                 cns_upper = utils.camel_case_to_uscore(c_namespace).upper() + '_' | ||||||
|  |                 cns_lower = utils.camel_case_to_uscore(c_namespace).lower() + '_' | ||||||
|  |         else: | ||||||
|  |             cns = '' | ||||||
|  |             cns_upper = '' | ||||||
|  |             cns_lower = '' | ||||||
|  |  | ||||||
|  |         overridden_name = utils.lookup_annotation(self.annotations, 'org.gtk.GDBus.C.Name') | ||||||
|  |         if utils.is_ugly_case(overridden_name): | ||||||
|  |             name = overridden_name.replace('_', '') | ||||||
|  |             name_with_ns = cns + name | ||||||
|  |             self.name_without_prefix = name | ||||||
|  |             self.camel_name = name_with_ns | ||||||
|  |             self.ns_upper = cns_upper | ||||||
|  |             self.name_lower = cns_lower + overridden_name.lower() | ||||||
|  |             self.name_upper = overridden_name.upper() | ||||||
|  |  | ||||||
|  |             #raise RuntimeError('handle Ugly_Case ', overridden_name) | ||||||
|  |         else: | ||||||
|  |             if overridden_name: | ||||||
|  |                 name = overridden_name | ||||||
|  |             else: | ||||||
|  |                 name = self.name | ||||||
|  |                 if name.startswith(interface_prefix): | ||||||
|  |                     name = name[len(interface_prefix):] | ||||||
|  |             self.name_without_prefix = name | ||||||
|  |             name = utils.strip_dots(name) | ||||||
|  |             name_with_ns = utils.strip_dots(cns + '.' + name) | ||||||
|  |             self.camel_name = name_with_ns | ||||||
|  |             self.ns_upper = cns_upper | ||||||
|  |             self.name_lower = cns_lower + utils.camel_case_to_uscore(name) | ||||||
|  |             self.name_upper = utils.camel_case_to_uscore(name).upper() | ||||||
|  |  | ||||||
|  |         self.name_hyphen = self.name_upper.lower().replace('_', '-') | ||||||
|  |  | ||||||
|  |         if utils.lookup_annotation(self.annotations, 'org.freedesktop.DBus.Deprecated') == 'true': | ||||||
|  |             self.deprecated = True | ||||||
|  |  | ||||||
|  |         for m in self.methods: | ||||||
|  |             m.post_process(interface_prefix, cns, cns_upper, cns_lower, self) | ||||||
|  |  | ||||||
|  |         for s in self.signals: | ||||||
|  |             s.post_process(interface_prefix, cns, cns_upper, cns_lower, self) | ||||||
|  |  | ||||||
|  |         for p in self.properties: | ||||||
|  |             p.post_process(interface_prefix, cns, cns_upper, cns_lower, self) | ||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/dbustypes.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										288
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/parser.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,288 @@ | |||||||
|  | # -*- Mode: Python -*- | ||||||
|  |  | ||||||
|  | # GDBus - GLib D-Bus Library | ||||||
|  | # | ||||||
|  | # Copyright (C) 2008-2011 Red Hat, Inc. | ||||||
|  | # | ||||||
|  | # This library is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU Lesser 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 | ||||||
|  | # Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General | ||||||
|  | # Public License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # Author: David Zeuthen <davidz@redhat.com> | ||||||
|  |  | ||||||
|  | import sys | ||||||
|  | import xml.parsers.expat | ||||||
|  |  | ||||||
|  | from . import dbustypes | ||||||
|  |  | ||||||
|  | class DBusXMLParser: | ||||||
|  |     STATE_TOP = 'top' | ||||||
|  |     STATE_NODE = 'node' | ||||||
|  |     STATE_INTERFACE = 'interface' | ||||||
|  |     STATE_METHOD = 'method' | ||||||
|  |     STATE_SIGNAL = 'signal' | ||||||
|  |     STATE_PROPERTY = 'property' | ||||||
|  |     STATE_ARG = 'arg' | ||||||
|  |     STATE_ANNOTATION = 'annotation' | ||||||
|  |     STATE_IGNORED = 'ignored' | ||||||
|  |  | ||||||
|  |     def __init__(self, xml_data): | ||||||
|  |         self._parser = xml.parsers.expat.ParserCreate() | ||||||
|  |         self._parser.CommentHandler = self.handle_comment | ||||||
|  |         self._parser.CharacterDataHandler = self.handle_char_data | ||||||
|  |         self._parser.StartElementHandler = self.handle_start_element | ||||||
|  |         self._parser.EndElementHandler = self.handle_end_element | ||||||
|  |  | ||||||
|  |         self.parsed_interfaces = [] | ||||||
|  |         self._cur_object = None | ||||||
|  |  | ||||||
|  |         self.state = DBusXMLParser.STATE_TOP | ||||||
|  |         self.state_stack = [] | ||||||
|  |         self._cur_object = None | ||||||
|  |         self._cur_object_stack = [] | ||||||
|  |  | ||||||
|  |         self.doc_comment_last_symbol = '' | ||||||
|  |  | ||||||
|  |         self._parser.Parse(xml_data) | ||||||
|  |  | ||||||
|  |     COMMENT_STATE_BEGIN = 'begin' | ||||||
|  |     COMMENT_STATE_PARAMS = 'params' | ||||||
|  |     COMMENT_STATE_BODY = 'body' | ||||||
|  |     COMMENT_STATE_SKIP = 'skip' | ||||||
|  |     def handle_comment(self, data): | ||||||
|  |         comment_state = DBusXMLParser.COMMENT_STATE_BEGIN; | ||||||
|  |         lines = data.split('\n') | ||||||
|  |         symbol = '' | ||||||
|  |         body = '' | ||||||
|  |         in_para = False | ||||||
|  |         params = {} | ||||||
|  |         for line in lines: | ||||||
|  |             orig_line = line | ||||||
|  |             line = line.lstrip() | ||||||
|  |             if comment_state == DBusXMLParser.COMMENT_STATE_BEGIN: | ||||||
|  |                 if len(line) > 0: | ||||||
|  |                     colon_index = line.find(': ') | ||||||
|  |                     if colon_index == -1: | ||||||
|  |                         if line.endswith(':'): | ||||||
|  |                             symbol = line[0:len(line)-1] | ||||||
|  |                             comment_state = DBusXMLParser.COMMENT_STATE_PARAMS | ||||||
|  |                         else: | ||||||
|  |                             comment_state = DBusXMLParser.COMMENT_STATE_SKIP | ||||||
|  |                     else: | ||||||
|  |                         symbol = line[0:colon_index] | ||||||
|  |                         rest_of_line = line[colon_index+2:].strip() | ||||||
|  |                         if len(rest_of_line) > 0: | ||||||
|  |                             body += '<para>' + rest_of_line + '</para>' | ||||||
|  |                         comment_state = DBusXMLParser.COMMENT_STATE_PARAMS | ||||||
|  |             elif comment_state == DBusXMLParser.COMMENT_STATE_PARAMS: | ||||||
|  |                 if line.startswith('@'): | ||||||
|  |                     colon_index = line.find(': ') | ||||||
|  |                     if colon_index == -1: | ||||||
|  |                         comment_state = DBusXMLParser.COMMENT_STATE_BODY | ||||||
|  |                         if not in_para: | ||||||
|  |                             body += '<para>' | ||||||
|  |                             in_para = True | ||||||
|  |                         body += orig_line + '\n' | ||||||
|  |                     else: | ||||||
|  |                         param = line[1:colon_index] | ||||||
|  |                         docs = line[colon_index + 2:] | ||||||
|  |                         params[param] = docs | ||||||
|  |                 else: | ||||||
|  |                     comment_state = DBusXMLParser.COMMENT_STATE_BODY | ||||||
|  |                     if len(line) > 0: | ||||||
|  |                         if not in_para: | ||||||
|  |                             body += '<para>' | ||||||
|  |                             in_para = True | ||||||
|  |                         body += orig_line + '\n' | ||||||
|  |             elif comment_state == DBusXMLParser.COMMENT_STATE_BODY: | ||||||
|  |                 if len(line) > 0: | ||||||
|  |                     if not in_para: | ||||||
|  |                         body += '<para>' | ||||||
|  |                         in_para = True | ||||||
|  |                     body += orig_line + '\n' | ||||||
|  |                 else: | ||||||
|  |                     if in_para: | ||||||
|  |                         body += '</para>' | ||||||
|  |                         in_para = False | ||||||
|  |         if in_para: | ||||||
|  |             body += '</para>' | ||||||
|  |  | ||||||
|  |         if symbol != '': | ||||||
|  |             self.doc_comment_last_symbol = symbol | ||||||
|  |             self.doc_comment_params = params | ||||||
|  |             self.doc_comment_body = body | ||||||
|  |  | ||||||
|  |     def handle_char_data(self, data): | ||||||
|  |         #print 'char_data=%s'%data | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     def handle_start_element(self, name, attrs): | ||||||
|  |         old_state = self.state | ||||||
|  |         old_cur_object = self._cur_object | ||||||
|  |         if self.state == DBusXMLParser.STATE_IGNORED: | ||||||
|  |             self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |         elif self.state == DBusXMLParser.STATE_TOP: | ||||||
|  |             if name == DBusXMLParser.STATE_NODE: | ||||||
|  |                 self.state = DBusXMLParser.STATE_NODE | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |         elif self.state == DBusXMLParser.STATE_NODE: | ||||||
|  |             if name == DBusXMLParser.STATE_INTERFACE: | ||||||
|  |                 self.state = DBusXMLParser.STATE_INTERFACE | ||||||
|  |                 iface = dbustypes.Interface(attrs['name']) | ||||||
|  |                 self._cur_object = iface | ||||||
|  |                 self.parsed_interfaces.append(iface) | ||||||
|  |             elif name == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ANNOTATION | ||||||
|  |                 anno = dbustypes.Annotation(attrs['name'], attrs['value']) | ||||||
|  |                 self._cur_object.annotations.append(anno) | ||||||
|  |                 self._cur_object = anno | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |  | ||||||
|  |             # assign docs, if any | ||||||
|  |             if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']: | ||||||
|  |                 self._cur_object.doc_string = self.doc_comment_body | ||||||
|  |                 if 'short_description' in self.doc_comment_params: | ||||||
|  |                     short_description = self.doc_comment_params['short_description'] | ||||||
|  |                     self._cur_object.doc_string_brief = short_description | ||||||
|  |                 if 'since' in self.doc_comment_params: | ||||||
|  |                     self._cur_object.since = self.doc_comment_params['since'] | ||||||
|  |  | ||||||
|  |         elif self.state == DBusXMLParser.STATE_INTERFACE: | ||||||
|  |             if name == DBusXMLParser.STATE_METHOD: | ||||||
|  |                 self.state = DBusXMLParser.STATE_METHOD | ||||||
|  |                 method = dbustypes.Method(attrs['name']) | ||||||
|  |                 self._cur_object.methods.append(method) | ||||||
|  |                 self._cur_object = method | ||||||
|  |             elif name == DBusXMLParser.STATE_SIGNAL: | ||||||
|  |                 self.state = DBusXMLParser.STATE_SIGNAL | ||||||
|  |                 signal = dbustypes.Signal(attrs['name']) | ||||||
|  |                 self._cur_object.signals.append(signal) | ||||||
|  |                 self._cur_object = signal | ||||||
|  |             elif name == DBusXMLParser.STATE_PROPERTY: | ||||||
|  |                 self.state = DBusXMLParser.STATE_PROPERTY | ||||||
|  |                 prop = dbustypes.Property(attrs['name'], attrs['type'], attrs['access']) | ||||||
|  |                 self._cur_object.properties.append(prop) | ||||||
|  |                 self._cur_object = prop | ||||||
|  |             elif name == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ANNOTATION | ||||||
|  |                 anno = dbustypes.Annotation(attrs['name'], attrs['value']) | ||||||
|  |                 self._cur_object.annotations.append(anno) | ||||||
|  |                 self._cur_object = anno | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |  | ||||||
|  |             # assign docs, if any | ||||||
|  |             if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']: | ||||||
|  |                 self._cur_object.doc_string = self.doc_comment_body | ||||||
|  |                 if 'since' in self.doc_comment_params: | ||||||
|  |                     self._cur_object.since = self.doc_comment_params['since'] | ||||||
|  |  | ||||||
|  |         elif self.state == DBusXMLParser.STATE_METHOD: | ||||||
|  |             if name == DBusXMLParser.STATE_ARG: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ARG | ||||||
|  |                 arg_name = None | ||||||
|  |                 if 'name' in attrs: | ||||||
|  |                     arg_name = attrs['name'] | ||||||
|  |                 arg = dbustypes.Arg(arg_name, attrs['type']) | ||||||
|  |                 direction = attrs.get('direction', 'in') | ||||||
|  |                 if direction == 'in': | ||||||
|  |                     self._cur_object.in_args.append(arg) | ||||||
|  |                 elif direction == 'out': | ||||||
|  |                     self._cur_object.out_args.append(arg) | ||||||
|  |                 else: | ||||||
|  |                     raise RuntimeError('Invalid direction "%s"'%(direction)) | ||||||
|  |                 self._cur_object = arg | ||||||
|  |             elif name == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ANNOTATION | ||||||
|  |                 anno = dbustypes.Annotation(attrs['name'], attrs['value']) | ||||||
|  |                 self._cur_object.annotations.append(anno) | ||||||
|  |                 self._cur_object = anno | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |  | ||||||
|  |             # assign docs, if any | ||||||
|  |             if self.doc_comment_last_symbol == old_cur_object.name: | ||||||
|  |                 if 'name' in attrs and attrs['name'] in self.doc_comment_params: | ||||||
|  |                     doc_string = self.doc_comment_params[attrs['name']] | ||||||
|  |                     if doc_string != None: | ||||||
|  |                         self._cur_object.doc_string = doc_string | ||||||
|  |                     if 'since' in self.doc_comment_params: | ||||||
|  |                         self._cur_object.since = self.doc_comment_params['since'] | ||||||
|  |  | ||||||
|  |         elif self.state == DBusXMLParser.STATE_SIGNAL: | ||||||
|  |             if name == DBusXMLParser.STATE_ARG: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ARG | ||||||
|  |                 arg_name = None | ||||||
|  |                 if 'name' in attrs: | ||||||
|  |                     arg_name = attrs['name'] | ||||||
|  |                 arg = dbustypes.Arg(arg_name, attrs['type']) | ||||||
|  |                 self._cur_object.args.append(arg) | ||||||
|  |                 self._cur_object = arg | ||||||
|  |             elif name == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ANNOTATION | ||||||
|  |                 anno = dbustypes.Annotation(attrs['name'], attrs['value']) | ||||||
|  |                 self._cur_object.annotations.append(anno) | ||||||
|  |                 self._cur_object = anno | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |  | ||||||
|  |             # assign docs, if any | ||||||
|  |             if self.doc_comment_last_symbol == old_cur_object.name: | ||||||
|  |                 if 'name' in attrs and attrs['name'] in self.doc_comment_params: | ||||||
|  |                     doc_string = self.doc_comment_params[attrs['name']] | ||||||
|  |                     if doc_string != None: | ||||||
|  |                         self._cur_object.doc_string = doc_string | ||||||
|  |                     if 'since' in self.doc_comment_params: | ||||||
|  |                         self._cur_object.since = self.doc_comment_params['since'] | ||||||
|  |  | ||||||
|  |         elif self.state == DBusXMLParser.STATE_PROPERTY: | ||||||
|  |             if name == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ANNOTATION | ||||||
|  |                 anno = dbustypes.Annotation(attrs['name'], attrs['value']) | ||||||
|  |                 self._cur_object.annotations.append(anno) | ||||||
|  |                 self._cur_object = anno | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |  | ||||||
|  |         elif self.state == DBusXMLParser.STATE_ARG: | ||||||
|  |             if name == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ANNOTATION | ||||||
|  |                 anno = dbustypes.Annotation(attrs['name'], attrs['value']) | ||||||
|  |                 self._cur_object.annotations.append(anno) | ||||||
|  |                 self._cur_object = anno | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |  | ||||||
|  |         elif self.state == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |             if name == DBusXMLParser.STATE_ANNOTATION: | ||||||
|  |                 self.state = DBusXMLParser.STATE_ANNOTATION | ||||||
|  |                 anno = dbustypes.Annotation(attrs['name'], attrs['value']) | ||||||
|  |                 self._cur_object.annotations.append(anno) | ||||||
|  |                 self._cur_object = anno | ||||||
|  |             else: | ||||||
|  |                 self.state = DBusXMLParser.STATE_IGNORED | ||||||
|  |  | ||||||
|  |         else: | ||||||
|  |             raise RuntimeError('Unhandled state "%s" while entering element with name "%s"'%(self.state, name)) | ||||||
|  |  | ||||||
|  |         self.state_stack.append(old_state) | ||||||
|  |         self._cur_object_stack.append(old_cur_object) | ||||||
|  |  | ||||||
|  |     def handle_end_element(self, name): | ||||||
|  |         self.state = self.state_stack.pop() | ||||||
|  |         self._cur_object = self._cur_object_stack.pop() | ||||||
|  |  | ||||||
|  | def parse_dbus_xml(xml_data): | ||||||
|  |     parser = DBusXMLParser(xml_data) | ||||||
|  |     return parser.parsed_interfaces | ||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/parser.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										102
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/utils.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,102 @@ | |||||||
|  | # -*- Mode: Python -*- | ||||||
|  |  | ||||||
|  | # GDBus - GLib D-Bus Library | ||||||
|  | # | ||||||
|  | # Copyright (C) 2008-2011 Red Hat, Inc. | ||||||
|  | # | ||||||
|  | # This library is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU Lesser 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 | ||||||
|  | # Lesser General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Lesser General | ||||||
|  | # Public License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||||
|  | # | ||||||
|  | # Author: David Zeuthen <davidz@redhat.com> | ||||||
|  |  | ||||||
|  | import distutils.version | ||||||
|  |  | ||||||
|  | def strip_dots(s): | ||||||
|  |     ret = '' | ||||||
|  |     force_upper = False | ||||||
|  |     for c in s: | ||||||
|  |         if c == '.': | ||||||
|  |             force_upper = True | ||||||
|  |         else: | ||||||
|  |             if force_upper: | ||||||
|  |                 ret += c.upper() | ||||||
|  |                 force_upper = False | ||||||
|  |             else: | ||||||
|  |                 ret += c | ||||||
|  |     return ret | ||||||
|  |  | ||||||
|  | def dots_to_hyphens(s): | ||||||
|  |     return s.replace('.', '-') | ||||||
|  |  | ||||||
|  | def camel_case_to_uscore(s): | ||||||
|  |     ret = '' | ||||||
|  |     insert_uscore = False | ||||||
|  |     prev_was_lower = False | ||||||
|  |     initial = True; | ||||||
|  |     for c in s: | ||||||
|  |         # Keep initial underscores in camel case | ||||||
|  |         if initial and c == '_': | ||||||
|  |             ret += '_' | ||||||
|  |             continue; | ||||||
|  |         initial = False | ||||||
|  |  | ||||||
|  |         if c.isupper(): | ||||||
|  |             if prev_was_lower: | ||||||
|  |                 insert_uscore = True | ||||||
|  |             prev_was_lower = False | ||||||
|  |         else: | ||||||
|  |             prev_was_lower = True | ||||||
|  |         if insert_uscore: | ||||||
|  |             ret += '_' | ||||||
|  |         ret += c.lower() | ||||||
|  |         insert_uscore = False | ||||||
|  |     return ret | ||||||
|  |  | ||||||
|  | def is_ugly_case(s): | ||||||
|  |     if s and s.find('_') > 0: | ||||||
|  |         return True | ||||||
|  |     return False | ||||||
|  |  | ||||||
|  | def lookup_annotation(annotations, key): | ||||||
|  |     if annotations: | ||||||
|  |         for a in annotations: | ||||||
|  |             if a.key == key: | ||||||
|  |                 return a.value | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def lookup_docs(annotations): | ||||||
|  |     s = lookup_annotation(annotations, 'org.gtk.GDBus.DocString') | ||||||
|  |     if s == None: | ||||||
|  |         return '' | ||||||
|  |     else: | ||||||
|  |         return s | ||||||
|  |  | ||||||
|  | def lookup_since(annotations): | ||||||
|  |     s = lookup_annotation(annotations, 'org.gtk.GDBus.Since') | ||||||
|  |     if s == None: | ||||||
|  |         return '' | ||||||
|  |     else: | ||||||
|  |         return s | ||||||
|  |  | ||||||
|  | def lookup_brief_docs(annotations): | ||||||
|  |     s = lookup_annotation(annotations, 'org.gtk.GDBus.DocString.Short') | ||||||
|  |     if s == None: | ||||||
|  |         return '' | ||||||
|  |     else: | ||||||
|  |         return s | ||||||
|  |  | ||||||
|  | def version_cmp_key(key): | ||||||
|  |     # If the 'since' version is empty put a 0 in its place as this will | ||||||
|  |     # allow LooseVersion to work and will always compare lower. | ||||||
|  |     v = key[0] if key[0] else '0' | ||||||
|  |     return (distutils.version.LooseVersion(v), key[1]) | ||||||
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/glib-2.0/codegen/utils.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										261
									
								
								gtk-nsis-pack/share/glib-2.0/gdb/glib.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,261 @@ | |||||||
|  | import gdb | ||||||
|  | import sys | ||||||
|  |  | ||||||
|  | if sys.version_info[0] >= 3: | ||||||
|  |     long = int | ||||||
|  |  | ||||||
|  | # This is not quite right, as local vars may override symname | ||||||
|  | def read_global_var (symname): | ||||||
|  |     return gdb.selected_frame().read_var(symname) | ||||||
|  |  | ||||||
|  | def g_quark_to_string (quark): | ||||||
|  |     if quark == None: | ||||||
|  |         return None | ||||||
|  |     quark = long(quark) | ||||||
|  |     if quark == 0: | ||||||
|  |         return None | ||||||
|  |     try: | ||||||
|  |         val = read_global_var ("quarks") | ||||||
|  |         max_q = long(read_global_var ("quark_seq_id")) | ||||||
|  |     except: | ||||||
|  |         try: | ||||||
|  |             val = read_global_var ("g_quarks") | ||||||
|  |             max_q = long(read_global_var ("g_quark_seq_id")) | ||||||
|  |         except: | ||||||
|  |             return None; | ||||||
|  |     if quark < max_q: | ||||||
|  |         return val[quark].string() | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | # We override the node printers too, so that node->next is not expanded | ||||||
|  | class GListNodePrinter: | ||||||
|  |     "Prints a GList node" | ||||||
|  |  | ||||||
|  |     def __init__ (self, val): | ||||||
|  |         self.val = val | ||||||
|  |  | ||||||
|  |     def to_string (self): | ||||||
|  |         return "{data=%s, next=0x%x, prev=0x%x}" % (str(self.val["data"]), long(self.val["next"]), long(self.val["prev"])) | ||||||
|  |  | ||||||
|  | class GSListNodePrinter: | ||||||
|  |     "Prints a GSList node" | ||||||
|  |  | ||||||
|  |     def __init__ (self, val): | ||||||
|  |         self.val = val | ||||||
|  |  | ||||||
|  |     def to_string (self): | ||||||
|  |         return "{data=%s, next=0x%x}" % (str(self.val["data"]), long(self.val["next"])) | ||||||
|  |  | ||||||
|  | class GListPrinter: | ||||||
|  |     "Prints a GList" | ||||||
|  |  | ||||||
|  |     class _iterator: | ||||||
|  |         def __init__(self, head, listtype): | ||||||
|  |             self.link = head | ||||||
|  |             self.listtype = listtype | ||||||
|  |             self.count = 0 | ||||||
|  |  | ||||||
|  |         def __iter__(self): | ||||||
|  |             return self | ||||||
|  |  | ||||||
|  |         def next(self): | ||||||
|  |             if self.link == 0: | ||||||
|  |                 raise StopIteration | ||||||
|  |             data = self.link['data'] | ||||||
|  |             self.link = self.link['next'] | ||||||
|  |             count = self.count | ||||||
|  |             self.count = self.count + 1 | ||||||
|  |             return ('[%d]' % count, data) | ||||||
|  |  | ||||||
|  |         __next__ = next | ||||||
|  |  | ||||||
|  |     def __init__ (self, val, listtype): | ||||||
|  |         self.val = val | ||||||
|  |         self.listtype = listtype | ||||||
|  |  | ||||||
|  |     def children(self): | ||||||
|  |         return self._iterator(self.val, self.listtype) | ||||||
|  |  | ||||||
|  |     def to_string (self): | ||||||
|  |         return  "0x%x" % (long(self.val)) | ||||||
|  |  | ||||||
|  |     def display_hint (self): | ||||||
|  |         return "array" | ||||||
|  |  | ||||||
|  | class GHashPrinter: | ||||||
|  |     "Prints a GHashTable" | ||||||
|  |  | ||||||
|  |     class _iterator: | ||||||
|  |         def __init__(self, ht, keys_are_strings): | ||||||
|  |             self.ht = ht | ||||||
|  |             if ht != 0: | ||||||
|  |                 self.keys = ht["keys"] | ||||||
|  |                 self.values = ht["values"] | ||||||
|  |                 self.hashes = ht["hashes"] | ||||||
|  |                 self.size = ht["size"] | ||||||
|  |             self.pos = 0 | ||||||
|  |             self.keys_are_strings = keys_are_strings | ||||||
|  |             self.value = None | ||||||
|  |  | ||||||
|  |         def __iter__(self): | ||||||
|  |             return self | ||||||
|  |  | ||||||
|  |         def next(self): | ||||||
|  |             if self.ht == 0: | ||||||
|  |                 raise StopIteration | ||||||
|  |             if self.value != None: | ||||||
|  |                 v = self.value | ||||||
|  |                 self.value = None | ||||||
|  |                 return v | ||||||
|  |             while long(self.pos) < long(self.size): | ||||||
|  |                 self.pos = self.pos + 1 | ||||||
|  |                 if long (self.hashes[self.pos]) >= 2: | ||||||
|  |                     key = self.keys[self.pos] | ||||||
|  |                     val = self.values[self.pos] | ||||||
|  |  | ||||||
|  |                     if self.keys_are_strings: | ||||||
|  |                         key = key.cast (gdb.lookup_type("char").pointer()) | ||||||
|  |  | ||||||
|  |                     # Queue value for next result | ||||||
|  |                     self.value = ('[%dv]'% (self.pos), val) | ||||||
|  |  | ||||||
|  |                     # Return key | ||||||
|  |                     return ('[%dk]'% (self.pos), key) | ||||||
|  |             raise StopIteration | ||||||
|  |  | ||||||
|  |         __next__ = next | ||||||
|  |  | ||||||
|  |     def __init__ (self, val): | ||||||
|  |         self.val = val | ||||||
|  |         self.keys_are_strings = False | ||||||
|  |         try: | ||||||
|  |             string_hash = read_global_var ("g_str_hash") | ||||||
|  |         except: | ||||||
|  |             string_hash = None | ||||||
|  |         if self.val != 0 and string_hash != None and self.val["hash_func"] == string_hash: | ||||||
|  |             self.keys_are_strings = True | ||||||
|  |  | ||||||
|  |     def children(self): | ||||||
|  |         return self._iterator(self.val, self.keys_are_strings) | ||||||
|  |  | ||||||
|  |     def to_string (self): | ||||||
|  |         return  "0x%x" % (long(self.val)) | ||||||
|  |  | ||||||
|  |     def display_hint (self): | ||||||
|  |         return "map" | ||||||
|  |  | ||||||
|  | def pretty_printer_lookup (val): | ||||||
|  |     # None yet, want things like hash table and list | ||||||
|  |  | ||||||
|  |     type = val.type.unqualified() | ||||||
|  |  | ||||||
|  |     # If it points to a reference, get the reference. | ||||||
|  |     if type.code == gdb.TYPE_CODE_REF: | ||||||
|  |         type = type.target () | ||||||
|  |  | ||||||
|  |     if type.code == gdb.TYPE_CODE_PTR: | ||||||
|  |         type = type.target().unqualified() | ||||||
|  |         t = str(type) | ||||||
|  |         if t == "GList": | ||||||
|  |             return GListPrinter(val, "GList") | ||||||
|  |         if t == "GSList": | ||||||
|  |             return GListPrinter(val, "GSList") | ||||||
|  |         if t == "GHashTable": | ||||||
|  |             return GHashPrinter(val) | ||||||
|  |     else: | ||||||
|  |         t = str(type) | ||||||
|  |         if t == "GList": | ||||||
|  |             return GListNodePrinter(val) | ||||||
|  |         if t == "GSList *": | ||||||
|  |             return GListPrinter(val, "GSList") | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def register (obj): | ||||||
|  |     if obj == None: | ||||||
|  |         obj = gdb | ||||||
|  |  | ||||||
|  |     obj.pretty_printers.append(pretty_printer_lookup) | ||||||
|  |  | ||||||
|  | class ForeachCommand (gdb.Command): | ||||||
|  |     """Foreach on list""" | ||||||
|  |  | ||||||
|  |     def __init__ (self): | ||||||
|  |         super (ForeachCommand, self).__init__ ("gforeach", | ||||||
|  |                                                gdb.COMMAND_DATA, | ||||||
|  |                                                gdb.COMPLETE_SYMBOL) | ||||||
|  |  | ||||||
|  |     def valid_name (self, name): | ||||||
|  |         if not name[0].isalpha(): | ||||||
|  |             return False | ||||||
|  |         return True | ||||||
|  |  | ||||||
|  |     def parse_args (self, arg): | ||||||
|  |         i = arg.find(" ") | ||||||
|  |         if i <= 0: | ||||||
|  |             raise Exception ("No var specified") | ||||||
|  |         var = arg[:i] | ||||||
|  |         if not self.valid_name(var): | ||||||
|  |             raise Exception ("Invalid variable name") | ||||||
|  |  | ||||||
|  |         while i < len (arg) and arg[i].isspace(): | ||||||
|  |             i = i + 1 | ||||||
|  |  | ||||||
|  |         if arg[i:i+2] != "in": | ||||||
|  |             raise Exception ("Invalid syntax, missing in") | ||||||
|  |  | ||||||
|  |         i = i + 2 | ||||||
|  |  | ||||||
|  |         while i < len (arg) and arg[i].isspace(): | ||||||
|  |             i = i + 1 | ||||||
|  |  | ||||||
|  |         colon = arg.find (":", i) | ||||||
|  |         if colon == -1: | ||||||
|  |             raise Exception ("Invalid syntax, missing colon") | ||||||
|  |  | ||||||
|  |         val = arg[i:colon] | ||||||
|  |  | ||||||
|  |         colon = colon + 1 | ||||||
|  |         while colon < len (arg) and arg[colon].isspace(): | ||||||
|  |             colon = colon + 1 | ||||||
|  |  | ||||||
|  |         command = arg[colon:] | ||||||
|  |  | ||||||
|  |         return (var, val, command) | ||||||
|  |  | ||||||
|  |     def do_iter(self, arg, item, command): | ||||||
|  |         item = item.cast (gdb.lookup_type("void").pointer()) | ||||||
|  |         item = long(item) | ||||||
|  |         to_eval = "set $%s = (void *)0x%x\n"%(arg, item) | ||||||
|  |         gdb.execute(to_eval) | ||||||
|  |         gdb.execute(command) | ||||||
|  |  | ||||||
|  |     def slist_iterator (self, arg, container, command): | ||||||
|  |         l = container.cast (gdb.lookup_type("GSList").pointer()) | ||||||
|  |         while long(l) != 0: | ||||||
|  |             self.do_iter (arg, l["data"], command) | ||||||
|  |             l = l["next"] | ||||||
|  |  | ||||||
|  |     def list_iterator (self, arg, container, command): | ||||||
|  |         l = container.cast (gdb.lookup_type("GList").pointer()) | ||||||
|  |         while long(l) != 0: | ||||||
|  |             self.do_iter (arg, l["data"], command) | ||||||
|  |             l = l["next"] | ||||||
|  |  | ||||||
|  |     def pick_iterator (self, container): | ||||||
|  |         t = container.type.unqualified() | ||||||
|  |         if t.code == gdb.TYPE_CODE_PTR: | ||||||
|  |             t = t.target().unqualified() | ||||||
|  |             t = str(t) | ||||||
|  |             if t == "GSList": | ||||||
|  |                 return self.slist_iterator | ||||||
|  |             if t == "GList": | ||||||
|  |                 return self.list_iterator | ||||||
|  |         raise Exception("Invalid container type %s"%(str(container.type))) | ||||||
|  |  | ||||||
|  |     def invoke (self, arg, from_tty): | ||||||
|  |         (var, container, command) = self.parse_args(arg) | ||||||
|  |         container = gdb.parse_and_eval (container) | ||||||
|  |         func = self.pick_iterator(container) | ||||||
|  |         func(var, container, command) | ||||||
|  |  | ||||||
|  | ForeachCommand () | ||||||
							
								
								
									
										295
									
								
								gtk-nsis-pack/share/glib-2.0/gdb/gobject.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,295 @@ | |||||||
|  | import os.path | ||||||
|  | import gdb | ||||||
|  | import glib | ||||||
|  | import sys | ||||||
|  |  | ||||||
|  | if sys.version_info[0] >= 3: | ||||||
|  |     long = int | ||||||
|  | else: | ||||||
|  |     import itertools | ||||||
|  |     map = itertools.imap | ||||||
|  |  | ||||||
|  | # FrameDecorator is new in gdb 7.7, so we adapt to its absence. | ||||||
|  | try: | ||||||
|  |     import gdb.FrameDecorator | ||||||
|  |     HAVE_GDB_FRAMEDECORATOR = True | ||||||
|  |     FrameDecorator = gdb.FrameDecorator.FrameDecorator | ||||||
|  | except ImportError: | ||||||
|  |     HAVE_GDB_FRAMEDECORATOR = False | ||||||
|  |  | ||||||
|  | # This is not quite right, as local vars may override symname | ||||||
|  | def read_global_var (symname): | ||||||
|  |     return gdb.selected_frame().read_var(symname) | ||||||
|  |  | ||||||
|  | def g_type_to_name (gtype): | ||||||
|  |     def lookup_fundamental_type (typenode): | ||||||
|  |         if typenode == 0: | ||||||
|  |             return None | ||||||
|  |         val = read_global_var ("static_fundamental_type_nodes") | ||||||
|  |         if val == None: | ||||||
|  |             return None | ||||||
|  |         return val[typenode >> 2].address() | ||||||
|  |  | ||||||
|  |     gtype = long(gtype) | ||||||
|  |     typenode = gtype - gtype % 4 | ||||||
|  |     if typenode > (255 << 2): | ||||||
|  |         typenode = gdb.Value(typenode).cast (gdb.lookup_type("TypeNode").pointer()) | ||||||
|  |     else: | ||||||
|  |         typenode = lookup_fundamental_type (typenode) | ||||||
|  |     if typenode != None: | ||||||
|  |         return glib.g_quark_to_string (typenode["qname"]) | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def is_g_type_instance (val): | ||||||
|  |     def is_g_type_instance_helper (type): | ||||||
|  |         if str(type) == "GTypeInstance": | ||||||
|  |             return True | ||||||
|  |  | ||||||
|  |         while type.code == gdb.TYPE_CODE_TYPEDEF: | ||||||
|  |             type = type.target() | ||||||
|  |  | ||||||
|  |         if type.code != gdb.TYPE_CODE_STRUCT: | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |         fields = type.fields() | ||||||
|  |         if len (fields) < 1: | ||||||
|  |             return False | ||||||
|  |  | ||||||
|  |         first_field = fields[0] | ||||||
|  |         return is_g_type_instance_helper(first_field.type) | ||||||
|  |  | ||||||
|  |     type = val.type | ||||||
|  |     if type.code != gdb.TYPE_CODE_PTR: | ||||||
|  |         return False | ||||||
|  |     type = type.target() | ||||||
|  |     return is_g_type_instance_helper (type) | ||||||
|  |  | ||||||
|  | def g_type_name_from_instance (instance): | ||||||
|  |     if long(instance) != 0: | ||||||
|  |         try: | ||||||
|  |             inst = instance.cast (gdb.lookup_type("GTypeInstance").pointer()) | ||||||
|  |             klass = inst["g_class"] | ||||||
|  |             gtype = klass["g_type"] | ||||||
|  |             name = g_type_to_name (gtype) | ||||||
|  |             return name | ||||||
|  |         except RuntimeError: | ||||||
|  |             pass | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | class GTypePrettyPrinter: | ||||||
|  |     "Prints a GType instance pointer" | ||||||
|  |  | ||||||
|  |     def __init__ (self, val): | ||||||
|  |         self.val = val | ||||||
|  |  | ||||||
|  |     def to_string (self): | ||||||
|  |         name = g_type_name_from_instance (self.val) | ||||||
|  |         if name: | ||||||
|  |             return ("0x%x [%s]")% (long(self.val), name) | ||||||
|  |         return  ("0x%x") % (long(self.val)) | ||||||
|  |  | ||||||
|  | def pretty_printer_lookup (val): | ||||||
|  |     if is_g_type_instance (val): | ||||||
|  |         return GTypePrettyPrinter (val) | ||||||
|  |  | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def get_signal_name (id): | ||||||
|  |     if id == None: | ||||||
|  |         return None | ||||||
|  |     id = long(id) | ||||||
|  |     if id == 0: | ||||||
|  |         return None | ||||||
|  |     val = read_global_var ("g_signal_nodes") | ||||||
|  |     max_s = read_global_var ("g_n_signal_nodes") | ||||||
|  |     max_s = long(max_s) | ||||||
|  |     if id < max_s: | ||||||
|  |         return val[id]["name"].string() | ||||||
|  |     return None | ||||||
|  |  | ||||||
|  | def frame_name(frame): | ||||||
|  |     return str(frame.function()) | ||||||
|  |  | ||||||
|  | def frame_var(frame, var): | ||||||
|  |     return frame.inferior_frame().read_var(var) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class SignalFrame(FrameDecorator): | ||||||
|  |     def __init__ (self, frames): | ||||||
|  |         FrameDecorator.__init__(self, frames[-1]) | ||||||
|  |         self.frame = frames[-1] | ||||||
|  |         self.frames = frames | ||||||
|  |  | ||||||
|  |     def name (self): | ||||||
|  |         return "signal-emission" | ||||||
|  |  | ||||||
|  |     def read_var (self, frame, name, array = None): | ||||||
|  |         try: | ||||||
|  |             v = frame_var (frame, name) | ||||||
|  |             if v == None or v.is_optimized_out: | ||||||
|  |                 return None | ||||||
|  |             if array != None: | ||||||
|  |                 array.append (v) | ||||||
|  |             return v | ||||||
|  |         except ValueError: | ||||||
|  |             return None | ||||||
|  |  | ||||||
|  |     def read_object (self, frame, name, array = None): | ||||||
|  |         try: | ||||||
|  |             v = frame_var (frame, name) | ||||||
|  |             if v == None or v.is_optimized_out: | ||||||
|  |                 return None | ||||||
|  |             v = v.cast (gdb.lookup_type("GObject").pointer()) | ||||||
|  |             # Ensure this is a somewhat correct object pointer | ||||||
|  |             if v != None and g_type_name_from_instance (v): | ||||||
|  |                 if array != None: | ||||||
|  |                     array.append (v) | ||||||
|  |                 return v | ||||||
|  |             return None | ||||||
|  |         except ValueError: | ||||||
|  |             return None | ||||||
|  |  | ||||||
|  |     def append (self, array, obj): | ||||||
|  |         if obj != None: | ||||||
|  |             array.append (obj) | ||||||
|  |  | ||||||
|  |     def or_join_array (self, array): | ||||||
|  |         if len(array) == 0: | ||||||
|  |             return "???" | ||||||
|  |         else: | ||||||
|  |             return ' or '.join(set(map(str, array))) | ||||||
|  |  | ||||||
|  |     def get_detailed_signal_from_frame(self, frame, signal): | ||||||
|  |         detail = self.read_var (frame, "detail") | ||||||
|  |         detail = glib.g_quark_to_string (detail) | ||||||
|  |         if detail is not None: | ||||||
|  |             return signal + ":" + detail | ||||||
|  |         else: | ||||||
|  |             return detail | ||||||
|  |  | ||||||
|  |     def function (self): | ||||||
|  |         instances = [] | ||||||
|  |         signals = [] | ||||||
|  |  | ||||||
|  |         for frame in self.frames: | ||||||
|  |             name = frame_name(frame) | ||||||
|  |             if name == "signal_emit_unlocked_R": | ||||||
|  |                 self.read_object (frame, "instance", instances) | ||||||
|  |                 node = self.read_var (frame, "node") | ||||||
|  |                 if node: | ||||||
|  |                     signal = node["name"].string() | ||||||
|  |                     signal = self.get_detailed_signal_from_frame(frame, signal) | ||||||
|  |                     self.append(signals, signal) | ||||||
|  |  | ||||||
|  |             if name == "g_signal_emitv": | ||||||
|  |                 instance_and_params = self.read_var (frame, "instance_and_params") | ||||||
|  |                 if instance_and_params: | ||||||
|  |                     instance = instance_and_params[0]["v_pointer"].cast (gdb.Type("GObject").pointer()) | ||||||
|  |                     self.append (instances, instance) | ||||||
|  |                 id = self.read_var (frame, "signal_id") | ||||||
|  |                 signal = get_signal_name (id) | ||||||
|  |                 if signal: | ||||||
|  |                     signal = self.get_detailed_signal_from_frame(frame, signal) | ||||||
|  |                     self.append (signals, signal) | ||||||
|  |  | ||||||
|  |             if name == "g_signal_emit_valist" or name == "g_signal_emit": | ||||||
|  |                 self.read_object (frame, "instance", instances) | ||||||
|  |                 id = self.read_var (frame, "signal_id") | ||||||
|  |                 signal = get_signal_name (id) | ||||||
|  |                 if signal: | ||||||
|  |                     signal = self.get_detailed_signal_from_frame(frame, signal) | ||||||
|  |                     self.append (signals, signal) | ||||||
|  |  | ||||||
|  |             if name == "g_signal_emit_by_name": | ||||||
|  |                 self.read_object (frame, "instance", instances) | ||||||
|  |                 self.read_var (frame, "detailed_signal", signals) | ||||||
|  |                 break | ||||||
|  |  | ||||||
|  |         instance = self.or_join_array (instances) | ||||||
|  |         signal = self.or_join_array (signals) | ||||||
|  |  | ||||||
|  |         return "<emit signal %s on instance %s>" %  (signal, instance) | ||||||
|  |  | ||||||
|  |     def elided (self): | ||||||
|  |         return self.frames[0:-1] | ||||||
|  |  | ||||||
|  |     def describe (self, stream, full): | ||||||
|  |         stream.write (" " + self.function () + "\n") | ||||||
|  |  | ||||||
|  | class GFrameDecorator: | ||||||
|  |     def __init__ (self, iter): | ||||||
|  |         self.queue = [] | ||||||
|  |         self.iter = iter | ||||||
|  |  | ||||||
|  |     def __iter__ (self): | ||||||
|  |         return self | ||||||
|  |  | ||||||
|  |     def fill (self): | ||||||
|  |         while len(self.queue) <= 8: | ||||||
|  |             try: | ||||||
|  |                 f = next(self.iter) | ||||||
|  |                 self.queue.append (f) | ||||||
|  |             except StopIteration: | ||||||
|  |                 return | ||||||
|  |  | ||||||
|  |     def find_signal_emission (self): | ||||||
|  |         for i in range (min (len(self.queue), 3)): | ||||||
|  |             if frame_name(self.queue[i]) == "signal_emit_unlocked_R": | ||||||
|  |                 return i | ||||||
|  |         return -1 | ||||||
|  |  | ||||||
|  |     def next (self): | ||||||
|  |         # Ensure we have enough frames for a full signal emission | ||||||
|  |         self.fill() | ||||||
|  |  | ||||||
|  |         # Are we at the end? | ||||||
|  |         if len(self.queue) == 0: | ||||||
|  |             raise StopIteration | ||||||
|  |  | ||||||
|  |         emission = self.find_signal_emission () | ||||||
|  |         if emission > 0: | ||||||
|  |             start = emission | ||||||
|  |             while True: | ||||||
|  |                 if start == 0: | ||||||
|  |                     break | ||||||
|  |                 prev_name = frame_name(self.queue[start-1]) | ||||||
|  |                 if prev_name.find("_marshal_") >= 0 or prev_name == "g_closure_invoke": | ||||||
|  |                     start = start - 1 | ||||||
|  |                 else: | ||||||
|  |                     break | ||||||
|  |             end = emission + 1 | ||||||
|  |             while end < len(self.queue): | ||||||
|  |                 if frame_name(self.queue[end]) in ["g_signal_emitv", | ||||||
|  |                                                    "g_signal_emit_valist", | ||||||
|  |                                                    "g_signal_emit", | ||||||
|  |                                                    "g_signal_emit_by_name", | ||||||
|  |                                                    "_g_closure_invoke_va"]: | ||||||
|  |                     end = end + 1 | ||||||
|  |                 else: | ||||||
|  |                     break | ||||||
|  |  | ||||||
|  |             signal_frames = self.queue[start:end] | ||||||
|  |             new_frames = [SignalFrame(signal_frames)] | ||||||
|  |             self.queue[start:end] = new_frames | ||||||
|  |  | ||||||
|  |         return self.queue.pop(0) | ||||||
|  |  | ||||||
|  |     def __next__ (self): | ||||||
|  |         return self.next() | ||||||
|  |  | ||||||
|  | class GFrameFilter(object): | ||||||
|  |     name = 'glib' | ||||||
|  |     enabled = True | ||||||
|  |     priority = 100 | ||||||
|  |  | ||||||
|  |     def filter(self, iterator): | ||||||
|  |         return GFrameDecorator(iterator) | ||||||
|  |  | ||||||
|  | def register (obj): | ||||||
|  |     if obj == None: | ||||||
|  |         obj = gdb | ||||||
|  |  | ||||||
|  |     if HAVE_GDB_FRAMEDECORATOR: | ||||||
|  |         filter = GFrameFilter() | ||||||
|  |         obj.frame_filters[filter.name] = filter | ||||||
|  |     obj.pretty_printers.append(pretty_printer_lookup) | ||||||
							
								
								
									
										268
									
								
								gtk-nsis-pack/share/glib-2.0/gettext/po/Makefile.in.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,268 @@ | |||||||
|  | # Makefile for program source directory in GNU NLS utilities package. | ||||||
|  | # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu> | ||||||
|  | # | ||||||
|  | # This file file be copied and used freely without restrictions.  It can | ||||||
|  | # be used in projects which are not available under the GNU Public License | ||||||
|  | # but which still want to provide support for the GNU gettext functionality. | ||||||
|  | # Please note that the actual code is *not* freely available. | ||||||
|  | # | ||||||
|  | # - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE | ||||||
|  | #   instead of PACKAGE and to look for po2tbl in ./ not in intl/ | ||||||
|  | # | ||||||
|  | # - Modified by jacob berkman <jacob@ximian.com> to install | ||||||
|  | #   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize | ||||||
|  |  | ||||||
|  | GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ | ||||||
|  | PACKAGE = @PACKAGE@ | ||||||
|  | VERSION = @VERSION@ | ||||||
|  |  | ||||||
|  | SHELL = @SHELL@ | ||||||
|  | @SET_MAKE@ | ||||||
|  |  | ||||||
|  | srcdir = @srcdir@ | ||||||
|  | top_srcdir = @top_srcdir@ | ||||||
|  | VPATH = @srcdir@ | ||||||
|  |  | ||||||
|  | prefix = @prefix@ | ||||||
|  | exec_prefix = @exec_prefix@ | ||||||
|  | datarootdir = @datarootdir@ | ||||||
|  | datadir = @datadir@ | ||||||
|  | libdir = @libdir@ | ||||||
|  | localedir = $(libdir)/locale | ||||||
|  | gnulocaledir = $(datadir)/locale | ||||||
|  | gettextsrcdir = $(datadir)/glib-2.0/gettext/po | ||||||
|  | subdir = po | ||||||
|  |  | ||||||
|  | INSTALL = @INSTALL@ | ||||||
|  | INSTALL_DATA = @INSTALL_DATA@ | ||||||
|  | MKINSTALLDIRS = mkdir -p | ||||||
|  |  | ||||||
|  | CC = @CC@ | ||||||
|  | GENCAT = @GENCAT@ | ||||||
|  | GMSGFMT = @GMSGFMT@ | ||||||
|  | MSGFMT = @MSGFMT@ | ||||||
|  | MSGFMT_OPTS = @MSGFMT_OPTS@ | ||||||
|  | XGETTEXT = @XGETTEXT@ | ||||||
|  | MSGMERGE = msgmerge | ||||||
|  |  | ||||||
|  | DEFS = @DEFS@ | ||||||
|  | CFLAGS = @CFLAGS@ | ||||||
|  | CPPFLAGS = @CPPFLAGS@ | ||||||
|  |  | ||||||
|  | INCLUDES = -I.. -I$(top_srcdir)/intl | ||||||
|  |  | ||||||
|  | COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) | ||||||
|  |  | ||||||
|  | SOURCES =  | ||||||
|  | POFILES = @POFILES@ | ||||||
|  | GMOFILES = @GMOFILES@ | ||||||
|  | DISTFILES = LINGUAS ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \ | ||||||
|  | $(POFILES) $(GMOFILES) $(SOURCES) | ||||||
|  |  | ||||||
|  | POTFILES = \ | ||||||
|  |  | ||||||
|  | CATALOGS = @CATALOGS@ | ||||||
|  | CATOBJEXT = @CATOBJEXT@ | ||||||
|  | INSTOBJEXT = @INSTOBJEXT@ | ||||||
|  |  | ||||||
|  | .SUFFIXES: | ||||||
|  | .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat | ||||||
|  |  | ||||||
|  | .c.o: | ||||||
|  | 	$(COMPILE) $< | ||||||
|  |  | ||||||
|  | .po.pox: | ||||||
|  | 	$(MAKE) $(GETTEXT_PACKAGE).pot | ||||||
|  | 	$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox | ||||||
|  |  | ||||||
|  | .po.mo: | ||||||
|  | 	$(MSGFMT) -o $@ $< | ||||||
|  |  | ||||||
|  | .po.gmo: | ||||||
|  | 	$(AM_V_GEN) file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ | ||||||
|  | 	  && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $< | ||||||
|  |  | ||||||
|  | .po.cat: | ||||||
|  | 	sed -f ../intl/po2msg.sed < $< > $*.msg \ | ||||||
|  | 	  && rm -f $@ && $(GENCAT) $@ $*.msg | ||||||
|  |  | ||||||
|  |  | ||||||
|  | all: all-@USE_NLS@ | ||||||
|  |  | ||||||
|  | all-yes: $(CATALOGS) | ||||||
|  | all-no: | ||||||
|  |  | ||||||
|  | $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES) | ||||||
|  | 	$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) \ | ||||||
|  | 	  --msgid-bugs-address='http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general' \ | ||||||
|  | 	  --add-comments --keyword=_ --keyword=N_ \ | ||||||
|  | 	  --keyword=C_:1c,2 \ | ||||||
|  | 	  --keyword=NC_:1c,2 \ | ||||||
|  | 	  --keyword=g_dcgettext:2 \ | ||||||
|  | 	  --keyword=g_dngettext:2,3 \ | ||||||
|  | 	  --keyword=g_dpgettext2:2c,3 \ | ||||||
|  | 	  --flag=N_:1:pass-c-format \ | ||||||
|  | 	  --flag=C_:2:pass-c-format \ | ||||||
|  | 	  --flag=NC_:2:pass-c-format \ | ||||||
|  | 	  --flag=g_dngettext:2:pass-c-format \ | ||||||
|  |           --flag=g_strdup_printf:1:c-format \ | ||||||
|  |           --flag=g_string_printf:2:c-format \ | ||||||
|  |           --flag=g_string_append_printf:2:c-format \ | ||||||
|  |           --flag=g_error_new:3:c-format \ | ||||||
|  |           --flag=g_set_error:4:c-format \ | ||||||
|  |           --flag=g_markup_printf_escaped:1:c-format \ | ||||||
|  |           --flag=g_log:3:c-format \ | ||||||
|  |           --flag=g_print:1:c-format \ | ||||||
|  |           --flag=g_printerr:1:c-format \ | ||||||
|  |           --flag=g_printf:1:c-format \ | ||||||
|  |           --flag=g_fprintf:2:c-format \ | ||||||
|  |           --flag=g_sprintf:2:c-format \ | ||||||
|  |           --flag=g_snprintf:3:c-format \ | ||||||
|  |           --flag=g_scanner_error:2:c-format \ | ||||||
|  |           --flag=g_scanner_warn:2:c-format \ | ||||||
|  | 	  $(POTFILES) \ | ||||||
|  | 	&& test ! -f $(GETTEXT_PACKAGE).po \ | ||||||
|  | 	   || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \ | ||||||
|  | 		&& mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot ) | ||||||
|  |  | ||||||
|  | install: install-exec install-data | ||||||
|  | install-exec: | ||||||
|  | install-data: install-data-@USE_NLS@ | ||||||
|  | install-data-no: all | ||||||
|  | install-data-yes: all | ||||||
|  | 	$(MKINSTALLDIRS) $(DESTDIR)$(datadir); \ | ||||||
|  | 	catalogs='$(CATALOGS)'; \ | ||||||
|  | 	for cat in $$catalogs; do \ | ||||||
|  | 	  cat=`basename $$cat`; \ | ||||||
|  | 	  case "$$cat" in \ | ||||||
|  | 	    *.gmo) destdir=$(gnulocaledir);; \ | ||||||
|  | 	    *)     destdir=$(localedir);; \ | ||||||
|  | 	  esac; \ | ||||||
|  | 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ | ||||||
|  | 	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \ | ||||||
|  | 	  $(MKINSTALLDIRS) $$dir; \ | ||||||
|  | 	  if test -r $$cat; then \ | ||||||
|  | 	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ | ||||||
|  | 	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ | ||||||
|  | 	  else \ | ||||||
|  | 	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ | ||||||
|  | 	    echo "installing $(srcdir)/$$cat as" \ | ||||||
|  | 		 "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ | ||||||
|  | 	  fi; \ | ||||||
|  | 	  if test -r $$cat.m; then \ | ||||||
|  | 	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ | ||||||
|  | 	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ | ||||||
|  | 	  else \ | ||||||
|  | 	    if test -r $(srcdir)/$$cat.m ; then \ | ||||||
|  | 	      $(INSTALL_DATA) $(srcdir)/$$cat.m \ | ||||||
|  | 		$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ | ||||||
|  | 	      echo "installing $(srcdir)/$$cat as" \ | ||||||
|  | 		   "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ | ||||||
|  | 	    else \ | ||||||
|  | 	      true; \ | ||||||
|  | 	    fi; \ | ||||||
|  | 	  fi; \ | ||||||
|  | 	done | ||||||
|  | 	if test "$(PACKAGE)" = "glib"; then \ | ||||||
|  | 	  $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \ | ||||||
|  | 	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ | ||||||
|  | 			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ | ||||||
|  | 	else \ | ||||||
|  | 	  : ; \ | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | # Define this as empty until I found a useful application. | ||||||
|  | installcheck: | ||||||
|  |  | ||||||
|  | uninstall: | ||||||
|  | 	catalogs='$(CATALOGS)'; \ | ||||||
|  | 	for cat in $$catalogs; do \ | ||||||
|  | 	  cat=`basename $$cat`; \ | ||||||
|  | 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ | ||||||
|  | 	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ | ||||||
|  | 	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ | ||||||
|  | 	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ | ||||||
|  | 	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ | ||||||
|  | 	done | ||||||
|  | 	if test "$(PACKAGE)" = "glib"; then \ | ||||||
|  | 	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | check: all | ||||||
|  |  | ||||||
|  | dvi info tags TAGS ID: | ||||||
|  |  | ||||||
|  | mostlyclean: | ||||||
|  | 	rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp | ||||||
|  | 	rm -fr *.o | ||||||
|  |  | ||||||
|  | clean: mostlyclean | ||||||
|  |  | ||||||
|  | distclean: clean | ||||||
|  | 	rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m | ||||||
|  |  | ||||||
|  | maintainer-clean: distclean | ||||||
|  | 	@echo "This command is intended for maintainers to use;" | ||||||
|  | 	@echo "it deletes files that may require special tools to rebuild." | ||||||
|  | 	rm -f $(GMOFILES) | ||||||
|  |  | ||||||
|  | distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) | ||||||
|  | dist distdir: $(DISTFILES) | ||||||
|  | 	dists="$(DISTFILES)"; \ | ||||||
|  | 	for file in $$dists; do \ | ||||||
|  | 	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \ | ||||||
|  | 	    || cp -p $(srcdir)/$$file $(distdir); \ | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | update-po: Makefile | ||||||
|  | 	$(MAKE) $(GETTEXT_PACKAGE).pot | ||||||
|  | 	tmpdir=`pwd`; \ | ||||||
|  | 	cd $(srcdir); \ | ||||||
|  | 	catalogs='$(CATALOGS)'; \ | ||||||
|  | 	for cat in $$catalogs; do \ | ||||||
|  | 	  cat=`basename $$cat`; \ | ||||||
|  | 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ | ||||||
|  | 	  echo "$$lang:"; \ | ||||||
|  | 	  if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \ | ||||||
|  | 	    if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ | ||||||
|  | 	      rm -f $$tmpdir/$$lang.new.po; \ | ||||||
|  |             else \ | ||||||
|  | 	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ | ||||||
|  | 	        :; \ | ||||||
|  | 	      else \ | ||||||
|  | 	        echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ | ||||||
|  | 	        rm -f $$tmpdir/$$lang.new.po; \ | ||||||
|  | 	        exit 1; \ | ||||||
|  | 	      fi; \ | ||||||
|  | 	    fi; \ | ||||||
|  | 	  else \ | ||||||
|  | 	    echo "msgmerge for $$cat failed!"; \ | ||||||
|  | 	    rm -f $$tmpdir/$$lang.new.po; \ | ||||||
|  | 	  fi; \ | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | # POTFILES is created from POTFILES.in by stripping comments, empty lines | ||||||
|  | # and Intltool tags (enclosed in square brackets), and appending a full | ||||||
|  | # relative path to them | ||||||
|  | POTFILES: POTFILES.in | ||||||
|  | 	( if test 'x$(srcdir)' != 'x.'; then \ | ||||||
|  | 	    posrcprefix='$(top_srcdir)/'; \ | ||||||
|  | 	  else \ | ||||||
|  | 	    posrcprefix="../"; \ | ||||||
|  | 	  fi; \ | ||||||
|  | 	  rm -f $@-t $@ \ | ||||||
|  | 	    && (sed -e '/^#/d' 						\ | ||||||
|  | 		    -e "s/^\[.*\] +//" 					\ | ||||||
|  | 		    -e '/^[ 	]*$$/d' 				\ | ||||||
|  | 		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in	\ | ||||||
|  | 		| sed -e '$$s/\\$$//') > $@-t \ | ||||||
|  | 	    && chmod a-w $@-t \ | ||||||
|  | 	    && mv $@-t $@ ) | ||||||
|  |  | ||||||
|  | Makefile: Makefile.in.in ../config.status POTFILES | ||||||
|  | 	cd .. \ | ||||||
|  | 	  && $(SHELL) ./config.status $(subdir)/$@.in | ||||||
|  |  | ||||||
|  | # Tell versions [3.59,3.63) of GNU make not to export all variables. | ||||||
|  | # Otherwise a system limit (for SysV at least) may be exceeded. | ||||||
|  | .NOEXPORT: | ||||||
| @@ -12,6 +12,15 @@ | |||||||
|     <key name='color' enum='org.gtk.Demo.Color'> |     <key name='color' enum='org.gtk.Demo.Color'> | ||||||
|       <default>'red'</default> |       <default>'red'</default> | ||||||
|     </key> |     </key> | ||||||
|  |     <key name='window-size' type='(ii)'> | ||||||
|  |       <default>(-1, -1)</default> | ||||||
|  |     </key> | ||||||
|  |     <key name='maximized' type='b'> | ||||||
|  |       <default>false</default> | ||||||
|  |     </key> | ||||||
|  |     <key name='fullscreen' type='b'> | ||||||
|  |       <default>false</default> | ||||||
|  |     </key> | ||||||
|   </schema> |   </schema> | ||||||
|  |  | ||||||
| </schemalist> | </schemalist> | ||||||
|   | |||||||
| Before Width: | Height: | Size: 779 B After Width: | Height: | Size: 727 B | 
| Before Width: | Height: | Size: 827 B After Width: | Height: | Size: 776 B | 
| After Width: | Height: | Size: 822 B | 
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/icons/Adwaita/16x16/devices/ebook-reader.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 717 B | 
| Before Width: | Height: | Size: 808 B After Width: | Height: | Size: 235 B | 
							
								
								
									
										
											BIN
										
									
								
								gtk-nsis-pack/share/icons/Adwaita/16x16/emotes/emote-love.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 709 B | 
| After Width: | Height: | Size: 727 B | 
| Before Width: | Height: | Size: 793 B After Width: | Height: | Size: 770 B | 
| Before Width: | Height: | Size: 769 B After Width: | Height: | Size: 740 B | 
| Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 776 B |