/* basic-row.c generated by valac 0.56.19, the Vala compiler
 * generated from basic-row.vala, do not modify */

#include <adwaita.h>
#include <glib-object.h>
#include <gtk/gtk.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <glib/gi18n-lib.h>
#include <gio/gio.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW (proton_plus_widgets_release_row_get_type ())
#define PROTON_PLUS_WIDGETS_RELEASE_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, ProtonPlusWidgetsReleaseRow))
#define PROTON_PLUS_WIDGETS_RELEASE_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, ProtonPlusWidgetsReleaseRowClass))
#define PROTON_PLUS_WIDGETS_IS_RELEASE_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW))
#define PROTON_PLUS_WIDGETS_IS_RELEASE_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW))
#define PROTON_PLUS_WIDGETS_RELEASE_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, ProtonPlusWidgetsReleaseRowClass))

typedef struct _ProtonPlusWidgetsReleaseRow ProtonPlusWidgetsReleaseRow;
typedef struct _ProtonPlusWidgetsReleaseRowClass ProtonPlusWidgetsReleaseRowClass;
typedef struct _ProtonPlusWidgetsReleaseRowPrivate ProtonPlusWidgetsReleaseRowPrivate;

#define PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW (proton_plus_widgets_basic_row_get_type ())
#define PROTON_PLUS_WIDGETS_BASIC_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW, ProtonPlusWidgetsBasicRow))
#define PROTON_PLUS_WIDGETS_BASIC_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW, ProtonPlusWidgetsBasicRowClass))
#define PROTON_PLUS_WIDGETS_IS_BASIC_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW))
#define PROTON_PLUS_WIDGETS_IS_BASIC_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW))
#define PROTON_PLUS_WIDGETS_BASIC_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW, ProtonPlusWidgetsBasicRowClass))

typedef struct _ProtonPlusWidgetsBasicRow ProtonPlusWidgetsBasicRow;
typedef struct _ProtonPlusWidgetsBasicRowClass ProtonPlusWidgetsBasicRowClass;
typedef struct _ProtonPlusWidgetsBasicRowPrivate ProtonPlusWidgetsBasicRowPrivate;

#define PROTON_PLUS_MODELS_TYPE_BASE_RELEASE (proton_plus_models_base_release_get_type ())
#define PROTON_PLUS_MODELS_BASE_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE, ProtonPlusModelsBaseRelease))
#define PROTON_PLUS_MODELS_BASE_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE, ProtonPlusModelsBaseReleaseClass))
#define PROTON_PLUS_MODELS_IS_BASE_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE))
#define PROTON_PLUS_MODELS_IS_BASE_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE))
#define PROTON_PLUS_MODELS_BASE_RELEASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_BASE_RELEASE, ProtonPlusModelsBaseReleaseClass))

typedef struct _ProtonPlusModelsBaseRelease ProtonPlusModelsBaseRelease;
typedef struct _ProtonPlusModelsBaseReleaseClass ProtonPlusModelsBaseReleaseClass;

#define PROTON_PLUS_MODELS_TYPE_RELEASE (proton_plus_models_release_get_type ())
#define PROTON_PLUS_MODELS_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_RELEASE, ProtonPlusModelsRelease))
#define PROTON_PLUS_MODELS_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_RELEASE, ProtonPlusModelsReleaseClass))
#define PROTON_PLUS_MODELS_IS_RELEASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_RELEASE))
#define PROTON_PLUS_MODELS_IS_RELEASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_RELEASE))
#define PROTON_PLUS_MODELS_RELEASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_RELEASE, ProtonPlusModelsReleaseClass))

typedef struct _ProtonPlusModelsRelease ProtonPlusModelsRelease;
typedef struct _ProtonPlusModelsReleaseClass ProtonPlusModelsReleaseClass;

#define PROTON_PLUS_MODELS_RELEASES_TYPE_BASIC (proton_plus_models_releases_basic_get_type ())
#define PROTON_PLUS_MODELS_RELEASES_BASIC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_BASIC, ProtonPlusModelsReleasesBasic))
#define PROTON_PLUS_MODELS_RELEASES_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RELEASES_TYPE_BASIC, ProtonPlusModelsReleasesBasicClass))
#define PROTON_PLUS_MODELS_RELEASES_IS_BASIC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_BASIC))
#define PROTON_PLUS_MODELS_RELEASES_IS_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RELEASES_TYPE_BASIC))
#define PROTON_PLUS_MODELS_RELEASES_BASIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RELEASES_TYPE_BASIC, ProtonPlusModelsReleasesBasicClass))

