diff options
Diffstat (limited to 'src/gtk/gtk-code-generator.sh')
-rwxr-xr-x | src/gtk/gtk-code-generator.sh | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/gtk/gtk-code-generator.sh b/src/gtk/gtk-code-generator.sh new file mode 100755 index 0000000..147efb3 --- /dev/null +++ b/src/gtk/gtk-code-generator.sh @@ -0,0 +1,93 @@ +#!/bin/sh + +# Fetch the GtkPlacesView files but rename the symbols to avoid symbol clashes +# when using the file chooser inside nautilus i.e. when activating the "move to" +# action. +# Also remove/add the neccesary bits to make it work inside nautilus + +URL=https://gitlab.gnome.org/GNOME/gtk/raw/gtk-3-24/gtk/ +URLUI=https://gitlab.gnome.org/GNOME/gtk/raw/gtk-3-24/gtk/ui/ +SUFIX=?h=gtk-3-24 + +# Since comments are not allowed inside the sed line, this is what it will do +# by order: +# type substitution +# remove marshalers +# add external localization library after the always there config.h +# and remove the gtk internal P_ and I_ localization, we don't actually +# want localization of this in nautilus +# include gtk.h library after the always there config.h +# and remove all the other types that get included by the general gtk.h +# remove the error when including gtk.h +# load nautilus resources, not gtk resources + +update_file () { + _source="$1" + _dest="$2" + + curl "${_source}" | sed \ + -e 's/gtkplacesview/nautilusgtkplacesview/g' \ + -e 's/gtk_places_view/nautilus_gtk_places_view/g' \ + -e 's/GtkPlacesView/NautilusGtkPlacesView/g' \ + -e 's/GTK_PLACES_VIEW/NAUTILUS_GTK_PLACES_VIEW/g' \ + -e 's/GTK_TYPE_PLACES_VIEW/NAUTILUS_TYPE_GTK_PLACES_VIEW/g' \ + -e 's/GTK_IS_PLACES_VIEW/NAUTILUS_IS_GTK_PLACES_VIEW/g' \ + -e 's/_gtk_marshal_VOID__STRING_STRING/NULL/g' \ + -e '/gtkmarshalers.h/d' \ + -e '/g_signal_set_va_marshaller/,+2d' \ + -e 's/_gtk_marshal_VOID__OBJECT_FLAGS/NULL/g' \ + -e '/"config.h"/a #include <glib\/gi18n.h>' \ + -e "s/P_(\(.*\))/\1/" \ + -e "s/I_(\(.*\))/\1/" \ + -e '/"config.h"/a #include <gtk\/gtk.h>' \ + -e '/gtktypebuiltins.h/d' \ + -e '/gtkplacessidebar.h/d' \ + -e '/gtkintl.h/d' \ + -e '/gtkbox.h/d' \ + -e '/#error/d' \ + -e 's/gtk\/libgtk/gnome\/nautilus\/gtk/g' \ + > "${_dest}" +} + +update_file "${URL}/gtkplacesview.c${SUFIX}" "nautilusgtkplacesview.c" +update_file "${URL}/gtkplacesviewprivate.h${SUFIX}" "nautilusgtkplacesviewprivate.h" +update_file "${URLUI}/gtkplacesview.ui${SUFIX}" "nautilusgtkplacesview.ui" + +# Since comments are not allowed inside the sed line, this is what it will do +# by order: +# type substitution +# use the correct prefixes for type definition +# add external localization library after the always there config.h +# and remove the gtk internal P_ and I_ localization, we don't actually +# want localization of this in nautilus +# include gtk.h library after the always there config.h +# and remove all the other types that get included by the general gtk.h +# remove the error when including gtk.h +# load nautilus resources, not gtk resources +update_file () { + _source="$1" + _dest="$2" + + curl "${_source}" | sed \ + -e 's/gtkplacesviewrow/nautilusgtkplacesviewrow/g' \ + -e 's/gtk_places_view_row/nautilus_gtk_places_view_row/g' \ + -e 's/GtkPlacesViewRow/NautilusGtkPlacesViewRow/g' \ + -e 's/GTK_PLACES_VIEW_ROW/NAUTILUS_GTK_PLACES_VIEW_ROW/g' \ + -e 's/GTK_TYPE_PLACES_VIEW_ROW/NAUTILUS_TYPE_GTK_PLACES_VIEW_ROW/g' \ + -e 's/GTK_IS_PLACES_VIEW_ROW/NAUTILUS_IS_GTK_PLACES_VIEW_ROW/g' \ + -e 's/G_DECLARE_FINAL_TYPE (NautilusGtkPlacesViewRow, nautilus_gtk_places_view_row, GTK, PLACES_VIEW_ROW, GtkListBoxRow/ G_DECLARE_FINAL_TYPE (NautilusGtkPlacesViewRow, nautilus_gtk_places_view_row, NAUTILUS, GTK_PLACES_VIEW_ROW, GtkListBoxRow/g' \ + -e '/"config.h"/a #include <glib\/gi18n.h>' \ + -e "s/P_(\(.*\))/\1/" \ + -e "s/I_(\(.*\))/\1/" \ + -e '/"config.h"/a #include <gtk\/gtk.h>' \ + -e '/gtksizegroup.h/d' \ + -e '/gtkwidget.h/d' \ + -e '/gtklistbox.h/d' \ + -e '/#error /d' \ + -e 's/gtk\/libgtk/gnome\/nautilus\/gtk/g' \ + > "${_dest}" +} + +update_file "${URL}/gtkplacesviewrow.c${SUFIX}" "nautilusgtkplacesviewrow.c" +update_file "${URL}/gtkplacesviewrowprivate.h${SUFIX}" "nautilusgtkplacesviewrowprivate.h" +update_file "${URLUI}/gtkplacesviewrow.ui${SUFIX}" "nautilusgtkplacesviewrow.ui" |