|
Packit |
1e8aac |
/*
|
|
Packit |
1e8aac |
* Copyright (C) 2013 Tristan Van Berkom.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This library is free software; you can redistribute it and/or modify it
|
|
Packit |
1e8aac |
* under the terms of the GNU Lesser General Public License as
|
|
Packit |
1e8aac |
* published by the Free Software Foundation; either version 2.1 of
|
|
Packit |
1e8aac |
* the License, or (at your option) any later version.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* This library is distributed in the hope that it will be useful, but
|
|
Packit |
1e8aac |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
1e8aac |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
1e8aac |
* Lesser General Public License for more details.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
1e8aac |
* License along with this program; if not, write to the Free Software
|
|
Packit |
1e8aac |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
1e8aac |
*
|
|
Packit |
1e8aac |
* Authors:
|
|
Packit |
1e8aac |
* Tristan Van Berkom <tvb@gnome.org>
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#include <config.h>
|
|
Packit |
1e8aac |
#include <glib/gi18n-lib.h>
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#include "glade-project-properties.h"
|
|
Packit |
1e8aac |
#include "glade-project.h"
|
|
Packit |
1e8aac |
#include "glade-command.h"
|
|
Packit |
1e8aac |
#include "glade-app.h"
|
|
Packit |
1e8aac |
#include "glade-utils.h"
|
|
Packit |
1e8aac |
#include "glade-private.h"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* GObjectClass */
|
|
Packit |
1e8aac |
static void glade_project_properties_finalize (GObject *object);
|
|
Packit |
1e8aac |
static void glade_project_properties_set_property (GObject *object,
|
|
Packit |
1e8aac |
guint prop_id,
|
|
Packit |
1e8aac |
const GValue *value,
|
|
Packit |
1e8aac |
GParamSpec *pspec);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* UI Callbacks */
|
|
Packit |
1e8aac |
static void on_template_combo_box_changed (GtkComboBox *combo,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_template_checkbutton_toggled (GtkToggleButton *togglebutton,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void resource_default_toggled (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void resource_relative_toggled (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void resource_fullpath_toggled (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_relative_path_entry_insert_text (GtkEditable *editable,
|
|
Packit |
1e8aac |
gchar *new_text,
|
|
Packit |
1e8aac |
gint new_text_length,
|
|
Packit |
1e8aac |
gint *position,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_relative_path_entry_changed (GtkEntry *entry,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void resource_full_path_set (GtkFileChooserButton *button,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void verify_clicked (GtkWidget *button,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_domain_entry_changed (GtkWidget *entry,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void target_button_clicked (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_glade_project_properties_hide (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_css_filechooser_file_set (GtkFileChooserButton *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_css_checkbutton_toggled (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void on_license_comboboxtext_changed (GtkComboBox *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void on_license_data_changed (GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Project callbacks */
|
|
Packit |
1e8aac |
static void project_resource_path_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void project_template_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void project_domain_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void project_targets_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void project_license_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
static void project_css_provider_path_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
struct _GladeProjectPropertiesPrivate
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProject *project;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Properties */
|
|
Packit |
1e8aac |
GtkWidget *project_wide_radio;
|
|
Packit |
1e8aac |
GtkWidget *toplevel_contextual_radio;
|
|
Packit |
1e8aac |
GtkWidget *toolkit_box;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GtkWidget *resource_default_radio;
|
|
Packit |
1e8aac |
GtkWidget *resource_relative_radio;
|
|
Packit |
1e8aac |
GtkWidget *resource_fullpath_radio;
|
|
Packit |
1e8aac |
GtkWidget *relative_path_entry;
|
|
Packit |
1e8aac |
GtkWidget *full_path_button;
|
|
Packit |
1e8aac |
GtkWidget *domain_entry;
|
|
Packit |
1e8aac |
GtkWidget *template_combobox;
|
|
Packit |
1e8aac |
GtkWidget *template_checkbutton;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GtkWidget *css_filechooser;
|
|
Packit |
1e8aac |
GtkWidget *css_checkbutton;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
GHashTable *target_radios;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* License */
|
|
Packit |
1e8aac |
GtkComboBox *license_comboboxtext;
|
|
Packit |
1e8aac |
GtkTextView *license_textview;
|
|
Packit |
1e8aac |
GtkEntryBuffer *name_entrybuffer;
|
|
Packit |
1e8aac |
GtkEntryBuffer *description_entrybuffer;
|
|
Packit |
1e8aac |
GtkTextBuffer *authors_textbuffer;
|
|
Packit |
1e8aac |
GtkTextBuffer *copyright_textbuffer;
|
|
Packit |
1e8aac |
GtkTextBuffer *license_textbuffer;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gboolean ignore_ui_cb;
|
|
Packit |
1e8aac |
};
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
enum
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
PROP_0,
|
|
Packit |
1e8aac |
PROP_PROJECT,
|
|
Packit |
1e8aac |
};
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
G_DEFINE_TYPE_WITH_PRIVATE (GladeProjectProperties, glade_project_properties, GTK_TYPE_DIALOG);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/********************************************************
|
|
Packit |
1e8aac |
* Class/Instance Init *
|
|
Packit |
1e8aac |
********************************************************/
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_project_properties_init (GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
properties->priv = priv = glade_project_properties_get_instance_private (properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->target_radios = g_hash_table_new_full (g_str_hash, g_str_equal,
|
|
Packit |
1e8aac |
g_free, NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_init_template (GTK_WIDGET (properties));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_project_properties_class_init (GladeProjectPropertiesClass *klass)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GObjectClass *gobject_class;
|
|
Packit |
1e8aac |
GtkWidgetClass *widget_class;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gobject_class = G_OBJECT_CLASS (klass);
|
|
Packit |
1e8aac |
widget_class = GTK_WIDGET_CLASS (klass);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gobject_class->finalize = glade_project_properties_finalize;
|
|
Packit |
1e8aac |
gobject_class->set_property = glade_project_properties_set_property;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_object_class_install_property
|
|
Packit |
1e8aac |
(gobject_class, PROP_PROJECT,
|
|
Packit |
1e8aac |
g_param_spec_object ("project", _("Project"),
|
|
Packit |
1e8aac |
_("The project this properties dialog was created for"),
|
|
Packit |
1e8aac |
GLADE_TYPE_PROJECT,
|
|
Packit |
1e8aac |
G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Setup the template GtkBuilder xml for this class
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/gladeui/glade-project-properties.ui");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Define the relationship of the private entry and the entry defined in the xml
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, resource_default_radio);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, resource_relative_radio);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, resource_fullpath_radio);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, relative_path_entry);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, full_path_button);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, domain_entry);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, template_checkbutton);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, template_combobox);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, toolkit_box);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, css_filechooser);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, css_checkbutton);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, license_comboboxtext);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, license_textview);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, name_entrybuffer);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, description_entrybuffer);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, authors_textbuffer);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, copyright_textbuffer);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_child_private (widget_class, GladeProjectProperties, license_textbuffer);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Declare the callback ports that this widget class exposes, to bind with <signal>
|
|
Packit |
1e8aac |
* connections defined in the GtkBuilder xml
|
|
Packit |
1e8aac |
*/
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_template_combo_box_changed);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_template_checkbutton_toggled);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, resource_default_toggled);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, resource_relative_toggled);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, resource_fullpath_toggled);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, resource_full_path_set);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, verify_clicked);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_domain_entry_changed);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_relative_path_entry_insert_text);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_relative_path_entry_changed);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_glade_project_properties_hide);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_css_filechooser_file_set);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_css_checkbutton_toggled);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_license_comboboxtext_changed);
|
|
Packit |
1e8aac |
gtk_widget_class_bind_template_callback (widget_class, on_license_data_changed);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/********************************************************
|
|
Packit |
1e8aac |
* GObjectClass *
|
|
Packit |
1e8aac |
********************************************************/
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_project_properties_finalize (GObject *object)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectProperties *properties = GLADE_PROJECT_PROPERTIES (object);
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_hash_table_destroy (priv->target_radios);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
G_OBJECT_CLASS (glade_project_properties_parent_class)->finalize (object);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
target_version_box_fill (GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GladeProject *project = priv->project;
|
|
Packit |
1e8aac |
GtkWidget *vbox = priv->toolkit_box;
|
|
Packit |
1e8aac |
GtkWidget *label, *active_radio, *target_radio, *hbox;
|
|
Packit |
1e8aac |
GList *list, *targets;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Add stuff to vbox */
|
|
Packit |
1e8aac |
for (list = glade_app_get_catalogs (); list; list = g_list_next (list))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeCatalog *catalog = list->data;
|
|
Packit |
1e8aac |
gint minor, major;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Skip if theres only one option */
|
|
Packit |
1e8aac |
if (g_list_length (glade_catalog_get_targets (catalog)) <= 1)
|
|
Packit |
1e8aac |
continue;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_project_get_target_version (project,
|
|
Packit |
1e8aac |
glade_catalog_get_name (catalog),
|
|
Packit |
1e8aac |
&major, &minor);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Special case to mark GTK+ in upper case */
|
|
Packit |
1e8aac |
if (strcmp (glade_catalog_get_name (catalog), "gtk+") == 0)
|
|
Packit |
1e8aac |
label = gtk_label_new ("GTK+");
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
label = gtk_label_new (glade_catalog_get_name (catalog));
|
|
Packit |
1e8aac |
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_show (label);
|
|
Packit |
1e8aac |
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 2);
|
|
Packit |
1e8aac |
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
active_radio = target_radio = NULL;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
for (targets = glade_catalog_get_targets (catalog);
|
|
Packit |
1e8aac |
targets; targets = targets->next)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeTargetableVersion *version = targets->data;
|
|
Packit |
1e8aac |
gchar *name = g_strdup_printf ("%d.%d",
|
|
Packit |
1e8aac |
version->major,
|
|
Packit |
1e8aac |
version->minor);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!target_radio)
|
|
Packit |
1e8aac |
target_radio = gtk_radio_button_new_with_label (NULL, name);
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
target_radio =
|
|
Packit |
1e8aac |
gtk_radio_button_new_with_label_from_widget
|
|
Packit |
1e8aac |
(GTK_RADIO_BUTTON (target_radio), name);
|
|
Packit |
1e8aac |
g_free (name);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_signal_connect (G_OBJECT (target_radio), "clicked",
|
|
Packit |
1e8aac |
G_CALLBACK (target_button_clicked), properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_object_set_data (G_OBJECT (target_radio), "version", version);
|
|
Packit |
1e8aac |
g_object_set_data (G_OBJECT (target_radio), "catalog",
|
|
Packit |
1e8aac |
(gchar *) glade_catalog_get_name (catalog));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_show (target_radio);
|
|
Packit |
1e8aac |
gtk_box_pack_end (GTK_BOX (hbox), target_radio, TRUE, TRUE, 2);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (major == version->major && minor == version->minor)
|
|
Packit |
1e8aac |
active_radio = target_radio;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (active_radio)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (active_radio), TRUE);
|
|
Packit |
1e8aac |
g_hash_table_insert (priv->target_radios,
|
|
Packit |
1e8aac |
g_strdup (glade_catalog_get_name (catalog)),
|
|
Packit |
1e8aac |
gtk_radio_button_get_group (GTK_RADIO_BUTTON
|
|
Packit |
1e8aac |
(active_radio)));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
g_warning ("Corrupt catalog versions");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_widget_show (hbox);
|
|
Packit |
1e8aac |
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 2);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
update_prefs_for_resource_path (GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
const gchar *resource_path;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
resource_path = glade_project_get_resource_path (priv->project);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (resource_path == NULL)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_entry_set_text (GTK_ENTRY (priv->relative_path_entry), "");
|
|
Packit |
1e8aac |
gtk_file_chooser_unselect_all (GTK_FILE_CHOOSER (priv->full_path_button));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->resource_default_radio), TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->full_path_button, FALSE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->relative_path_entry, FALSE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else if (g_path_is_absolute (resource_path) &&
|
|
Packit |
1e8aac |
g_file_test (resource_path, G_FILE_TEST_IS_DIR))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_entry_set_text (GTK_ENTRY (priv->relative_path_entry), "");
|
|
Packit |
1e8aac |
gtk_file_chooser_select_filename (GTK_FILE_CHOOSER (priv->full_path_button),
|
|
Packit |
1e8aac |
resource_path);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->resource_fullpath_radio), TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->full_path_button, TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->relative_path_entry, FALSE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (g_strcmp0 (resource_path, gtk_entry_get_text (GTK_ENTRY (priv->relative_path_entry))))
|
|
Packit |
1e8aac |
gtk_entry_set_text (GTK_ENTRY (priv->relative_path_entry), resource_path);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_file_chooser_unselect_all (GTK_FILE_CHOOSER (priv->full_path_button));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->resource_relative_radio), TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->relative_path_entry, TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->full_path_button, FALSE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_project_properties_set_project (GladeProjectProperties *properties,
|
|
Packit |
1e8aac |
GladeProject *project)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* No strong reference, we belong to the project */
|
|
Packit |
1e8aac |
g_assert (priv->project == NULL);
|
|
Packit |
1e8aac |
priv->project = project;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_signal_connect (priv->project, "notify::resource-path",
|
|
Packit |
1e8aac |
G_CALLBACK (project_resource_path_changed), properties);
|
|
Packit |
1e8aac |
g_signal_connect (priv->project, "notify::template",
|
|
Packit |
1e8aac |
G_CALLBACK (project_template_changed), properties);
|
|
Packit |
1e8aac |
g_signal_connect (priv->project, "notify::translation-domain",
|
|
Packit |
1e8aac |
G_CALLBACK (project_domain_changed), properties);
|
|
Packit |
1e8aac |
g_signal_connect (priv->project, "notify::css-provider-path",
|
|
Packit |
1e8aac |
G_CALLBACK (project_css_provider_path_changed), properties);
|
|
Packit |
1e8aac |
g_signal_connect (priv->project, "targets-changed",
|
|
Packit |
1e8aac |
G_CALLBACK (project_targets_changed), properties);
|
|
Packit |
1e8aac |
g_signal_connect (priv->project, "notify::license",
|
|
Packit |
1e8aac |
G_CALLBACK (project_license_changed), properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
target_version_box_fill (properties);
|
|
Packit |
1e8aac |
update_prefs_for_resource_path (properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
project_template_changed (project, NULL, properties);
|
|
Packit |
1e8aac |
project_domain_changed (project, NULL, properties);
|
|
Packit |
1e8aac |
project_css_provider_path_changed (project, NULL, properties);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
glade_project_properties_set_property (GObject *object,
|
|
Packit |
1e8aac |
guint prop_id,
|
|
Packit |
1e8aac |
const GValue *value,
|
|
Packit |
1e8aac |
GParamSpec *pspec)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
switch (prop_id)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
case PROP_PROJECT:
|
|
Packit |
1e8aac |
glade_project_properties_set_project (GLADE_PROJECT_PROPERTIES (object),
|
|
Packit |
1e8aac |
g_value_get_object (value));
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
default:
|
|
Packit |
1e8aac |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/********************************************************
|
|
Packit |
1e8aac |
* Callbacks *
|
|
Packit |
1e8aac |
********************************************************/
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
target_button_clicked (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GladeTargetableVersion *version;
|
|
Packit |
1e8aac |
gchar *catalog;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
version = g_object_get_data (G_OBJECT (widget), "version");
|
|
Packit |
1e8aac |
catalog = g_object_get_data (G_OBJECT (widget), "catalog");
|
|
Packit |
1e8aac |
glade_command_set_project_target (priv->project, catalog, version->major, version->minor);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
resource_default_toggled (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb ||
|
|
Packit |
1e8aac |
!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_command_set_project_resource_path (priv->project, NULL);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
resource_relative_toggled (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GtkToggleButton *toggle = GTK_TOGGLE_BUTTON (widget);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb || !gtk_toggle_button_get_active (toggle))
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_command_set_project_resource_path (priv->project, NULL);
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (toggle, TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->relative_path_entry, TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->full_path_button, FALSE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
resource_fullpath_toggled (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GtkToggleButton *toggle = GTK_TOGGLE_BUTTON (widget);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb || !gtk_toggle_button_get_active (toggle))
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_command_set_project_resource_path (priv->project, NULL);
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (toggle, TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->relative_path_entry, FALSE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->full_path_button, TRUE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_relative_path_entry_insert_text (GtkEditable *editable,
|
|
Packit |
1e8aac |
gchar *new_text,
|
|
Packit |
1e8aac |
gint new_text_length,
|
|
Packit |
1e8aac |
gint *position,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GString *fullpath = g_string_new (gtk_entry_get_text (GTK_ENTRY(editable)));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_string_insert (fullpath, *position, new_text);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (g_path_is_absolute (fullpath->str))
|
|
Packit |
1e8aac |
g_signal_stop_emission_by_name (editable, "insert-text");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_string_free (fullpath, TRUE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_relative_path_entry_changed (GtkEntry *entry, GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_command_set_project_resource_path (priv->project, gtk_entry_get_text (entry));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
resource_full_path_set (GtkFileChooserButton *button, GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
gchar *text;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
text = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (button));
|
|
Packit |
1e8aac |
glade_command_set_project_resource_path (priv->project, text);
|
|
Packit |
1e8aac |
g_free (text);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_template_combo_box_changed (GtkComboBox *combo,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GtkTreeIter iter;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (gtk_combo_box_get_active_iter (combo, &iter))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeWidget *gwidget;
|
|
Packit |
1e8aac |
GObject *object;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_tree_model_get (gtk_combo_box_get_model (combo), &iter,
|
|
Packit |
1e8aac |
GLADE_PROJECT_MODEL_COLUMN_OBJECT, &object, -1);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gwidget = glade_widget_get_from_gobject (object);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_command_set_project_template (priv->project, gwidget);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_template_checkbutton_toggled (GtkToggleButton *togglebutton,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (gtk_toggle_button_get_active (togglebutton))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gboolean composite = FALSE;
|
|
Packit |
1e8aac |
GList *l;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
for (l = glade_project_toplevels (priv->project); l; l = l->next)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GObject *object = l->data;
|
|
Packit |
1e8aac |
GladeWidget *gwidget;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gwidget = glade_widget_get_from_gobject (object);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (GTK_IS_WIDGET (object))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
glade_command_set_project_template (priv->project, gwidget);
|
|
Packit |
1e8aac |
composite = TRUE;
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!composite)
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (togglebutton, FALSE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
glade_command_set_project_template (priv->project, NULL);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static gboolean
|
|
Packit |
1e8aac |
template_visible_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GtkTreeIter parent;
|
|
Packit |
1e8aac |
gboolean visible;
|
|
Packit |
1e8aac |
GObject *object;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
visible = !gtk_tree_model_iter_parent (model, &parent, iter);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (visible)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_tree_model_get (model, iter,
|
|
Packit |
1e8aac |
GLADE_PROJECT_MODEL_COLUMN_OBJECT, &object,
|
|
Packit |
1e8aac |
-1);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
visible = GTK_IS_WIDGET (object);
|
|
Packit |
1e8aac |
g_object_unref (object);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
return visible;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static GtkTreeModel *
|
|
Packit |
1e8aac |
glade_project_toplevel_model_filter_new (GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GtkTreeModel *model;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
model = gtk_tree_model_filter_new (GTK_TREE_MODEL (priv->project), NULL);
|
|
Packit |
1e8aac |
gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (model),
|
|
Packit |
1e8aac |
template_visible_func, NULL, NULL);
|
|
Packit |
1e8aac |
return model;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
verify_clicked (GtkWidget *button, GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (glade_project_verify (priv->project, FALSE,
|
|
Packit |
1e8aac |
GLADE_VERIFY_VERSIONS |
|
|
Packit |
1e8aac |
GLADE_VERIFY_DEPRECATIONS |
|
|
Packit |
1e8aac |
GLADE_VERIFY_UNRECOGNIZED))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gchar *name = glade_project_get_name (priv->project);
|
|
Packit |
1e8aac |
glade_util_ui_message (glade_app_get_window (),
|
|
Packit |
1e8aac |
GLADE_UI_INFO, NULL,
|
|
Packit |
1e8aac |
_("Project %s has no deprecated widgets "
|
|
Packit |
1e8aac |
"or version mismatches."), name);
|
|
Packit |
1e8aac |
g_free (name);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_domain_entry_changed (GtkWidget *entry, GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_command_set_project_domain (priv->project, gtk_entry_get_text (GTK_ENTRY (entry)));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define GNU_GPLv2_TEXT \
|
|
Packit |
1e8aac |
"$(name) - $(description)\n" \
|
|
Packit |
1e8aac |
"Copyright (C) $(copyright)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"This program is free software; you can redistribute it and/or\n" \
|
|
Packit |
1e8aac |
"modify it under the terms of the GNU General Public License\n" \
|
|
Packit |
1e8aac |
"as published by the Free Software Foundation; either version 2\n" \
|
|
Packit |
1e8aac |
"of the License, or (at your option) any later version.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"This program is distributed in the hope that it will be useful,\n" \
|
|
Packit |
1e8aac |
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" \
|
|
Packit |
1e8aac |
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" \
|
|
Packit |
1e8aac |
"GNU General Public License for more details.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"You should have received a copy of the GNU General Public License\n" \
|
|
Packit |
1e8aac |
"along with this program; if not, write to the Free Software\n" \
|
|
Packit |
1e8aac |
"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define GNU_LGPLv2_TEXT \
|
|
Packit |
1e8aac |
"$(name) - $(description)\n" \
|
|
Packit |
1e8aac |
"Copyright (C) $(copyright)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"This library is free software; you can redistribute it and/or\n" \
|
|
Packit |
1e8aac |
"modify it under the terms of the GNU Lesser General Public\n" \
|
|
Packit |
1e8aac |
"License as published by the Free Software Foundation; either\n" \
|
|
Packit |
1e8aac |
"version 2.1 of the License, or (at your option) any later version.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"This library is distributed in the hope that it will be useful,\n" \
|
|
Packit |
1e8aac |
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" \
|
|
Packit |
1e8aac |
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" \
|
|
Packit |
1e8aac |
"Lesser General Public License for more details.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"You should have received a copy of the GNU Lesser General Public\n" \
|
|
Packit |
1e8aac |
"License along with this library; if not, write to the Free Software\n" \
|
|
Packit |
1e8aac |
"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define GNU_GPLv3_TEXT \
|
|
Packit |
1e8aac |
"Copyright (C) $(copyright)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"This file is part of $(name).\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"$(name) is free software: you can redistribute it and/or modify\n" \
|
|
Packit |
1e8aac |
"it under the terms of the GNU General Public License as published by\n" \
|
|
Packit |
1e8aac |
"the Free Software Foundation, either version 3 of the License, or\n" \
|
|
Packit |
1e8aac |
"(at your option) any later version.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"$(name) is distributed in the hope that it will be useful,\n" \
|
|
Packit |
1e8aac |
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" \
|
|
Packit |
1e8aac |
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" \
|
|
Packit |
1e8aac |
"GNU General Public License for more details.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"You should have received a copy of the GNU General Public License\n" \
|
|
Packit |
1e8aac |
"along with $(name). If not, see <http://www.gnu.org/licenses/>.\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define GNU_LGPLv3_TEXT \
|
|
Packit |
1e8aac |
"Copyright (C) $(copyright)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"This file is part of $(name).\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"$(name) is free software: you can redistribute it and/or modify\n" \
|
|
Packit |
1e8aac |
"it under the terms of the GNU Lesser General Public License as published by\n" \
|
|
Packit |
1e8aac |
"the Free Software Foundation, either version 3 of the License, or\n" \
|
|
Packit |
1e8aac |
"(at your option) any later version.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"$(name) is distributed in the hope that it will be useful,\n" \
|
|
Packit |
1e8aac |
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n" \
|
|
Packit |
1e8aac |
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" \
|
|
Packit |
1e8aac |
"GNU Lesser General Public License for more details.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"You should have received a copy of the GNU Lesser General Public License\n" \
|
|
Packit |
1e8aac |
"along with $(name). If not, see <http://www.gnu.org/licenses/>.\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define BSD3c_TEXT \
|
|
Packit |
1e8aac |
"Copyright (c) $(copyright)\n" \
|
|
Packit |
1e8aac |
"All rights reserved.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"Redistribution and use in source and binary forms, with or without\n" \
|
|
Packit |
1e8aac |
"modification, are permitted provided that the following conditions are met:\n" \
|
|
Packit |
1e8aac |
" * Redistributions of source code must retain the above copyright\n" \
|
|
Packit |
1e8aac |
" notice, this list of conditions and the following disclaimer.\n" \
|
|
Packit |
1e8aac |
" * Redistributions in binary form must reproduce the above copyright\n" \
|
|
Packit |
1e8aac |
" notice, this list of conditions and the following disclaimer in the\n" \
|
|
Packit |
1e8aac |
" documentation and/or other materials provided with the distribution.\n" \
|
|
Packit |
1e8aac |
" * Neither the name of the <organization> nor the\n" \
|
|
Packit |
1e8aac |
" names of its contributors may be used to endorse or promote products\n" \
|
|
Packit |
1e8aac |
" derived from this software without specific prior written permission.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n" \
|
|
Packit |
1e8aac |
"ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n" \
|
|
Packit |
1e8aac |
"WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n" \
|
|
Packit |
1e8aac |
"DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n" \
|
|
Packit |
1e8aac |
"DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n" \
|
|
Packit |
1e8aac |
"(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n" \
|
|
Packit |
1e8aac |
"LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n" \
|
|
Packit |
1e8aac |
"ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n" \
|
|
Packit |
1e8aac |
"(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n" \
|
|
Packit |
1e8aac |
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define BSD2c_TEXT \
|
|
Packit |
1e8aac |
"Copyright (c) $(copyright)\n" \
|
|
Packit |
1e8aac |
"All rights reserved.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"Redistribution and use in source and binary forms, with or without\n" \
|
|
Packit |
1e8aac |
"modification, are permitted provided that the following conditions are met:\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"1. Redistributions of source code must retain the above copyright notice, this\n" \
|
|
Packit |
1e8aac |
" list of conditions and the following disclaimer. \n" \
|
|
Packit |
1e8aac |
"2. Redistributions in binary form must reproduce the above copyright notice,\n" \
|
|
Packit |
1e8aac |
" this list of conditions and the following disclaimer in the documentation\n" \
|
|
Packit |
1e8aac |
" and/or other materials provided with the distribution. \n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n" \
|
|
Packit |
1e8aac |
"ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n" \
|
|
Packit |
1e8aac |
"WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n" \
|
|
Packit |
1e8aac |
"DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n" \
|
|
Packit |
1e8aac |
"ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n" \
|
|
Packit |
1e8aac |
"(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n" \
|
|
Packit |
1e8aac |
"LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n" \
|
|
Packit |
1e8aac |
"ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n" \
|
|
Packit |
1e8aac |
"(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n" \
|
|
Packit |
1e8aac |
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define APACHE2_TEXT \
|
|
Packit |
1e8aac |
"Copyright $(copyright)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"Licensed under the Apache License, Version 2.0 (the \"License\"); \n" \
|
|
Packit |
1e8aac |
"you may not use this file except in compliance with the License. \n" \
|
|
Packit |
1e8aac |
"You may obtain a copy of the License at \n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
" http://www.apache.org/licenses/LICENSE-2.0 \n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"Unless required by applicable law or agreed to in writing, software \n" \
|
|
Packit |
1e8aac |
"distributed under the License is distributed on an \"AS IS\" BASIS, \n" \
|
|
Packit |
1e8aac |
"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \n" \
|
|
Packit |
1e8aac |
"See the License for the specific language governing permissions and \n" \
|
|
Packit |
1e8aac |
"limitations under the License. \n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define GNU_ALL_PERMISSIVE_TEXT \
|
|
Packit |
1e8aac |
"Copyright (C) $(copyright)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"Copying and distribution of this file, with or without modification,\n" \
|
|
Packit |
1e8aac |
"are permitted in any medium without royalty provided the copyright\n" \
|
|
Packit |
1e8aac |
"notice and this notice are preserved. This file is offered as-is,\n" \
|
|
Packit |
1e8aac |
"without any warranty.\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
#define MIT_TEXT \
|
|
Packit |
1e8aac |
"The MIT License (MIT)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"Copyright (c) $(copyright)\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"Permission is hereby granted, free of charge, to any person obtaining a copy\n" \
|
|
Packit |
1e8aac |
"of this software and associated documentation files (the \"Software\"), to deal\n" \
|
|
Packit |
1e8aac |
"in the Software without restriction, including without limitation the rights\n" \
|
|
Packit |
1e8aac |
"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n" \
|
|
Packit |
1e8aac |
"copies of the Software, and to permit persons to whom the Software is\n" \
|
|
Packit |
1e8aac |
"furnished to do so, subject to the following conditions:\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"The above copyright notice and this permission notice shall be included in\n" \
|
|
Packit |
1e8aac |
"all copies or substantial portions of the Software.\n" \
|
|
Packit |
1e8aac |
"\n" \
|
|
Packit |
1e8aac |
"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n" \
|
|
Packit |
1e8aac |
"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n" \
|
|
Packit |
1e8aac |
"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n" \
|
|
Packit |
1e8aac |
"AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n" \
|
|
Packit |
1e8aac |
"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n" \
|
|
Packit |
1e8aac |
"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n" \
|
|
Packit |
1e8aac |
"THE SOFTWARE.\n"
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static gchar *
|
|
Packit |
1e8aac |
gpp_get_license_from_id (const gchar *id)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (!g_strcmp0 (id, "gplv2"))
|
|
Packit |
1e8aac |
return GNU_GPLv2_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "gplv3"))
|
|
Packit |
1e8aac |
return GNU_GPLv3_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "lgplv2"))
|
|
Packit |
1e8aac |
return GNU_LGPLv2_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "lgplv3"))
|
|
Packit |
1e8aac |
return GNU_LGPLv3_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "bsd2c"))
|
|
Packit |
1e8aac |
return BSD2c_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "bsd3c"))
|
|
Packit |
1e8aac |
return BSD3c_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "apache2"))
|
|
Packit |
1e8aac |
return APACHE2_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "mit"))
|
|
Packit |
1e8aac |
return MIT_TEXT;
|
|
Packit |
1e8aac |
else if (!g_strcmp0 (id, "all_permissive"))
|
|
Packit |
1e8aac |
return GNU_ALL_PERMISSIVE_TEXT;
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
return NULL;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static gint
|
|
Packit |
1e8aac |
string_count_new_lines (const gchar *str)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gint c = 0;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
while (*str)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (*str == '\n')
|
|
Packit |
1e8aac |
c++;
|
|
Packit |
1e8aac |
str = g_utf8_next_char (str);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
return c;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
gpp_update_license (GladeProjectProperties *properties, gchar *license)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
const gchar *name, *description;
|
|
Packit |
1e8aac |
gchar *copyright, *authors;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!license)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* get data */
|
|
Packit |
1e8aac |
name = gtk_entry_buffer_get_text (priv->name_entrybuffer);
|
|
Packit |
1e8aac |
description = gtk_entry_buffer_get_text (priv->description_entrybuffer);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_object_get (priv->copyright_textbuffer, "text", ©right, NULL);
|
|
Packit |
1e8aac |
g_object_get (priv->authors_textbuffer, "text", &authors, NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Now we can replace strings in the license template */
|
|
Packit |
1e8aac |
license = _glade_util_strreplace (license, FALSE, "$(name)", name);
|
|
Packit |
1e8aac |
license = _glade_util_strreplace (license, TRUE, "$(description)", description);
|
|
Packit |
1e8aac |
license = _glade_util_strreplace (license, TRUE, "$(copyright)", copyright);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (authors && *authors)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gchar *tmp = license;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (string_count_new_lines (authors))
|
|
Packit |
1e8aac |
license = g_strconcat (license, "\n", "Authors:", "\n", authors, NULL);
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
license = g_strconcat (license, "\n", "Author:", " ", authors, NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_free (tmp);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_text_buffer_set_text (priv->license_textbuffer, license, -1);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_free (license);
|
|
Packit |
1e8aac |
g_free (copyright);
|
|
Packit |
1e8aac |
g_free (authors);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_license_data_changed (GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
const gchar *id = gtk_combo_box_get_active_id (properties->priv->license_comboboxtext);
|
|
Packit |
1e8aac |
gchar *license;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if ((license = gpp_get_license_from_id (id)))
|
|
Packit |
1e8aac |
gpp_update_license (properties, license);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_license_comboboxtext_changed (GtkComboBox *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
gchar *license;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if ((license = gpp_get_license_from_id (gtk_combo_box_get_active_id (widget))))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gpp_update_license (properties, license);
|
|
Packit |
1e8aac |
gtk_text_view_set_editable (priv->license_textview, FALSE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
/* Other license */
|
|
Packit |
1e8aac |
gtk_text_buffer_set_text (priv->license_textbuffer, "", -1);
|
|
Packit |
1e8aac |
gtk_text_view_set_editable (priv->license_textview, TRUE);
|
|
Packit |
1e8aac |
gtk_widget_grab_focus (GTK_WIDGET (priv->license_textview));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_glade_project_properties_hide (GtkWidget *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GtkTextIter start, end;
|
|
Packit |
1e8aac |
gchar *license;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_text_buffer_get_bounds (priv->license_textbuffer, &start, &end;;
|
|
Packit |
1e8aac |
license = gtk_text_buffer_get_text (priv->license_textbuffer, &start, &end, FALSE);
|
|
Packit |
1e8aac |
g_strstrip (license);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_command_set_project_license (priv->project, (license[0] != '\0') ? license : NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_free (license);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_css_checkbutton_toggled (GtkWidget *widget, GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->css_filechooser, TRUE);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->css_filechooser, FALSE);
|
|
Packit |
1e8aac |
glade_project_set_css_provider_path (priv->project, NULL);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
on_css_filechooser_file_set (GtkFileChooserButton *widget,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
const gchar *path;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (priv->ignore_ui_cb)
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
glade_project_set_css_provider_path (priv->project, path);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/******************************************************
|
|
Packit |
1e8aac |
* Project Callbacks *
|
|
Packit |
1e8aac |
******************************************************/
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
project_targets_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GList *list;
|
|
Packit |
1e8aac |
GSList *radios, *l;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = TRUE;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* For each catalog */
|
|
Packit |
1e8aac |
for (list = glade_app_get_catalogs (); list; list = g_list_next (list))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeTargetableVersion *version;
|
|
Packit |
1e8aac |
GladeCatalog *catalog = list->data;
|
|
Packit |
1e8aac |
gint minor, major;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Skip if theres only one option */
|
|
Packit |
1e8aac |
if (g_list_length (glade_catalog_get_targets (catalog)) <= 1)
|
|
Packit |
1e8aac |
continue;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Fetch the version for this project */
|
|
Packit |
1e8aac |
glade_project_get_target_version (priv->project,
|
|
Packit |
1e8aac |
glade_catalog_get_name (catalog),
|
|
Packit |
1e8aac |
&major, &minor);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Fetch the radios for this catalog */
|
|
Packit |
1e8aac |
if (priv->target_radios &&
|
|
Packit |
1e8aac |
(radios = g_hash_table_lookup (priv->target_radios, glade_catalog_get_name (catalog))) != NULL)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
for (l = radios; l; l = l->next)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GtkWidget *radio = l->data;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Activate the appropriate button for the project/catalog */
|
|
Packit |
1e8aac |
version = g_object_get_data (G_OBJECT (radio), "version");
|
|
Packit |
1e8aac |
if (version->major == major && version->minor == minor)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), TRUE);
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = FALSE;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
project_domain_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
const gchar *domain;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = TRUE;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
domain = glade_project_get_translation_domain (priv->project);
|
|
Packit |
1e8aac |
gtk_entry_set_text (GTK_ENTRY (priv->domain_entry), domain ? domain : "");
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = FALSE;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
project_resource_path_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = TRUE;
|
|
Packit |
1e8aac |
update_prefs_for_resource_path (properties);
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = FALSE;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
project_template_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
GtkTreeModel *model;
|
|
Packit |
1e8aac |
GtkTreeIter iter;
|
|
Packit |
1e8aac |
gboolean valid;
|
|
Packit |
1e8aac |
gboolean template_found = FALSE;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = TRUE;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->template_combobox));
|
|
Packit |
1e8aac |
if (!model)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
model = glade_project_toplevel_model_filter_new (properties);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_combo_box_set_model (GTK_COMBO_BOX (priv->template_combobox), model);
|
|
Packit |
1e8aac |
g_object_unref (model);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
valid = gtk_tree_model_get_iter_first (model, &iter);
|
|
Packit |
1e8aac |
while (valid)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeWidget *gwidget;
|
|
Packit |
1e8aac |
GObject *obj;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_tree_model_get (model, &iter,
|
|
Packit |
1e8aac |
GLADE_PROJECT_MODEL_COLUMN_OBJECT, &obj,
|
|
Packit |
1e8aac |
-1);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gwidget = glade_widget_get_from_gobject (obj);
|
|
Packit |
1e8aac |
g_object_unref (obj);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (gwidget == glade_project_get_template (priv->project))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->template_combobox), &iter);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
template_found = TRUE;
|
|
Packit |
1e8aac |
break;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
valid = gtk_tree_model_iter_next (model, &iter);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->template_checkbutton), template_found);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->template_combobox, template_found);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!template_found && gtk_combo_box_get_model (GTK_COMBO_BOX (priv->template_combobox)))
|
|
Packit |
1e8aac |
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->template_combobox), NULL);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = FALSE;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
project_license_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = TRUE;
|
|
Packit |
1e8aac |
gtk_text_buffer_set_text (priv->license_textbuffer,
|
|
Packit |
1e8aac |
glade_project_get_license (project),
|
|
Packit |
1e8aac |
-1);
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = FALSE;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
static void
|
|
Packit |
1e8aac |
project_css_provider_path_changed (GladeProject *project,
|
|
Packit |
1e8aac |
GParamSpec *pspec,
|
|
Packit |
1e8aac |
GladeProjectProperties *properties)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
GladeProjectPropertiesPrivate *priv = properties->priv;
|
|
Packit |
1e8aac |
const gchar *filename = glade_project_get_css_provider_path (project);
|
|
Packit |
1e8aac |
GtkFileChooser *chooser = GTK_FILE_CHOOSER (priv->css_filechooser);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = TRUE;
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (filename)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->css_checkbutton), TRUE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->css_filechooser, TRUE);
|
|
Packit |
1e8aac |
gtk_file_chooser_set_filename (chooser, filename);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
else
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->css_checkbutton), FALSE);
|
|
Packit |
1e8aac |
gtk_widget_set_sensitive (priv->css_filechooser, FALSE);
|
|
Packit |
1e8aac |
gtk_file_chooser_unselect_all (chooser);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
priv->ignore_ui_cb = FALSE;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/* Private API */
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
_glade_project_properties_set_license_data (GladeProjectProperties *props,
|
|
Packit |
1e8aac |
const gchar *license,
|
|
Packit |
1e8aac |
const gchar *name,
|
|
Packit |
1e8aac |
const gchar *description,
|
|
Packit |
1e8aac |
const gchar *copyright,
|
|
Packit |
1e8aac |
const gchar *authors)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
if (!license ||
|
|
Packit |
1e8aac |
!gtk_combo_box_set_active_id (props->priv->license_comboboxtext, license))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
gtk_combo_box_set_active_id (props->priv->license_comboboxtext, "other");
|
|
Packit |
1e8aac |
name = description = copyright = authors = "";
|
|
Packit |
1e8aac |
license = "other";
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_entry_buffer_set_text (props->priv->name_entrybuffer, name ? name : "", -1);
|
|
Packit |
1e8aac |
gtk_entry_buffer_set_text (props->priv->description_entrybuffer, description ? description : "", -1);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gtk_text_buffer_set_text (props->priv->copyright_textbuffer, copyright ? copyright : "", -1);
|
|
Packit |
1e8aac |
gtk_text_buffer_set_text (props->priv->authors_textbuffer, authors ? authors : "", -1);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
gpp_update_license (props, gpp_get_license_from_id (license));
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
void
|
|
Packit |
1e8aac |
_glade_project_properties_get_license_data (GladeProjectProperties *props,
|
|
Packit |
1e8aac |
gchar **license,
|
|
Packit |
1e8aac |
gchar **name,
|
|
Packit |
1e8aac |
gchar **description,
|
|
Packit |
1e8aac |
gchar **copyright,
|
|
Packit |
1e8aac |
gchar **authors)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
const gchar *id = gtk_combo_box_get_active_id (props->priv->license_comboboxtext);
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
if (!g_strcmp0 (id, "other"))
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
*license = *name = *description = *copyright = *authors = NULL;
|
|
Packit |
1e8aac |
return;
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
*license = g_strdup (id);
|
|
Packit |
1e8aac |
*name = g_strdup (gtk_entry_buffer_get_text (props->priv->name_entrybuffer));
|
|
Packit |
1e8aac |
*description = g_strdup (gtk_entry_buffer_get_text (props->priv->description_entrybuffer));
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
g_object_get (props->priv->copyright_textbuffer, "text", copyright, NULL);
|
|
Packit |
1e8aac |
g_object_get (props->priv->authors_textbuffer, "text", authors, NULL);
|
|
Packit |
1e8aac |
}
|
|
Packit |
1e8aac |
|
|
Packit |
1e8aac |
/******************************************************
|
|
Packit |
1e8aac |
* API *
|
|
Packit |
1e8aac |
******************************************************/
|
|
Packit |
1e8aac |
GtkWidget *
|
|
Packit |
1e8aac |
glade_project_properties_new (GladeProject *project)
|
|
Packit |
1e8aac |
{
|
|
Packit |
1e8aac |
return g_object_new (GLADE_TYPE_PROJECT_PROPERTIES, "project", project, NULL);
|
|
Packit |
1e8aac |
}
|