typedef struct _ProtonPlusModelsReleasesBasic ProtonPlusModelsReleasesBasic;
typedef struct _ProtonPlusModelsReleasesBasicClass ProtonPlusModelsReleasesBasicClass;
enum  {
	PROTON_PLUS_WIDGETS_BASIC_ROW_0_PROPERTY,
	PROTON_PLUS_WIDGETS_BASIC_ROW_NUM_PROPERTIES
};
static GParamSpec* proton_plus_widgets_basic_row_properties[PROTON_PLUS_WIDGETS_BASIC_ROW_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_time_zone_unref0(var) ((var == NULL) ? NULL : (var = (g_time_zone_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))

#define PROTON_PLUS_WIDGETS_TYPE_WINDOW (proton_plus_widgets_window_get_type ())
#define PROTON_PLUS_WIDGETS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_WINDOW, ProtonPlusWidgetsWindow))
#define PROTON_PLUS_WIDGETS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_WINDOW, ProtonPlusWidgetsWindowClass))
#define PROTON_PLUS_WIDGETS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_WINDOW))
#define PROTON_PLUS_WIDGETS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_WINDOW))
#define PROTON_PLUS_WIDGETS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_WINDOW, ProtonPlusWidgetsWindowClass))

typedef struct _ProtonPlusWidgetsWindow ProtonPlusWidgetsWindow;
typedef struct _ProtonPlusWidgetsWindowClass ProtonPlusWidgetsWindowClass;

#define PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER (proton_plus_models_download_manager_get_type ())
#define PROTON_PLUS_MODELS_DOWNLOAD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER, ProtonPlusModelsDownloadManager))
#define PROTON_PLUS_MODELS_DOWNLOAD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER, ProtonPlusModelsDownloadManagerClass))
#define PROTON_PLUS_MODELS_IS_DOWNLOAD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER))
#define PROTON_PLUS_MODELS_IS_DOWNLOAD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER))
#define PROTON_PLUS_MODELS_DOWNLOAD_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_DOWNLOAD_MANAGER, ProtonPlusModelsDownloadManagerClass))

typedef struct _ProtonPlusModelsDownloadManager ProtonPlusModelsDownloadManager;
typedef struct _ProtonPlusModelsDownloadManagerClass ProtonPlusModelsDownloadManagerClass;
#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_unref (var), NULL)))

#define PROTON_PLUS_MODELS_TYPE_RUNNER (proton_plus_models_runner_get_type ())
#define PROTON_PLUS_MODELS_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunner))
#define PROTON_PLUS_MODELS_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunnerClass))
#define PROTON_PLUS_MODELS_IS_RUNNER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER))
#define PROTON_PLUS_MODELS_IS_RUNNER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_RUNNER))
#define PROTON_PLUS_MODELS_RUNNER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_RUNNER, ProtonPlusModelsRunnerClass))

typedef struct _ProtonPlusModelsRunner ProtonPlusModelsRunner;
typedef struct _ProtonPlusModelsRunnerClass ProtonPlusModelsRunnerClass;

#define PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC (proton_plus_models_runners_basic_get_type ())
#define PROTON_PLUS_MODELS_RUNNERS_BASIC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC, ProtonPlusModelsRunnersBasic))
#define PROTON_PLUS_MODELS_RUNNERS_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC, ProtonPlusModelsRunnersBasicClass))
#define PROTON_PLUS_MODELS_RUNNERS_IS_BASIC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC))
#define PROTON_PLUS_MODELS_RUNNERS_IS_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC))
#define PROTON_PLUS_MODELS_RUNNERS_BASIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_RUNNERS_TYPE_BASIC, ProtonPlusModelsRunnersBasicClass))

typedef struct _ProtonPlusModelsRunnersBasic ProtonPlusModelsRunnersBasic;
typedef struct _ProtonPlusModelsRunnersBasicClass ProtonPlusModelsRunnersBasicClass;

#define PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG (proton_plus_widgets_error_dialog_get_type ())
#define PROTON_PLUS_WIDGETS_ERROR_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG, ProtonPlusWidgetsErrorDialog))
#define PROTON_PLUS_WIDGETS_ERROR_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG, ProtonPlusWidgetsErrorDialogClass))
#define PROTON_PLUS_WIDGETS_IS_ERROR_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG))
#define PROTON_PLUS_WIDGETS_IS_ERROR_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG))
#define PROTON_PLUS_WIDGETS_ERROR_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_ERROR_DIALOG, ProtonPlusWidgetsErrorDialogClass))

typedef struct _ProtonPlusWidgetsErrorDialog ProtonPlusWidgetsErrorDialog;
typedef struct _ProtonPlusWidgetsErrorDialogClass ProtonPlusWidgetsErrorDialogClass;

#define PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG (proton_plus_widgets_remove_dialog_get_type ())
#define PROTON_PLUS_WIDGETS_REMOVE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG, ProtonPlusWidgetsRemoveDialog))
#define PROTON_PLUS_WIDGETS_REMOVE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG, ProtonPlusWidgetsRemoveDialogClass))
#define PROTON_PLUS_WIDGETS_IS_REMOVE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG))
#define PROTON_PLUS_WIDGETS_IS_REMOVE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG))
#define PROTON_PLUS_WIDGETS_REMOVE_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_REMOVE_DIALOG, ProtonPlusWidgetsRemoveDialogClass))

typedef struct _ProtonPlusWidgetsRemoveDialog ProtonPlusWidgetsRemoveDialog;
typedef struct _ProtonPlusWidgetsRemoveDialogClass ProtonPlusWidgetsRemoveDialogClass;

#define PROTON_PLUS_MODELS_TYPE_PARAMETERS (proton_plus_models_parameters_get_type ())
#define PROTON_PLUS_MODELS_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_PARAMETERS, ProtonPlusModelsParameters))
#define PROTON_PLUS_MODELS_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_PARAMETERS, ProtonPlusModelsParametersClass))
#define PROTON_PLUS_MODELS_IS_PARAMETERS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_PARAMETERS))
#define PROTON_PLUS_MODELS_IS_PARAMETERS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_PARAMETERS))
#define PROTON_PLUS_MODELS_PARAMETERS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_PARAMETERS, ProtonPlusModelsParametersClass))

typedef struct _ProtonPlusModelsParameters ProtonPlusModelsParameters;
typedef struct _ProtonPlusModelsParametersClass ProtonPlusModelsParametersClass;

#define PROTON_PLUS_WIDGETS_TYPE_DESCRIPTION_DIALOG (proton_plus_widgets_description_dialog_get_type ())
#define PROTON_PLUS_WIDGETS_DESCRIPTION_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_WIDGETS_TYPE_DESCRIPTION_DIALOG, ProtonPlusWidgetsDescriptionDialog))
#define PROTON_PLUS_WIDGETS_DESCRIPTION_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_WIDGETS_TYPE_DESCRIPTION_DIALOG, ProtonPlusWidgetsDescriptionDialogClass))
#define PROTON_PLUS_WIDGETS_IS_DESCRIPTION_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_WIDGETS_TYPE_DESCRIPTION_DIALOG))
#define PROTON_PLUS_WIDGETS_IS_DESCRIPTION_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_WIDGETS_TYPE_DESCRIPTION_DIALOG))
#define PROTON_PLUS_WIDGETS_DESCRIPTION_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_WIDGETS_TYPE_DESCRIPTION_DIALOG, ProtonPlusWidgetsDescriptionDialogClass))

typedef struct _ProtonPlusWidgetsDescriptionDialog ProtonPlusWidgetsDescriptionDialog;
typedef struct _ProtonPlusWidgetsDescriptionDialogClass ProtonPlusWidgetsDescriptionDialogClass;
typedef enum  {
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_NOT_INSTALLED,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UPDATE_AVAILABLE,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UP_TO_DATE,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_INSTALLING,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_REMOVING,
	PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_UPDATING
} ProtonPlusModelsBaseReleaseState;

#define PROTON_PLUS_MODELS_BASE_RELEASE_TYPE_STATE (proton_plus_models_base_release_state_get_type ())

#define PROTON_PLUS_MODELS_TYPE_GROUP (proton_plus_models_group_get_type ())
#define PROTON_PLUS_MODELS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroup))
#define PROTON_PLUS_MODELS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroupClass))
#define PROTON_PLUS_MODELS_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_GROUP))
#define PROTON_PLUS_MODELS_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_GROUP))
#define PROTON_PLUS_MODELS_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_GROUP, ProtonPlusModelsGroupClass))

typedef struct _ProtonPlusModelsGroup ProtonPlusModelsGroup;
typedef struct _ProtonPlusModelsGroupClass ProtonPlusModelsGroupClass;

#define PROTON_PLUS_MODELS_TYPE_LAUNCHER (proton_plus_models_launcher_get_type ())
#define PROTON_PLUS_MODELS_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncher))
#define PROTON_PLUS_MODELS_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncherClass))
#define PROTON_PLUS_MODELS_IS_LAUNCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER))
#define PROTON_PLUS_MODELS_IS_LAUNCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PROTON_PLUS_MODELS_TYPE_LAUNCHER))
#define PROTON_PLUS_MODELS_LAUNCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROTON_PLUS_MODELS_TYPE_LAUNCHER, ProtonPlusModelsLauncherClass))

typedef struct _ProtonPlusModelsLauncher ProtonPlusModelsLauncher;
typedef struct _ProtonPlusModelsLauncherClass ProtonPlusModelsLauncherClass;

struct _ProtonPlusWidgetsReleaseRow {
	AdwActionRow parent_instance;
	ProtonPlusWidgetsReleaseRowPrivate * priv;
	GtkButton* update_button;
	GtkButton* open_button;
	GtkButton* install_button;
	GtkButton* remove_button;
	GtkButton* info_button;
	GtkBox* input_box;
};

struct _ProtonPlusWidgetsReleaseRowClass {
	AdwActionRowClass parent_class;
	void (*update_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*open_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*install_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*remove_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
	void (*info_button_clicked) (ProtonPlusWidgetsReleaseRow* self);
};

struct _ProtonPlusWidgetsBasicRow {
	ProtonPlusWidgetsReleaseRow parent_instance;
	ProtonPlusWidgetsBasicRowPrivate * priv;
};

struct _ProtonPlusWidgetsBasicRowClass {
	ProtonPlusWidgetsReleaseRowClass parent_class;
};

struct _ProtonPlusWidgetsBasicRowPrivate {
	ProtonPlusModelsReleasesBasic* _release;
};

static gint ProtonPlusWidgetsBasicRow_private_offset;
static gpointer proton_plus_widgets_basic_row_parent_class = NULL;
VALA_EXTERN ProtonPlusWidgetsWindow* proton_plus_widgets_application_window;

VALA_EXTERN GType proton_plus_widgets_release_row_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsReleaseRow, g_object_unref)
VALA_EXTERN GType proton_plus_widgets_basic_row_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsBasicRow, g_object_unref)
VALA_EXTERN GType proton_plus_models_base_release_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsBaseRelease, g_object_unref)
VALA_EXTERN GType proton_plus_models_release_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRelease, g_object_unref)
VALA_EXTERN GType proton_plus_models_releases_basic_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsReleasesBasic, g_object_unref)
VALA_EXTERN void proton_plus_widgets_release_row_update_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_open_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_install_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_remove_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN void proton_plus_widgets_release_row_info_button_clicked (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN ProtonPlusWidgetsBasicRow* proton_plus_widgets_basic_row_new (ProtonPlusModelsReleasesBasic* release);
VALA_EXTERN ProtonPlusWidgetsBasicRow* proton_plus_widgets_basic_row_construct (GType object_type,
                                                                    ProtonPlusModelsReleasesBasic* release);
VALA_EXTERN ProtonPlusWidgetsReleaseRow* proton_plus_widgets_release_row_construct (GType object_type);
static void proton_plus_widgets_basic_row_set_release (ProtonPlusWidgetsBasicRow* self,
                                                ProtonPlusModelsReleasesBasic* value);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_release_date (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_description (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_page_url (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_title (ProtonPlusModelsBaseRelease* self);
static void proton_plus_widgets_basic_row_release_displayed_title_changed (ProtonPlusWidgetsBasicRow* self);
static void _proton_plus_widgets_basic_row_release_displayed_title_changed_g_object_notify (GObject* _sender,
                                                                                     GParamSpec* pspec,
                                                                                     gpointer self);
static void proton_plus_widgets_basic_row_release_state_changed (ProtonPlusWidgetsBasicRow* self);
static void _proton_plus_widgets_basic_row_release_state_changed_g_object_notify (GObject* _sender,
                                                                           GParamSpec* pspec,
                                                                           gpointer self);
VALA_EXTERN GType proton_plus_widgets_window_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsWindow, g_object_unref)
VALA_EXTERN GType proton_plus_models_download_manager_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsDownloadManager, g_object_unref)
VALA_EXTERN ProtonPlusModelsDownloadManager* proton_plus_models_download_manager_get_instance (void);
static void proton_plus_widgets_basic_row_on_download_status_changed (ProtonPlusWidgetsBasicRow* self,
                                                               ProtonPlusModelsBaseRelease* added_release);
static void _proton_plus_widgets_basic_row_on_download_status_changed_proton_plus_models_download_manager_download_added (ProtonPlusModelsDownloadManager* _sender,
                                                                                                                   ProtonPlusModelsBaseRelease* release,
                                                                                                                   gpointer self);
static void _proton_plus_widgets_basic_row_on_download_status_changed_proton_plus_models_download_manager_download_removed (ProtonPlusModelsDownloadManager* _sender,
                                                                                                                     ProtonPlusModelsBaseRelease* release,
                                                                                                                     gpointer self);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_download_url (ProtonPlusModelsBaseRelease* self);
static ProtonPlusModelsReleasesBasic* proton_plus_widgets_basic_row_get_release (ProtonPlusWidgetsBasicRow* self);
static void proton_plus_widgets_basic_row_real_update_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN GType proton_plus_models_runner_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunner, g_object_unref)
VALA_EXTERN GType proton_plus_models_runners_basic_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsRunnersBasic, g_object_unref)
VALA_EXTERN void proton_plus_widgets_window_check_for_updates (ProtonPlusWidgetsWindow* self,
                                                   ProtonPlusModelsRunnersBasic* runner,
                                                   GAsyncReadyCallback _callback_,
                                                   gpointer _user_data_);
