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;