if (NOT GTK_FOUND)
    message (FATAL_ERROR "GTK is required for gui")
endif ()

add_definitions (${GTK_CFLAGS} ${GTK_CFLAGS_OTHER})
link_libraries (${GTK_LIBRARIES})
link_directories (${GTK_LIBRARY_DIRS})

set (c_sources, "")
if (${GTK_gtk+-2.0_VERSION} VERSION_LESS 2.18)
    list (APPEND c_sources gtk-2.18.c)
endif ()
if (${GTK_gtk+-2.0_VERSION} VERSION_LESS 2.16)
    add_definitions ("-include ${CMAKE_CURRENT_SOURCE_DIR}/gtk-2.16.h")
    list (APPEND c_sources gtk-2.16.c)
endif ()
if (${GTK_gtk+-2.0_VERSION} VERSION_LESS 2.14)
    list (APPEND c_sources gtk-2.14.c)
endif ()

add_component (
    COMPONENT
        gui
    C_SOURCES
        ${c_sources}
    VALA_SOURCES
        misc.vala
        container.vala
        paintbin.vala
        tooltext.vala
        homogenetable.vala
        toolbarbox.vala
        animator.vala
        palettegroup.vala
        paletteinvoker.vala
        palettewindow.vala
        icon.vala
        palette.vala
        paletteconnector.vala
        toolitem.vala
        entry.vala
        table.vala
        window.vala
        accelerator.vala
        embeddedmenu.vala
        menu.vala
        label.vala
        alignment.vala
    VALAC_ARGS
        --pkg glib-2.0 --pkg dbus-glib-1 --pkg x11 --pkg gtk+-2.0 --pkg pango
        --pkg cairo --pkg librsvg-2.0 --pkg gee-1.0
    REQUIRES_COMPONENTS
        env
    VALA_PATCHES
        # https://bugzilla.gnome.org/show_bug.cgi?id=611498
        sed -i "'/g_signal_new.*\"signal_set_scroll_adjustments\"/s/g_signal_new/GTK_WIDGET_CLASS (klass)->set_scroll_adjustments_signal = g_signal_new/'" homogenetable.c &&
        # https://bugzilla.gnome.org/show_bug.cgi?id=615545
        sed -i "'/g_object_class_install_property.*SUGAR_MENU_ITEM_RELATED_ACTION/s/^.*$$/g_object_class_override_property (G_OBJECT_CLASS (klass), SUGAR_MENU_ITEM_RELATED_ACTION, \"related-action\")::/'" menu.c &&
        sed -i "'/g_object_class_install_property.*SUGAR_MENU_ITEM_USE_ACTION_APPEARANCE/s/^.*$$/g_object_class_override_property (G_OBJECT_CLASS (klass), SUGAR_MENU_ITEM_USE_ACTION_APPEARANCE, \"use-action-appearance\")::/'" menu.c &&
        # https://bugzilla.gnome.org/show_bug.cgi?id=615637
        echo "'void sugar_box_insert (SugarBox* self, GtkWidget* widget, gint pos) { g_signal_emit_by_name (self, \"insert\", widget, pos):: }'" >> container.c &&
        echo "'void sugar_menu_item_activate_item (SugarMenuItem* self) { g_signal_emit_by_name (self, \"activate_item\"):: }'" >> menu.c &&
        # Wrong argument order in gdk_pixbuf_save_to_callback's callback, fixed in new vala
        sed -i "'/static gboolean __lambda0__gdk_pixbuf_save_func/s/, gpointer self, GError.. error/, GError** error, gpointer self/g'" misc.c &&
        true)