VALA_EXTERN void proton_plus_widgets_window_check_for_updates_finish (ProtonPlusWidgetsWindow* self,
                                                          GAsyncResult* _res_);
VALA_EXTERN ProtonPlusModelsRunner* proton_plus_models_base_release_get_runner (ProtonPlusModelsBaseRelease* self);
static void proton_plus_widgets_basic_row_real_open_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN void proton_plus_utils_system_open_uri (const gchar* uri);
VALA_EXTERN const gchar* proton_plus_models_releases_basic_get_install_location (ProtonPlusModelsReleasesBasic* self);
static void proton_plus_widgets_basic_row_real_install_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN void proton_plus_models_base_release_install (ProtonPlusModelsBaseRelease* self,
                                              GAsyncReadyCallback _callback_,
                                              gpointer _user_data_);
VALA_EXTERN gboolean proton_plus_models_base_release_install_finish (ProtonPlusModelsBaseRelease* self,
                                                         GAsyncResult* _res_);
static void __lambda28_ (ProtonPlusWidgetsBasicRow* self,
                  GObject* obj,
                  GAsyncResult* res);
VALA_EXTERN gboolean proton_plus_models_base_release_get_canceled (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN GType proton_plus_widgets_error_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsErrorDialog, g_object_unref)
VALA_EXTERN ProtonPlusWidgetsErrorDialog* proton_plus_widgets_error_dialog_new (const gchar* heading,
                                                                    const gchar* body);
VALA_EXTERN ProtonPlusWidgetsErrorDialog* proton_plus_widgets_error_dialog_construct (GType object_type,
                                                                          const gchar* heading,
                                                                          const gchar* body);
static void ___lambda28__gasync_ready_callback (GObject* source_object,
                                         GAsyncResult* res,
                                         gpointer self);
VALA_EXTERN void proton_plus_widgets_window_show_downloads_page (ProtonPlusWidgetsWindow* self);
static void proton_plus_widgets_basic_row_real_remove_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN GType proton_plus_widgets_remove_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsRemoveDialog, g_object_unref)
VALA_EXTERN ProtonPlusModelsParameters* proton_plus_models_parameters_new (void);
VALA_EXTERN ProtonPlusModelsParameters* proton_plus_models_parameters_construct (GType object_type);
VALA_EXTERN GType proton_plus_models_parameters_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsParameters, g_object_unref)
VALA_EXTERN ProtonPlusWidgetsRemoveDialog* proton_plus_widgets_remove_dialog_new (ProtonPlusModelsBaseRelease* release,
                                                                      ProtonPlusModelsParameters* parameters);
VALA_EXTERN ProtonPlusWidgetsRemoveDialog* proton_plus_widgets_remove_dialog_construct (GType object_type,
                                                                            ProtonPlusModelsBaseRelease* release,
                                                                            ProtonPlusModelsParameters* parameters);
static void proton_plus_widgets_basic_row_real_info_button_clicked (ProtonPlusWidgetsReleaseRow* base);
VALA_EXTERN GType proton_plus_widgets_description_dialog_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusWidgetsDescriptionDialog, g_object_unref)
VALA_EXTERN ProtonPlusWidgetsDescriptionDialog* proton_plus_widgets_description_dialog_new (ProtonPlusModelsRelease* release);
VALA_EXTERN ProtonPlusWidgetsDescriptionDialog* proton_plus_widgets_description_dialog_construct (GType object_type,
                                                                                      ProtonPlusModelsRelease* release);
