diff --git a/.github/issue_template.md b/.github/issue_template.md deleted file mode 100644 index 831d46d..0000000 --- a/.github/issue_template.md +++ /dev/null @@ -1,19 +0,0 @@ -#### Expected behaviour - - -#### Actual behaviour - - -#### Steps to reproduce the behaviour - - -#### MATE general version - - -#### Package version - - -#### Linux Distribution - - -#### Link to downstream report of your Distribution diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9bdb2c4..0000000 --- a/.travis.yml +++ /dev/null @@ -1,116 +0,0 @@ -# vim: set ts=2 sts=2 sw=2 expandtab : -dist: xenial -sudo: required -language: bash -services: - - docker - -before_install: - - curl -Ls -o docker-build https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/docker-build - - chmod +x docker-build - -install: - - sudo apt-get install -y python3-pip python3-setuptools - - sudo pip3 install --upgrade pip - - sudo pip install PyGithub - - ./docker-build --name ${DISTRO} --config .travis.yml --install - -script: - - ./docker-build --name ${DISTRO} --verbose --config .travis.yml --build autotools - -deploy: - - provider: script - script: ./docker-build --verbose --config .travis.yml --release github - skip_cleanup: true - on: - tags: true - condition: "${TRAVIS_TAG} =~ ^v.*$ && ${DISTRO} =~ ^fedora.*$" - -env: - - DISTRO="archlinux/base" - - DISTRO="debian:sid" - - DISTRO="fedora:29" - - DISTRO="ubuntu:18.10" - -########################################################## -# THE FOLLOWING LINES IS USED BY docker-build -########################################################## -requires: - archlinux: - # Useful URL: https://git.archlinux.org/svntogit/community.git/tree/mate-terminal - - gcc - - git - - intltool - - libsm - - make - - mate-common - - mate-desktop - - vte3 - - which - - yelp-tools - - debian: - # Useful URL: https://github.com/mate-desktop/debian-packages - # Useful URL: https://salsa.debian.org/debian-mate-team/mate-terminal - - git - - intltool - - intltool - - libdconf-dev - - libglib2.0-dev - - libgtk-3-dev - - libsm-dev - - libvte-2.91-dev - - libx11-dev - - make - - mate-common - - yelp-tools - - fedora: - # Useful URL: https://src.fedoraproject.org/cgit/rpms/mate-terminal.git - - gcc - - dconf-devel - - desktop-file-utils - - git - - gtk3-devel - - libSM-devel - - make - - mate-common - - redhat-rpm-config - - vte291-devel - - ubuntu: - - git - - intltool - - intltool - - libdconf-dev - - libglib2.0-dev - - libgtk-3-dev - - libsm-dev - - libvte-2.91-dev - - libx11-dev - - make - - mate-common - - yelp-tools - -variables: - - CFLAGS="-Wall -Werror=format-security" - -before_scripts: - - if [ ${DISTRO_NAME} == "debian" ];then - - curl -Ls -o debian.sh https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/debian.sh - - bash ./debian.sh - - fi - -after_scripts: - - make distcheck - -releases: - draft: false - prerelease: false - checksum: true - file_glob: true - files: mate-terminal-*.tar.xz - github_release: - tags: true - overwrite: true - base_version: 1.20.0 diff --git a/Makefile.am b/Makefile.am index 337d665..16375a9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,7 +11,7 @@ DISTCHECK_CONFIGURE_FLAGS = \ @INTLTOOL_XML_RULE@ appdatadir = $(datadir)/metainfo -appdata_in_files = mate-terminal.appdata.xml.in +appdata_in_files = gatuno-terminal.appdata.xml.in appdata_DATA = $(appdata_in_files:.xml.in=.xml) desktopdir = $(datadir)/applications @@ -19,21 +19,21 @@ desktop_in_files = @PACKAGE@.desktop.in.in desktop_DATA = $(desktop_in_files:.desktop.in.in=.desktop) @INTLTOOL_DESKTOP_RULE@ -man_MANS = mate-terminal.1 +man_MANS = gatuno-terminal.1 -bin_SCRIPTS = mate-terminal.wrapper +bin_SCRIPTS = gatuno-terminal.wrapper EXTRA_DIST = \ - autogen.sh \ xmldocs.make \ omf.make \ - mate-terminal.wrapper \ + gatuno-terminal.wrapper \ $(appdata_in_files) \ $(man_MANS) \ $(NULL) +# autogen.sh \ CLEANFILES = \ - mate-terminal.appdata.xml \ + gatuno-terminal.appdata.xml \ $(desktop_DATA) \ $(NULL) diff --git a/README b/README index 6b921d4..db1b08d 100644 --- a/README +++ b/README @@ -1,9 +1,10 @@ -This is the MATE terminal emulator application. mate-terminal is +This is the Gatuno terminal emulator application. gatuno-terminal is only the shell (menubar, prefs dialog); the terminal emulation ("stuff in the middle") comes from the VTE widget. Remember this when you report a bug. ;-) +Gatuno Terminal is a fork of Mate terminal. MATE terminal is a fork of GNOME terminal. How it works diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index fab5336..0000000 --- a/autogen.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -PKG_NAME="mate-terminal" - -(test -f $srcdir/configure.ac) || { - echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" - echo " top-level $PKG_NAME directory" - exit 1 -} - -which mate-autogen || { - echo "You need to install mate-common" - exit 1 -} - -which yelp-build || { - echo "You need to install yelp-tools" - exit 1 -} - -REQUIRED_AUTOMAKE_VERSION=1.9 -MATE_DATADIR="$mate_datadir" -USE_COMMON_DOC_BUILD=yes - -. mate-autogen - diff --git a/configure.ac b/configure.ac index 9cf87ba..ac9a546 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ m4_define([gt_version],[gt_version_major().gt_version_minor().gt_version_micro() m4_define([gt_api_version],[0]) -AC_INIT([MATE Terminal],[gt_version],[http://www.mate-desktop.org],[mate-terminal]) +AC_INIT([Gatuno Terminal],[gt_version],[http://git.gatuno.mx/gatuno/gatuno-terminal],[gatuno-terminal]) AC_CONFIG_SRCDIR([src/terminal.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) @@ -14,7 +14,7 @@ AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([1.9 foreign no-dist-gzip dist-xz check-news]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) -GETTEXT_PACKAGE=mate-terminal +GETTEXT_PACKAGE=gatuno-terminal AC_SUBST([GETTEXT_PACKAGE]) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package]) @@ -31,18 +31,12 @@ AC_HEADER_STDC AM_PROG_LIBTOOL IT_PROG_INTLTOOL([0.50.1]) -MATE_COMMON_INIT -MATE_DEBUG_CHECK -MATE_COMPILE_WARNINGS([maximum]) -#MATE_MAINTAINER_MODE_DEFINES - AM_GLIB_GNU_GETTEXT GLIB_REQUIRED=2.50.0 GIO_REQUIRED=2.50.0 GTK_REQUIRED=3.22.0 VTE_REQUIRED=0.48 -DCONF_REQUIRED=0.13.4 PKG_CHECK_MODULES([TERM], [vte-2.91 >= $VTE_REQUIRED @@ -50,22 +44,8 @@ PKG_CHECK_MODULES([TERM], gthread-2.0 gio-2.0 >= $GIO_REQUIRED gtk+-3.0 >= $GTK_REQUIRED - dconf >= $DCONF_REQUIRED x11]) -# ******** -# smclient -# ******** - -PKG_CHECK_MODULES(SMCLIENT, sm >= 1.0.0) -AC_SUBST([SMCLIENT_CFLAGS]) -AC_SUBST([SMCLIENT_LIBS]) - -# ***** -# GSettings -# ***** - -GLIB_GSETTINGS GLIB_GENMARSHAL="$($PKG_CONFIG --variable=glib_genmarshal glib-2.0)" AC_SUBST([GLIB_GENMARSHAL]) @@ -123,9 +103,8 @@ AC_SUBST([TERMINAL_API_VERSION],[gt_api_version]) AC_CONFIG_FILES([ Makefile -mate-terminal.desktop.in +gatuno-terminal.desktop.in src/Makefile -src/org.mate.terminal.gschema.xml src/terminal-version.h src/skey/Makefile help/Makefile @@ -136,7 +115,7 @@ AC_OUTPUT # **************************** echo " - mate-terminal-$VERSION: + gatuno-terminal-$VERSION: prefix: ${prefix} source code location: ${srcdir} diff --git a/mate-terminal.1 b/gatuno-terminal.1 similarity index 100% rename from mate-terminal.1 rename to gatuno-terminal.1 diff --git a/mate-terminal.appdata.xml.in b/gatuno-terminal.appdata.xml.in similarity index 100% rename from mate-terminal.appdata.xml.in rename to gatuno-terminal.appdata.xml.in diff --git a/gatuno-terminal.desktop.in.in b/gatuno-terminal.desktop.in.in new file mode 100644 index 0000000..01947a2 --- /dev/null +++ b/gatuno-terminal.desktop.in.in @@ -0,0 +1,11 @@ +[Desktop Entry] +_Name=Gatuno Terminal +_GenericName=Terminal +_Comment=Use the command line +TryExec=gatuno-terminal +Exec=gatuno-terminal +Icon=utilities-terminal +Type=Application +Categories=System;GTK;Utility;TerminalEmulator; +StartupNotify=true + diff --git a/mate-terminal.pot b/gatuno-terminal.pot similarity index 100% rename from mate-terminal.pot rename to gatuno-terminal.pot diff --git a/mate-terminal.wrapper b/gatuno-terminal.wrapper similarity index 98% rename from mate-terminal.wrapper rename to gatuno-terminal.wrapper index fad3a86..f509b35 100755 --- a/mate-terminal.wrapper +++ b/gatuno-terminal.wrapper @@ -78,4 +78,4 @@ if ($login == 1) { @args = ('--login', @args); } -exec('mate-terminal',@args); +exec('gatuno-terminal',@args); diff --git a/makepot b/makepot index 7ec070b..347d04a 100755 --- a/makepot +++ b/makepot @@ -1,6 +1,6 @@ #! /bin/sh -PACKAGE=mate-terminal; +PACKAGE=gatuno-terminal; # normal translations for the package make -C po $PACKAGE.pot && mv po/$PACKAGE.pot . diff --git a/mate-terminal.desktop.in.in b/mate-terminal.desktop.in.in deleted file mode 100644 index a0e9401..0000000 --- a/mate-terminal.desktop.in.in +++ /dev/null @@ -1,16 +0,0 @@ -[Desktop Entry] -_Name=MATE Terminal -_GenericName=Terminal -_Comment=Use the command line -TryExec=mate-terminal -Exec=mate-terminal -Icon=utilities-terminal -Type=Application -X-MATE-DocPath=mate-terminal/index.html -X-MATE-Bugzilla-Bugzilla=MATE -X-MATE-Bugzilla-Product=mate-terminal -X-MATE-Bugzilla-Component=BugBuddyBugs -X-MATE-Bugzilla-Version=@VERSION@ -Categories=System;GTK;Utility;TerminalEmulator; -StartupNotify=true - diff --git a/src/terminal-profile.c b/src/terminal-profile.c index 02daa6a..763c089 100644 --- a/src/terminal-profile.c +++ b/src/terminal-profile.c @@ -165,15 +165,16 @@ enum #define DEFAULT_VISIBLE_NAME (N_("Unnamed")) #define DEFAULT_WORD_CHARS ("-A-Za-z0-9,./?%&#:_=+@~") +#define PROFILE_GROUP_NAME "profile" + struct _TerminalProfilePrivate { GValueArray *properties; gboolean *locked; - GSettings *settings; + GKeyFile *settings; char *profile_dir; - - GSList *dirty_pspecs; + guint save_idle_id; GParamSpec *gsettings_notification_pspec; @@ -547,14 +548,14 @@ terminal_profile_reset_property_internal (TerminalProfile *profile, } static void -terminal_profile_gsettings_notify_cb (GSettings *settings, +terminal_profile_ini_read (GKeyFile *settings, gchar *key, gpointer user_data) { TerminalProfile *profile = TERMINAL_PROFILE (user_data); TerminalProfilePrivate *priv = profile->priv; TerminalProfileClass *klass; - GVariant *settings_value; + GError *gerror = NULL; GParamSpec *pspec; GValue value = { 0, }; gboolean equal; @@ -562,80 +563,105 @@ terminal_profile_gsettings_notify_cb (GSettings *settings, if (!key) return; - _terminal_debug_print (TERMINAL_DEBUG_PROFILE, - "GSettings notification for key %s [%s]\n", - key, - g_settings_is_writable (settings, key) ? "writable" : "LOCKED"); - klass = TERMINAL_PROFILE_GET_CLASS (profile); pspec = g_hash_table_lookup (klass->gsettings_keys, key); if (!pspec) return; /* ignore unknown keys, for future extensibility */ - priv->locked[pspec->param_id] = !g_settings_is_writable (settings, key); - - settings_value = g_settings_get_value (settings, key); - if (!settings_value) - return; + priv->locked[pspec->param_id] = FALSE; g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); if (G_IS_PARAM_SPEC_BOOLEAN (pspec)) { - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_BOOLEAN)) + gboolean res; + res = g_key_file_get_boolean (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), &gerror); + if (gerror != NULL) { + /* No es un boolean, triste caso */ + g_error_free (gerror); goto out; + } g_value_set_boolean (&value, g_variant_get_boolean (settings_value)); } else if (G_IS_PARAM_SPEC_STRING (pspec)) { - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_STRING)) + gchar *cadena; + cadena = g_key_file_get_string (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), NULL); + + if (cadena == NULL) { goto out; + } - g_value_set_string (&value, g_variant_get_string (settings_value, NULL)); + g_value_set_string (&value, cadena); + g_free (cadena); } else if (G_IS_PARAM_SPEC_ENUM (pspec)) { - - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_STRING)) + gint entero; + entero = g_key_file_get_integer (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), &gerror); + if (gerror != NULL) { + /* No es un entero, mal */ + g_error_free (gerror); goto out; - - g_value_set_enum (&value, g_settings_get_enum (settings, key)); + } + + g_value_set_enum (&value, entero); } else if (G_PARAM_SPEC_VALUE_TYPE (pspec) == GDK_TYPE_RGBA) { GdkRGBA color; - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_STRING)) + gchar *cadena; + cadena = g_key_file_get_string (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), NULL); + + if (cadena == NULL) { goto out; + } - if (!gdk_rgba_parse (&color, g_variant_get_string (settings_value, NULL))) + if (!gdk_rgba_parse (&color, cadena)) { + g_free (cadena); goto out; + } + g_free (cadena); g_value_set_boxed (&value, &color); } else if (G_PARAM_SPEC_VALUE_TYPE (pspec) == PANGO_TYPE_FONT_DESCRIPTION) { - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_STRING)) + gchar *cadena; + cadena = g_key_file_get_string (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), NULL); + + if (cadena == NULL) { goto out; + } - g_value_take_boxed (&value, pango_font_description_from_string (g_variant_get_string (settings_value, NULL))); + g_value_take_boxed (&value, pango_font_description_from_string (cadena)); + g_free (cadena); } else if (G_IS_PARAM_SPEC_DOUBLE (pspec)) { - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_DOUBLE)) + gdouble doble; + doble = g_key_file_get_double (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), &gerror); + + if (gerror != NULL) { + g_error_free (gerror); goto out; - - g_value_set_double (&value, g_variant_get_double (settings_value)); + } + g_value_set_double (&value, doble); } else if (G_IS_PARAM_SPEC_INT (pspec)) { - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_INT16) && - !g_variant_is_of_type (settings_value, G_VARIANT_TYPE_INT32) && - !g_variant_is_of_type (settings_value, G_VARIANT_TYPE_INT64)) + gint entero; + entero = g_key_file_get_integer (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), &gerror); + + if (gerror != NULL) { + /* No es un entero, mal */ + g_error_free (gerror); goto out; - - g_value_set_int (&value, g_settings_get_int(settings, key)); + } + + g_value_set_int (&value, entero); } else if (G_IS_PARAM_SPEC_VALUE_ARRAY (pspec) && G_PARAM_SPEC_VALUE_TYPE (G_PARAM_SPEC_VALUE_ARRAY (pspec)->element_spec) == GDK_TYPE_RGBA) @@ -643,14 +669,12 @@ terminal_profile_gsettings_notify_cb (GSettings *settings, char **color_strings; GdkRGBA *colors; int n_colors, i; - - if (!g_variant_is_of_type (settings_value, G_VARIANT_TYPE_STRING)) + + color_strings = g_key_file_get_string_list (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), NULL); + if (color_strings == NULL) { goto out; - - color_strings = g_strsplit (g_variant_get_string (settings_value, NULL), ":", -1); - if (!color_strings) - goto out; - + } + n_colors = g_strv_length (color_strings); colors = g_new0 (GdkRGBA, n_colors); for (i = 0; i < n_colors; ++i) @@ -713,53 +737,33 @@ out: */ g_value_unset (&value); - g_variant_unref (settings_value); } static void -terminal_profile_gsettings_changeset_add (TerminalProfile *profile, - GSettings *changeset, - GParamSpec *pspec) -{ +terminal_profile_ini_write (TerminalProfile *profile, GKeyFile *settings, GParamSpec *pspec) { TerminalProfilePrivate *priv = profile->priv; - char *key; - const GValue *value; - - /* FIXME: do this? */ -#if 0 - if (priv->locked[pspec->param_id]) - return; - - if (!g_settings_is_writable (priv->settings, gsettings_key, NULL)) - return; -#endif - - key = g_param_spec_get_qdata (pspec, gsettings_key_quark); - if (!key) - return; - + TerminalProfileClass *klass; + GValue *value; + + if (settings == NULL) return; + + klass = TERMINAL_PROFILE_GET_CLASS (profile); + value = g_value_array_get_nth (priv->properties, pspec->param_id); - - _terminal_debug_print (TERMINAL_DEBUG_PROFILE, - "Adding pspec %s with value %s to the GSettings changeset\n", - pspec->name, g_strdup_value_contents (value)); - + if (G_IS_PARAM_SPEC_BOOLEAN (pspec)) - g_settings_set_boolean (changeset, key, g_value_get_boolean (value)); + { + g_key_file_set_boolean (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), g_value_get_boolean (value)); + } else if (G_IS_PARAM_SPEC_STRING (pspec)) { const char *str; - str = g_value_get_string (value); - g_settings_set_string (changeset, key, str ? str : ""); + g_key_file_set_string (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), str ? str : ""); } else if (G_IS_PARAM_SPEC_ENUM (pspec)) { - const GEnumValue *eval; - - eval = g_enum_get_value (G_PARAM_SPEC_ENUM (pspec)->enum_class, g_value_get_enum (value)); - - g_settings_set_enum (changeset, key, eval->value); + g_key_file_set_integer (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), g_value_get_enum (value)); } else if (G_PARAM_SPEC_VALUE_TYPE (pspec) == GDK_TYPE_RGBA) { @@ -769,73 +773,77 @@ terminal_profile_gsettings_changeset_add (TerminalProfile *profile, color = g_value_get_boxed (value); if (!color) goto cleanup; - - g_snprintf (str, sizeof (str), - "#%04X%04X%04X", - (guint) (color->red * 65535), - (guint) (color->green * 65535), - (guint) (color->blue * 65535)); - - g_settings_set_string (changeset, key, str); + + cadena = g_snprintf (str, sizeof (str), + "#%04X%04X%04X", + (guint) (color->red * 65535), + (guint) (color->green * 65535), + (guint) (color->blue * 65535)); + g_key_file_set_string (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), str); } else if (G_PARAM_SPEC_VALUE_TYPE (pspec) == PANGO_TYPE_FONT_DESCRIPTION) { PangoFontDescription *font_desc; char *font; - + font_desc = g_value_get_boxed (value); if (!font_desc) goto cleanup; - + font = pango_font_description_to_string (font_desc); - g_settings_set_string (changeset, key, font); + g_key_file_set_string (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), font); g_free (font); } else if (G_IS_PARAM_SPEC_DOUBLE (pspec)) - g_settings_set_double (changeset, key, g_value_get_double (value)); + { + g_key_file_set_double (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), g_value_get_double (value)); + } else if (G_IS_PARAM_SPEC_INT (pspec)) - g_settings_set_int (changeset, key, g_value_get_int (value)); + { + g_key_file_set_integer (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), g_value_get_integer (value)); + } else if (G_IS_PARAM_SPEC_VALUE_ARRAY (pspec) && G_PARAM_SPEC_VALUE_TYPE (G_PARAM_SPEC_VALUE_ARRAY (pspec)->element_spec) == GDK_TYPE_RGBA) { GValueArray *array; - GString *string; - guint n_colors, i; - - /* We need to do this ourselves, because the gtk_color_selection_palette_to_string - * does not carry all the bytes, and xterm's palette is messed up... - */ - - array = g_value_get_boxed (value); - if (!array) - goto cleanup; - + GStrvBuilder *builder_str; + char **color_strings; + GdkRGBA color; + int n_colors, i; + gchar *cadena; + + array = (GValueArray *) g_value_get_boxed (value); + + builder_str = g_strv_builder_new (); + n_colors = array->n_values; - string = g_string_sized_new (n_colors * (1 /* # */ + 3 * 4) + n_colors /* : separators and terminating \0 */); for (i = 0; i < n_colors; ++i) { GdkRGBA *color; - if (i > 0) - g_string_append_c (string, ':'); - color = g_value_get_boxed (g_value_array_get_nth (array, i)); - if (!color) + if (!color) { + g_strv_builder_add (builder_str, g_strdup ("")); continue; + } - g_string_append_printf (string, - "#%04X%04X%04X", - (guint) (color->red * 65535), - (guint) (color->green * 65535), - (guint) (color->blue * 65535)); + cadena = g_strdup_printf ("#%04X%04X%04X", + (guint) (color->red * 65535), + (guint) (color->green * 65535), + (guint) (color->blue * 65535)); + + g_strv_builder_add (builder_str, cadena); } - - g_settings_set_string (changeset, key, string->str); - g_string_free (string, TRUE); + + color_strings = g_strv_builder_end (builder_str); + g_key_file_set_string_list (settings, PROFILE_GROUP_NAME, g_param_spec_get_name (pspec), color_strings, n_colors); + g_strfreev (color_strings); + g_strv_builder_unref (builder_str); } else + { g_printerr ("Unhandled value type %s of pspec %s\n", g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspec)), pspec->name); - + } cleanup: return; } @@ -844,18 +852,15 @@ static void terminal_profile_save (TerminalProfile *profile) { TerminalProfilePrivate *priv = profile->priv; - GSettings *changeset; GSList *l; gchar *concat; - + GError *gerror = NULL; + gboolean was_saved; + priv->save_idle_id = 0; - concat = g_strconcat (CONF_PROFILE_PREFIX, priv->profile_dir,"/", NULL); - changeset = g_settings_new_with_path (CONF_PROFILE_SCHEMA, concat); - g_free (concat); - g_settings_delay (changeset); - for (l = priv->dirty_pspecs; l != NULL; l = l->next) - { +#if 0 + for (l = priv->dirty_pspecs; l != NULL; l = l->next) { GParamSpec *pspec = (GParamSpec *) l->data; if (pspec->owner_type != TERMINAL_TYPE_PROFILE) @@ -864,14 +869,22 @@ terminal_profile_save (TerminalProfile *profile) if ((pspec->flags & G_PARAM_WRITABLE) == 0) continue; - terminal_profile_gsettings_changeset_add (profile, changeset, pspec); + terminal_profile_ini_write (profile, priv->settings, pspec); } - + g_slist_free (priv->dirty_pspecs); priv->dirty_pspecs = NULL; +#endif - g_settings_apply (changeset); - g_object_unref (changeset); + concat = g_strconcat ("~/.gatuno-terminal/", priv->profile_dir, NULL); + + was_saved = g_key_file_save_to_file (priv->settings, concat, &gerror); + + if (gerror != NULL) { + g_error_free (gerror); + } + + g_free (concat); } static gboolean @@ -890,9 +903,8 @@ terminal_profile_schedule_save (TerminalProfile *profile, TerminalProfilePrivate *priv = profile->priv; g_assert (pspec != NULL); - - if (!g_slist_find (priv->dirty_pspecs, pspec)) - priv->dirty_pspecs = g_slist_prepend (priv->dirty_pspecs, pspec); + + terminal_profile_ini_write (profile, priv->settings, pspec); if (priv->save_idle_id != 0) return; @@ -964,17 +976,10 @@ terminal_profile_constructor (GType type, name = g_value_get_string (g_value_array_get_nth (priv->properties, PROP_NAME)); g_assert (name != NULL); - - concat = g_strconcat (CONF_PROFILE_PREFIX, name, "/", NULL); - priv->settings = g_settings_new_with_path (CONF_PROFILE_SCHEMA, concat); - g_assert (priv->settings != NULL); - g_free (concat); - concat = g_strconcat("changed::", priv->profile_dir, "/", NULL); - g_signal_connect (priv->settings, - concat, - G_CALLBACK(terminal_profile_gsettings_notify_cb), - profile); - + + priv->settings = g_key_file_new (); + concat = g_strconcat ("~/.gatuno-terminal/", priv->profile_dir, NULL); + g_key_file_load_from_file (priv->settings, concat, G_KEY_FILE_KEEP_COMMENTS, NULL); g_free (concat); /* Now load those properties from GSettings that were not set as construction params */ @@ -1006,8 +1011,9 @@ terminal_profile_constructor (GType type, key = g_param_spec_get_qdata (pspec, gsettings_key_quark); if (!key) continue; - - terminal_profile_gsettings_notify_cb (priv->settings, key, profile); + + /* Tomar esta propiedad desde el archivo */ + terminal_profile_ini_read (priv->settings, key, profile); } g_free (pspecs); @@ -1021,10 +1027,6 @@ terminal_profile_finalize (GObject *object) TerminalProfile *profile = TERMINAL_PROFILE (object); TerminalProfilePrivate *priv = profile->priv; - g_signal_handlers_disconnect_by_func (priv->settings, - G_CALLBACK(terminal_profile_gsettings_notify_cb), - profile); - if (priv->save_idle_id) { g_source_remove (priv->save_idle_id); @@ -1034,9 +1036,8 @@ terminal_profile_finalize (GObject *object) } _terminal_profile_forget (profile); - - g_object_unref (priv->settings); - + + g_key_file_free (priv->settings); g_free (priv->profile_dir); g_free (priv->locked); g_value_array_free (priv->properties); @@ -1123,23 +1124,18 @@ terminal_profile_set_property (GObject *object, case PROP_NAME: { const char *name = g_value_get_string (value); - + /* TODO: Cuando un profile cambia de nombre, "vigilar" el nuevo archivo */ + g_assert (name != NULL); priv->profile_dir = g_strdup (name); + if (priv->settings != NULL) { gchar *concat; - g_signal_handlers_disconnect_by_func (priv->settings, - G_CALLBACK(terminal_profile_gsettings_notify_cb), - profile); - g_object_unref (priv->settings); - concat= g_strconcat (CONF_PROFILE_PREFIX, priv->profile_dir, "/", NULL); - priv->settings = g_settings_new_with_path (CONF_PROFILE_SCHEMA, concat); - g_free (concat); - concat = g_strconcat("changed::", priv->profile_dir, "/", NULL); - g_signal_connect (priv->settings, - concat, - G_CALLBACK(terminal_profile_gsettings_notify_cb), - profile); + g_key_file_free (priv->settings); + + concat = g_strconcat ("~/.gatuno-terminal/", priv->profile_dir, NULL); + priv->settings = g_key_file_new (); + g_key_file_load_from_file (priv->settings, concat, G_KEY_FILE_KEEP_COMMENTS, NULL); g_free (concat); } break; @@ -1551,21 +1547,6 @@ terminal_profile_get_property_string (TerminalProfile *profile, return g_value_get_string (value); } -gboolean -terminal_profile_property_locked (TerminalProfile *profile, - const char *prop_name) -{ - TerminalProfilePrivate *priv = profile->priv; - GParamSpec *pspec; - - pspec = get_pspec_from_name (profile, prop_name); - g_return_val_if_fail (pspec != NULL, FALSE); - if (!pspec) - return FALSE; - - return priv->locked[pspec->param_id]; -} - void terminal_profile_reset_property (TerminalProfile *profile, const char *prop_name) diff --git a/update-authors.pl b/update-authors.pl index 9d79ed3..80e22b1 100755 --- a/update-authors.pl +++ b/update-authors.pl @@ -1,20 +1,20 @@ #!/usr/bin/perl =pod - update-authors.pl is part of MATE Terminal. + update-authors.pl is part of Gatuno Terminal. - MATE Terminal is free software: you can redistribute it and/or modify + Gatuno Terminal is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. - MATE Terminal is distributed in the hope that it will be useful, + Gatuno Terminal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with MATE Terminal. If not, see . + along with Gatuno Terminal. If not, see . =cut use strict;