Do apply terminal settings when they are changed
parent
e9a83d008c
commit
58a319710e
|
@ -29,8 +29,6 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
#define MOO_TERM_PREFS_PREFIX "Terminal"
|
|
||||||
|
|
||||||
#define NEW_KEY_BOOL(s__,v__) moo_prefs_new_key_bool (MOO_TERM_PREFS_PREFIX "/" s__, v__)
|
#define NEW_KEY_BOOL(s__,v__) moo_prefs_new_key_bool (MOO_TERM_PREFS_PREFIX "/" s__, v__)
|
||||||
#define NEW_KEY_INT(s__,v__) moo_prefs_new_key_int (MOO_TERM_PREFS_PREFIX "/" s__, v__)
|
#define NEW_KEY_INT(s__,v__) moo_prefs_new_key_int (MOO_TERM_PREFS_PREFIX "/" s__, v__)
|
||||||
#define NEW_KEY_STRING(s__,v__) moo_prefs_new_key_string (MOO_TERM_PREFS_PREFIX "/" s__, v__)
|
#define NEW_KEY_STRING(s__,v__) moo_prefs_new_key_string (MOO_TERM_PREFS_PREFIX "/" s__, v__)
|
||||||
|
@ -49,7 +47,8 @@
|
||||||
#endif /* ! __WIN32__ */
|
#endif /* ! __WIN32__ */
|
||||||
|
|
||||||
|
|
||||||
static void set_defaults (void)
|
void
|
||||||
|
_moo_term_init_settings (void)
|
||||||
{
|
{
|
||||||
GtkSettings *settings;
|
GtkSettings *settings;
|
||||||
GtkStyle *style;
|
GtkStyle *style;
|
||||||
|
@ -78,10 +77,13 @@ static void set_defaults (void)
|
||||||
void
|
void
|
||||||
_moo_term_apply_settings (MooTerm *term)
|
_moo_term_apply_settings (MooTerm *term)
|
||||||
{
|
{
|
||||||
set_defaults ();
|
|
||||||
|
|
||||||
moo_term_set_font_from_string (term, GET_STRING (MOO_TERM_PREFS_FONT));
|
moo_term_set_font_from_string (term, GET_STRING (MOO_TERM_PREFS_FONT));
|
||||||
|
|
||||||
|
gtk_widget_modify_text (GTK_WIDGET (term), GTK_STATE_NORMAL,
|
||||||
|
GET_COLOR (MOO_TERM_PREFS_FOREGROUND));
|
||||||
|
gtk_widget_modify_base (GTK_WIDGET (term), GTK_STATE_NORMAL,
|
||||||
|
GET_COLOR (MOO_TERM_PREFS_BACKGROUND));
|
||||||
|
|
||||||
if (GET_BOOL (MOO_TERM_PREFS_CURSOR_BLINKS))
|
if (GET_BOOL (MOO_TERM_PREFS_CURSOR_BLINKS))
|
||||||
{
|
{
|
||||||
int t = GET_INT (MOO_TERM_PREFS_CURSOR_BLINK_TIME);
|
int t = GET_INT (MOO_TERM_PREFS_CURSOR_BLINK_TIME);
|
||||||
|
@ -116,7 +118,7 @@ GtkWidget *moo_term_prefs_page_new (void)
|
||||||
"page",
|
"page",
|
||||||
MOO_TERM_PREFS_PREFIX);
|
MOO_TERM_PREFS_PREFIX);
|
||||||
|
|
||||||
set_defaults ();
|
_moo_term_init_settings ();
|
||||||
|
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,11 +20,10 @@ G_BEGIN_DECLS
|
||||||
|
|
||||||
|
|
||||||
GtkWidget *moo_term_prefs_page_new (void);
|
GtkWidget *moo_term_prefs_page_new (void);
|
||||||
void moo_term_set_prefs_prefix (const char *prefix);
|
const char *moo_term_setting (const char *setting_name);
|
||||||
const char *moo_term_get_prefs_prefix (void);
|
|
||||||
const char *moo_term_setting (const char *setting_name);
|
|
||||||
|
|
||||||
/* keep in sync with list in mooterm-prefs.c */
|
/* keep in sync with list in mooterm-prefs.c */
|
||||||
|
#define MOO_TERM_PREFS_PREFIX "Terminal"
|
||||||
|
|
||||||
#define MOO_TERM_PREFS_FONT "font"
|
#define MOO_TERM_PREFS_FONT "font"
|
||||||
#define MOO_TERM_PREFS_FOREGROUND "foreground"
|
#define MOO_TERM_PREFS_FOREGROUND "foreground"
|
||||||
|
@ -32,8 +31,6 @@ const char *moo_term_setting (const char *setting_name);
|
||||||
#define MOO_TERM_PREFS_CURSOR_BLINKS "cursor_blinks"
|
#define MOO_TERM_PREFS_CURSOR_BLINKS "cursor_blinks"
|
||||||
#define MOO_TERM_PREFS_CURSOR_BLINK_TIME "cursor_blink_time"
|
#define MOO_TERM_PREFS_CURSOR_BLINK_TIME "cursor_blink_time"
|
||||||
|
|
||||||
#define MOO_TERM_PREFS_SAVE_SELECTION_DIR "save_selection_dir"
|
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|
|
@ -181,6 +181,7 @@ struct _MooTermPrivate {
|
||||||
buf_scrollback ((term)->priv->buffer))
|
buf_scrollback ((term)->priv->buffer))
|
||||||
|
|
||||||
void _moo_term_apply_settings (MooTerm *term);
|
void _moo_term_apply_settings (MooTerm *term);
|
||||||
|
void _moo_term_init_settings (void);
|
||||||
void _moo_term_set_window_title (MooTerm *term,
|
void _moo_term_set_window_title (MooTerm *term,
|
||||||
const char *title);
|
const char *title);
|
||||||
void _moo_term_set_icon_name (MooTerm *term,
|
void _moo_term_set_icon_name (MooTerm *term,
|
||||||
|
|
|
@ -351,6 +351,8 @@ moo_term_init (MooTerm *term)
|
||||||
"feed-child",
|
"feed-child",
|
||||||
G_CALLBACK (moo_term_feed_child),
|
G_CALLBACK (moo_term_feed_child),
|
||||||
term);
|
term);
|
||||||
|
|
||||||
|
_moo_term_init_settings ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -533,8 +535,6 @@ moo_term_realize (GtkWidget *widget)
|
||||||
_moo_term_update_palette (term);
|
_moo_term_update_palette (term);
|
||||||
_moo_term_size_changed (term);
|
_moo_term_size_changed (term);
|
||||||
|
|
||||||
_moo_term_apply_settings (term);
|
|
||||||
|
|
||||||
term->priv->im = gtk_im_multicontext_new ();
|
term->priv->im = gtk_im_multicontext_new ();
|
||||||
gtk_im_context_set_client_window (term->priv->im, widget->window);
|
gtk_im_context_set_client_window (term->priv->im, widget->window);
|
||||||
gtk_im_context_set_use_preedit (term->priv->im, FALSE);
|
gtk_im_context_set_use_preedit (term->priv->im, FALSE);
|
||||||
|
|
|
@ -11,8 +11,10 @@
|
||||||
* See COPYING file that comes with this distribution.
|
* See COPYING file that comes with this distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define MOOTERM_COMPILATION
|
||||||
#include "mooterm/mootermwindow.h"
|
#include "mooterm/mootermwindow.h"
|
||||||
#include "mooterm/mooterm-prefs.h"
|
#include "mooterm/mooterm-prefs.h"
|
||||||
|
#include "mooterm/mooterm-private.h"
|
||||||
#include "mooutils/moocompat.h"
|
#include "mooutils/moocompat.h"
|
||||||
#include "mooutils/moodialogs.h"
|
#include "mooutils/moodialogs.h"
|
||||||
#include "mooutils/mooutils-fs.h"
|
#include "mooutils/mooutils-fs.h"
|
||||||
|
@ -20,14 +22,19 @@
|
||||||
#include "mooutils/mooprefs.h"
|
#include "mooutils/mooprefs.h"
|
||||||
|
|
||||||
|
|
||||||
static void moo_term_window_class_init (MooTermWindowClass *klass);
|
static void moo_term_window_class_init (MooTermWindowClass *klass);
|
||||||
static void moo_term_window_init (MooTermWindow *window);
|
static void moo_term_window_init (MooTermWindow *window);
|
||||||
static GObject *moo_term_window_constructor (GType type,
|
static GObject *moo_term_window_constructor (GType type,
|
||||||
guint n_props,
|
guint n_props,
|
||||||
GObjectConstructParam *props);
|
GObjectConstructParam *props);
|
||||||
|
static void moo_term_window_destroy (GtkObject *object);
|
||||||
|
|
||||||
static void copy_clipboard (MooTerm *term);
|
static void copy_clipboard (MooTerm *term);
|
||||||
static void paste_clipboard (MooTerm *term);
|
static void paste_clipboard (MooTerm *term);
|
||||||
|
|
||||||
|
static void prefs_notify (const char *key,
|
||||||
|
const GValue *newval,
|
||||||
|
MooTermWindow *window);
|
||||||
|
|
||||||
|
|
||||||
/* MOO_TYPE_TERM_WINDOW */
|
/* MOO_TYPE_TERM_WINDOW */
|
||||||
|
@ -40,6 +47,7 @@ static void moo_term_window_class_init (MooTermWindowClass *klass)
|
||||||
MooWindowClass *window_class = MOO_WINDOW_CLASS (klass);
|
MooWindowClass *window_class = MOO_WINDOW_CLASS (klass);
|
||||||
|
|
||||||
gobject_class->constructor = moo_term_window_constructor;
|
gobject_class->constructor = moo_term_window_constructor;
|
||||||
|
GTK_OBJECT_CLASS(klass)->destroy = moo_term_window_destroy;
|
||||||
|
|
||||||
moo_window_class_set_id (window_class, "Terminal", "Terminal");
|
moo_window_class_set_id (window_class, "Terminal", "Terminal");
|
||||||
|
|
||||||
|
@ -137,6 +145,14 @@ static GObject *moo_term_window_constructor (GType
|
||||||
window->terminal = MOO_TERM (terminal);
|
window->terminal = MOO_TERM (terminal);
|
||||||
gtk_widget_show (MOO_WINDOW(window)->vbox);
|
gtk_widget_show (MOO_WINDOW(window)->vbox);
|
||||||
|
|
||||||
|
_moo_term_apply_settings (window->terminal);
|
||||||
|
|
||||||
|
window->prefs_notify_id =
|
||||||
|
moo_prefs_notify_connect (MOO_TERM_PREFS_PREFIX,
|
||||||
|
MOO_PREFS_MATCH_PREFIX,
|
||||||
|
(MooPrefsNotify) prefs_notify,
|
||||||
|
window, NULL);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
TODO TODO
|
TODO TODO
|
||||||
// GtkWidget *popup =
|
// GtkWidget *popup =
|
||||||
|
@ -151,20 +167,54 @@ TODO TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void moo_term_window_apply_settings (MooTermWindow *window)
|
static void
|
||||||
|
moo_term_window_destroy (GtkObject *object)
|
||||||
|
{
|
||||||
|
MooTermWindow *window = MOO_TERM_WINDOW (object);
|
||||||
|
|
||||||
|
if (window->prefs_notify_id)
|
||||||
|
moo_prefs_notify_disconnect (window->prefs_notify_id);
|
||||||
|
if (window->apply_prefs_idle)
|
||||||
|
g_source_remove (window->apply_prefs_idle);
|
||||||
|
|
||||||
|
window->prefs_notify_id = 0;
|
||||||
|
window->apply_prefs_idle = 0;
|
||||||
|
|
||||||
|
GTK_OBJECT_CLASS (moo_term_window_parent_class)->destroy (object);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
apply_prefs (MooTermWindow *window)
|
||||||
|
{
|
||||||
|
window->apply_prefs_idle = 0;
|
||||||
|
_moo_term_apply_settings (window->terminal);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
prefs_notify (G_GNUC_UNUSED const char *key,
|
||||||
|
G_GNUC_UNUSED const GValue *newval,
|
||||||
|
MooTermWindow *window)
|
||||||
{
|
{
|
||||||
g_return_if_fail (MOO_IS_TERM_WINDOW (window));
|
g_return_if_fail (MOO_IS_TERM_WINDOW (window));
|
||||||
g_signal_emit_by_name (window->terminal, "apply_settings", NULL);
|
|
||||||
|
if (!window->apply_prefs_idle)
|
||||||
|
window->apply_prefs_idle =
|
||||||
|
g_idle_add ((GSourceFunc) apply_prefs, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
GtkWidget *moo_term_window_new (void)
|
GtkWidget *
|
||||||
|
moo_term_window_new (void)
|
||||||
{
|
{
|
||||||
return GTK_WIDGET (g_object_new (MOO_TYPE_TERM_WINDOW, NULL));
|
return g_object_new (MOO_TYPE_TERM_WINDOW, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MooTerm *moo_term_window_get_term (MooTermWindow *window)
|
MooTerm *
|
||||||
|
moo_term_window_get_term (MooTermWindow *window)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (MOO_IS_TERM_WINDOW (window), NULL);
|
g_return_val_if_fail (MOO_IS_TERM_WINDOW (window), NULL);
|
||||||
return window->terminal;
|
return window->terminal;
|
||||||
|
|
|
@ -35,9 +35,10 @@ typedef struct _MooTermWindowClass MooTermWindowClass;
|
||||||
struct _MooTermWindow
|
struct _MooTermWindow
|
||||||
{
|
{
|
||||||
MooWindow parent;
|
MooWindow parent;
|
||||||
|
|
||||||
GType term_type;
|
GType term_type;
|
||||||
MooTerm *terminal;
|
MooTerm *terminal;
|
||||||
|
guint prefs_notify_id;
|
||||||
|
guint apply_prefs_idle;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MooTermWindowClass
|
struct _MooTermWindowClass
|
||||||
|
|
Loading…
Reference in New Issue