VALA_EXTERN GType proton_plus_models_base_release_state_get_type (void) G_GNUC_CONST ;
VALA_EXTERN ProtonPlusModelsBaseReleaseState proton_plus_models_base_release_get_state (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN GType proton_plus_models_group_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsGroup, g_object_unref)
VALA_EXTERN ProtonPlusModelsGroup* proton_plus_models_runner_get_group (ProtonPlusModelsRunner* self);
VALA_EXTERN GType proton_plus_models_launcher_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProtonPlusModelsLauncher, g_object_unref)
VALA_EXTERN ProtonPlusModelsLauncher* proton_plus_models_group_get_launcher (ProtonPlusModelsGroup* self);
VALA_EXTERN gint proton_plus_models_launcher_get_compatibility_tool_usage_count (ProtonPlusModelsLauncher* self,
                                                                     const gchar* compatibility_tool_name);
VALA_EXTERN const gchar* proton_plus_models_base_release_get_displayed_title (ProtonPlusModelsBaseRelease* self);
VALA_EXTERN void proton_plus_widgets_release_row_only_show (ProtonPlusWidgetsReleaseRow* self);
VALA_EXTERN gboolean proton_plus_widgets_window_get_updating (ProtonPlusWidgetsWindow* self);
VALA_EXTERN gboolean proton_plus_models_download_manager_is_downloading (ProtonPlusModelsDownloadManager* self,
                                                             ProtonPlusModelsBaseRelease* release);
static void proton_plus_widgets_basic_row_finalize (GObject * obj);
static GType proton_plus_widgets_basic_row_get_type_once (void);
static void _vala_proton_plus_widgets_basic_row_get_property (GObject * object,
                                                       guint property_id,
                                                       GValue * value,
                                                       GParamSpec * pspec);
static void _vala_proton_plus_widgets_basic_row_set_property (GObject * object,
                                                       guint property_id,
                                                       const GValue * value,
                                                       GParamSpec * pspec);

static inline gpointer
proton_plus_widgets_basic_row_get_instance_private (ProtonPlusWidgetsBasicRow* self)
{
	return G_STRUCT_MEMBER_P (self, ProtonPlusWidgetsBasicRow_private_offset);
}

static gboolean
string_contains (const gchar* self,
                 const gchar* needle)
{
	gchar* _tmp0_;
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (needle != NULL, FALSE);
	_tmp0_ = strstr ((gchar*) self, (gchar*) needle);
	result = _tmp0_ != NULL;
	return result;
}

static void
_proton_plus_widgets_basic_row_release_displayed_title_changed_g_object_notify (GObject* _sender,
                                                                                GParamSpec* pspec,
                                                                                gpointer self)
{
	proton_plus_widgets_basic_row_release_displayed_title_changed ((ProtonPlusWidgetsBasicRow*) self);
}

static void
_proton_plus_widgets_basic_row_release_state_changed_g_object_notify (GObject* _sender,
                                                                      GParamSpec* pspec,
                                                                      gpointer self)
{
	proton_plus_widgets_basic_row_release_state_changed ((ProtonPlusWidgetsBasicRow*) self);
}

static void
_proton_plus_widgets_basic_row_on_download_status_changed_proton_plus_models_download_manager_download_added (ProtonPlusModelsDownloadManager* _sender,
                                                                                                              ProtonPlusModelsBaseRelease* release,
                                                                                                              gpointer self)
{
	proton_plus_widgets_basic_row_on_download_status_changed ((ProtonPlusWidgetsBasicRow*) self, release);
}

static void
_proton_plus_widgets_basic_row_on_download_status_changed_proton_plus_models_download_manager_download_removed (ProtonPlusModelsDownloadManager* _sender,
                                                                                                                ProtonPlusModelsBaseRelease* release,
                                                                                                                gpointer self)
{
	proton_plus_widgets_basic_row_on_download_status_changed ((ProtonPlusWidgetsBasicRow*) self, release);
}

ProtonPlusWidgetsBasicRow*
proton_plus_widgets_basic_row_construct (GType object_type,
                                         ProtonPlusModelsReleasesBasic* release)
{
	ProtonPlusWidgetsBasicRow * self = NULL;
	GDateTime* time = NULL;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	GTimeZone* _tmp2_;
	GTimeZone* _tmp3_;
	GDateTime* _tmp4_;
	GDateTime* _tmp5_;
	GDateTime* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gboolean _tmp9_ = FALSE;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	ProtonPlusWidgetsWindow* _tmp20_;
	ProtonPlusModelsDownloadManager* _tmp21_;
	ProtonPlusModelsDownloadManager* _tmp22_;
	ProtonPlusModelsDownloadManager* _tmp23_;
	ProtonPlusModelsDownloadManager* _tmp24_;
	g_return_val_if_fail (release != NULL, NULL);
	self = (ProtonPlusWidgetsBasicRow*) proton_plus_widgets_release_row_construct (object_type);
	proton_plus_widgets_basic_row_set_release (self, release);
	_tmp0_ = proton_plus_models_base_release_get_release_date ((ProtonPlusModelsBaseRelease*) release);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_time_zone_new_local ();
	_tmp3_ = _tmp2_;
	_tmp4_ = g_date_time_new_from_iso8601 (_tmp1_, _tmp3_);
	_tmp5_ = _tmp4_;
	_g_time_zone_unref0 (_tmp3_);
	time = _tmp5_;
	_tmp6_ = time;
	_tmp7_ = g_date_time_format (_tmp6_, "%c");
	_tmp8_ = _tmp7_;
	adw_action_row_set_subtitle ((AdwActionRow*) self, _tmp8_);
	_g_free0 (_tmp8_);
	_tmp10_ = proton_plus_models_base_release_get_description ((ProtonPlusModelsBaseRelease*) release);
	_tmp11_ = _tmp10_;
	if (_tmp11_ == NULL) {
		_tmp9_ = TRUE;
	} else {
		const gchar* _tmp12_;
		const gchar* _tmp13_;
		_tmp12_ = proton_plus_models_base_release_get_page_url ((ProtonPlusModelsBaseRelease*) release);
		_tmp13_ = _tmp12_;
		_tmp9_ = _tmp13_ == NULL;
	}
	if (_tmp9_) {
		GtkBox* _tmp14_;
		GtkButton* _tmp15_;
		_tmp14_ = ((ProtonPlusWidgetsReleaseRow*) self)->input_box;
		_tmp15_ = ((ProtonPlusWidgetsReleaseRow*) self)->info_button;
		gtk_box_remove (_tmp14_, (GtkWidget*) _tmp15_);
	}
	_tmp16_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) release);
	_tmp17_ = _tmp16_;
	if (string_contains (_tmp17_, "Latest")) {
		adw_action_row_set_subtitle ((AdwActionRow*) self, _ ("This version will get automatically updated when there's an update ava" \
"ilable each time your launch the application if automatic updates is e" \
"nabled"));
	} else {
		GtkBox* _tmp18_;
		GtkButton* _tmp19_;
		_tmp18_ = ((ProtonPlusWidgetsReleaseRow*) self)->input_box;
		_tmp19_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		gtk_box_remove (_tmp18_, (GtkWidget*) _tmp19_);
	}
	g_signal_connect_object ((GObject*) release, "notify::displayed-title", (GCallback) _proton_plus_widgets_basic_row_release_displayed_title_changed_g_object_notify, self, 0);
	proton_plus_widgets_basic_row_release_displayed_title_changed (self);
	g_signal_connect_object ((GObject*) release, "notify::state", (GCallback) _proton_plus_widgets_basic_row_release_state_changed_g_object_notify, self, 0);
	_tmp20_ = proton_plus_widgets_application_window;
	g_signal_connect_object ((GObject*) _tmp20_, "notify::updating", (GCallback) _proton_plus_widgets_basic_row_release_state_changed_g_object_notify, self, 0);
	proton_plus_widgets_basic_row_release_state_changed (self);
	_tmp21_ = proton_plus_models_download_manager_get_instance ();
	_tmp22_ = _tmp21_;
	g_signal_connect_object (_tmp22_, "download-added", (GCallback) _proton_plus_widgets_basic_row_on_download_status_changed_proton_plus_models_download_manager_download_added, self, 0);
	_tmp23_ = proton_plus_models_download_manager_get_instance ();
	_tmp24_ = _tmp23_;
	g_signal_connect_object (_tmp24_, "download-removed", (GCallback) _proton_plus_widgets_basic_row_on_download_status_changed_proton_plus_models_download_manager_download_removed, self, 0);
	_g_date_time_unref0 (time);
	return self;
}

