#!/bin/bash

inc="`pkg-config --variable=includedir libxfcegui4-1.0`"/xfce4

for s in "${inc}"/libxfcegui4/*.h
do
	t="${s##*/}"
	
	t="${t%.h}"
	
	if [ "${t#netk-}" = "$t" ]
	then
		defs="${t/-/_}.defs"
		defs="${defs/-/_}"
		python /usr/share/pygtk/2.0/codegen/h2def.py "$s" >"${defs}"
	fi
done
rm -f util.defs

for s in xfce_*.defs
do
	t="${s#xfce_}"
	mv "$s" "$t"
done

#mmv -o 'xfce-*.defs' '#1.defs'
#rm -f libxfce4util.defs
#rm -f libxfce4util-config.defs
#rm -f generics.defs
#rm -f debug.defs

rm -f libnetk.defs
rm -f marshal.defs
rm -f preview_filesel.* # totally weird
rm -f xinerama* # obsolete
# rm -f icontheme.defs # ?

# fix up the enums:

#egrep -v '(gtype-id "(XFCE_TYPE_CLOCK_LED_SIZE|XFCE_TYPE_CLOCK_MODE)")' clock.defs >clock.defs.new && mv clock.defs.new clock.defs
#egrep -v '(gtype-id "XFCE_TYPE_DECORBUTTON_TYPE")' decorbutton.defs >decorbutton.defs.new && mv decorbutton.defs.new decorbutton.defs
#egrep -v '(gtype-id "XFCE_TYPE_FILE_CHOOSER_ACTION")' filechooser.defs >filechooser.defs.new && mv filechooser.defs.new filechooser.defs
#egrep -v '(gtype-id "XFCE_TYPE_FILTER_STATUS")' gtktoxevent.defs >gtktoxevent.defs.new && mv gtktoxevent.defs.new gtktoxevent.defs
#egrep -v '(gtype-id "XFCE_TYPE_ICON_THEME_CATEGORY")' icontheme.defs \
# |sed -e 's;"icon-category-;";' \
# |grep -v "n-builtin-icon-categories" \
# >icontheme.defs.new && mv icontheme.defs.new icontheme.defs
#egrep -v '(gtype-id "(SESSION_TYPE_INTERACT_STYLE|SESSION_TYPE_RESTART_STYLE|SESSION_TYPE_CLIENT_STATE)")' \
#  session_client.defs >session_client.defs.new && mv session_client.defs.new session_client.defs
sed -e 's;(define-function xfce_themed_icon_lookup;(define-function themed_icon_lookup;' \
  -e 's;(define-function xfce_themed_icon_add_search_path;(define-function themed_icon_add_search_path;' \
  -e 's;(define-function xfce_set_icon_theme;(define-function themed_icon_set_icon_theme;' \
  icons.defs >icons.defs.new && mv icons.defs.new icons.defs

sed \
  -e 's;(define-function xfce_confirm;(define-function confirm;' \
  dialogs.defs > dialogs.defs.new && mv dialogs.defs.new dialogs.defs

sed \
  -e 's;(define-function xfce_app_menu_item_set_icon_size;(define-function app_menu_item_set_icon_size;' \
  -e 's;(define-function xfce_app_menu_item_set_icon_theme_name;(define-function app_menu_item_set_icon_theme_name;' \
  appmenuitem.defs >appmenuitem.defs.new && mv appmenuitem.defs.new appmenuitem.defs
  
for s in *.defs
do
  sed -e 's;(define-function xfce_;(define-function ;' "$s" >"${s}.new" && mv "${s}.new" "$s"
done

cat >>icontheme.defs << EOF

(define-function icon_theme_new 
  (c-name "xfce_icon_theme_new")
  (is-constructor-of "XfceIconTheme")
  (return-type "XfceIconTheme*")
  (parameters
    '("GdkScreen*" "screen")
  )      
)

(object IconTheme
  (in-module (Xfce))
  (parent Object)
  (c-name XfceIconTheme)
)
EOF

cat >>aboutdialog.defs << EOF

(object AboutDialog
  (in-module (Xfce))
  (parent Dialog (Gtk))
  (c-name XfceIconTheme)
  (field (type-and-name gchar* program) (access readwrite))
  (field (type-and-name gchar* version) (access readwrite))
  (field (type-and-name GdkPixbuf* icon) (access readwrite))
  (field (type-and-name gchar* description) (access readwrite))
  (field (type-and-name gchar* copyright) (access readwrite))
  (field (type-and-name gchar* license) (access readwrite))
  (field (type-and-name gchar* homepage) (access readwrite))
)
EOF
# TODO: credits

cat >>appmenuitem.defs << EOF
(object AppMenuItem
  (in-module (gui))
  (parent Object)
  (c-name XfceAppMenuItem)
  (field (type-and-name gchar* needs_term) (access readwrite))
  (field (type-and-name gchar* command) (access readwrite))
  (field (type-and-name gchar* icon_name) (access readwrite))
)
EOF

grep -v '(is-constructor-of "XfceAboutDialog")' aboutdialog.defs \
  |sed -e 's;(c-name "xfce_about_dialog_new_empty");(c-name "xfce_about_dialog_new_empty")\
  (is-constructor-of "XfceAboutDialog");' \
  >aboutdialog.defs.new && mv aboutdialog.defs.new aboutdialog.defs
  