ProtonPlusWidgetsBasicRow*
proton_plus_widgets_basic_row_new (ProtonPlusModelsReleasesBasic* release)
{
	return proton_plus_widgets_basic_row_construct (PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW, release);
}

static void
proton_plus_widgets_basic_row_on_download_status_changed (ProtonPlusWidgetsBasicRow* self,
                                                          ProtonPlusModelsBaseRelease* added_release)
{
	gboolean _tmp0_ = FALSE;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	ProtonPlusModelsReleasesBasic* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (added_release != NULL);
	_tmp1_ = proton_plus_models_base_release_get_download_url (added_release);
	_tmp2_ = _tmp1_;
	_tmp3_ = self->priv->_release;
	_tmp4_ = proton_plus_models_base_release_get_download_url ((ProtonPlusModelsBaseRelease*) _tmp3_);
	_tmp5_ = _tmp4_;
	if (g_strcmp0 (_tmp2_, _tmp5_) == 0) {
		const gchar* _tmp6_;
		const gchar* _tmp7_;
		ProtonPlusModelsReleasesBasic* _tmp8_;
		const gchar* _tmp9_;
		const gchar* _tmp10_;
		_tmp6_ = proton_plus_models_base_release_get_title (added_release);
		_tmp7_ = _tmp6_;
		_tmp8_ = self->priv->_release;
		_tmp9_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp0_ = g_strcmp0 (_tmp7_, _tmp10_) == 0;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		proton_plus_widgets_basic_row_release_state_changed (self);
	}
}

static void
proton_plus_widgets_basic_row_real_update_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsBasicRow * self;
	ProtonPlusWidgetsWindow* _tmp0_;
	ProtonPlusModelsReleasesBasic* _tmp1_;
	ProtonPlusModelsRunner* _tmp2_;
	ProtonPlusModelsRunner* _tmp3_;
	self = (ProtonPlusWidgetsBasicRow*) base;
	_tmp0_ = proton_plus_widgets_application_window;
	_tmp1_ = self->priv->_release;
	_tmp2_ = proton_plus_models_base_release_get_runner ((ProtonPlusModelsBaseRelease*) _tmp1_);
	_tmp3_ = _tmp2_;
	proton_plus_widgets_window_check_for_updates (_tmp0_, PROTON_PLUS_MODELS_RUNNERS_IS_BASIC (_tmp3_) ? ((ProtonPlusModelsRunnersBasic*) _tmp3_) : NULL, NULL, NULL);
}

static void
proton_plus_widgets_basic_row_real_open_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsBasicRow * self;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	self = (ProtonPlusWidgetsBasicRow*) base;
	_tmp0_ = self->priv->_release;
	_tmp1_ = proton_plus_models_releases_basic_get_install_location (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("file://%s", _tmp2_);
	_tmp4_ = _tmp3_;
	proton_plus_utils_system_open_uri (_tmp4_);
	_g_free0 (_tmp4_);
}

static void
__lambda28_ (ProtonPlusWidgetsBasicRow* self,
             GObject* obj,
             GAsyncResult* res)
{
	gboolean success = FALSE;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	gboolean _tmp1_ = FALSE;
	g_return_if_fail (res != NULL);
	_tmp0_ = self->priv->_release;
	success = proton_plus_models_base_release_install_finish ((ProtonPlusModelsBaseRelease*) _tmp0_, res);
	if (!success) {
		ProtonPlusModelsReleasesBasic* _tmp2_;
		gboolean _tmp3_;
		gboolean _tmp4_;
		_tmp2_ = self->priv->_release;
		_tmp3_ = proton_plus_models_base_release_get_canceled ((ProtonPlusModelsBaseRelease*) _tmp2_);
		_tmp4_ = _tmp3_;
		_tmp1_ = !_tmp4_;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		ProtonPlusWidgetsErrorDialog* dialog = NULL;
		ProtonPlusModelsReleasesBasic* _tmp5_;
		const gchar* _tmp6_;
		const gchar* _tmp7_;
		gchar* _tmp8_;
		gchar* _tmp9_;
		ProtonPlusWidgetsErrorDialog* _tmp10_;
		ProtonPlusWidgetsErrorDialog* _tmp11_;
		ProtonPlusWidgetsErrorDialog* _tmp12_;
		ProtonPlusWidgetsWindow* _tmp13_;
		_tmp5_ = self->priv->_release;
		_tmp6_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = g_strdup_printf (_ ("Couldn't install %s"), _tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = proton_plus_widgets_error_dialog_new (_tmp9_, _ ("Please report this issue on GitHub."));
		g_object_ref_sink (_tmp10_);
		_tmp11_ = _tmp10_;
		_g_free0 (_tmp9_);
		dialog = _tmp11_;
		_tmp12_ = dialog;
		_tmp13_ = proton_plus_widgets_application_window;
		adw_dialog_present ((AdwDialog*) _tmp12_, (GtkWidget*) _tmp13_);
		_g_object_unref0 (dialog);
	}
}

static void
___lambda28__gasync_ready_callback (GObject* source_object,
                                    GAsyncResult* res,
                                    gpointer self)
{
	__lambda28_ ((ProtonPlusWidgetsBasicRow*) self, source_object, res);
	g_object_unref (self);
}

static void
proton_plus_widgets_basic_row_real_install_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsBasicRow * self;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	ProtonPlusWidgetsWindow* _tmp1_;
	self = (ProtonPlusWidgetsBasicRow*) base;
	_tmp0_ = self->priv->_release;
	proton_plus_models_base_release_install ((ProtonPlusModelsBaseRelease*) _tmp0_, ___lambda28__gasync_ready_callback, g_object_ref (self));
	_tmp1_ = proton_plus_widgets_application_window;
	proton_plus_widgets_window_show_downloads_page (_tmp1_);
}

static void
proton_plus_widgets_basic_row_real_remove_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsBasicRow * self;
	ProtonPlusWidgetsRemoveDialog* remove_dialog = NULL;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	ProtonPlusModelsParameters* _tmp1_;
	ProtonPlusModelsParameters* _tmp2_;
	ProtonPlusWidgetsRemoveDialog* _tmp3_;
	ProtonPlusWidgetsRemoveDialog* _tmp4_;
	ProtonPlusWidgetsWindow* _tmp5_;
	self = (ProtonPlusWidgetsBasicRow*) base;
	_tmp0_ = self->priv->_release;
	_tmp1_ = proton_plus_models_parameters_new ();
	_tmp2_ = _tmp1_;
	_tmp3_ = proton_plus_widgets_remove_dialog_new ((ProtonPlusModelsBaseRelease*) _tmp0_, _tmp2_);
	g_object_ref_sink (_tmp3_);
	_tmp4_ = _tmp3_;
	_g_object_unref0 (_tmp2_);
	remove_dialog = _tmp4_;
	_tmp5_ = proton_plus_widgets_application_window;
	adw_dialog_present ((AdwDialog*) remove_dialog, (GtkWidget*) _tmp5_);
	_g_object_unref0 (remove_dialog);
}

static void
proton_plus_widgets_basic_row_real_info_button_clicked (ProtonPlusWidgetsReleaseRow* base)
{
	ProtonPlusWidgetsBasicRow * self;
	ProtonPlusWidgetsDescriptionDialog* description_dialog = NULL;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	ProtonPlusWidgetsDescriptionDialog* _tmp1_;
	ProtonPlusWidgetsWindow* _tmp2_;
	self = (ProtonPlusWidgetsBasicRow*) base;
	_tmp0_ = self->priv->_release;
	_tmp1_ = proton_plus_widgets_description_dialog_new ((ProtonPlusModelsRelease*) _tmp0_);
	g_object_ref_sink (_tmp1_);
	description_dialog = _tmp1_;
	_tmp2_ = proton_plus_widgets_application_window;
	adw_dialog_present ((AdwDialog*) description_dialog, (GtkWidget*) _tmp2_);
	_g_object_unref0 (description_dialog);
}

static void
proton_plus_widgets_basic_row_release_displayed_title_changed (ProtonPlusWidgetsBasicRow* self)
{
	gint usage_count = 0;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	ProtonPlusModelsBaseReleaseState _tmp1_;
	ProtonPlusModelsBaseReleaseState _tmp2_;
	gchar* _tmp17_ = NULL;
	ProtonPlusModelsReleasesBasic* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_ = NULL;
	g_return_if_fail (self != NULL);
	usage_count = 0;
	_tmp0_ = self->priv->_release;
	_tmp1_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UP_TO_DATE) {
		const gchar* _tmp3_ = NULL;
		ProtonPlusModelsReleasesBasic* _tmp4_;
		const gchar* _tmp5_;
		const gchar* _tmp6_;
		ProtonPlusModelsReleasesBasic* _tmp10_;
		ProtonPlusModelsRunner* _tmp11_;
		ProtonPlusModelsRunner* _tmp12_;
		ProtonPlusModelsGroup* _tmp13_;
		ProtonPlusModelsGroup* _tmp14_;
		ProtonPlusModelsLauncher* _tmp15_;
		ProtonPlusModelsLauncher* _tmp16_;
		_tmp4_ = self->priv->_release;
		_tmp5_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp4_);
		_tmp6_ = _tmp5_;
		if (g_strcmp0 (_tmp6_, "SteamTinkerLaunch") != 0) {
			ProtonPlusModelsReleasesBasic* _tmp7_;
			const gchar* _tmp8_;
			const gchar* _tmp9_;
			_tmp7_ = self->priv->_release;
			_tmp8_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp7_);
			_tmp9_ = _tmp8_;
			_tmp3_ = _tmp9_;
		} else {
			_tmp3_ = "Proton-stl";
		}
		_tmp10_ = self->priv->_release;
		_tmp11_ = proton_plus_models_base_release_get_runner ((ProtonPlusModelsBaseRelease*) _tmp10_);
		_tmp12_ = _tmp11_;
		_tmp13_ = proton_plus_models_runner_get_group (_tmp12_);
		_tmp14_ = _tmp13_;
		_tmp15_ = proton_plus_models_group_get_launcher (_tmp14_);
		_tmp16_ = _tmp15_;
		usage_count = proton_plus_models_launcher_get_compatibility_tool_usage_count (_tmp16_, _tmp3_);
	}
	if (usage_count > 0) {
		gchar* _tmp18_;
		_tmp18_ = g_strdup_printf (" (%s)", _ ("Used"));
		_g_free0 (_tmp17_);
		_tmp17_ = _tmp18_;
	} else {
		gchar* _tmp19_;
		_tmp19_ = g_strdup ("");
		_g_free0 (_tmp17_);
		_tmp17_ = _tmp19_;
	}
	_tmp20_ = self->priv->_release;
	_tmp21_ = proton_plus_models_base_release_get_displayed_title ((ProtonPlusModelsBaseRelease*) _tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = g_strdup_printf ("%s%s", _tmp22_, _tmp17_);
	_tmp24_ = _tmp23_;
	adw_preferences_row_set_title ((AdwPreferencesRow*) self, _tmp24_);
	_g_free0 (_tmp24_);
	if (usage_count > 0) {
		ProtonPlusModelsReleasesBasic* _tmp26_;
		const gchar* _tmp27_;
		const gchar* _tmp28_;
		gchar* _tmp29_;
		_tmp26_ = self->priv->_release;
		_tmp27_ = proton_plus_models_base_release_get_displayed_title ((ProtonPlusModelsBaseRelease*) _tmp26_);
		_tmp28_ = _tmp27_;
		_tmp29_ = g_strdup_printf (_ ("%s is used by %i game(s)"), _tmp28_, usage_count);
		_g_free0 (_tmp25_);
		_tmp25_ = _tmp29_;
	} else {
		ProtonPlusModelsReleasesBasic* _tmp30_;
		const gchar* _tmp31_;
		const gchar* _tmp32_;
		gchar* _tmp33_;
		_tmp30_ = self->priv->_release;
		_tmp31_ = proton_plus_models_base_release_get_displayed_title ((ProtonPlusModelsBaseRelease*) _tmp30_);
		_tmp32_ = _tmp31_;
		_tmp33_ = g_strdup (_tmp32_);
		_g_free0 (_tmp25_);
		_tmp25_ = _tmp33_;
	}
	gtk_widget_set_tooltip_text ((GtkWidget*) self, _tmp25_);
	proton_plus_widgets_release_row_only_show ((ProtonPlusWidgetsReleaseRow*) self);
	_g_free0 (_tmp25_);
	_g_free0 (_tmp17_);
}

static void
proton_plus_widgets_basic_row_release_state_changed (ProtonPlusWidgetsBasicRow* self)
{
	gboolean installed = FALSE;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	ProtonPlusModelsBaseReleaseState _tmp1_;
	ProtonPlusModelsBaseReleaseState _tmp2_;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	ProtonPlusModelsReleasesBasic* _tmp5_;
	ProtonPlusModelsBaseReleaseState _tmp6_;
	ProtonPlusModelsBaseReleaseState _tmp7_;
	gboolean busy = FALSE;
	GtkButton* _tmp14_;
	GtkButton* _tmp15_;
	GtkButton* _tmp16_;
	GtkButton* _tmp17_;
	GtkButton* _tmp18_;
	GtkButton* _tmp19_;
	ProtonPlusModelsReleasesBasic* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->_release;
	_tmp1_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp0_);
	_tmp2_ = _tmp1_;
	installed = _tmp2_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_UP_TO_DATE;
	_tmp5_ = self->priv->_release;
	_tmp6_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp5_);
	_tmp7_ = _tmp6_;
	if (_tmp7_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_INSTALLING) {
		_tmp4_ = TRUE;
	} else {
		ProtonPlusModelsReleasesBasic* _tmp8_;
		ProtonPlusModelsBaseReleaseState _tmp9_;
		ProtonPlusModelsBaseReleaseState _tmp10_;
		_tmp8_ = self->priv->_release;
		_tmp9_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp4_ = _tmp10_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_REMOVING;
	}
	if (_tmp4_) {
		_tmp3_ = TRUE;
	} else {
		ProtonPlusModelsReleasesBasic* _tmp11_;
		ProtonPlusModelsBaseReleaseState _tmp12_;
		ProtonPlusModelsBaseReleaseState _tmp13_;
		_tmp11_ = self->priv->_release;
		_tmp12_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp11_);
		_tmp13_ = _tmp12_;
		_tmp3_ = _tmp13_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_UPDATING;
	}
	busy = _tmp3_;
	_tmp14_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp14_, !installed);
	_tmp15_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp15_, installed);
	_tmp16_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp16_, installed);
	_tmp17_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
	gtk_widget_set_visible ((GtkWidget*) _tmp17_, installed);
	_tmp18_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
	gtk_widget_set_sensitive ((GtkWidget*) _tmp18_, !busy);
	_tmp19_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
	gtk_widget_set_sensitive ((GtkWidget*) _tmp19_, !busy);
	_tmp20_ = self->priv->_release;
	_tmp21_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp20_);
	_tmp22_ = _tmp21_;
	if (string_contains (_tmp22_, "Latest")) {
		gboolean _tmp23_ = FALSE;
		GtkButton* _tmp27_;
		gboolean _tmp28_ = FALSE;
		GtkButton* _tmp32_;
		if (!busy) {
			ProtonPlusWidgetsWindow* _tmp24_;
			gboolean _tmp25_;
			gboolean _tmp26_;
			_tmp24_ = proton_plus_widgets_application_window;
			_tmp25_ = proton_plus_widgets_window_get_updating (_tmp24_);
			_tmp26_ = _tmp25_;
			_tmp23_ = !_tmp26_;
		} else {
			_tmp23_ = FALSE;
		}
		_tmp27_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		gtk_widget_set_sensitive ((GtkWidget*) _tmp27_, _tmp23_);
		if (!busy) {
			ProtonPlusWidgetsWindow* _tmp29_;
			gboolean _tmp30_;
			gboolean _tmp31_;
			_tmp29_ = proton_plus_widgets_application_window;
			_tmp30_ = proton_plus_widgets_window_get_updating (_tmp29_);
			_tmp31_ = _tmp30_;
			_tmp28_ = !_tmp31_;
		} else {
			_tmp28_ = FALSE;
		}
		_tmp32_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		gtk_widget_set_sensitive ((GtkWidget*) _tmp32_, _tmp28_);
	} else {
		GtkButton* _tmp33_;
		GtkButton* _tmp34_;
		_tmp33_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		gtk_widget_set_sensitive ((GtkWidget*) _tmp33_, !busy);
		_tmp34_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		gtk_widget_set_sensitive ((GtkWidget*) _tmp34_, !busy);
	}
	if (busy) {
		gchar* tooltip_text = NULL;
		gchar* _tmp35_;
		ProtonPlusModelsDownloadManager* _tmp36_;
		ProtonPlusModelsDownloadManager* _tmp37_;
		ProtonPlusModelsReleasesBasic* _tmp38_;
		ProtonPlusModelsReleasesBasic* _tmp41_;
		ProtonPlusModelsBaseReleaseState _tmp42_;
		ProtonPlusModelsBaseReleaseState _tmp43_;
		ProtonPlusModelsReleasesBasic* _tmp46_;
		ProtonPlusModelsBaseReleaseState _tmp47_;
		ProtonPlusModelsBaseReleaseState _tmp48_;
		GtkButton* _tmp51_;
		const gchar* _tmp52_;
		GtkButton* _tmp53_;
		const gchar* _tmp54_;
		GtkButton* _tmp55_;
		const gchar* _tmp56_;
		GtkButton* _tmp57_;
		const gchar* _tmp58_;
		_tmp35_ = g_strdup (_ ("This tool is currently being installed"));
		tooltip_text = _tmp35_;
		_tmp36_ = proton_plus_models_download_manager_get_instance ();
		_tmp37_ = _tmp36_;
		_tmp38_ = self->priv->_release;
		if (proton_plus_models_download_manager_is_downloading (_tmp37_, (ProtonPlusModelsBaseRelease*) _tmp38_)) {
			gchar* _tmp39_;
			GtkButton* _tmp40_;
			_tmp39_ = g_strdup (_ ("This tool is currently being downloaded"));
			_g_free0 (tooltip_text);
			tooltip_text = _tmp39_;
			_tmp40_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
			gtk_widget_add_css_class ((GtkWidget*) _tmp40_, "bounce-animation");
		}
		_tmp41_ = self->priv->_release;
		_tmp42_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp41_);
		_tmp43_ = _tmp42_;
		if (_tmp43_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_REMOVING) {
			gchar* _tmp44_;
			GtkButton* _tmp45_;
			_tmp44_ = g_strdup (_ ("This tool is currently being removed"));
			_g_free0 (tooltip_text);
			tooltip_text = _tmp44_;
			_tmp45_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
			gtk_widget_add_css_class ((GtkWidget*) _tmp45_, "bounce-animation");
		}
		_tmp46_ = self->priv->_release;
		_tmp47_ = proton_plus_models_base_release_get_state ((ProtonPlusModelsBaseRelease*) _tmp46_);
		_tmp48_ = _tmp47_;
		if (_tmp48_ == PROTON_PLUS_MODELS_BASE_RELEASE_STATE_BUSY_UPDATING) {
			gchar* _tmp49_;
			GtkButton* _tmp50_;
			_tmp49_ = g_strdup (_ ("This tool is currently being updated"));
			_g_free0 (tooltip_text);
			tooltip_text = _tmp49_;
			_tmp50_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
			gtk_widget_add_css_class ((GtkWidget*) _tmp50_, "bounce-animation");
		}
		_tmp51_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
		_tmp52_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp51_, _tmp52_);
		_tmp53_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		_tmp54_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp53_, _tmp54_);
		_tmp55_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		_tmp56_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp55_, _tmp56_);
		_tmp57_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
		_tmp58_ = tooltip_text;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp57_, _tmp58_);
		_g_free0 (tooltip_text);
	} else {
		GtkButton* _tmp59_;
		ProtonPlusModelsReleasesBasic* _tmp60_;
		const gchar* _tmp61_;
		const gchar* _tmp62_;
		gchar* _tmp63_;
		gchar* _tmp64_;
		GtkButton* _tmp65_;
		GtkButton* _tmp66_;
		ProtonPlusModelsReleasesBasic* _tmp67_;
		const gchar* _tmp68_;
		const gchar* _tmp69_;
		gchar* _tmp70_;
		gchar* _tmp71_;
		GtkButton* _tmp72_;
		GtkButton* _tmp73_;
		GtkButton* _tmp74_;
		GtkButton* _tmp75_;
		gboolean _tmp76_ = FALSE;
		ProtonPlusWidgetsWindow* _tmp77_;
		gboolean _tmp78_;
		gboolean _tmp79_;
		_tmp59_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
		_tmp60_ = self->priv->_release;
		_tmp61_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp60_);
		_tmp62_ = _tmp61_;
		_tmp63_ = g_strdup_printf (_ ("Install %s"), _tmp62_);
		_tmp64_ = _tmp63_;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp59_, _tmp64_);
		_g_free0 (_tmp64_);
		_tmp65_ = ((ProtonPlusWidgetsReleaseRow*) self)->install_button;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp65_, "bounce-animation");
		_tmp66_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		_tmp67_ = self->priv->_release;
		_tmp68_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp67_);
		_tmp69_ = _tmp68_;
		_tmp70_ = g_strdup_printf (_ ("Delete %s"), _tmp69_);
		_tmp71_ = _tmp70_;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp66_, _tmp71_);
		_g_free0 (_tmp71_);
		_tmp72_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp72_, "bounce-animation");
		_tmp73_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp73_, _ ("Update the runner if a newer version is available"));
		_tmp74_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
		gtk_widget_remove_css_class ((GtkWidget*) _tmp74_, "bounce-animation");
		_tmp75_ = ((ProtonPlusWidgetsReleaseRow*) self)->open_button;
		gtk_widget_set_tooltip_text ((GtkWidget*) _tmp75_, _ ("Open runner directory"));
		_tmp77_ = proton_plus_widgets_application_window;
		_tmp78_ = proton_plus_widgets_window_get_updating (_tmp77_);
		_tmp79_ = _tmp78_;
		if (_tmp79_) {
			ProtonPlusModelsReleasesBasic* _tmp80_;
			const gchar* _tmp81_;
			const gchar* _tmp82_;
			_tmp80_ = self->priv->_release;
			_tmp81_ = proton_plus_models_base_release_get_title ((ProtonPlusModelsBaseRelease*) _tmp80_);
			_tmp82_ = _tmp81_;
			_tmp76_ = string_contains (_tmp82_, "Latest");
		} else {
			_tmp76_ = FALSE;
		}
		if (_tmp76_) {
			gchar* updating_text = NULL;
			gchar* _tmp83_;
			GtkButton* _tmp84_;
			const gchar* _tmp85_;
			GtkButton* _tmp86_;
			const gchar* _tmp87_;
			_tmp83_ = g_strdup (_ ("The application is currently updating its runners"));
			updating_text = _tmp83_;
			_tmp84_ = ((ProtonPlusWidgetsReleaseRow*) self)->remove_button;
			_tmp85_ = updating_text;
			gtk_widget_set_tooltip_text ((GtkWidget*) _tmp84_, _tmp85_);
			_tmp86_ = ((ProtonPlusWidgetsReleaseRow*) self)->update_button;
			_tmp87_ = updating_text;
			gtk_widget_set_tooltip_text ((GtkWidget*) _tmp86_, _tmp87_);
			_g_free0 (updating_text);
		}
	}
}

static ProtonPlusModelsReleasesBasic*
proton_plus_widgets_basic_row_get_release (ProtonPlusWidgetsBasicRow* self)
{
	ProtonPlusModelsReleasesBasic* result;
	ProtonPlusModelsReleasesBasic* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_release;
	result = _tmp0_;
	return result;
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static void
proton_plus_widgets_basic_row_set_release (ProtonPlusWidgetsBasicRow* self,
                                           ProtonPlusModelsReleasesBasic* value)
{
	ProtonPlusModelsReleasesBasic* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = _g_object_ref0 (value);
	_g_object_unref0 (self->priv->_release);
	self->priv->_release = _tmp0_;
}

static void
proton_plus_widgets_basic_row_class_init (ProtonPlusWidgetsBasicRowClass * klass,
                                          gpointer klass_data)
{
	proton_plus_widgets_basic_row_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ProtonPlusWidgetsBasicRow_private_offset);
	((ProtonPlusWidgetsReleaseRowClass *) klass)->update_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_basic_row_real_update_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->open_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_basic_row_real_open_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->install_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_basic_row_real_install_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->remove_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_basic_row_real_remove_button_clicked;
	((ProtonPlusWidgetsReleaseRowClass *) klass)->info_button_clicked = (void (*) (ProtonPlusWidgetsReleaseRow*)) proton_plus_widgets_basic_row_real_info_button_clicked;
	G_OBJECT_CLASS (klass)->get_property = _vala_proton_plus_widgets_basic_row_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_proton_plus_widgets_basic_row_set_property;
	G_OBJECT_CLASS (klass)->finalize = proton_plus_widgets_basic_row_finalize;
}

static void
proton_plus_widgets_basic_row_instance_init (ProtonPlusWidgetsBasicRow * self,
                                             gpointer klass)
{
	self->priv = proton_plus_widgets_basic_row_get_instance_private (self);
}

static void
proton_plus_widgets_basic_row_finalize (GObject * obj)
{
	ProtonPlusWidgetsBasicRow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW, ProtonPlusWidgetsBasicRow);
	_g_object_unref0 (self->priv->_release);
	G_OBJECT_CLASS (proton_plus_widgets_basic_row_parent_class)->finalize (obj);
}

static GType
proton_plus_widgets_basic_row_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ProtonPlusWidgetsBasicRowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) proton_plus_widgets_basic_row_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProtonPlusWidgetsBasicRow), 0, (GInstanceInitFunc) proton_plus_widgets_basic_row_instance_init, NULL };
	GType proton_plus_widgets_basic_row_type_id;
	proton_plus_widgets_basic_row_type_id = g_type_register_static (PROTON_PLUS_WIDGETS_TYPE_RELEASE_ROW, "ProtonPlusWidgetsBasicRow", &g_define_type_info, 0);
	ProtonPlusWidgetsBasicRow_private_offset = g_type_add_instance_private (proton_plus_widgets_basic_row_type_id, sizeof (ProtonPlusWidgetsBasicRowPrivate));
	return proton_plus_widgets_basic_row_type_id;
}

GType
proton_plus_widgets_basic_row_get_type (void)
{
	static volatile gsize proton_plus_widgets_basic_row_type_id__once = 0;
	if (g_once_init_enter (&proton_plus_widgets_basic_row_type_id__once)) {
		GType proton_plus_widgets_basic_row_type_id;
		proton_plus_widgets_basic_row_type_id = proton_plus_widgets_basic_row_get_type_once ();
		g_once_init_leave (&proton_plus_widgets_basic_row_type_id__once, proton_plus_widgets_basic_row_type_id);
	}
	return proton_plus_widgets_basic_row_type_id__once;
}

static void
_vala_proton_plus_widgets_basic_row_get_property (GObject * object,
                                                  guint property_id,
                                                  GValue * value,
                                                  GParamSpec * pspec)
{
	ProtonPlusWidgetsBasicRow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW, ProtonPlusWidgetsBasicRow);
	switch (property_id) {
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_proton_plus_widgets_basic_row_set_property (GObject * object,
                                                  guint property_id,
                                                  const GValue * value,
                                                  GParamSpec * pspec)
{
	ProtonPlusWidgetsBasicRow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, PROTON_PLUS_WIDGETS_TYPE_BASIC_ROW, ProtonPlusWidgetsBasicRow);
	switch (property_id) {
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

