summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pluma/pluma-app-activatable.c20
-rw-r--r--pluma/pluma-app-activatable.h20
-rw-r--r--pluma/pluma-app.c952
-rw-r--r--pluma/pluma-view-activatable.c20
-rw-r--r--pluma/pluma-view-activatable.h20
-rw-r--r--pluma/pluma-view.c3654
-rw-r--r--pluma/pluma-window-activatable.c20
-rw-r--r--pluma/pluma-window-activatable.h20
-rw-r--r--pluma/pluma-window.c6679
9 files changed, 5672 insertions, 5733 deletions
diff --git a/pluma/pluma-app-activatable.c b/pluma/pluma-app-activatable.c
index 3d68d9fe..8e43b615 100644
--- a/pluma/pluma-app-activatable.c
+++ b/pluma/pluma-app-activatable.c
@@ -5,18 +5,18 @@
* Copyright (C) 2010 Steve Frécinaux
* Copyright (C) 2010 Jesse van den Kieboom
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program 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 Library General Public License for more details.
+ * This program 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 Library General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see https://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see https://www.gnu.org/licenses/.
*/
#include <config.h>
diff --git a/pluma/pluma-app-activatable.h b/pluma/pluma-app-activatable.h
index 0362f546..36072ada 100644
--- a/pluma/pluma-app-activatable.h
+++ b/pluma/pluma-app-activatable.h
@@ -5,18 +5,18 @@
* Copyright (C) 2010 - Steve Frécinaux
* Copyright (C) 2010 - Jesse van den Kieboom
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program 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 Library General Public License for more details.
+ * This program 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 Library General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see https://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see https://www.gnu.org/licenses/.
*/
#ifndef __PLUMA_APP_ACTIVATABLE_H__
diff --git a/pluma/pluma-app.c b/pluma/pluma-app.c
index ef4e3fe4..0069d928 100644
--- a/pluma/pluma-app.c
+++ b/pluma/pluma-app.c
@@ -51,29 +51,29 @@
#include "pluma-app-activatable.h"
#include "pluma-plugins-engine.h"
-#define PLUMA_PAGE_SETUP_FILE "pluma-page-setup"
-#define PLUMA_PRINT_SETTINGS_FILE "pluma-print-settings"
+#define PLUMA_PAGE_SETUP_FILE "pluma-page-setup"
+#define PLUMA_PRINT_SETTINGS_FILE "pluma-print-settings"
/* Properties */
enum
{
- PROP_0,
- PROP_LOCKDOWN
+ PROP_0,
+ PROP_LOCKDOWN
};
struct _PlumaAppPrivate
{
- GList *windows;
- PlumaWindow *active_window;
+ GList *windows;
+ PlumaWindow *active_window;
- PlumaLockdownMask lockdown;
+ PlumaLockdownMask lockdown;
- GtkPageSetup *page_setup;
- GtkPrintSettings *print_settings;
+ GtkPageSetup *page_setup;
+ GtkPrintSettings *print_settings;
- GSettings *window_settings;
+ GSettings *window_settings;
- PeasExtensionSet *extensions;
+ PeasExtensionSet *extensions;
};
G_DEFINE_TYPE_WITH_PRIVATE (PlumaApp, pluma_app, G_TYPE_OBJECT)
@@ -81,320 +81,317 @@ G_DEFINE_TYPE_WITH_PRIVATE (PlumaApp, pluma_app, G_TYPE_OBJECT)
static void
pluma_app_finalize (GObject *object)
{
- PlumaApp *app = PLUMA_APP (object);
+ PlumaApp *app = PLUMA_APP (object);
- g_list_free (app->priv->windows);
+ g_list_free (app->priv->windows);
- if (app->priv->page_setup)
- g_object_unref (app->priv->page_setup);
- if (app->priv->print_settings)
- g_object_unref (app->priv->print_settings);
+ if (app->priv->page_setup)
+ g_object_unref (app->priv->page_setup);
+ if (app->priv->print_settings)
+ g_object_unref (app->priv->print_settings);
- G_OBJECT_CLASS (pluma_app_parent_class)->finalize (object);
+ G_OBJECT_CLASS (pluma_app_parent_class)->finalize (object);
}
static void
pluma_app_dispose (GObject *object)
{
- PlumaApp *app = PLUMA_APP (object);
+ PlumaApp *app = PLUMA_APP (object);
- g_clear_object (&app->priv->window_settings);
+ g_clear_object (&app->priv->window_settings);
g_clear_object (&app->priv->extensions);
- G_OBJECT_CLASS (pluma_app_parent_class)->dispose (object);
+ G_OBJECT_CLASS (pluma_app_parent_class)->dispose (object);
}
static void
pluma_app_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- PlumaApp *app = PLUMA_APP (object);
+ PlumaApp *app = PLUMA_APP (object);
- switch (prop_id)
- {
- case PROP_LOCKDOWN:
- g_value_set_flags (value, pluma_app_get_lockdown (app));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ switch (prop_id)
+ {
+ case PROP_LOCKDOWN:
+ g_value_set_flags (value, pluma_app_get_lockdown (app));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
pluma_app_class_init (PlumaAppClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = pluma_app_finalize;
- object_class->dispose = pluma_app_dispose;
- object_class->get_property = pluma_app_get_property;
+ object_class->finalize = pluma_app_finalize;
+ object_class->dispose = pluma_app_dispose;
+ object_class->get_property = pluma_app_get_property;
- g_object_class_install_property (object_class,
- PROP_LOCKDOWN,
- g_param_spec_flags ("lockdown",
- "Lockdown",
- "The lockdown mask",
- PLUMA_TYPE_LOCKDOWN_MASK,
- 0,
- G_PARAM_READABLE |
- G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class,
+ PROP_LOCKDOWN,
+ g_param_spec_flags ("lockdown",
+ "Lockdown",
+ "The lockdown mask",
+ PLUMA_TYPE_LOCKDOWN_MASK,
+ 0,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
}
static gboolean
ensure_user_config_dir (void)
{
- gchar *config_dir;
- gboolean ret = TRUE;
- gint res;
+ gchar *config_dir;
+ gboolean ret = TRUE;
+ gint res;
- config_dir = pluma_dirs_get_user_config_dir ();
- if (config_dir == NULL)
- {
- g_warning ("Could not get config directory\n");
- return FALSE;
- }
+ config_dir = pluma_dirs_get_user_config_dir ();
+ if (config_dir == NULL)
+ {
+ g_warning ("Could not get config directory\n");
+ return FALSE;
+ }
- res = g_mkdir_with_parents (config_dir, 0755);
- if (res < 0)
- {
- g_warning ("Could not create config directory\n");
- ret = FALSE;
- }
+ res = g_mkdir_with_parents (config_dir, 0755);
+ if (res < 0)
+ {
+ g_warning ("Could not create config directory\n");
+ ret = FALSE;
+ }
- g_free (config_dir);
+ g_free (config_dir);
- return ret;
+ return ret;
}
static void
load_accels (void)
{
- gchar *filename;
+ gchar *filename;
- filename = pluma_dirs_get_user_accels_file ();
- if (filename != NULL)
- {
- pluma_debug_message (DEBUG_APP, "Loading keybindings from %s\n", filename);
- gtk_accel_map_load (filename);
- g_free (filename);
- }
+ filename = pluma_dirs_get_user_accels_file ();
+ if (filename != NULL)
+ {
+ pluma_debug_message (DEBUG_APP, "Loading keybindings from %s\n", filename);
+ gtk_accel_map_load (filename);
+ g_free (filename);
+ }
}
static void
save_accels (void)
{
- gchar *filename;
+ gchar *filename;
- filename = pluma_dirs_get_user_accels_file ();
- if (filename != NULL)
- {
- pluma_debug_message (DEBUG_APP, "Saving keybindings in %s\n", filename);
- gtk_accel_map_save (filename);
- g_free (filename);
- }
+ filename = pluma_dirs_get_user_accels_file ();
+ if (filename != NULL)
+ {
+ pluma_debug_message (DEBUG_APP, "Saving keybindings in %s\n", filename);
+ gtk_accel_map_save (filename);
+ g_free (filename);
+ }
}
static gchar *
get_page_setup_file (void)
{
- gchar *config_dir;
- gchar *setup = NULL;
+ gchar *config_dir;
+ gchar *setup = NULL;
- config_dir = pluma_dirs_get_user_config_dir ();
+ config_dir = pluma_dirs_get_user_config_dir ();
- if (config_dir != NULL)
- {
- setup = g_build_filename (config_dir,
- PLUMA_PAGE_SETUP_FILE,
- NULL);
- g_free (config_dir);
- }
+ if (config_dir != NULL)
+ {
+ setup = g_build_filename (config_dir,
+ PLUMA_PAGE_SETUP_FILE,
+ NULL);
+ g_free (config_dir);
+ }
- return setup;
+ return setup;
}
static void
load_page_setup (PlumaApp *app)
{
- gchar *filename;
- GError *error = NULL;
+ gchar *filename;
+ GError *error = NULL;
- g_return_if_fail (app->priv->page_setup == NULL);
+ g_return_if_fail (app->priv->page_setup == NULL);
- filename = get_page_setup_file ();
+ filename = get_page_setup_file ();
- app->priv->page_setup = gtk_page_setup_new_from_file (filename,
- &error);
- if (error)
- {
- /* Ignore file not found error */
- if (error->domain != G_FILE_ERROR ||
- error->code != G_FILE_ERROR_NOENT)
- {
- g_warning ("%s", error->message);
- }
+ app->priv->page_setup = gtk_page_setup_new_from_file (filename, &error);
+ if (error)
+ {
+ /* Ignore file not found error */
+ if (error->domain != G_FILE_ERROR ||
+ error->code != G_FILE_ERROR_NOENT)
+ {
+ g_warning ("%s", error->message);
+ }
- g_error_free (error);
- }
+ g_error_free (error);
+ }
- g_free (filename);
+ g_free (filename);
- /* fall back to default settings */
- if (app->priv->page_setup == NULL)
- app->priv->page_setup = gtk_page_setup_new ();
+ /* fall back to default settings */
+ if (app->priv->page_setup == NULL)
+ app->priv->page_setup = gtk_page_setup_new ();
}
static void
save_page_setup (PlumaApp *app)
{
- gchar *filename;
- GError *error = NULL;
+ gchar *filename;
+ GError *error = NULL;
- if (app->priv->page_setup == NULL)
- return;
+ if (app->priv->page_setup == NULL)
+ return;
- filename = get_page_setup_file ();
+ filename = get_page_setup_file ();
- gtk_page_setup_to_file (app->priv->page_setup,
- filename,
- &error);
- if (error)
- {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ gtk_page_setup_to_file (app->priv->page_setup,
+ filename,
+ &error);
+ if (error)
+ {
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
- g_free (filename);
+ g_free (filename);
}
static gchar *
get_print_settings_file (void)
{
- gchar *config_dir;
- gchar *settings = NULL;
+ gchar *config_dir;
+ gchar *settings = NULL;
- config_dir = pluma_dirs_get_user_config_dir ();
+ config_dir = pluma_dirs_get_user_config_dir ();
- if (config_dir != NULL)
- {
- settings = g_build_filename (config_dir,
- PLUMA_PRINT_SETTINGS_FILE,
- NULL);
- g_free (config_dir);
- }
+ if (config_dir != NULL)
+ {
+ settings = g_build_filename (config_dir,
+ PLUMA_PRINT_SETTINGS_FILE,
+ NULL);
+ g_free (config_dir);
+ }
- return settings;
+ return settings;
}
static void
load_print_settings (PlumaApp *app)
{
- gchar *filename;
- GError *error = NULL;
+ gchar *filename;
+ GError *error = NULL;
- g_return_if_fail (app->priv->print_settings == NULL);
+ g_return_if_fail (app->priv->print_settings == NULL);
- filename = get_print_settings_file ();
+ filename = get_print_settings_file ();
- app->priv->print_settings = gtk_print_settings_new_from_file (filename,
- &error);
- if (error)
- {
- /* Ignore file not found error */
- if (error->domain != G_FILE_ERROR ||
- error->code != G_FILE_ERROR_NOENT)
- {
- g_warning ("%s", error->message);
- }
+ app->priv->print_settings = gtk_print_settings_new_from_file (filename,
+ &error);
+ if (error)
+ {
+ /* Ignore file not found error */
+ if (error->domain != G_FILE_ERROR ||
+ error->code != G_FILE_ERROR_NOENT)
+ {
+ g_warning ("%s", error->message);
+ }
- g_error_free (error);
- }
+ g_error_free (error);
+ }
- g_free (filename);
+ g_free (filename);
- /* fall back to default settings */
- if (app->priv->print_settings == NULL)
- app->priv->print_settings = gtk_print_settings_new ();
+ /* fall back to default settings */
+ if (app->priv->print_settings == NULL)
+ app->priv->print_settings = gtk_print_settings_new ();
}
static void
save_print_settings (PlumaApp *app)
{
- gchar *filename;
- GError *error = NULL;
+ gchar *filename;
+ GError *error = NULL;
- if (app->priv->print_settings == NULL)
- return;
+ if (app->priv->print_settings == NULL)
+ return;
- filename = get_print_settings_file ();
+ filename = get_print_settings_file ();
- gtk_print_settings_to_file (app->priv->print_settings,
- filename,
- &error);
- if (error)
- {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ gtk_print_settings_to_file (app->priv->print_settings,
+ filename,
+ &error);
+ if (error)
+ {
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
- g_free (filename);
+ g_free (filename);
}
static void
extension_added (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaApp *app)
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaApp *app)
{
- peas_extension_call (exten, "activate");
+ peas_extension_call (exten, "activate");
}
static void
extension_removed (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaApp *app)
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaApp *app)
{
- peas_extension_call (exten, "deactivate");
+ peas_extension_call (exten, "deactivate");
}
static void
pluma_app_init (PlumaApp *app)
{
- PlumaSettings *settings;
+ PlumaSettings *settings;
- app->priv = pluma_app_get_instance_private (app);
+ app->priv = pluma_app_get_instance_private (app);
- load_accels ();
+ load_accels ();
- /* Load/init settings */
- settings = _pluma_settings_get_singleton ();
- app->priv->window_settings = g_settings_new (PLUMA_SCHEMA_ID);
+ /* Load/init settings */
+ settings = _pluma_settings_get_singleton ();
+ app->priv->window_settings = g_settings_new (PLUMA_SCHEMA_ID);
- /* initial lockdown state */
- app->priv->lockdown = pluma_settings_get_lockdown (settings);
+ /* initial lockdown state */
+ app->priv->lockdown = pluma_settings_get_lockdown (settings);
- app->priv->extensions = peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
- PLUMA_TYPE_APP_ACTIVATABLE,
- "app", app,
- NULL);
+ app->priv->extensions = peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
+ PLUMA_TYPE_APP_ACTIVATABLE,
+ "app", app,
+ NULL);
- g_signal_connect (app->priv->extensions,
- "extension-added",
- G_CALLBACK (extension_added),
- app);
+ g_signal_connect (app->priv->extensions, "extension-added",
+ G_CALLBACK (extension_added),
+ app);
- g_signal_connect (app->priv->extensions,
- "extension-removed",
- G_CALLBACK (extension_removed),
- app);
+ g_signal_connect (app->priv->extensions, "extension-removed",
+ G_CALLBACK (extension_removed),
+ app);
- peas_extension_set_call (app->priv->extensions, "activate");
+ peas_extension_set_call (app->priv->extensions, "activate");
}
/**
@@ -408,37 +405,36 @@ pluma_app_init (PlumaApp *app)
PlumaApp *
pluma_app_get_default (void)
{
- static PlumaApp *app = NULL;
+ static PlumaApp *app = NULL;
- if (app != NULL)
- return app;
+ if (app != NULL)
+ return app;
- app = PLUMA_APP (g_object_new (PLUMA_TYPE_APP, NULL));
+ app = PLUMA_APP (g_object_new (PLUMA_TYPE_APP, NULL));
- g_object_add_weak_pointer (G_OBJECT (app),
- (gpointer) &app);
+ g_object_add_weak_pointer (G_OBJECT (app), (gpointer) &app);
- return app;
+ return app;
}
static void
set_active_window (PlumaApp *app,
PlumaWindow *window)
{
- app->priv->active_window = window;
+ app->priv->active_window = window;
}
static gboolean
window_focus_in_event (PlumaWindow *window,
- GdkEventFocus *event,
- PlumaApp *app)
+ GdkEventFocus *event,
+ PlumaApp *app)
{
- /* updates active_view and active_child when a new toplevel receives focus */
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE);
+ /* updates active_view and active_child when a new toplevel receives focus */
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE);
- set_active_window (app, window);
+ set_active_window (app, window);
- return FALSE;
+ return FALSE;
}
static gboolean
@@ -446,155 +442,153 @@ window_delete_event (PlumaWindow *window,
GdkEvent *event,
PlumaApp *app)
{
- PlumaWindowState ws;
+ PlumaWindowState ws;
- ws = pluma_window_get_state (window);
+ ws = pluma_window_get_state (window);
- if (ws &
- (PLUMA_WINDOW_STATE_SAVING |
- PLUMA_WINDOW_STATE_PRINTING |
- PLUMA_WINDOW_STATE_SAVING_SESSION))
- return TRUE;
+ if (ws &
+ (PLUMA_WINDOW_STATE_SAVING |
+ PLUMA_WINDOW_STATE_PRINTING |
+ PLUMA_WINDOW_STATE_SAVING_SESSION))
+ return TRUE;
- _pluma_cmd_file_quit (NULL, window);
+ _pluma_cmd_file_quit (NULL, window);
- /* Do not destroy the window */
- return TRUE;
+ /* Do not destroy the window */
+ return TRUE;
}
static void
window_destroy (PlumaWindow *window,
- PlumaApp *app)
+ PlumaApp *app)
{
- app->priv->windows = g_list_remove (app->priv->windows,
- window);
+ app->priv->windows = g_list_remove (app->priv->windows, window);
- if (window == app->priv->active_window)
- {
- set_active_window (app, app->priv->windows != NULL ? app->priv->windows->data : NULL);
- }
+ if (window == app->priv->active_window)
+ {
+ set_active_window (app, app->priv->windows != NULL ? app->priv->windows->data : NULL);
+ }
/* CHECK: I don't think we have to disconnect this function, since windows
is being destroyed */
/*
- g_signal_handlers_disconnect_by_func (window,
- G_CALLBACK (window_focus_in_event),
- app);
- g_signal_handlers_disconnect_by_func (window,
- G_CALLBACK (window_destroy),
- app);
+ g_signal_handlers_disconnect_by_func (window,
+ G_CALLBACK (window_focus_in_event),
+ app);
+ g_signal_handlers_disconnect_by_func (window,
+ G_CALLBACK (window_destroy),
+ app);
*/
- if (app->priv->windows == NULL)
- {
- /* Last window is gone... save some settings and exit */
- ensure_user_config_dir ();
+ if (app->priv->windows == NULL)
+ {
+ /* Last window is gone... save some settings and exit */
+ ensure_user_config_dir ();
- save_accels ();
- save_page_setup (app);
- save_print_settings (app);
+ save_accels ();
+ save_page_setup (app);
+ save_print_settings (app);
- gtk_main_quit ();
- }
+ gtk_main_quit ();
+ }
}
/* Generates a unique string for a window role */
static gchar *
gen_role (void)
{
- static gint serial;
+ static gint serial;
- return g_strdup_printf ("pluma-window-%" G_GINT64_FORMAT "-%d-%s",
- g_get_real_time (),
- serial++,
- g_get_host_name ());
+ return g_strdup_printf ("pluma-window-%" G_GINT64_FORMAT "-%d-%s",
+ g_get_real_time (),
+ serial++,
+ g_get_host_name ());
}
static PlumaWindow *
pluma_app_create_window_real (PlumaApp *app,
- gboolean set_geometry,
- const gchar *role)
-{
- PlumaWindow *window;
-
- pluma_debug (DEBUG_APP);
-
- /*
- * We need to be careful here, there is a race condition:
- * when another pluma is launched it checks active_window,
- * so we must do our best to ensure that active_window
- * is never NULL when at least a window exists.
- */
- if (app->priv->windows == NULL)
- {
- window = g_object_new (PLUMA_TYPE_WINDOW, NULL);
- set_active_window (app, window);
- }
- else
- {
- window = g_object_new (PLUMA_TYPE_WINDOW, NULL);
- }
-
- app->priv->windows = g_list_prepend (app->priv->windows,
- window);
-
- pluma_debug_message (DEBUG_APP, "Window created");
-
- if (role != NULL)
- {
- gtk_window_set_role (GTK_WINDOW (window), role);
- }
- else
- {
- gchar *newrole;
-
- newrole = gen_role ();
- gtk_window_set_role (GTK_WINDOW (window), newrole);
- g_free (newrole);
- }
-
- if (set_geometry)
- {
- GdkWindowState state;
- gint w, h;
-
- state = g_settings_get_int (app->priv->window_settings,
- PLUMA_SETTINGS_WINDOW_STATE);
-
- if ((state & GDK_WINDOW_STATE_MAXIMIZED) != 0)
- {
- _pluma_window_get_default_size (&w, &h);
- gtk_window_set_default_size (GTK_WINDOW (window), w, h);
- gtk_window_maximize (GTK_WINDOW (window));
- }
- else
- {
- g_settings_get (app->priv->window_settings,
- PLUMA_SETTINGS_WINDOW_SIZE,
- "(ii)", &w, &h);
- gtk_window_set_default_size (GTK_WINDOW (window), w, h);
- gtk_window_unmaximize (GTK_WINDOW (window));
- }
-
- if ((state & GDK_WINDOW_STATE_STICKY ) != 0)
- gtk_window_stick (GTK_WINDOW (window));
- else
- gtk_window_unstick (GTK_WINDOW (window));
- }
-
- g_signal_connect (window,
- "focus_in_event",
- G_CALLBACK (window_focus_in_event),
- app);
- g_signal_connect (window,
- "delete_event",
- G_CALLBACK (window_delete_event),
- app);
- g_signal_connect (window,
- "destroy",
- G_CALLBACK (window_destroy),
- app);
-
- return window;
+ gboolean set_geometry,
+ const gchar *role)
+{
+ PlumaWindow *window;
+
+ pluma_debug (DEBUG_APP);
+
+ /*
+ * We need to be careful here, there is a race condition:
+ * when another pluma is launched it checks active_window,
+ * so we must do our best to ensure that active_window
+ * is never NULL when at least a window exists.
+ */
+ if (app->priv->windows == NULL)
+ {
+ window = g_object_new (PLUMA_TYPE_WINDOW, NULL);
+ set_active_window (app, window);
+ }
+ else
+ {
+ window = g_object_new (PLUMA_TYPE_WINDOW, NULL);
+ }
+
+ app->priv->windows = g_list_prepend (app->priv->windows, window);
+
+ pluma_debug_message (DEBUG_APP, "Window created");
+
+ if (role != NULL)
+ {
+ gtk_window_set_role (GTK_WINDOW (window), role);
+ }
+ else
+ {
+ gchar *newrole;
+
+ newrole = gen_role ();
+ gtk_window_set_role (GTK_WINDOW (window), newrole);
+ g_free (newrole);
+ }
+
+ if (set_geometry)
+ {
+ GdkWindowState state;
+ gint w, h;
+
+ state = g_settings_get_int (app->priv->window_settings,
+ PLUMA_SETTINGS_WINDOW_STATE);
+
+ if ((state & GDK_WINDOW_STATE_MAXIMIZED) != 0)
+ {
+ _pluma_window_get_default_size (&w, &h);
+ gtk_window_set_default_size (GTK_WINDOW (window), w, h);
+ gtk_window_maximize (GTK_WINDOW (window));
+ }
+ else
+ {
+ g_settings_get (app->priv->window_settings,
+ PLUMA_SETTINGS_WINDOW_SIZE,
+ "(ii)", &w, &h);
+ gtk_window_set_default_size (GTK_WINDOW (window), w, h);
+ gtk_window_unmaximize (GTK_WINDOW (window));
+ }
+
+ if ((state & GDK_WINDOW_STATE_STICKY ) != 0)
+ gtk_window_stick (GTK_WINDOW (window));
+ else
+ gtk_window_unstick (GTK_WINDOW (window));
+ }
+
+ g_signal_connect (window,
+ "focus_in_event",
+ G_CALLBACK (window_focus_in_event),
+ app);
+ g_signal_connect (window,
+ "delete_event",
+ G_CALLBACK (window_delete_event),
+ app);
+ g_signal_connect (window,
+ "destroy",
+ G_CALLBACK (window_destroy),
+ app);
+
+ return window;
}
/**
@@ -608,16 +602,16 @@ pluma_app_create_window_real (PlumaApp *app,
*/
PlumaWindow *
pluma_app_create_window (PlumaApp *app,
- GdkScreen *screen)
+ GdkScreen *screen)
{
- PlumaWindow *window;
+ PlumaWindow *window;
- window = pluma_app_create_window_real (app, TRUE, NULL);
+ window = pluma_app_create_window_real (app, TRUE, NULL);
- if (screen != NULL)
- gtk_window_set_screen (GTK_WINDOW (window), screen);
+ if (screen != NULL)
+ gtk_window_set_screen (GTK_WINDOW (window), screen);
- return window;
+ return window;
}
/*
@@ -626,13 +620,13 @@ pluma_app_create_window (PlumaApp *app,
*/
PlumaWindow *
_pluma_app_restore_window (PlumaApp *app,
- const gchar *role)
+ const gchar *role)
{
- PlumaWindow *window;
+ PlumaWindow *window;
- window = pluma_app_create_window_real (app, FALSE, role);
+ window = pluma_app_create_window_real (app, FALSE, role);
- return window;
+ return window;
}
/**
@@ -647,9 +641,9 @@ _pluma_app_restore_window (PlumaApp *app,
const GList *
pluma_app_get_windows (PlumaApp *app)
{
- g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
- return app->priv->windows;
+ return app->priv->windows;
}
/**
@@ -663,62 +657,62 @@ pluma_app_get_windows (PlumaApp *app)
PlumaWindow *
pluma_app_get_active_window (PlumaApp *app)
{
- g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
- /* make sure our active window is always realized:
- * this is needed on startup if we launch two pluma fast
- * enough that the second instance comes up before the
- * first one shows its window.
- */
- if (!gtk_widget_get_realized (GTK_WIDGET (app->priv->active_window)))
- gtk_widget_realize (GTK_WIDGET (app->priv->active_window));
+ /* make sure our active window is always realized:
+ * this is needed on startup if we launch two pluma fast
+ * enough that the second instance comes up before the
+ * first one shows its window.
+ */
+ if (!gtk_widget_get_realized (GTK_WIDGET (app->priv->active_window)))
+ gtk_widget_realize (GTK_WIDGET (app->priv->active_window));
- return app->priv->active_window;
+ return app->priv->active_window;
}
static gboolean
is_in_viewport (PlumaWindow *window,
- GdkScreen *screen,
- gint workspace,
- gint viewport_x,
- gint viewport_y)
-{
- GdkWindow *gdkwindow;
- gint ws;
- gint sc_width, sc_height;
- gint x, y, width, height;
- gint vp_x, vp_y;
-
- /* Check for workspace match */
- ws = pluma_utils_get_window_workspace (GTK_WINDOW (window));
- if (ws != workspace && ws != PLUMA_ALL_WORKSPACES)
- return FALSE;
-
- /* Check for viewport match */
- gdkwindow = gtk_widget_get_window (GTK_WIDGET (window));
- gdk_window_get_position (gdkwindow, &x, &y);
-
- width = gdk_window_get_width(gdkwindow);
- height = gdk_window_get_height(gdkwindow);
-
- pluma_utils_get_current_viewport (screen, &vp_x, &vp_y);
- x += vp_x;
- y += vp_y;
-
- if (GDK_IS_X11_DISPLAY (gdk_display_get_default ()))
- {
- sc_width = WidthOfScreen (gdk_x11_screen_get_xscreen (screen));
- sc_height = HeightOfScreen (gdk_x11_screen_get_xscreen (screen));
- }
- else
- {
- return TRUE;
- }
-
- return x + width * .25 >= viewport_x &&
- x + width * .75 <= viewport_x + sc_width &&
- y >= viewport_y &&
- y + height <= viewport_y + sc_height;
+ GdkScreen *screen,
+ gint workspace,
+ gint viewport_x,
+ gint viewport_y)
+{
+ GdkWindow *gdkwindow;
+ gint ws;
+ gint sc_width, sc_height;
+ gint x, y, width, height;
+ gint vp_x, vp_y;
+
+ /* Check for workspace match */
+ ws = pluma_utils_get_window_workspace (GTK_WINDOW (window));
+ if (ws != workspace && ws != PLUMA_ALL_WORKSPACES)
+ return FALSE;
+
+ /* Check for viewport match */
+ gdkwindow = gtk_widget_get_window (GTK_WIDGET (window));
+ gdk_window_get_position (gdkwindow, &x, &y);
+
+ width = gdk_window_get_width(gdkwindow);
+ height = gdk_window_get_height(gdkwindow);
+
+ pluma_utils_get_current_viewport (screen, &vp_x, &vp_y);
+ x += vp_x;
+ y += vp_y;
+
+ if (GDK_IS_X11_DISPLAY (gdk_display_get_default ()))
+ {
+ sc_width = WidthOfScreen (gdk_x11_screen_get_xscreen (screen));
+ sc_height = HeightOfScreen (gdk_x11_screen_get_xscreen (screen));
+ }
+ else
+ {
+ return TRUE;
+ }
+
+ return x + width * .25 >= viewport_x &&
+ x + width * .75 <= viewport_x + sc_width &&
+ y >= viewport_y &&
+ y + height <= viewport_y + sc_height;
}
/**
@@ -737,36 +731,36 @@ is_in_viewport (PlumaWindow *window,
*/
PlumaWindow *
_pluma_app_get_window_in_viewport (PlumaApp *app,
- GdkScreen *screen,
- gint workspace,
- gint viewport_x,
- gint viewport_y)
+ GdkScreen *screen,
+ gint workspace,
+ gint viewport_x,
+ gint viewport_y)
{
- PlumaWindow *window;
+ PlumaWindow *window;
- GList *l;
+ GList *l;
- g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
- /* first try if the active window */
- window = app->priv->active_window;
+ /* first try if the active window */
+ window = app->priv->active_window;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- if (is_in_viewport (window, screen, workspace, viewport_x, viewport_y))
- return window;
+ if (is_in_viewport (window, screen, workspace, viewport_x, viewport_y))
+ return window;
- /* otherwise try to see if there is a window on this workspace */
- for (l = app->priv->windows; l != NULL; l = l->next)
- {
- window = l->data;
+ /* otherwise try to see if there is a window on this workspace */
+ for (l = app->priv->windows; l != NULL; l = l->next)
+ {
+ window = l->data;
- if (is_in_viewport (window, screen, workspace, viewport_x, viewport_y))
- return window;
- }
+ if (is_in_viewport (window, screen, workspace, viewport_x, viewport_y))
+ return window;
+ }
- /* no window on this workspace... create a new one */
- return pluma_app_create_window (app, screen);
+ /* no window on this workspace... create a new one */
+ return pluma_app_create_window (app, screen);
}
/**
@@ -779,24 +773,24 @@ _pluma_app_get_window_in_viewport (PlumaApp *app,
* a newly allocated list of #PlumaDocument objects
*/
GList *
-pluma_app_get_documents (PlumaApp *app)
+pluma_app_get_documents (PlumaApp *app)
{
- GList *res = NULL;
- GList *windows;
+ GList *res = NULL;
+ GList *windows;
- g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
- windows = app->priv->windows;
+ windows = app->priv->windows;
- while (windows != NULL)
- {
- res = g_list_concat (res,
- pluma_window_get_documents (PLUMA_WINDOW (windows->data)));
+ while (windows != NULL)
+ {
+ res = g_list_concat (res,
+ pluma_window_get_documents (PLUMA_WINDOW (windows->data)));
- windows = g_list_next (windows);
- }
+ windows = g_list_next (windows);
+ }
- return res;
+ return res;
}
/**
@@ -811,22 +805,22 @@ pluma_app_get_documents (PlumaApp *app)
GList *
pluma_app_get_views (PlumaApp *app)
{
- GList *res = NULL;
- GList *windows;
+ GList *res = NULL;
+ GList *windows;
- g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
- windows = app->priv->windows;
+ windows = app->priv->windows;
- while (windows != NULL)
- {
- res = g_list_concat (res,
- pluma_window_get_views (PLUMA_WINDOW (windows->data)));
+ while (windows != NULL)
+ {
+ res = g_list_concat (res,
+ pluma_window_get_views (PLUMA_WINDOW (windows->data)));
- windows = g_list_next (windows);
- }
+ windows = g_list_next (windows);
+ }
- return res;
+ return res;
}
/**
@@ -840,96 +834,96 @@ pluma_app_get_views (PlumaApp *app)
PlumaLockdownMask
pluma_app_get_lockdown (PlumaApp *app)
{
- g_return_val_if_fail (PLUMA_IS_APP (app), PLUMA_LOCKDOWN_ALL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), PLUMA_LOCKDOWN_ALL);
- return app->priv->lockdown;
+ return app->priv->lockdown;
}
static void
app_lockdown_changed (PlumaApp *app)
{
- GList *l;
+ GList *l;
- for (l = app->priv->windows; l != NULL; l = l->next)
- _pluma_window_set_lockdown (PLUMA_WINDOW (l->data),
- app->priv->lockdown);
+ for (l = app->priv->windows; l != NULL; l = l->next)
+ _pluma_window_set_lockdown (PLUMA_WINDOW (l->data),
+ app->priv->lockdown);
- g_object_notify (G_OBJECT (app), "lockdown");
+ g_object_notify (G_OBJECT (app), "lockdown");
}
void
_pluma_app_set_lockdown (PlumaApp *app,
- PlumaLockdownMask lockdown)
+ PlumaLockdownMask lockdown)
{
- g_return_if_fail (PLUMA_IS_APP (app));
+ g_return_if_fail (PLUMA_IS_APP (app));
- app->priv->lockdown = lockdown;
+ app->priv->lockdown = lockdown;
- app_lockdown_changed (app);
+ app_lockdown_changed (app);
}
void
_pluma_app_set_lockdown_bit (PlumaApp *app,
- PlumaLockdownMask bit,
- gboolean value)
+ PlumaLockdownMask bit,
+ gboolean value)
{
- g_return_if_fail (PLUMA_IS_APP (app));
+ g_return_if_fail (PLUMA_IS_APP (app));
- if (value)
- app->priv->lockdown |= bit;
- else
- app->priv->lockdown &= ~bit;
+ if (value)
+ app->priv->lockdown |= bit;
+ else
+ app->priv->lockdown &= ~bit;
- app_lockdown_changed (app);
+ app_lockdown_changed (app);
}
/* Returns a copy */
GtkPageSetup *
_pluma_app_get_default_page_setup (PlumaApp *app)
{
- g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
- if (app->priv->page_setup == NULL)
- load_page_setup (app);
+ if (app->priv->page_setup == NULL)
+ load_page_setup (app);
- return gtk_page_setup_copy (app->priv->page_setup);
+ return gtk_page_setup_copy (app->priv->page_setup);
}
void
_pluma_app_set_default_page_setup (PlumaApp *app,
- GtkPageSetup *page_setup)
+ GtkPageSetup *page_setup)
{
- g_return_if_fail (PLUMA_IS_APP (app));
- g_return_if_fail (GTK_IS_PAGE_SETUP (page_setup));
+ g_return_if_fail (PLUMA_IS_APP (app));
+ g_return_if_fail (GTK_IS_PAGE_SETUP (page_setup));
- if (app->priv->page_setup != NULL)
- g_object_unref (app->priv->page_setup);
+ if (app->priv->page_setup != NULL)
+ g_object_unref (app->priv->page_setup);
- app->priv->page_setup = g_object_ref (page_setup);
+ app->priv->page_setup = g_object_ref (page_setup);
}
/* Returns a copy */
GtkPrintSettings *
_pluma_app_get_default_print_settings (PlumaApp *app)
{
- g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
+ g_return_val_if_fail (PLUMA_IS_APP (app), NULL);
- if (app->priv->print_settings == NULL)
- load_print_settings (app);
+ if (app->priv->print_settings == NULL)
+ load_print_settings (app);
- return gtk_print_settings_copy (app->priv->print_settings);
+ return gtk_print_settings_copy (app->priv->print_settings);
}
void
_pluma_app_set_default_print_settings (PlumaApp *app,
- GtkPrintSettings *settings)
+ GtkPrintSettings *settings)
{
- g_return_if_fail (PLUMA_IS_APP (app));
- g_return_if_fail (GTK_IS_PRINT_SETTINGS (settings));
+ g_return_if_fail (PLUMA_IS_APP (app));
+ g_return_if_fail (GTK_IS_PRINT_SETTINGS (settings));
- if (app->priv->print_settings != NULL)
- g_object_unref (app->priv->print_settings);
+ if (app->priv->print_settings != NULL)
+ g_object_unref (app->priv->print_settings);
- app->priv->print_settings = g_object_ref (settings);
+ app->priv->print_settings = g_object_ref (settings);
}
diff --git a/pluma/pluma-view-activatable.c b/pluma/pluma-view-activatable.c
index ad29dee8..83c1ff03 100644
--- a/pluma/pluma-view-activatable.c
+++ b/pluma/pluma-view-activatable.c
@@ -4,18 +4,18 @@
*
* Copyright (C) 2010 Steve Frécinaux
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program 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 Library General Public License for more details.
+ * This program 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 Library General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see https://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see https://www.gnu.org/licenses/.
*/
#include <config.h>
diff --git a/pluma/pluma-view-activatable.h b/pluma/pluma-view-activatable.h
index 4fc170c8..5a6635b9 100644
--- a/pluma/pluma-view-activatable.h
+++ b/pluma/pluma-view-activatable.h
@@ -4,18 +4,18 @@
*
* Copyright (C) 2010 - Steve Frécinaux
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program 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 Library General Public License for more details.
+ * This program 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 Library General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see https://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see https://www.gnu.org/licenses/.
*/
#ifndef __PLUMA_VIEW_ACTIVATABLE_H__
diff --git a/pluma/pluma-view.c b/pluma/pluma-view.c
index d09599a7..905df5d7 100644
--- a/pluma/pluma-view.c
+++ b/pluma/pluma-view.c
@@ -54,369 +54,369 @@
#define PLUMA_VIEW_SCROLL_MARGIN 0.02
#define PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT (30*1000) /* 30 seconds */
-#define MIN_SEARCH_COMPLETION_KEY_LEN 3
+#define MIN_SEARCH_COMPLETION_KEY_LEN 3
/* Local variables */
static gboolean middle_or_right_down = FALSE;
typedef enum
{
- GOTO_LINE,
- SEARCH
+ GOTO_LINE,
+ SEARCH
} SearchMode;
enum
{
- TARGET_URI_LIST = 100
+ TARGET_URI_LIST = 100
};
struct _PlumaViewPrivate
{
- GSettings *editor_settings;
- GSettings *interface_settings;
+ GSettings *editor_settings;
+ GSettings *interface_settings;
- SearchMode search_mode;
+ SearchMode search_mode;
- GtkTextIter start_search_iter;
+ GtkTextIter start_search_iter;
- /* used to restore the search state if an
- * incremental search is cancelled
- */
- gchar *old_search_text;
- guint old_search_flags;
+ /* used to restore the search state if an
+ * incremental search is cancelled
+ */
+ gchar *old_search_text;
+ guint old_search_flags;
- /* used to remeber the state of the last
- * incremental search (the document search
- * state may be changed by the search dialog)
- */
- guint search_flags;
- gboolean wrap_around;
+ /* used to remeber the state of the last
+ * incremental search (the document search
+ * state may be changed by the search dialog)
+ */
+ guint search_flags;
+ gboolean wrap_around;
- GtkWidget *search_window;
- GtkWidget *search_entry;
+ GtkWidget *search_window;
+ GtkWidget *search_entry;
- guint typeselect_flush_timeout;
- guint search_entry_changed_id;
+ guint typeselect_flush_timeout;
+ guint search_entry_changed_id;
- gboolean disable_popdown;
+ gboolean disable_popdown;
- GtkTextBuffer *current_buffer;
+ GtkTextBuffer *current_buffer;
- GtkCssProvider *css_provider;
- PangoFontDescription *font_desc;
+ GtkCssProvider *css_provider;
+ PangoFontDescription *font_desc;
- PeasExtensionSet *extensions;
+ PeasExtensionSet *extensions;
};
/* The search entry completion is shared among all the views */
GtkListStore *search_completion_model = NULL;
-static void pluma_view_dispose (GObject *object);
+static void pluma_view_dispose (GObject *object);
-static void pluma_view_finalize (GObject *object);
+static void pluma_view_finalize (GObject *object);
-static gint pluma_view_focus_out (GtkWidget *widget,
- GdkEventFocus *event);
+static gint pluma_view_focus_out (GtkWidget *widget,
+ GdkEventFocus *event);
static gboolean pluma_view_scroll_event (GtkWidget *widget,
GdkEventScroll *event);
-static gboolean pluma_view_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp);
+static gboolean pluma_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp);
static void pluma_view_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint timestamp);
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint timestamp);
-static gboolean pluma_view_drag_drop (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp);
+static gboolean pluma_view_drag_drop (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp);
-static void pluma_view_realize (GtkWidget *widget);
+static void pluma_view_realize (GtkWidget *widget);
-static void pluma_view_unrealize (GtkWidget *widget);
+static void pluma_view_unrealize (GtkWidget *widget);
-static gboolean pluma_view_button_press_event (GtkWidget *widget,
- GdkEventButton *event);
+static gboolean pluma_view_button_press_event (GtkWidget *widget,
+ GdkEventButton *event);
-static gboolean pluma_view_button_release_event (GtkWidget *widget,
- GdkEventButton *event);
+static gboolean pluma_view_button_release_event (GtkWidget *widget,
+ GdkEventButton *event);
-static void pluma_view_populate_popup (GtkTextView *text_view,
- GtkWidget *widget);
+static void pluma_view_populate_popup (GtkTextView *text_view,
+ GtkWidget *widget);
-static gboolean start_interactive_search (PlumaView *view);
+static gboolean start_interactive_search (PlumaView *view);
-static gboolean start_interactive_goto_line (PlumaView *view);
+static gboolean start_interactive_goto_line (PlumaView *view);
-static gboolean reset_searched_text (PlumaView *view);
+static gboolean reset_searched_text (PlumaView *view);
-static void hide_search_window (PlumaView *view,
- gboolean cancel);
+static void hide_search_window (PlumaView *view,
+ gboolean cancel);
-static gboolean pluma_view_draw (GtkWidget *widget,
- cairo_t *cr);
+static gboolean pluma_view_draw (GtkWidget *widget,
+ cairo_t *cr);
-static void search_highlight_updated_cb (PlumaDocument *doc,
- GtkTextIter *start,
- GtkTextIter *end,
- PlumaView *view);
+static void search_highlight_updated_cb (PlumaDocument *doc,
+ GtkTextIter *start,
+ GtkTextIter *end,
+ PlumaView *view);
-static void pluma_view_delete_from_cursor (GtkTextView *text_view,
- GtkDeleteType type,
- gint count);
+static void pluma_view_delete_from_cursor (GtkTextView *text_view,
+ GtkDeleteType type,
+ gint count);
G_DEFINE_TYPE_WITH_PRIVATE (PlumaView, pluma_view, GTK_SOURCE_TYPE_VIEW)
/* Signals */
enum
{
- START_INTERACTIVE_SEARCH,
- START_INTERACTIVE_GOTO_LINE,
- RESET_SEARCHED_TEXT,
- DROP_URIS,
- LAST_SIGNAL
+ START_INTERACTIVE_SEARCH,
+ START_INTERACTIVE_GOTO_LINE,
+ RESET_SEARCHED_TEXT,
+ DROP_URIS,
+ LAST_SIGNAL
};
static guint view_signals [LAST_SIGNAL] = { 0 };
typedef enum
{
- PLUMA_SEARCH_ENTRY_NORMAL,
- PLUMA_SEARCH_ENTRY_NOT_FOUND
+ PLUMA_SEARCH_ENTRY_NORMAL,
+ PLUMA_SEARCH_ENTRY_NOT_FOUND
} PlumaSearchEntryState;
static void
document_read_only_notify_handler (PlumaDocument *document,
- GParamSpec *pspec,
- PlumaView *view)
+ GParamSpec *pspec,
+ PlumaView *view)
{
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
- !pluma_document_get_readonly (document));
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
+ !pluma_document_get_readonly (document));
}
static gboolean
pluma_view_scroll_event (GtkWidget *widget,
GdkEventScroll *event)
{
- if (event->direction == GDK_SCROLL_UP)
- {
- event->delta_x = 0;
- event->delta_y = -1;
- }
- else if (event->direction == GDK_SCROLL_DOWN)
- {
- event->delta_x = 0;
- event->delta_y = 1;
- }
- else if (event->direction == GDK_SCROLL_LEFT)
- {
- event->delta_x = -1;
- event->delta_y = 0;
- }
- else if (event->direction == GDK_SCROLL_RIGHT)
- {
- event->delta_x = 1;
- event->delta_y = 0;
- }
-
- event->direction = GDK_SCROLL_SMOOTH;
-
- return FALSE;
+ if (event->direction == GDK_SCROLL_UP)
+ {
+ event->delta_x = 0;
+ event->delta_y = -1;
+ }
+ else if (event->direction == GDK_SCROLL_DOWN)
+ {
+ event->delta_x = 0;
+ event->delta_y = 1;
+ }
+ else if (event->direction == GDK_SCROLL_LEFT)
+ {
+ event->delta_x = -1;
+ event->delta_y = 0;
+ }
+ else if (event->direction == GDK_SCROLL_RIGHT)
+ {
+ event->delta_x = 1;
+ event->delta_y = 0;
+ }
+
+ event->direction = GDK_SCROLL_SMOOTH;
+
+ return FALSE;
}
static void
pluma_view_class_init (PlumaViewClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GtkTextViewClass *text_view_class = GTK_TEXT_VIEW_CLASS (klass);
-
- GtkBindingSet *binding_set;
-
- object_class->dispose = pluma_view_dispose;
- object_class->finalize = pluma_view_finalize;
-
- widget_class->focus_out_event = pluma_view_focus_out;
- widget_class->draw = pluma_view_draw;
- widget_class->scroll_event = pluma_view_scroll_event;
-
- /*
- * Override the gtk_text_view_drag_motion and drag_drop
- * functions to get URIs
- *
- * If the mime type is text/uri-list, then we will accept
- * the potential drop, or request the data (depending on the
- * function).
- *
- * If the drag context has any other mime type, then pass the
- * information onto the GtkTextView's standard handlers.
- * (widget_class->function_name).
- *
- * See bug #89881 for details
- */
- widget_class->drag_motion = pluma_view_drag_motion;
- widget_class->drag_data_received = pluma_view_drag_data_received;
- widget_class->drag_drop = pluma_view_drag_drop;
- widget_class->button_press_event = pluma_view_button_press_event;
- widget_class->button_release_event = pluma_view_button_release_event;
-
- widget_class->realize = pluma_view_realize;
- widget_class->unrealize = pluma_view_unrealize;
-
- text_view_class->populate_popup = pluma_view_populate_popup;
- klass->start_interactive_search = start_interactive_search;
- klass->start_interactive_goto_line = start_interactive_goto_line;
- klass->reset_searched_text = reset_searched_text;
-
- text_view_class->delete_from_cursor = pluma_view_delete_from_cursor;
-
- view_signals[START_INTERACTIVE_SEARCH] =
- g_signal_new ("start_interactive_search",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, start_interactive_search),
- NULL, NULL, NULL,
- G_TYPE_BOOLEAN, 0);
-
- view_signals[START_INTERACTIVE_GOTO_LINE] =
- g_signal_new ("start_interactive_goto_line",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, start_interactive_goto_line),
- NULL, NULL, NULL,
- G_TYPE_BOOLEAN, 0);
-
- view_signals[RESET_SEARCHED_TEXT] =
- g_signal_new ("reset_searched_text",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, reset_searched_text),
- NULL, NULL, NULL,
- G_TYPE_BOOLEAN, 0);
-
- /* A new signal DROP_URIS has been added to allow plugins to intercept
- * the default dnd behaviour of 'text/uri-list'. PlumaView now handles
- * dnd in the default handlers of drag_drop, drag_motion and
- * drag_data_received. The view emits drop_uris from drag_data_received
- * if valid uris have been dropped. Plugins should connect to
- * drag_motion, drag_drop and drag_data_received to change this
- * default behaviour. They should _NOT_ use this signal because this
- * will not prevent pluma from loading the uri
- */
- view_signals[DROP_URIS] =
- g_signal_new ("drop_uris",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, drop_uris),
- NULL, NULL, NULL,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- binding_set = gtk_binding_set_by_class (klass);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_k,
- GDK_CONTROL_MASK,
- "start_interactive_search", 0);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_i,
- GDK_CONTROL_MASK,
- "start_interactive_goto_line", 0);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_k,
- GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "reset_searched_text", 0);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_d,
- GDK_CONTROL_MASK,
- "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_PARAGRAPHS,
- G_TYPE_INT, 1);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_u,
- GDK_CONTROL_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_UPPER);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_l,
- GDK_CONTROL_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_LOWER);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_u,
- GDK_MOD1_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TOGGLE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_l,
- GDK_MOD1_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TITLE);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ GtkTextViewClass *text_view_class = GTK_TEXT_VIEW_CLASS (klass);
+
+ GtkBindingSet *binding_set;
+
+ object_class->dispose = pluma_view_dispose;
+ object_class->finalize = pluma_view_finalize;
+
+ widget_class->focus_out_event = pluma_view_focus_out;
+ widget_class->draw = pluma_view_draw;
+ widget_class->scroll_event = pluma_view_scroll_event;
+
+ /*
+ * Override the gtk_text_view_drag_motion and drag_drop
+ * functions to get URIs
+ *
+ * If the mime type is text/uri-list, then we will accept
+ * the potential drop, or request the data (depending on the
+ * function).
+ *
+ * If the drag context has any other mime type, then pass the
+ * information onto the GtkTextView's standard handlers.
+ * (widget_class->function_name).
+ *
+ * See bug #89881 for details
+ */
+ widget_class->drag_motion = pluma_view_drag_motion;
+ widget_class->drag_data_received = pluma_view_drag_data_received;
+ widget_class->drag_drop = pluma_view_drag_drop;
+ widget_class->button_press_event = pluma_view_button_press_event;
+ widget_class->button_release_event = pluma_view_button_release_event;
+
+ widget_class->realize = pluma_view_realize;
+ widget_class->unrealize = pluma_view_unrealize;
+
+ text_view_class->populate_popup = pluma_view_populate_popup;
+ klass->start_interactive_search = start_interactive_search;
+ klass->start_interactive_goto_line = start_interactive_goto_line;
+ klass->reset_searched_text = reset_searched_text;
+
+ text_view_class->delete_from_cursor = pluma_view_delete_from_cursor;
+
+ view_signals[START_INTERACTIVE_SEARCH] =
+ g_signal_new ("start_interactive_search",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, start_interactive_search),
+ NULL, NULL, NULL,
+ G_TYPE_BOOLEAN, 0);
+
+ view_signals[START_INTERACTIVE_GOTO_LINE] =
+ g_signal_new ("start_interactive_goto_line",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, start_interactive_goto_line),
+ NULL, NULL, NULL,
+ G_TYPE_BOOLEAN, 0);
+
+ view_signals[RESET_SEARCHED_TEXT] =
+ g_signal_new ("reset_searched_text",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, reset_searched_text),
+ NULL, NULL, NULL,
+ G_TYPE_BOOLEAN, 0);
+
+ /* A new signal DROP_URIS has been added to allow plugins to intercept
+ * the default dnd behaviour of 'text/uri-list'. PlumaView now handles
+ * dnd in the default handlers of drag_drop, drag_motion and
+ * drag_data_received. The view emits drop_uris from drag_data_received
+ * if valid uris have been dropped. Plugins should connect to
+ * drag_motion, drag_drop and drag_data_received to change this
+ * default behaviour. They should _NOT_ use this signal because this
+ * will not prevent pluma from loading the uri
+ */
+ view_signals[DROP_URIS] =
+ g_signal_new ("drop_uris",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, drop_uris),
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 1, G_TYPE_STRV);
+
+ binding_set = gtk_binding_set_by_class (klass);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_k,
+ GDK_CONTROL_MASK,
+ "start_interactive_search", 0);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_i,
+ GDK_CONTROL_MASK,
+ "start_interactive_goto_line", 0);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_k,
+ GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ "reset_searched_text", 0);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_d,
+ GDK_CONTROL_MASK,
+ "delete_from_cursor", 2,
+ G_TYPE_ENUM, GTK_DELETE_PARAGRAPHS,
+ G_TYPE_INT, 1);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_u,
+ GDK_CONTROL_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_UPPER);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_l,
+ GDK_CONTROL_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_LOWER);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_u,
+ GDK_MOD1_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TOGGLE);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_l,
+ GDK_MOD1_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TITLE);
}
static void
current_buffer_removed (PlumaView *view)
{
- if (view->priv->current_buffer)
- {
- g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
- document_read_only_notify_handler,
- view);
- g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
- search_highlight_updated_cb,
- view);
-
- g_object_unref (view->priv->current_buffer);
- view->priv->current_buffer = NULL;
- }
+ if (view->priv->current_buffer)
+ {
+ g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
+ document_read_only_notify_handler,
+ view);
+ g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
+ search_highlight_updated_cb,
+ view);
+
+ g_object_unref (view->priv->current_buffer);
+ view->priv->current_buffer = NULL;
+ }
}
static void
on_notify_buffer_cb (PlumaView *view,
- GParamSpec *arg1,
- gpointer userdata)
+ GParamSpec *arg1,
+ gpointer userdata)
{
- GtkTextBuffer *buffer;
+ GtkTextBuffer *buffer;
- current_buffer_removed (view);
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ current_buffer_removed (view);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- if (buffer == NULL || !PLUMA_IS_DOCUMENT (buffer))
- return;
+ if (buffer == NULL || !PLUMA_IS_DOCUMENT (buffer))
+ return;
- view->priv->current_buffer = g_object_ref (buffer);
- g_signal_connect (buffer,
- "notify::read-only",
- G_CALLBACK (document_read_only_notify_handler),
- view);
+ view->priv->current_buffer = g_object_ref (buffer);
+ g_signal_connect (buffer,
+ "notify::read-only",
+ G_CALLBACK (document_read_only_notify_handler),
+ view);
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
- !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- g_signal_connect (buffer,
- "search_highlight_updated",
- G_CALLBACK (search_highlight_updated_cb),
- view);
+ g_signal_connect (buffer,
+ "search_highlight_updated",
+ G_CALLBACK (search_highlight_updated_cb),
+ view);
/* We only activate the extensions when the right buffer is set,
- * because most plugins will expect this behaviour, and we won't
- * change the buffer later anyway. */
- peas_extension_set_call (view->priv->extensions, "activate", view);
+ * because most plugins will expect this behaviour, and we won't
+ * change the buffer later anyway. */
+ peas_extension_set_call (view->priv->extensions, "activate", view);
}
#ifdef GTK_SOURCE_VERSION_3_24
@@ -425,34 +425,35 @@ pluma_set_source_space_drawer_by_level (GtkSourceView *view,
gint level,
GtkSourceSpaceTypeFlags type)
{
- GtkSourceSpaceLocationFlags locs[] = {GTK_SOURCE_SPACE_LOCATION_LEADING,
- GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT,
- GTK_SOURCE_SPACE_LOCATION_TRAILING};
- /* this array links the level to the location */
- GtkSourceSpaceLocationFlags levels[] = {0,
- GTK_SOURCE_SPACE_LOCATION_TRAILING,
- GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT |
- GTK_SOURCE_SPACE_LOCATION_TRAILING |
- GTK_SOURCE_SPACE_LOCATION_LEADING
- };
-
- gint i;
-
- GtkSourceSpaceDrawer *drawer = gtk_source_view_get_space_drawer (view);
-
- if (level >= G_N_ELEMENTS(levels) || level < 0)
- level = 0;
-
- for (i = 0 ; i < G_N_ELEMENTS(locs) ; i++ ) {
- GtkSourceSpaceTypeFlags f;
- f = gtk_source_space_drawer_get_types_for_locations (drawer,
- locs[i]);
- if (locs[i] & levels[level])
- f |= type;
- else
- f &= ~type;
- gtk_source_space_drawer_set_types_for_locations (drawer, locs[i], f);
- }
+ GtkSourceSpaceLocationFlags locs[] = {GTK_SOURCE_SPACE_LOCATION_LEADING,
+ GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT,
+ GTK_SOURCE_SPACE_LOCATION_TRAILING};
+ /* this array links the level to the location */
+ GtkSourceSpaceLocationFlags levels[] =
+ {0,
+ GTK_SOURCE_SPACE_LOCATION_TRAILING,
+ GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT |
+ GTK_SOURCE_SPACE_LOCATION_TRAILING |
+ GTK_SOURCE_SPACE_LOCATION_LEADING
+ };
+
+ gint i;
+
+ GtkSourceSpaceDrawer *drawer = gtk_source_view_get_space_drawer (view);
+
+ if (level >= G_N_ELEMENTS(levels) || level < 0)
+ level = 0;
+
+ for (i = 0 ; i < G_N_ELEMENTS(locs) ; i++ ) {
+ GtkSourceSpaceTypeFlags f;
+ f = gtk_source_space_drawer_get_types_for_locations (drawer,
+ locs[i]);
+ if (locs[i] & levels[level])
+ f |= type;
+ else
+ f &= ~type;
+ gtk_source_space_drawer_set_types_for_locations (drawer, locs[i], f);
+ }
}
#endif
@@ -460,172 +461,165 @@ pluma_set_source_space_drawer_by_level (GtkSourceView *view,
static void
pluma_set_source_space_drawer (GSettings *settings, GtkSourceView *view)
{
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE),
- GTK_SOURCE_SPACE_TYPE_SPACE);
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB),
- GTK_SOURCE_SPACE_TYPE_TAB);
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE) ? 2 : 0,
- GTK_SOURCE_SPACE_TYPE_NEWLINE);
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP),
- GTK_SOURCE_SPACE_TYPE_NBSP);
- gtk_source_space_drawer_set_enable_matrix (gtk_source_view_get_space_drawer (view),
- TRUE);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE),
+ GTK_SOURCE_SPACE_TYPE_SPACE);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB),
+ GTK_SOURCE_SPACE_TYPE_TAB);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE) ? 2 : 0,
+ GTK_SOURCE_SPACE_TYPE_NEWLINE);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP),
+ GTK_SOURCE_SPACE_TYPE_NBSP);
+ gtk_source_space_drawer_set_enable_matrix (gtk_source_view_get_space_drawer (view),
+ TRUE);
}
#else
static void
pluma_set_source_space_drawer (GSettings *settings, GtkSourceView *view)
{
- GtkSourceDrawSpacesFlags flags = 0;
+ GtkSourceDrawSpacesFlags flags = 0;
- if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE) > 0)
- flags |= GTK_SOURCE_DRAW_SPACES_SPACE;
- if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB) > 0)
- flags |= GTK_SOURCE_DRAW_SPACES_TAB;
- if (g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE))
- flags |= GTK_SOURCE_DRAW_SPACES_NEWLINE;
- if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP) > 0)
- flags |= GTK_SOURCE_DRAW_SPACES_NBSP;
+ if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE) > 0)
+ flags |= GTK_SOURCE_DRAW_SPACES_SPACE;
+ if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB) > 0)
+ flags |= GTK_SOURCE_DRAW_SPACES_TAB;
+ if (g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE))
+ flags |= GTK_SOURCE_DRAW_SPACES_NEWLINE;
+ if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP) > 0)
+ flags |= GTK_SOURCE_DRAW_SPACES_NBSP;
- flags |= GTK_SOURCE_DRAW_SPACES_TRAILING |
- GTK_SOURCE_DRAW_SPACES_TEXT |
- GTK_SOURCE_DRAW_SPACES_LEADING;
+ flags |= GTK_SOURCE_DRAW_SPACES_TRAILING |
+ GTK_SOURCE_DRAW_SPACES_TEXT |
+ GTK_SOURCE_DRAW_SPACES_LEADING;
- gtk_source_view_set_draw_spaces (view, flags);
+ gtk_source_view_set_draw_spaces (view, flags);
}
#endif
static void
pluma_view_init (PlumaView *view)
{
- PlumaSettings *settings;
- GtkTargetList *tl;
- gboolean use_default_font;
- gboolean display_line_numbers;
- gboolean auto_indent;
- gboolean insert_spaces;
- gboolean display_right_margin;
- gboolean hl_current_line;
- guint tabs_size;
- guint right_margin_position;
- GtkWrapMode wrap_mode;
- GtkSourceSmartHomeEndType smart_home_end;
- GtkStyleContext *context;
-
- pluma_debug (DEBUG_VIEW);
-
- view->priv = pluma_view_get_instance_private (view);
-
- settings = _pluma_settings_get_singleton ();
- view->priv->editor_settings = g_settings_new (PLUMA_SCHEMA_ID);
- view->priv->interface_settings = g_settings_new ("org.mate.interface");
-
- view->priv->css_provider = gtk_css_provider_new ();
- context = gtk_widget_get_style_context (GTK_WIDGET (view));
- gtk_style_context_add_class (context, "pluma-view");
-
- gtk_style_context_add_provider (context,
- GTK_STYLE_PROVIDER (view->priv->css_provider),
- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-
-
- /* Get setting values */
- use_default_font = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_USE_DEFAULT_FONT);
-
- /*
- * Set tab, fonts, wrap mode, colors, etc. according
- * to preferences
- */
- if (!use_default_font)
- {
- gchar *editor_font;
-
- editor_font = g_settings_get_string (view->priv->editor_settings,
- PLUMA_SETTINGS_EDITOR_FONT);
-
-
- pluma_view_set_font (view, FALSE, editor_font);
-
- g_free (editor_font);
- }
- else
- {
- pluma_view_set_font (view, TRUE, NULL);
- }
-
- display_line_numbers = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS);
- auto_indent = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_AUTO_INDENT);
- tabs_size = g_settings_get_uint (view->priv->editor_settings, PLUMA_SETTINGS_TABS_SIZE);
- insert_spaces = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_INSERT_SPACES);
- display_right_margin = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_DISPLAY_RIGHT_MARGIN);
- right_margin_position = g_settings_get_uint (view->priv->editor_settings,
- PLUMA_SETTINGS_RIGHT_MARGIN_POSITION);
- hl_current_line = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_HIGHLIGHT_CURRENT_LINE);
-
- wrap_mode = pluma_settings_get_wrap_mode (view->priv->editor_settings,
- PLUMA_SETTINGS_WRAP_MODE);
-
- smart_home_end = pluma_settings_get_smart_home_end (settings);
-
- g_object_set (G_OBJECT (view),
- "wrap_mode", wrap_mode,
- "show_line_numbers", display_line_numbers,
- "auto_indent", auto_indent,
- "tab_width", tabs_size,
- "insert_spaces_instead_of_tabs", insert_spaces,
- "show_right_margin", display_right_margin,
- "right_margin_position", right_margin_position,
- "highlight_current_line", hl_current_line,
- "smart_home_end", smart_home_end,
- "indent_on_tab", TRUE,
- NULL);
-
- g_settings_bind (view->priv->editor_settings,
- PLUMA_SETTINGS_BACKGROUND_PATTERN,
- view,
- "background-pattern",
- G_SETTINGS_BIND_DEFAULT);
-
- pluma_set_source_space_drawer (view->priv->editor_settings, GTK_SOURCE_VIEW (view));
-
- view->priv->typeselect_flush_timeout = 0;
- view->priv->wrap_around = TRUE;
-
- /* Drag and drop support */
- tl = gtk_drag_dest_get_target_list (GTK_WIDGET (view));
-
- if (tl != NULL)
- gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
-
- view->priv->extensions =
- peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
- PLUMA_TYPE_VIEW_ACTIVATABLE,
- "view", view,
- NULL);
-
- /* Act on buffer change */
- g_signal_connect (view,
- "notify::buffer",
- G_CALLBACK (on_notify_buffer_cb),
- NULL);
+ PlumaSettings *settings;
+ GtkTargetList *tl;
+ gboolean use_default_font;
+ gboolean display_line_numbers;
+ gboolean auto_indent;
+ gboolean insert_spaces;
+ gboolean display_right_margin;
+ gboolean hl_current_line;
+ guint tabs_size;
+ guint right_margin_position;
+ GtkWrapMode wrap_mode;
+ GtkSourceSmartHomeEndType smart_home_end;
+ GtkStyleContext *context;
+
+ pluma_debug (DEBUG_VIEW);
+
+ view->priv = pluma_view_get_instance_private (view);
+
+ settings = _pluma_settings_get_singleton ();
+ view->priv->editor_settings = g_settings_new (PLUMA_SCHEMA_ID);
+ view->priv->interface_settings = g_settings_new ("org.mate.interface");
+
+ view->priv->css_provider = gtk_css_provider_new ();
+ context = gtk_widget_get_style_context (GTK_WIDGET (view));
+ gtk_style_context_add_class (context, "pluma-view");
+
+ gtk_style_context_add_provider (context,
+ GTK_STYLE_PROVIDER (view->priv->css_provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
+
+ /* Get setting values */
+ use_default_font = g_settings_get_boolean (view->priv->editor_settings,
+ PLUMA_SETTINGS_USE_DEFAULT_FONT);
+
+ /*
+ * Set tab, fonts, wrap mode, colors, etc. according
+ * to preferences
+ */
+ if (!use_default_font)
+ {
+ gchar *editor_font;
+
+ editor_font = g_settings_get_string (view->priv->editor_settings,
+ PLUMA_SETTINGS_EDITOR_FONT);
+
+ pluma_view_set_font (view, FALSE, editor_font);
+
+ g_free (editor_font);
+ }
+ else
+ {
+ pluma_view_set_font (view, TRUE, NULL);
+ }
+
+ display_line_numbers = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS);
+ auto_indent = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_AUTO_INDENT);
+ tabs_size = g_settings_get_uint (view->priv->editor_settings, PLUMA_SETTINGS_TABS_SIZE);
+ insert_spaces = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_INSERT_SPACES);
+ display_right_margin = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_DISPLAY_RIGHT_MARGIN);
+ right_margin_position = g_settings_get_uint (view->priv->editor_settings, PLUMA_SETTINGS_RIGHT_MARGIN_POSITION);
+ hl_current_line = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_HIGHLIGHT_CURRENT_LINE);
+
+ wrap_mode = pluma_settings_get_wrap_mode (view->priv->editor_settings, PLUMA_SETTINGS_WRAP_MODE);
+
+ smart_home_end = pluma_settings_get_smart_home_end (settings);
+
+ g_object_set (G_OBJECT (view),
+ "wrap_mode", wrap_mode,
+ "show_line_numbers", display_line_numbers,
+ "auto_indent", auto_indent,
+ "tab_width", tabs_size,
+ "insert_spaces_instead_of_tabs", insert_spaces,
+ "show_right_margin", display_right_margin,
+ "right_margin_position", right_margin_position,
+ "highlight_current_line", hl_current_line,
+ "smart_home_end", smart_home_end,
+ "indent_on_tab", TRUE,
+ NULL);
+
+ g_settings_bind (view->priv->editor_settings,
+ PLUMA_SETTINGS_BACKGROUND_PATTERN,
+ view,
+ "background-pattern",
+ G_SETTINGS_BIND_DEFAULT);
+
+ pluma_set_source_space_drawer (view->priv->editor_settings, GTK_SOURCE_VIEW (view));
+
+ view->priv->typeselect_flush_timeout = 0;
+ view->priv->wrap_around = TRUE;
+
+ /* Drag and drop support */
+ tl = gtk_drag_dest_get_target_list (GTK_WIDGET (view));
+
+ if (tl != NULL)
+ gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
+
+ view->priv->extensions =
+ peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
+ PLUMA_TYPE_VIEW_ACTIVATABLE,
+ "view", view,
+ NULL);
+
+
+ /* Act on buffer change */
+ g_signal_connect (view,
+ "notify::buffer",
+ G_CALLBACK (on_notify_buffer_cb),
+ NULL);
}
static void
pluma_view_dispose (GObject *object)
{
- PlumaView *view;
+ PlumaView *view;
- view = PLUMA_VIEW (object);
+ view = PLUMA_VIEW (object);
if (view->priv->extensions != NULL)
{
@@ -633,62 +627,62 @@ pluma_view_dispose (GObject *object)
view->priv->extensions = NULL;
}
- if (view->priv->search_window != NULL)
- {
- gtk_widget_destroy (view->priv->search_window);
- view->priv->search_window = NULL;
- view->priv->search_entry = NULL;
+ if (view->priv->search_window != NULL)
+ {
+ gtk_widget_destroy (view->priv->search_window);
+ view->priv->search_window = NULL;
+ view->priv->search_entry = NULL;
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout = 0;
- }
- }
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout = 0;
+ }
+ }
- g_clear_object (&view->priv->editor_settings);
- g_clear_object (&view->priv->interface_settings);
+ g_clear_object (&view->priv->editor_settings);
+ g_clear_object (&view->priv->interface_settings);
- /* Disconnect notify buffer because the destroy of the textview will
- set the buffer to NULL, and we call get_buffer in the notify which
- would reinstate a GtkTextBuffer which we don't want */
- current_buffer_removed (view);
- g_signal_handlers_disconnect_by_func (view, on_notify_buffer_cb, NULL);
+ /* Disconnect notify buffer because the destroy of the textview will
+ set the buffer to NULL, and we call get_buffer in the notify which
+ would reinstate a GtkTextBuffer which we don't want */
+ current_buffer_removed (view);
+ g_signal_handlers_disconnect_by_func (view, on_notify_buffer_cb, NULL);
- g_clear_object (&view->priv->css_provider);
- g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
+ g_clear_object (&view->priv->css_provider);
+ g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
- (* G_OBJECT_CLASS (pluma_view_parent_class)->dispose) (object);
+ (* G_OBJECT_CLASS (pluma_view_parent_class)->dispose) (object);
}
static void
pluma_view_finalize (GObject *object)
{
- PlumaView *view;
+ PlumaView *view;
- view = PLUMA_VIEW (object);
+ view = PLUMA_VIEW (object);
- current_buffer_removed (view);
+ current_buffer_removed (view);
- g_free (view->priv->old_search_text);
+ g_free (view->priv->old_search_text);
- (* G_OBJECT_CLASS (pluma_view_parent_class)->finalize) (object);
+ (* G_OBJECT_CLASS (pluma_view_parent_class)->finalize) (object);
}
static gint
pluma_view_focus_out (GtkWidget *widget, GdkEventFocus *event)
{
- PlumaView *view = PLUMA_VIEW (widget);
+ PlumaView *view = PLUMA_VIEW (widget);
- gtk_widget_queue_draw (widget);
+ gtk_widget_queue_draw (widget);
- /* hide interactive search dialog */
- if (view->priv->search_window != NULL)
- hide_search_window (view, FALSE);
+ /* hide interactive search dialog */
+ if (view->priv->search_window != NULL)
+ hide_search_window (view, FALSE);
- (* GTK_WIDGET_CLASS (pluma_view_parent_class)->focus_out_event) (widget, event);
+ (* GTK_WIDGET_CLASS (pluma_view_parent_class)->focus_out_event) (widget, event);
- return FALSE;
+ return FALSE;
}
/**
@@ -703,101 +697,97 @@ pluma_view_focus_out (GtkWidget *widget, GdkEventFocus *event)
GtkWidget *
pluma_view_new (PlumaDocument *doc)
{
- GtkWidget *view;
+ GtkWidget *view;
- pluma_debug_message (DEBUG_VIEW, "START");
+ pluma_debug_message (DEBUG_VIEW, "START");
- g_return_val_if_fail (PLUMA_IS_DOCUMENT (doc), NULL);
+ g_return_val_if_fail (PLUMA_IS_DOCUMENT (doc), NULL);
- view = GTK_WIDGET (g_object_new (PLUMA_TYPE_VIEW, "buffer", doc, NULL));
+ view = GTK_WIDGET (g_object_new (PLUMA_TYPE_VIEW, "buffer", doc, NULL));
- pluma_debug_message (DEBUG_VIEW, "END: %d", G_OBJECT (view)->ref_count);
+ pluma_debug_message (DEBUG_VIEW, "END: %d", G_OBJECT (view)->ref_count);
- gtk_widget_show_all (view);
+ gtk_widget_show_all (view);
- return view;
+ return view;
}
void
pluma_view_cut_clipboard (PlumaView *view)
{
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
+ GDK_SELECTION_CLIPBOARD);
- /* FIXME: what is default editability of a buffer? */
- gtk_text_buffer_cut_clipboard (buffer,
- clipboard,
- !pluma_document_get_readonly (
- PLUMA_DOCUMENT (buffer)));
+ /* FIXME: what is default editability of a buffer? */
+ gtk_text_buffer_cut_clipboard (buffer,
+ clipboard,
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- PLUMA_VIEW_SCROLL_MARGIN,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ PLUMA_VIEW_SCROLL_MARGIN,
+ FALSE,
+ 0.0,
+ 0.0);
}
void
pluma_view_copy_clipboard (PlumaView *view)
{
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view), GDK_SELECTION_CLIPBOARD);
- gtk_text_buffer_copy_clipboard (buffer, clipboard);
+ gtk_text_buffer_copy_clipboard (buffer, clipboard);
- /* on copy do not scroll, we are already on screen */
+ /* on copy do not scroll, we are already on screen */
}
void
pluma_view_paste_clipboard (PlumaView *view)
{
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view), GDK_SELECTION_CLIPBOARD);
- /* FIXME: what is default editability of a buffer? */
- gtk_text_buffer_paste_clipboard (buffer,
- clipboard,
- NULL,
- !pluma_document_get_readonly (
- PLUMA_DOCUMENT (buffer)));
+ /* FIXME: what is default editability of a buffer? */
+ gtk_text_buffer_paste_clipboard (buffer,
+ clipboard,
+ NULL,
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- PLUMA_VIEW_SCROLL_MARGIN,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ PLUMA_VIEW_SCROLL_MARGIN,
+ FALSE,
+ 0.0,
+ 0.0);
}
/**
@@ -810,103 +800,102 @@ pluma_view_paste_clipboard (PlumaView *view)
void
pluma_view_delete_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
+ GtkTextBuffer *buffer = NULL;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- /* FIXME: what is default editability of a buffer? */
- gtk_text_buffer_delete_selection (buffer,
- TRUE,
- !pluma_document_get_readonly (
- PLUMA_DOCUMENT (buffer)));
+ /* FIXME: what is default editability of a buffer? */
+ gtk_text_buffer_delete_selection (buffer,
+ TRUE,
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- PLUMA_VIEW_SCROLL_MARGIN,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ PLUMA_VIEW_SCROLL_MARGIN,
+ FALSE,
+ 0.0,
+ 0.0);
}
void
pluma_view_upper_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_UPPER, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_UPPER, &start, &end);
+ }
}
void
pluma_view_lower_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_LOWER, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_LOWER, &start, &end);
+ }
}
void
pluma_view_invert_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TOGGLE, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TOGGLE, &start, &end);
+ }
}
void
pluma_view_title_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TITLE, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TITLE, &start, &end);
+ }
}
/**
@@ -918,18 +907,18 @@ pluma_view_title_case_selection (PlumaView *view)
void
pluma_view_select_all (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- gtk_text_buffer_get_bounds (buffer, &start, &end);
- gtk_text_buffer_select_range (buffer, &start, &end);
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
+ gtk_text_buffer_select_range (buffer, &start, &end);
}
/**
@@ -941,38 +930,38 @@ pluma_view_select_all (PlumaView *view)
void
pluma_view_scroll_to_cursor (PlumaView *view)
{
- GtkTextBuffer* buffer = NULL;
+ GtkTextBuffer* buffer = NULL;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- 0.25,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ 0.25,
+ FALSE,
+ 0.0,
+ 0.0);
}
static void
update_css_provider (PlumaView *view)
{
- gchar *str;
- gchar *css;
+ gchar *str;
+ gchar *css;
- g_assert (PLUMA_IS_VIEW (view));
- g_assert (view->priv->font_desc != NULL);
+ g_assert (PLUMA_IS_VIEW (view));
+ g_assert (view->priv->font_desc != NULL);
- str = pluma_pango_font_description_to_css (view->priv->font_desc);
- css = g_strdup_printf ("textview { %s }", str ? str : "");
- gtk_css_provider_load_from_data (view->priv->css_provider, css, -1, NULL);
+ str = pluma_pango_font_description_to_css (view->priv->font_desc);
+ css = g_strdup_printf ("textview { %s }", str ? str : "");
+ gtk_css_provider_load_from_data (view->priv->css_provider, css, -1, NULL);
- g_free (css);
- g_free (str);
+ g_free (css);
+ g_free (str);
}
/* FIXME this is an issue for introspection */
@@ -987,1603 +976,1600 @@ update_css_provider (PlumaView *view)
**/
void
pluma_view_set_font (PlumaView *view,
- gboolean def,
- const gchar *font_name)
+ gboolean def,
+ const gchar *font_name)
{
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
+ g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
- if (def)
- {
- PlumaSettings *settings;
- gchar *font;
+ if (def)
+ {
+ PlumaSettings *settings;
+ gchar *font;
- settings = _pluma_settings_get_singleton ();
- font = pluma_settings_get_system_font (settings);
- view->priv->font_desc = pango_font_description_from_string (font);
- g_free (font);
- }
- else
- {
- g_return_if_fail (font_name != NULL);
+ settings = _pluma_settings_get_singleton ();
+ font = pluma_settings_get_system_font (settings);
+ view->priv->font_desc = pango_font_description_from_string (font);
+ g_free (font);
+ }
+ else
+ {
+ g_return_if_fail (font_name != NULL);
- view->priv->font_desc = pango_font_description_from_string (font_name);
- }
+ view->priv->font_desc = pango_font_description_from_string (font_name);
+ }
- g_return_if_fail (view->priv->font_desc != NULL);
+ g_return_if_fail (view->priv->font_desc != NULL);
- update_css_provider (view);
+ update_css_provider (view);
}
static void
add_search_completion_entry (const gchar *str)
{
- gchar *text;
- gboolean valid;
- GtkTreeModel *model;
- GtkTreeIter iter;
+ gchar *text;
+ gboolean valid;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
- if (str == NULL)
- return;
+ if (str == NULL)
+ return;
- text = pluma_utils_unescape_search_text (str);
+ text = pluma_utils_unescape_search_text (str);
- if (g_utf8_strlen (text, -1) < MIN_SEARCH_COMPLETION_KEY_LEN)
- {
- g_free (text);
- return;
- }
+ if (g_utf8_strlen (text, -1) < MIN_SEARCH_COMPLETION_KEY_LEN)
+ {
+ g_free (text);
+ return;
+ }
- g_return_if_fail (GTK_IS_TREE_MODEL (search_completion_model));
+ g_return_if_fail (GTK_IS_TREE_MODEL (search_completion_model));
- model = GTK_TREE_MODEL (search_completion_model);
+ model = GTK_TREE_MODEL (search_completion_model);
- /* Get the first iter in the list */
- valid = gtk_tree_model_get_iter_first (model, &iter);
+ /* Get the first iter in the list */
+ valid = gtk_tree_model_get_iter_first (model, &iter);
- while (valid)
- {
- /* Walk through the list, reading each row */
- gchar *str_data;
+ while (valid)
+ {
+ /* Walk through the list, reading each row */
+ gchar *str_data;
- gtk_tree_model_get (model,
- &iter,
- 0,
- &str_data,
- -1);
+ gtk_tree_model_get (model,
+ &iter,
+ 0,
+ &str_data,
+ -1);
- if (strcmp (text, str_data) == 0)
- {
- g_free (text);
- g_free (str_data);
- gtk_list_store_move_after (GTK_LIST_STORE (model),
- &iter,
- NULL);
+ if (strcmp (text, str_data) == 0)
+ {
+ g_free (text);
+ g_free (str_data);
+ gtk_list_store_move_after (GTK_LIST_STORE (model),
+ &iter,
+ NULL);
- return;
- }
+ return;
+ }
- g_free (str_data);
+ g_free (str_data);
- valid = gtk_tree_model_iter_next (model, &iter);
- }
+ valid = gtk_tree_model_iter_next (model, &iter);
+ }
- gtk_list_store_prepend (GTK_LIST_STORE (model), &iter);
- gtk_list_store_set (GTK_LIST_STORE (model),
- &iter,
- 0,
- text,
- -1);
+ gtk_list_store_prepend (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model),
+ &iter,
+ 0,
+ text,
+ -1);
- g_free (text);
+ g_free (text);
}
static void
set_entry_state (GtkWidget *entry,
PlumaSearchEntryState state)
{
- GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (entry));
+ GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (entry));
- if (state == PLUMA_SEARCH_ENTRY_NOT_FOUND)
- {
- gtk_style_context_add_class (context, GTK_STYLE_CLASS_ERROR);
- }
- else /* reset */
- {
- gtk_style_context_remove_class (context, GTK_STYLE_CLASS_ERROR);
- }
+ if (state == PLUMA_SEARCH_ENTRY_NOT_FOUND)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_ERROR);
+ }
+ else /* reset */
+ {
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_ERROR);
+ }
}
static gboolean
run_search (PlumaView *view,
const gchar *entry_text,
- gboolean search_backward,
- gboolean wrap_around,
+ gboolean search_backward,
+ gboolean wrap_around,
gboolean typing)
{
- GtkTextIter start_iter;
- GtkTextIter match_start;
- GtkTextIter match_end;
- gboolean found = FALSE;
- PlumaDocument *doc;
-
- g_return_val_if_fail (view->priv->search_mode == SEARCH, FALSE);
-
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
-
- start_iter = view->priv->start_search_iter;
-
- if (*entry_text != '\0')
- {
- if (!search_backward)
- {
- if (!typing)
- {
- /* forward and _NOT_ typing */
- gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &start_iter,
- &match_end);
-
- gtk_text_iter_order (&match_end, &start_iter);
- }
-
- /* run search */
- found = pluma_document_search_forward (doc,
- &start_iter,
- NULL,
- &match_start,
- &match_end);
- }
- else if (!typing)
- {
- /* backward and not typing */
- gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &start_iter,
- &match_end);
-
- /* run search */
- found = pluma_document_search_backward (doc,
- NULL,
- &start_iter,
- &match_start,
- &match_end);
- }
- else
- {
- /* backward (while typing) */
- g_return_val_if_reached (FALSE);
-
- }
-
- if (!found && wrap_around)
- {
- if (!search_backward)
- found = pluma_document_search_forward (doc,
- NULL,
- NULL, /* FIXME: set the end_inter */
- &match_start,
- &match_end);
- else
- found = pluma_document_search_backward (doc,
- NULL, /* FIXME: set the start_inter */
- NULL,
- &match_start,
- &match_end);
- }
- }
- else
- {
- gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &start_iter,
- NULL);
- }
-
- if (found)
- {
- gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc),
- &match_start);
-
- gtk_text_buffer_move_mark_by_name (GTK_TEXT_BUFFER (doc),
- "selection_bound", &match_end);
- }
- else
- {
- if (typing)
- {
- gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc),
- &view->priv->start_search_iter);
- }
- }
-
- if (found || (*entry_text == '\0'))
- {
- pluma_view_scroll_to_cursor (view);
-
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NORMAL);
- }
- else
- {
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NOT_FOUND);
- }
-
- return found;
+ GtkTextIter start_iter;
+ GtkTextIter match_start;
+ GtkTextIter match_end;
+ gboolean found = FALSE;
+ PlumaDocument *doc;
+
+ g_return_val_if_fail (view->priv->search_mode == SEARCH, FALSE);
+
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+
+ start_iter = view->priv->start_search_iter;
+
+ if (*entry_text != '\0')
+ {
+ if (!search_backward)
+ {
+ if (!typing)
+ {
+ /* forward and _NOT_ typing */
+ gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
+ &start_iter,
+ &match_end);
+
+ gtk_text_iter_order (&match_end, &start_iter);
+ }
+
+ /* run search */
+ found = pluma_document_search_forward (doc,
+ &start_iter,
+ NULL,
+ &match_start,
+ &match_end);
+ }
+ else if (!typing)
+ {
+ /* backward and not typing */
+ gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
+ &start_iter,
+ &match_end);
+
+ /* run search */
+ found = pluma_document_search_backward (doc,
+ NULL,
+ &start_iter,
+ &match_start,
+ &match_end);
+ }
+ else
+ {
+ /* backward (while typing) */
+ g_return_val_if_reached (FALSE);
+
+ }
+
+ if (!found && wrap_around)
+ {
+ if (!search_backward)
+ found = pluma_document_search_forward (doc,
+ NULL,
+ NULL, /* FIXME: set the end_inter */
+ &match_start,
+ &match_end);
+ else
+ found = pluma_document_search_backward (doc,
+ NULL, /* FIXME: set the start_inter */
+ NULL,
+ &match_start,
+ &match_end);
+ }
+ }
+ else
+ {
+ gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
+ &start_iter,
+ NULL);
+ }
+
+ if (found)
+ {
+ gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc), &match_start);
+
+ gtk_text_buffer_move_mark_by_name (GTK_TEXT_BUFFER (doc),
+ "selection_bound",
+ &match_end);
+ }
+ else
+ {
+ if (typing)
+ {
+ gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc),
+ &view->priv->start_search_iter);
+ }
+ }
+
+ if (found || (*entry_text == '\0'))
+ {
+ pluma_view_scroll_to_cursor (view);
+
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NORMAL);
+ }
+ else
+ {
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NOT_FOUND);
+ }
+
+ return found;
}
/* Cut and paste from gtkwindow.c */
static void
send_focus_change (GtkWidget *widget,
- gboolean in)
+ gboolean in)
{
- GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
+ GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
- g_object_ref (widget);
+ g_object_ref (widget);
- fevent->focus_change.type = GDK_FOCUS_CHANGE;
- fevent->focus_change.window = g_object_ref (gtk_widget_get_window (widget));
- fevent->focus_change.in = in;
+ fevent->focus_change.type = GDK_FOCUS_CHANGE;
+ fevent->focus_change.window = g_object_ref (gtk_widget_get_window (widget));
+ fevent->focus_change.in = in;
- gtk_widget_event (widget, fevent);
+ gtk_widget_event (widget, fevent);
- g_object_notify (G_OBJECT (widget), "has-focus");
+ g_object_notify (G_OBJECT (widget), "has-focus");
- g_object_unref (widget);
- gdk_event_free (fevent);
+ g_object_unref (widget);
+ gdk_event_free (fevent);
}
static void
hide_search_window (PlumaView *view, gboolean cancel)
{
- if (view->priv->disable_popdown)
- return;
+ if (view->priv->disable_popdown)
+ return;
- if (view->priv->search_entry_changed_id != 0)
- {
- g_signal_handler_disconnect (view->priv->search_entry,
- view->priv->search_entry_changed_id);
- view->priv->search_entry_changed_id = 0;
- }
+ if (view->priv->search_entry_changed_id != 0)
+ {
+ g_signal_handler_disconnect (view->priv->search_entry,
+ view->priv->search_entry_changed_id);
+ view->priv->search_entry_changed_id = 0;
+ }
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout = 0;
- }
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout = 0;
+ }
- /* send focus-in event */
- send_focus_change (GTK_WIDGET (view->priv->search_entry), FALSE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), TRUE);
- gtk_widget_hide (view->priv->search_window);
+ /* send focus-in event */
+ send_focus_change (GTK_WIDGET (view->priv->search_entry), FALSE);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), TRUE);
+ gtk_widget_hide (view->priv->search_window);
- if (cancel)
- {
- GtkTextBuffer *buffer;
+ if (cancel)
+ {
+ GtkTextBuffer *buffer;
- buffer = GTK_TEXT_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
- gtk_text_buffer_place_cursor (buffer, &view->priv->start_search_iter);
+ buffer = GTK_TEXT_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ gtk_text_buffer_place_cursor (buffer, &view->priv->start_search_iter);
- pluma_view_scroll_to_cursor (view);
- }
+ pluma_view_scroll_to_cursor (view);
+ }
- /* make sure a focus event is sent for the edit area */
- send_focus_change (GTK_WIDGET (view), TRUE);
+ /* make sure a focus event is sent for the edit area */
+ send_focus_change (GTK_WIDGET (view), TRUE);
}
static gboolean
search_entry_flush_timeout (PlumaView *view)
{
- view->priv->typeselect_flush_timeout = 0;
- hide_search_window (view, FALSE);
+ view->priv->typeselect_flush_timeout = 0;
+ hide_search_window (view, FALSE);
- return FALSE;
+ return FALSE;
}
static void
update_search_window_position (PlumaView *view)
{
- gint x, y;
- gint view_x, view_y;
- GdkWindow *view_window = gtk_widget_get_window (GTK_WIDGET (view));
+ gint x, y;
+ gint view_x, view_y;
+ GdkWindow *view_window = gtk_widget_get_window (GTK_WIDGET (view));
- gtk_widget_realize (view->priv->search_window);
+ gtk_widget_realize (view->priv->search_window);
- gdk_window_get_origin (view_window, &view_x, &view_y);
+ gdk_window_get_origin (view_window, &view_x, &view_y);
- x = MAX (12, view_x + 12);
- y = MAX (12, view_y - 12);
+ x = MAX (12, view_x + 12);
+ y = MAX (12, view_y - 12);
- gtk_window_move (GTK_WINDOW (view->priv->search_window), x, y);
+ gtk_window_move (GTK_WINDOW (view->priv->search_window), x, y);
}
static gboolean
search_window_delete_event (GtkWidget *widget,
- GdkEventAny *event,
- PlumaView *view)
+ GdkEventAny *event,
+ PlumaView *view)
{
- hide_search_window (view, FALSE);
+ hide_search_window (view, FALSE);
- return TRUE;
+ return TRUE;
}
static gboolean
search_window_button_press_event (GtkWidget *widget,
- GdkEventButton *event,
- PlumaView *view)
+ GdkEventButton *event,
+ PlumaView *view)
{
- hide_search_window (view, FALSE);
+ hide_search_window (view, FALSE);
- gtk_propagate_event (GTK_WIDGET (view), (GdkEvent *)event);
+ gtk_propagate_event (GTK_WIDGET (view), (GdkEvent *)event);
- return FALSE;
+ return FALSE;
}
static void
-extension_added (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaView *view)
+search_again (PlumaView *view,
+ gboolean search_backward)
{
- pluma_view_activatable_activate (PLUMA_VIEW_ACTIVATABLE (exten));
-}
+ const gchar *entry_text;
-static void
-extension_removed (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaView *view)
-{
- pluma_view_activatable_deactivate (PLUMA_VIEW_ACTIVATABLE (exten));
-}
+ g_return_if_fail (view->priv->search_mode == SEARCH);
-static void
-pluma_view_realize (GtkWidget *widget)
-{
- PlumaView *view = PLUMA_VIEW (widget);
+ /* SEARCH mode */
+ /* renew the flush timeout */
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc)search_entry_flush_timeout,
+ view);
+ }
- GTK_WIDGET_CLASS (pluma_view_parent_class)->realize (widget);
+ entry_text = gtk_entry_get_text (GTK_ENTRY (view->priv->search_entry));
- g_signal_connect (view->priv->extensions,
- "extension-added",
- G_CALLBACK (extension_added),
- view);
- g_signal_connect (view->priv->extensions,
- "extension-removed",
- G_CALLBACK (extension_removed),
- view);
+ add_search_completion_entry (entry_text);
- /* We only activate the extensions when the view is realized,
- * because most plugins will expect this behaviour, and we won't
- * change the buffer later anyway. */
- peas_extension_set_foreach (view->priv->extensions,
- (PeasExtensionSetForeachFunc) extension_added,
- view);
+ run_search (view,
+ entry_text,
+ search_backward,
+ view->priv->wrap_around,
+ FALSE);
}
-static void
-pluma_view_unrealize (GtkWidget *widget)
+static gboolean
+search_window_scroll_event (GtkWidget *widget,
+ GdkEventScroll *event,
+ PlumaView *view)
{
- PlumaView *view = PLUMA_VIEW (widget);
+ gboolean retval = FALSE;
- g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_added, view);
- g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_removed, view);
+ if (view->priv->search_mode == GOTO_LINE)
+ return retval;
- /* We need to deactivate the extension on unrealize because it is not
- mandatory that a view has been realized when we dispose it, leading
- to deactivating the plugin without being activated */
- peas_extension_set_foreach (view->priv->extensions,
- (PeasExtensionSetForeachFunc) extension_removed,
- view);
+ /* SEARCH mode */
+ if (event->direction == GDK_SCROLL_UP)
+ {
+ search_again (view, TRUE);
+ retval = TRUE;
+ }
+ else if (event->direction == GDK_SCROLL_DOWN)
+ {
+ search_again (view, FALSE);
+ retval = TRUE;
+ }
- GTK_WIDGET_CLASS (pluma_view_parent_class)->unrealize (widget);
+ return retval;
}
-static void
-search_again (PlumaView *view,
- gboolean search_backward)
+static gboolean
+search_window_key_press_event (GtkWidget *widget,
+ GdkEventKey *event,
+ PlumaView *view)
{
- const gchar *entry_text;
+ gboolean retval = FALSE;
+ guint modifiers;
- g_return_if_fail (view->priv->search_mode == SEARCH);
+ modifiers = gtk_accelerator_get_default_mod_mask ();
- /* SEARCH mode */
- /* renew the flush timeout */
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc)search_entry_flush_timeout,
- view);
- }
+ /* Close window */
+ if (event->keyval == GDK_KEY_Tab)
+ {
+ hide_search_window (view, FALSE);
+ retval = TRUE;
+ }
- entry_text = gtk_entry_get_text (GTK_ENTRY (view->priv->search_entry));
+ /* Close window and cancel the search */
+ if (event->keyval == GDK_KEY_Escape)
+ {
+ if (view->priv->search_mode == SEARCH)
+ {
+ PlumaDocument *doc;
- add_search_completion_entry (entry_text);
+ /* restore document search so that Find Next does the right thing */
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ pluma_document_set_search_text (doc,
+ view->priv->old_search_text,
+ view->priv->old_search_flags);
- run_search (view,
- entry_text,
- search_backward,
- view->priv->wrap_around,
- FALSE);
-}
+ }
-static gboolean
-search_window_scroll_event (GtkWidget *widget,
- GdkEventScroll *event,
- PlumaView *view)
-{
- gboolean retval = FALSE;
+ hide_search_window (view, TRUE);
+ retval = TRUE;
+ }
- if (view->priv->search_mode == GOTO_LINE)
- return retval;
+ if (view->priv->search_mode == GOTO_LINE)
+ return retval;
- /* SEARCH mode */
- if (event->direction == GDK_SCROLL_UP)
- {
- search_again (view, TRUE);
- retval = TRUE;
- }
- else if (event->direction == GDK_SCROLL_DOWN)
- {
- search_again (view, FALSE);
- retval = TRUE;
- }
+ /* SEARCH mode */
- return retval;
-}
+ /* select previous matching iter */
+ if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_KP_Up)
+ {
+ search_again (view, TRUE);
+ retval = TRUE;
+ }
-static gboolean
-search_window_key_press_event (GtkWidget *widget,
- GdkEventKey *event,
- PlumaView *view)
-{
- gboolean retval = FALSE;
- guint modifiers;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
-
- /* Close window */
- if (event->keyval == GDK_KEY_Tab)
- {
- hide_search_window (view, FALSE);
- retval = TRUE;
- }
-
- /* Close window and cancel the search */
- if (event->keyval == GDK_KEY_Escape)
- {
- if (view->priv->search_mode == SEARCH)
- {
- PlumaDocument *doc;
-
- /* restore document search so that Find Next does the right thing */
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
- pluma_document_set_search_text (doc,
- view->priv->old_search_text,
- view->priv->old_search_flags);
-
- }
-
- hide_search_window (view, TRUE);
- retval = TRUE;
- }
-
- if (view->priv->search_mode == GOTO_LINE)
- return retval;
-
- /* SEARCH mode */
-
- /* select previous matching iter */
- if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_KP_Up)
- {
- search_again (view, TRUE);
- retval = TRUE;
- }
-
- if (((event->state & modifiers) == (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) &&
- (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
- {
- search_again (view, TRUE);
- retval = TRUE;
- }
-
- /* select next matching iter */
- if (event->keyval == GDK_KEY_Down || event->keyval == GDK_KEY_KP_Down)
- {
- search_again (view, FALSE);
- retval = TRUE;
- }
-
- if (((event->state & modifiers) == GDK_CONTROL_MASK) &&
- (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
- {
- search_again (view, FALSE);
- retval = TRUE;
- }
-
- return retval;
+ if (((event->state & modifiers) == (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) &&
+ (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
+ {
+ search_again (view, TRUE);
+ retval = TRUE;
+ }
+
+ /* select next matching iter */
+ if (event->keyval == GDK_KEY_Down || event->keyval == GDK_KEY_KP_Down)
+ {
+ search_again (view, FALSE);
+ retval = TRUE;
+ }
+
+ if (((event->state & modifiers) == GDK_CONTROL_MASK) &&
+ (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
+ {
+ search_again (view, FALSE);
+ retval = TRUE;
+ }
+
+ return retval;
}
static void
search_entry_activate (GtkEntry *entry,
- PlumaView *view)
+ PlumaView *view)
{
- hide_search_window (view, FALSE);
+ hide_search_window (view, FALSE);
}
static void
wrap_around_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- view->priv->wrap_around = gtk_check_menu_item_get_active (checkmenuitem);
+ view->priv->wrap_around = gtk_check_menu_item_get_active (checkmenuitem);
}
static void
match_entire_word_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- PLUMA_SEARCH_SET_ENTIRE_WORD (view->priv->search_flags,
- gtk_check_menu_item_get_active (checkmenuitem));
+ PLUMA_SEARCH_SET_ENTIRE_WORD (view->priv->search_flags,
+ gtk_check_menu_item_get_active (checkmenuitem));
}
static void
match_case_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- PLUMA_SEARCH_SET_CASE_SENSITIVE (view->priv->search_flags,
- gtk_check_menu_item_get_active (checkmenuitem));
+ PLUMA_SEARCH_SET_CASE_SENSITIVE (view->priv->search_flags,
+ gtk_check_menu_item_get_active (checkmenuitem));
}
static void
parse_escapes_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- PLUMA_SEARCH_SET_PARSE_ESCAPES (view->priv->search_flags,
- gtk_check_menu_item_get_active (checkmenuitem));
+ PLUMA_SEARCH_SET_PARSE_ESCAPES (view->priv->search_flags,
+ gtk_check_menu_item_get_active (checkmenuitem));
}
static gboolean
real_search_enable_popdown (gpointer data)
{
- PlumaView *view = (PlumaView *)data;
+ PlumaView *view = (PlumaView *)data;
- view->priv->disable_popdown = FALSE;
+ view->priv->disable_popdown = FALSE;
- return FALSE;
+ return FALSE;
}
static void
search_enable_popdown (GtkWidget *widget,
- PlumaView *view)
+ PlumaView *view)
{
- g_timeout_add (200, real_search_enable_popdown, view);
+ g_timeout_add (200, real_search_enable_popdown, view);
- /* renew the flush timeout */
- if (view->priv->typeselect_flush_timeout != 0)
- g_source_remove (view->priv->typeselect_flush_timeout);
+ /* renew the flush timeout */
+ if (view->priv->typeselect_flush_timeout != 0)
+ g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc)search_entry_flush_timeout,
- view);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc)search_entry_flush_timeout,
+ view);
}
static void
search_entry_populate_popup (GtkEntry *entry,
- GtkMenu *menu,
- PlumaView *view)
-{
- GtkWidget *menu_item;
-
- view->priv->disable_popdown = TRUE;
- g_signal_connect (menu, "hide",
- G_CALLBACK (search_enable_popdown), view);
-
- if (view->priv->search_mode == GOTO_LINE)
- return;
-
- /* separator */
- menu_item = gtk_menu_item_new ();
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_widget_show (menu_item);
-
- /* create "Wrap Around" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Wrap Around"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (wrap_around_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- view->priv->wrap_around);
- gtk_widget_show (menu_item);
-
- /* create "Match Entire Word Only" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("Match _Entire Word Only"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (match_entire_word_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- PLUMA_SEARCH_IS_ENTIRE_WORD (view->priv->search_flags));
- gtk_widget_show (menu_item);
-
- /* create "Match Case" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Match Case"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (match_case_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- PLUMA_SEARCH_IS_CASE_SENSITIVE (view->priv->search_flags));
- gtk_widget_show (menu_item);
-
- /* create "Parse escapes" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Parse escape sequences (e.g. \n)"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (parse_escapes_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- PLUMA_SEARCH_IS_PARSE_ESCAPES (view->priv->search_flags));
- gtk_widget_show (menu_item);
+ GtkMenu *menu,
+ PlumaView *view)
+{
+ GtkWidget *menu_item;
+
+ view->priv->disable_popdown = TRUE;
+ g_signal_connect (menu, "hide",
+ G_CALLBACK (search_enable_popdown), view);
+
+ if (view->priv->search_mode == GOTO_LINE)
+ return;
+
+ /* separator */
+ menu_item = gtk_menu_item_new ();
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_widget_show (menu_item);
+
+ /* create "Wrap Around" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Wrap Around"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (wrap_around_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ view->priv->wrap_around);
+ gtk_widget_show (menu_item);
+
+ /* create "Match Entire Word Only" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("Match _Entire Word Only"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (match_entire_word_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ PLUMA_SEARCH_IS_ENTIRE_WORD (view->priv->search_flags));
+ gtk_widget_show (menu_item);
+
+ /* create "Match Case" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Match Case"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (match_case_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ PLUMA_SEARCH_IS_CASE_SENSITIVE (view->priv->search_flags));
+ gtk_widget_show (menu_item);
+
+ /* create "Parse escapes" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Parse escape sequences (e.g. \n)"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (parse_escapes_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ PLUMA_SEARCH_IS_PARSE_ESCAPES (view->priv->search_flags));
+ gtk_widget_show (menu_item);
}
static void
search_entry_insert_text (GtkEditable *editable,
- const gchar *text,
- gint length,
- gint *position,
- PlumaView *view)
+ const gchar *text,
+ gint length,
+ gint *position,
+ PlumaView *view)
{
- if (view->priv->search_mode == GOTO_LINE)
- {
- gunichar c;
- const gchar *p;
- const gchar *end;
- const gchar *next;
+ if (view->priv->search_mode == GOTO_LINE)
+ {
+ gunichar c;
+ const gchar *p;
+ const gchar *end;
+ const gchar *next;
- p = text;
- end = text + length;
+ p = text;
+ end = text + length;
- if (p == end)
- return;
+ if (p == end)
+ return;
- c = g_utf8_get_char (p);
+ c = g_utf8_get_char (p);
- if (((c == '-' || c == '+') && *position == 0) ||
- (c == ':' && *position != 0))
- {
- gchar *s = NULL;
+ if (((c == '-' || c == '+') && *position == 0) ||
+ (c == ':' && *position != 0))
+ {
+ gchar *s = NULL;
- if (c == ':')
- {
- s = gtk_editable_get_chars (editable, 0, -1);
- s = g_utf8_strchr (s, -1, ':');
- }
+ if (c == ':')
+ {
+ s = gtk_editable_get_chars (editable, 0, -1);
+ s = g_utf8_strchr (s, -1, ':');
+ }
- if (s == NULL || s == p)
- {
- next = g_utf8_next_char (p);
- p = next;
- }
+ if (s == NULL || s == p)
+ {
+ next = g_utf8_next_char (p);
+ p = next;
+ }
- g_free (s);
- }
+ g_free (s);
+ }
- while (p != end)
- {
- next = g_utf8_next_char (p);
+ while (p != end)
+ {
+ next = g_utf8_next_char (p);
- c = g_utf8_get_char (p);
+ c = g_utf8_get_char (p);
- if (!g_unichar_isdigit (c)) {
- g_signal_stop_emission_by_name (editable, "insert_text");
- gtk_widget_error_bell (view->priv->search_entry);
- break;
- }
+ if (!g_unichar_isdigit (c)) {
+ g_signal_stop_emission_by_name (editable, "insert_text");
+ gtk_widget_error_bell (view->priv->search_entry);
+ break;
+ }
- p = next;
- }
- }
- else
- {
- /* SEARCH mode */
- static gboolean insert_text = FALSE;
- gchar *escaped_text;
- gint new_len;
+ p = next;
+ }
+ }
+ else
+ {
+ /* SEARCH mode */
+ static gboolean insert_text = FALSE;
+ gchar *escaped_text;
+ gint new_len;
- pluma_debug_message (DEBUG_SEARCH, "Text: %s", text);
+ pluma_debug_message (DEBUG_SEARCH, "Text: %s", text);
- /* To avoid recursive behavior */
- if (insert_text)
- return;
+ /* To avoid recursive behavior */
+ if (insert_text)
+ return;
- escaped_text = pluma_utils_escape_search_text (text);
+ escaped_text = pluma_utils_escape_search_text (text);
- pluma_debug_message (DEBUG_SEARCH, "Escaped Text: %s", escaped_text);
+ pluma_debug_message (DEBUG_SEARCH, "Escaped Text: %s", escaped_text);
- new_len = strlen (escaped_text);
+ new_len = strlen (escaped_text);
- if (new_len == length)
- {
- g_free (escaped_text);
- return;
- }
+ if (new_len == length)
+ {
+ g_free (escaped_text);
+ return;
+ }
- insert_text = TRUE;
+ insert_text = TRUE;
- g_signal_stop_emission_by_name (editable, "insert_text");
+ g_signal_stop_emission_by_name (editable, "insert_text");
- gtk_editable_insert_text (editable, escaped_text, new_len, position);
+ gtk_editable_insert_text (editable, escaped_text, new_len, position);
- insert_text = FALSE;
+ insert_text = FALSE;
- g_free (escaped_text);
- }
+ g_free (escaped_text);
+ }
}
static void
customize_for_search_mode (PlumaView *view)
{
- if (view->priv->search_mode == SEARCH)
- {
- gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
- GTK_ENTRY_ICON_PRIMARY,
- "edit-find");
+ if (view->priv->search_mode == SEARCH)
+ {
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "edit-find");
- gtk_widget_set_tooltip_text (view->priv->search_entry,
- _("String you want to search for"));
- }
- else
- {
- gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
- GTK_ENTRY_ICON_PRIMARY,
- "go-jump");
+ gtk_widget_set_tooltip_text (view->priv->search_entry,
+ _("String you want to search for"));
+ }
+ else
+ {
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "go-jump");
- gtk_widget_set_tooltip_text (view->priv->search_entry,
- _("Line you want to move the cursor to"));
- }
+ gtk_widget_set_tooltip_text (view->priv->search_entry,
+ _("Line you want to move the cursor to"));
+ }
}
static gboolean
completion_func (GtkEntryCompletion *completion,
const char *key,
- GtkTreeIter *iter,
- gpointer data)
+ GtkTreeIter *iter,
+ gpointer data)
{
- gchar *item = NULL;
- gboolean ret = FALSE;
- GtkTreeModel *model;
- PlumaViewPrivate *priv = (PlumaViewPrivate *)data;
- const gchar *real_key;
+ gchar *item = NULL;
+ gboolean ret = FALSE;
+ GtkTreeModel *model;
+ PlumaViewPrivate *priv = (PlumaViewPrivate *)data;
+ const gchar *real_key;
- if (priv->search_mode == GOTO_LINE)
- return FALSE;
+ if (priv->search_mode == GOTO_LINE)
+ return FALSE;
- real_key = gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry (completion)));
+ real_key = gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry (completion)));
- if (g_utf8_strlen (real_key, -1) <= MIN_SEARCH_COMPLETION_KEY_LEN)
- return FALSE;
+ if (g_utf8_strlen (real_key, -1) <= MIN_SEARCH_COMPLETION_KEY_LEN)
+ return FALSE;
- model = gtk_entry_completion_get_model (completion);
- g_return_val_if_fail (gtk_tree_model_get_column_type (model, 0) == G_TYPE_STRING,
- FALSE);
+ model = gtk_entry_completion_get_model (completion);
+ g_return_val_if_fail (gtk_tree_model_get_column_type (model, 0) == G_TYPE_STRING,
+ FALSE);
- gtk_tree_model_get (model,
- iter,
- 0,
- &item,
- -1);
+ gtk_tree_model_get (model,
+ iter,
+ 0,
+ &item,
+ -1);
- if (item == NULL)
- return FALSE;
+ if (item == NULL)
+ return FALSE;
- if (PLUMA_SEARCH_IS_CASE_SENSITIVE (priv->search_flags))
- {
- if (!strncmp (real_key, item, strlen (real_key)))
- ret = TRUE;
- }
- else
- {
- gchar *normalized_string;
- gchar *case_normalized_string;
+ if (PLUMA_SEARCH_IS_CASE_SENSITIVE (priv->search_flags))
+ {
+ if (!strncmp (real_key, item, strlen (real_key)))
+ ret = TRUE;
+ }
+ else
+ {
+ gchar *normalized_string;
+ gchar *case_normalized_string;
- normalized_string = g_utf8_normalize (item, -1, G_NORMALIZE_ALL);
- case_normalized_string = g_utf8_casefold (normalized_string, -1);
+ normalized_string = g_utf8_normalize (item, -1, G_NORMALIZE_ALL);
+ case_normalized_string = g_utf8_casefold (normalized_string, -1);
- if (!strncmp (key, case_normalized_string, strlen (key)))
- ret = TRUE;
+ if (!strncmp (key, case_normalized_string, strlen (key)))
+ ret = TRUE;
- g_free (normalized_string);
- g_free (case_normalized_string);
+ g_free (normalized_string);
+ g_free (case_normalized_string);
- }
+ }
- g_free (item);
+ g_free (item);
- return ret;
+ return ret;
}
static void
ensure_search_window (PlumaView *view)
{
- GtkWidget *frame;
- GtkWidget *vbox;
- GtkWidget *toplevel;
- GtkEntryCompletion *completion;
- GtkWindowGroup *group;
- GtkWindowGroup *search_group;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
- group = gtk_window_get_group (GTK_WINDOW (toplevel));
- if (view->priv->search_window != NULL)
- search_group = gtk_window_get_group (GTK_WINDOW (view->priv->search_window));
-
- if (view->priv->search_window != NULL)
- {
- if (group)
- gtk_window_group_add_window (group,
- GTK_WINDOW (view->priv->search_window));
- else if (search_group)
- gtk_window_group_remove_window (search_group,
- GTK_WINDOW (view->priv->search_window));
-
- customize_for_search_mode (view);
-
- return;
- }
-
- view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP);
-
- if (group)
- gtk_window_group_add_window (group,
- GTK_WINDOW (view->priv->search_window));
-
- gtk_window_set_modal (GTK_WINDOW (view->priv->search_window), TRUE);
-
- g_signal_connect (view->priv->search_window, "delete_event",
- G_CALLBACK (search_window_delete_event),
- view);
- g_signal_connect (view->priv->search_window, "key_press_event",
- G_CALLBACK (search_window_key_press_event),
- view);
- g_signal_connect (view->priv->search_window, "button_press_event",
- G_CALLBACK (search_window_button_press_event),
- view);
- g_signal_connect (view->priv->search_window, "scroll_event",
- G_CALLBACK (search_window_scroll_event),
- view);
-
- frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
- gtk_widget_show (frame);
- gtk_container_add (GTK_CONTAINER (view->priv->search_window), frame);
-
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_widget_show (vbox);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
-
- /* add entry */
- view->priv->search_entry = gtk_entry_new ();
- gtk_widget_show (view->priv->search_entry);
-
- g_signal_connect (view->priv->search_entry, "populate_popup",
- G_CALLBACK (search_entry_populate_popup),
- view);
- g_signal_connect (view->priv->search_entry, "activate",
- G_CALLBACK (search_entry_activate),
- view);
- g_signal_connect (view->priv->search_entry,
- "insert_text",
- G_CALLBACK (search_entry_insert_text),
- view);
-
- gtk_container_add (GTK_CONTAINER (vbox),
- view->priv->search_entry);
-
- if (search_completion_model == NULL)
- {
- /* Create a tree model and use it as the completion model */
- search_completion_model = gtk_list_store_new (1, G_TYPE_STRING);
- }
-
- /* Create the completion object for the search entry */
- completion = gtk_entry_completion_new ();
- gtk_entry_completion_set_model (completion,
- GTK_TREE_MODEL (search_completion_model));
-
- /* Use model column 0 as the text column */
- gtk_entry_completion_set_text_column (completion, 0);
-
- gtk_entry_completion_set_minimum_key_length (completion,
- MIN_SEARCH_COMPLETION_KEY_LEN);
-
- gtk_entry_completion_set_popup_completion (completion, FALSE);
- gtk_entry_completion_set_inline_completion (completion, TRUE);
-
- gtk_entry_completion_set_match_func (completion,
- completion_func,
- view->priv,
- NULL);
-
- /* Assign the completion to the entry */
- gtk_entry_set_completion (GTK_ENTRY (view->priv->search_entry),
- completion);
- g_object_unref (completion);
-
- gtk_widget_realize (view->priv->search_entry);
-
- customize_for_search_mode (view);
+ GtkWidget *frame;
+ GtkWidget *vbox;
+ GtkWidget *toplevel;
+ GtkEntryCompletion *completion;
+ GtkWindowGroup *group;
+ GtkWindowGroup *search_group;
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
+ group = gtk_window_get_group (GTK_WINDOW (toplevel));
+ if (view->priv->search_window != NULL)
+ search_group = gtk_window_get_group (GTK_WINDOW (view->priv->search_window));
+
+ if (view->priv->search_window != NULL)
+ {
+ if (group)
+ gtk_window_group_add_window (group,
+ GTK_WINDOW (view->priv->search_window));
+ else if (search_group)
+ gtk_window_group_remove_window (search_group,
+ GTK_WINDOW (view->priv->search_window));
+
+ customize_for_search_mode (view);
+
+ return;
+ }
+
+ view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP);
+
+ if (group)
+ gtk_window_group_add_window (group,
+ GTK_WINDOW (view->priv->search_window));
+
+ gtk_window_set_modal (GTK_WINDOW (view->priv->search_window), TRUE);
+
+ g_signal_connect (view->priv->search_window, "delete_event",
+ G_CALLBACK (search_window_delete_event),
+ view);
+ g_signal_connect (view->priv->search_window, "key_press_event",
+ G_CALLBACK (search_window_key_press_event),
+ view);
+ g_signal_connect (view->priv->search_window, "button_press_event",
+ G_CALLBACK (search_window_button_press_event),
+ view);
+ g_signal_connect (view->priv->search_window, "scroll_event",
+ G_CALLBACK (search_window_scroll_event),
+ view);
+
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
+ gtk_widget_show (frame);
+ gtk_container_add (GTK_CONTAINER (view->priv->search_window), frame);
+
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_widget_show (vbox);
+ gtk_container_add (GTK_CONTAINER (frame), vbox);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
+
+ /* add entry */
+ view->priv->search_entry = gtk_entry_new ();
+ gtk_widget_show (view->priv->search_entry);
+
+ g_signal_connect (view->priv->search_entry, "populate_popup",
+ G_CALLBACK (search_entry_populate_popup),
+ view);
+ g_signal_connect (view->priv->search_entry, "activate",
+ G_CALLBACK (search_entry_activate),
+ view);
+ g_signal_connect (view->priv->search_entry,
+ "insert_text",
+ G_CALLBACK (search_entry_insert_text),
+ view);
+
+ gtk_container_add (GTK_CONTAINER (vbox),
+ view->priv->search_entry);
+
+ if (search_completion_model == NULL)
+ {
+ /* Create a tree model and use it as the completion model */
+ search_completion_model = gtk_list_store_new (1, G_TYPE_STRING);
+ }
+
+ /* Create the completion object for the search entry */
+ completion = gtk_entry_completion_new ();
+ gtk_entry_completion_set_model (completion,
+ GTK_TREE_MODEL (search_completion_model));
+
+ /* Use model column 0 as the text column */
+ gtk_entry_completion_set_text_column (completion, 0);
+
+ gtk_entry_completion_set_minimum_key_length (completion,
+ MIN_SEARCH_COMPLETION_KEY_LEN);
+
+ gtk_entry_completion_set_popup_completion (completion, FALSE);
+ gtk_entry_completion_set_inline_completion (completion, TRUE);
+
+ gtk_entry_completion_set_match_func (completion,
+ completion_func,
+ view->priv,
+ NULL);
+
+ /* Assign the completion to the entry */
+ gtk_entry_set_completion (GTK_ENTRY (view->priv->search_entry),
+ completion);
+ g_object_unref (completion);
+
+ gtk_widget_realize (view->priv->search_entry);
+
+ customize_for_search_mode (view);
}
static gboolean
get_selected_text (GtkTextBuffer *doc, gchar **selected_text, gint *len)
{
- GtkTextIter start, end;
+ GtkTextIter start, end;
- g_return_val_if_fail (selected_text != NULL, FALSE);
- g_return_val_if_fail (*selected_text == NULL, FALSE);
+ g_return_val_if_fail (selected_text != NULL, FALSE);
+ g_return_val_if_fail (*selected_text == NULL, FALSE);
- if (!gtk_text_buffer_get_selection_bounds (doc, &start, &end))
- {
- if (len != NULL)
- len = 0;
+ if (!gtk_text_buffer_get_selection_bounds (doc, &start, &end))
+ {
+ if (len != NULL)
+ len = 0;
- return FALSE;
- }
+ return FALSE;
+ }
- *selected_text = gtk_text_buffer_get_slice (doc, &start, &end, TRUE);
+ *selected_text = gtk_text_buffer_get_slice (doc, &start, &end, TRUE);
- if (len != NULL)
- *len = g_utf8_strlen (*selected_text, -1);
+ if (len != NULL)
+ *len = g_utf8_strlen (*selected_text, -1);
- return TRUE;
+ return TRUE;
}
static void
init_search_entry (PlumaView *view)
{
- GtkTextBuffer *buffer;
-
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ GtkTextBuffer *buffer;
- if (view->priv->search_mode == GOTO_LINE)
- {
- gint line;
- gchar *line_str;
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- line = gtk_text_iter_get_line (&view->priv->start_search_iter);
+ if (view->priv->search_mode == GOTO_LINE)
+ {
+ gint line;
+ gchar *line_str;
- line_str = g_strdup_printf ("%d", line + 1);
+ line = gtk_text_iter_get_line (&view->priv->start_search_iter);
- gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
- line_str);
+ line_str = g_strdup_printf ("%d", line + 1);
- g_free (line_str);
+ gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
+ line_str);
- return;
- }
- else
- {
- /* SEARCH mode */
- gboolean selection_exists;
- gchar *find_text = NULL;
- gchar *old_find_text;
- guint old_find_flags = 0;
- gint sel_len = 0;
+ g_free (line_str);
- old_find_text = pluma_document_get_search_text (PLUMA_DOCUMENT (buffer),
- &old_find_flags);
- if (old_find_text != NULL)
- {
- g_free (view->priv->old_search_text);
- view->priv->old_search_text = old_find_text;
- add_search_completion_entry (old_find_text);
- }
+ return;
+ }
+ else
+ {
+ /* SEARCH mode */
+ gboolean selection_exists;
+ gchar *find_text = NULL;
+ gchar *old_find_text;
+ guint old_find_flags = 0;
+ gint sel_len = 0;
+
+ old_find_text = pluma_document_get_search_text (PLUMA_DOCUMENT (buffer),
+ &old_find_flags);
+ if (old_find_text != NULL)
+ {
+ g_free (view->priv->old_search_text);
+ view->priv->old_search_text = old_find_text;
+ add_search_completion_entry (old_find_text);
+ }
- if (old_find_flags != 0)
- {
- view->priv->old_search_flags = old_find_flags;
- }
+ if (old_find_flags != 0)
+ {
+ view->priv->old_search_flags = old_find_flags;
+ }
- selection_exists = get_selected_text (buffer,
- &find_text,
- &sel_len);
+ selection_exists = get_selected_text (buffer,
+ &find_text,
+ &sel_len);
- if (selection_exists && (find_text != NULL) && (sel_len <= 160))
- {
- gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
- find_text);
- }
- else
- {
- gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
- "");
- }
+ if (selection_exists && (find_text != NULL) && (sel_len <= 160))
+ {
+ gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry), find_text);
+ }
+ else
+ {
+ gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry), "");
+ }
- g_free (find_text);
- }
+ g_free (find_text);
+ }
}
static void
search_init (GtkWidget *entry,
- PlumaView *view)
-{
- PlumaDocument *doc;
- const gchar *entry_text;
-
- /* renew the flush timeout */
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc)search_entry_flush_timeout,
- view);
- }
-
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
-
- entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
-
- if (view->priv->search_mode == SEARCH)
- {
- gchar *search_text;
- guint search_flags;
-
- search_text = pluma_document_get_search_text (doc, &search_flags);
-
- if ((search_text == NULL) ||
- (strcmp (search_text, entry_text) != 0) ||
- search_flags != view->priv->search_flags)
- {
- pluma_document_set_search_text (doc,
- entry_text,
- view->priv->search_flags);
- }
-
- g_free (search_text);
-
- run_search (view,
- entry_text,
- FALSE,
- view->priv->wrap_around,
- TRUE);
- }
- else
- {
- if (*entry_text != '\0')
- {
- gboolean moved, moved_offset;
- gint line;
- gint offset_line = 0;
- gint line_offset = 0;
- gchar **split_text = NULL;
- const gchar *text;
-
- split_text = g_strsplit (entry_text, ":", -1);
-
- if (g_strv_length (split_text) > 1)
- {
- text = split_text[0];
- }
- else
- {
- text = entry_text;
- }
-
- if (*text == '-')
- {
- gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
-
- if (*(text + 1) != '\0')
- offset_line = MAX (atoi (text + 1), 0);
-
- line = MAX (cur_line - offset_line, 0);
- }
- else if (*entry_text == '+')
- {
- gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
-
- if (*(text + 1) != '\0')
- offset_line = MAX (atoi (text + 1), 0);
-
- line = cur_line + offset_line;
- }
- else
- {
- line = MAX (atoi (text) - 1, 0);
- }
-
- if (split_text[1] != NULL)
- {
- line_offset = atoi (split_text[1]);
- }
-
- g_strfreev (split_text);
-
- moved = pluma_document_goto_line (doc, line);
- moved_offset = pluma_document_goto_line_offset (doc, line,
- line_offset);
-
- pluma_view_scroll_to_cursor (view);
-
- if (!moved || !moved_offset)
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NOT_FOUND);
- else
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NORMAL);
- }
- }
+ PlumaView *view)
+{
+ PlumaDocument *doc;
+ const gchar *entry_text;
+
+ /* renew the flush timeout */
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc)search_entry_flush_timeout,
+ view);
+ }
+
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+
+ entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ if (view->priv->search_mode == SEARCH)
+ {
+ gchar *search_text;
+ guint search_flags;
+
+ search_text = pluma_document_get_search_text (doc, &search_flags);
+
+ if ((search_text == NULL) ||
+ (strcmp (search_text, entry_text) != 0) ||
+ search_flags != view->priv->search_flags)
+ {
+ pluma_document_set_search_text (doc,
+ entry_text,
+ view->priv->search_flags);
+ }
+
+ g_free (search_text);
+
+ run_search (view,
+ entry_text,
+ FALSE,
+ view->priv->wrap_around,
+ TRUE);
+ }
+ else
+ {
+ if (*entry_text != '\0')
+ {
+ gboolean moved, moved_offset;
+ gint line;
+ gint offset_line = 0;
+ gint line_offset = 0;
+ gchar **split_text = NULL;
+ const gchar *text;
+
+ split_text = g_strsplit (entry_text, ":", -1);
+
+ if (g_strv_length (split_text) > 1)
+ {
+ text = split_text[0];
+ }
+ else
+ {
+ text = entry_text;
+ }
+
+ if (*text == '-')
+ {
+ gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
+
+ if (*(text + 1) != '\0')
+ offset_line = MAX (atoi (text + 1), 0);
+
+ line = MAX (cur_line - offset_line, 0);
+ }
+ else if (*entry_text == '+')
+ {
+ gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
+
+ if (*(text + 1) != '\0')
+ offset_line = MAX (atoi (text + 1), 0);
+
+ line = cur_line + offset_line;
+ }
+ else
+ {
+ line = MAX (atoi (text) - 1, 0);
+ }
+
+ if (split_text[1] != NULL)
+ {
+ line_offset = atoi (split_text[1]);
+ }
+
+ g_strfreev (split_text);
+
+ moved = pluma_document_goto_line (doc, line);
+ moved_offset = pluma_document_goto_line_offset (doc, line, line_offset);
+
+ pluma_view_scroll_to_cursor (view);
+
+ if (!moved || !moved_offset)
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NOT_FOUND);
+ else
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NORMAL);
+ }
+ }
}
static gboolean
start_interactive_search_real (PlumaView *view)
{
- GtkTextBuffer *buffer;
+ GtkTextBuffer *buffer;
- if ((view->priv->search_window != NULL) &&
- gtk_widget_get_visible (view->priv->search_window))
- return TRUE;
+ if ((view->priv->search_window != NULL) &&
+ gtk_widget_get_visible (view->priv->search_window))
+ return TRUE;
- if (!gtk_widget_has_focus (GTK_WIDGET (view)))
- return FALSE;
+ if (!gtk_widget_has_focus (GTK_WIDGET (view)))
+ return FALSE;
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- if (view->priv->search_mode == SEARCH)
- gtk_text_buffer_get_selection_bounds (buffer, &view->priv->start_search_iter, NULL);
- else
- gtk_text_buffer_get_iter_at_mark (buffer,
- &view->priv->start_search_iter,
- gtk_text_buffer_get_insert (buffer));
+ if (view->priv->search_mode == SEARCH)
+ gtk_text_buffer_get_selection_bounds (buffer, &view->priv->start_search_iter, NULL);
+ else
+ gtk_text_buffer_get_iter_at_mark (buffer,
+ &view->priv->start_search_iter,
+ gtk_text_buffer_get_insert (buffer));
- ensure_search_window (view);
+ ensure_search_window (view);
- /* done, show it */
- update_search_window_position (view);
- gtk_widget_show (view->priv->search_window);
+ /* done, show it */
+ update_search_window_position (view);
+ gtk_widget_show (view->priv->search_window);
- if (view->priv->search_entry_changed_id == 0)
- {
- view->priv->search_entry_changed_id =
- g_signal_connect (view->priv->search_entry,
- "changed",
- G_CALLBACK (search_init),
- view);
- }
+ if (view->priv->search_entry_changed_id == 0)
+ {
+ view->priv->search_entry_changed_id =
+ g_signal_connect (view->priv->search_entry,
+ "changed",
+ G_CALLBACK (search_init),
+ view);
+ }
- init_search_entry (view);
+ init_search_entry (view);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc) search_entry_flush_timeout,
- view);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc) search_entry_flush_timeout,
+ view);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
- gtk_widget_grab_focus (view->priv->search_entry);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
+ gtk_widget_grab_focus (view->priv->search_entry);
- send_focus_change (view->priv->search_entry, TRUE);
+ send_focus_change (view->priv->search_entry, TRUE);
- return TRUE;
+ return TRUE;
}
static gboolean
reset_searched_text (PlumaView *view)
{
- PlumaDocument *doc;
+ PlumaDocument *doc;
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
- pluma_document_set_search_text (doc, "", PLUMA_SEARCH_DONT_SET_FLAGS);
+ pluma_document_set_search_text (doc, "", PLUMA_SEARCH_DONT_SET_FLAGS);
- return TRUE;
+ return TRUE;
}
static gboolean
start_interactive_search (PlumaView *view)
{
- view->priv->search_mode = SEARCH;
+ view->priv->search_mode = SEARCH;
- return start_interactive_search_real (view);
+ return start_interactive_search_real (view);
}
static gboolean
start_interactive_goto_line (PlumaView *view)
{
- view->priv->search_mode = GOTO_LINE;
+ view->priv->search_mode = GOTO_LINE;
- return start_interactive_search_real (view);
+ return start_interactive_search_real (view);
}
static gboolean
-pluma_view_draw (GtkWidget *widget,
- cairo_t *cr)
+pluma_view_draw (GtkWidget *widget,
+ cairo_t *cr)
{
- GtkTextView *text_view;
- PlumaDocument *doc;
- GdkWindow *window;
-
- text_view = GTK_TEXT_VIEW (widget);
+ GtkTextView *text_view;
+ PlumaDocument *doc;
+ GdkWindow *window;
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view));
- window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT);
- if (gtk_cairo_should_draw_window (cr, window) &&
- pluma_document_get_enable_search_highlighting (doc))
- {
- GdkRectangle visible_rect;
- GtkTextIter iter1, iter2;
+ text_view = GTK_TEXT_VIEW (widget);
- gtk_text_view_get_visible_rect (text_view, &visible_rect);
- gtk_text_view_get_line_at_y (text_view, &iter1,
- visible_rect.y, NULL);
- gtk_text_view_get_line_at_y (text_view, &iter2,
- visible_rect.y
- + visible_rect.height, NULL);
- gtk_text_iter_forward_line (&iter2);
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view));
+ window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT);
- _pluma_document_search_region (doc,
- &iter1,
- &iter2);
- }
+ if (gtk_cairo_should_draw_window (cr, window) &&
+ pluma_document_get_enable_search_highlighting (doc))
+ {
+ GdkRectangle visible_rect;
+ GtkTextIter iter1, iter2;
+
+ gtk_text_view_get_visible_rect (text_view, &visible_rect);
+ gtk_text_view_get_line_at_y (text_view, &iter1,
+ visible_rect.y, NULL);
+ gtk_text_view_get_line_at_y (text_view, &iter2,
+ visible_rect.y
+ + visible_rect.height, NULL);
+ gtk_text_iter_forward_line (&iter2);
+
+ _pluma_document_search_region (doc,
+ &iter1,
+ &iter2);
+ }
- return GTK_WIDGET_CLASS (pluma_view_parent_class)->draw (widget, cr);
+ return GTK_WIDGET_CLASS (pluma_view_parent_class)->draw (widget, cr);
}
static GdkAtom
drag_get_uri_target (GtkWidget *widget,
- GdkDragContext *context)
+ GdkDragContext *context)
{
- GdkAtom target;
- GtkTargetList *tl;
+ GdkAtom target;
+ GtkTargetList *tl;
- tl = gtk_target_list_new (NULL, 0);
- gtk_target_list_add_uri_targets (tl, 0);
+ tl = gtk_target_list_new (NULL, 0);
+ gtk_target_list_add_uri_targets (tl, 0);
- target = gtk_drag_dest_find_target (widget, context, tl);
- gtk_target_list_unref (tl);
+ target = gtk_drag_dest_find_target (widget, context, tl);
+ gtk_target_list_unref (tl);
- return target;
+ return target;
}
static gboolean
pluma_view_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp)
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp)
{
- gboolean result;
+ gboolean result;
- /* Chain up to allow textview to scroll and position dnd mark, note
- * that this needs to be checked if gtksourceview or gtktextview
- * changes drag_motion behaviour */
- result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_motion (widget, context, x, y, timestamp);
+ /* Chain up to allow textview to scroll and position dnd mark, note
+ * that this needs to be checked if gtksourceview or gtktextview
+ * changes drag_motion behaviour */
+ result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_motion (widget, context, x, y, timestamp);
- /* If this is a URL, deal with it here */
- if (drag_get_uri_target (widget, context) != GDK_NONE)
- {
- gdk_drag_status (context,
- gdk_drag_context_get_suggested_action (context),
- timestamp);
- result = TRUE;
- }
+ /* If this is a URL, deal with it here */
+ if (drag_get_uri_target (widget, context) != GDK_NONE)
+ {
+ gdk_drag_status (context,
+ gdk_drag_context_get_suggested_action (context),
+ timestamp);
+ result = TRUE;
+ }
- return result;
+ return result;
}
static void
pluma_view_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint timestamp)
-{
- gchar **uri_list;
-
- /* If this is an URL emit DROP_URIS, otherwise chain up the signal */
- if (info == TARGET_URI_LIST)
- {
- uri_list = pluma_utils_drop_get_uris (selection_data);
-
- if (uri_list != NULL)
- {
- g_signal_emit (widget, view_signals[DROP_URIS], 0, uri_list);
- g_strfreev (uri_list);
-
- gtk_drag_finish (context, TRUE, FALSE, timestamp);
- }
- }
- else
- {
- GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_data_received (widget, context, x, y, selection_data, info, timestamp);
- }
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint timestamp)
+{
+ gchar **uri_list;
+
+ /* If this is an URL emit DROP_URIS, otherwise chain up the signal */
+ if (info == TARGET_URI_LIST)
+ {
+ uri_list = pluma_utils_drop_get_uris (selection_data);
+
+ if (uri_list != NULL)
+ {
+ g_signal_emit (widget, view_signals[DROP_URIS], 0, uri_list);
+ g_strfreev (uri_list);
+
+ gtk_drag_finish (context, TRUE, FALSE, timestamp);
+ }
+ }
+ else
+ {
+ GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_data_received (widget, context, x, y, selection_data, info, timestamp);
+ }
}
static gboolean
pluma_view_drag_drop (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp)
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp)
{
- gboolean result;
- GdkAtom target;
+ gboolean result;
+ GdkAtom target;
- /* If this is a URL, just get the drag data */
- target = drag_get_uri_target (widget, context);
+ /* If this is a URL, just get the drag data */
+ target = drag_get_uri_target (widget, context);
- if (target != GDK_NONE)
- {
- gtk_drag_get_data (widget, context, target, timestamp);
- result = TRUE;
- }
- else
- {
- /* Chain up */
- result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_drop (widget, context, x, y, timestamp);
- }
+ if (target != GDK_NONE)
+ {
+ gtk_drag_get_data (widget, context, target, timestamp);
+ result = TRUE;
+ }
+ else
+ {
+ /* Chain up */
+ result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_drop (widget, context, x, y, timestamp);
+ }
- return result;
+ return result;
}
static GtkWidget *
create_line_numbers_menu (GtkWidget *view)
{
- GtkWidget *menu;
- GtkWidget *item;
+ GtkWidget *menu;
+ GtkWidget *item;
- menu = gtk_menu_new ();
+ menu = gtk_menu_new ();
- item = gtk_check_menu_item_new_with_mnemonic (_("_Display line numbers"));
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
- gtk_source_view_get_show_line_numbers (GTK_SOURCE_VIEW (view)));
+ item = gtk_check_menu_item_new_with_mnemonic (_("_Display line numbers"));
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+ gtk_source_view_get_show_line_numbers (GTK_SOURCE_VIEW (view)));
- g_settings_bind (PLUMA_VIEW (view)->priv->editor_settings,
- PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS,
- item,
- "active",
- G_SETTINGS_BIND_SET);
+ g_settings_bind (PLUMA_VIEW (view)->priv->editor_settings,
+ PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS,
+ item,
+ "active",
+ G_SETTINGS_BIND_SET);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show_all (menu);
+ gtk_widget_show_all (menu);
- return menu;
+ return menu;
}
static void
show_line_numbers_menu (GtkWidget *view,
- GdkEventButton *event)
+ GdkEventButton *event)
+{
+ GtkWidget *menu;
+
+ menu = create_line_numbers_menu (view);
+
+ gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL);
+}
+
+static void
+extension_added (PeasExtensionSet *extensions,
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaView *view)
+{
+ pluma_view_activatable_activate (PLUMA_VIEW_ACTIVATABLE (exten));
+}
+
+static void
+extension_removed (PeasExtensionSet *extensions,
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaView *view)
+{
+ pluma_view_activatable_deactivate (PLUMA_VIEW_ACTIVATABLE (exten));
+}
+
+static void
+pluma_view_realize (GtkWidget *widget)
+{
+ PlumaView *view = PLUMA_VIEW (widget);
+
+ GTK_WIDGET_CLASS (pluma_view_parent_class)->realize (widget);
+
+ g_signal_connect (view->priv->extensions, "extension-added",
+ G_CALLBACK (extension_added),
+ view);
+ g_signal_connect (view->priv->extensions, "extension-removed",
+ G_CALLBACK (extension_removed),
+ view);
+
+ /* We only activate the extensions when the view is realized,
+ * because most plugins will expect this behaviour, and we won't
+ * change the buffer later anyway. */
+ peas_extension_set_foreach (view->priv->extensions,
+ (PeasExtensionSetForeachFunc) extension_added,
+ view);
+}
+
+static void
+pluma_view_unrealize (GtkWidget *widget)
{
- GtkWidget *menu;
+ PlumaView *view = PLUMA_VIEW (widget);
- menu = create_line_numbers_menu (view);
+ g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_added, view);
+ g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_removed, view);
- gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL);
+ /* We need to deactivate the extension on unrealize because it is not
+ mandatory that a view has been realized when we dispose it, leading
+ to deactivating the plugin without being activated */
+ peas_extension_set_foreach (view->priv->extensions,
+ (PeasExtensionSetForeachFunc) extension_removed,
+ view);
+
+ GTK_WIDGET_CLASS (pluma_view_parent_class)->unrealize (widget);
}
+
static gboolean
pluma_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
{
- static gchar *primtxt = "";
+ static gchar *primtxt = "";
- gchar *txt_clip = gtk_clipboard_wait_for_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY));
+ gchar *txt_clip = gtk_clipboard_wait_for_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY));
- if (txt_clip)
- {
- primtxt = g_strdup (txt_clip);
- g_free (txt_clip);
- }
- else
- gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY), primtxt, strlen (primtxt));
+ if (txt_clip)
+ {
+ primtxt = g_strdup (txt_clip);
+ g_free (txt_clip);
+ }
+ else
+ gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY), primtxt, strlen (primtxt));
- if ((event->type == GDK_BUTTON_PRESS) &&
- (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget),
- GTK_TEXT_WINDOW_LEFT)))
- {
- if (event->button == 3)
- show_line_numbers_menu (widget, event);
+ if ((event->type == GDK_BUTTON_PRESS) &&
+ (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget),
+ GTK_TEXT_WINDOW_LEFT)))
+ {
+ if (event->button == 3)
+ show_line_numbers_menu (widget, event);
- return TRUE;
- }
+ return TRUE;
+ }
- if ((event->button == 2) || (event->button == 3))
- {
- if (middle_or_right_down)
- {
- middle_or_right_down = FALSE;
- return TRUE;
- }
- else
- middle_or_right_down = TRUE;
- }
+ if ((event->button == 2) || (event->button == 3))
+ {
+ if (middle_or_right_down)
+ {
+ middle_or_right_down = FALSE;
+ return TRUE;
+ }
+ else
+ middle_or_right_down = TRUE;
+ }
- if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1) &&
- (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_TEXT)))
- return TRUE;
+ if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1) &&
+ (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_TEXT)))
+ return TRUE;
- return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_press_event (widget, event);
+ return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_press_event (widget, event);
}
static gboolean
pluma_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
{
- if (event->button == 2)
- middle_or_right_down = FALSE;
+ if (event->button == 2)
+ middle_or_right_down = FALSE;
- return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_release_event (widget, event);
+ return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_release_event (widget, event);
}
static void
pluma_view_populate_popup (GtkTextView *text_view, GtkWidget *widget)
{
- middle_or_right_down = FALSE;
+ middle_or_right_down = FALSE;
}
static void
search_highlight_updated_cb (PlumaDocument *doc,
- GtkTextIter *start,
- GtkTextIter *end,
- PlumaView *view)
-{
- GdkRectangle visible_rect;
- GdkRectangle updated_rect;
- GdkRectangle redraw_rect;
- gint y;
- gint height;
- GtkTextView *text_view;
-
- text_view = GTK_TEXT_VIEW (view);
-
- g_return_if_fail (pluma_document_get_enable_search_highlighting (
- PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view))));
-
- /* get visible area */
- gtk_text_view_get_visible_rect (text_view, &visible_rect);
-
- /* get updated rectangle */
- gtk_text_view_get_line_yrange (text_view, start, &y, &height);
- updated_rect.y = y;
- gtk_text_view_get_line_yrange (text_view, end, &y, &height);
- updated_rect.height = y + height - updated_rect.y;
- updated_rect.x = visible_rect.x;
- updated_rect.width = visible_rect.width;
-
- /* intersect both rectangles to see whether we need to queue a redraw */
- if (gdk_rectangle_intersect (&updated_rect, &visible_rect, &redraw_rect))
- {
- GdkRectangle widget_rect;
-
- gtk_text_view_buffer_to_window_coords (text_view,
- GTK_TEXT_WINDOW_WIDGET,
- redraw_rect.x,
- redraw_rect.y,
- &widget_rect.x,
- &widget_rect.y);
-
- widget_rect.width = redraw_rect.width;
- widget_rect.height = redraw_rect.height;
-
- gtk_widget_queue_draw_area (GTK_WIDGET (text_view),
- widget_rect.x,
- widget_rect.y,
- widget_rect.width,
- widget_rect.height);
- }
+ GtkTextIter *start,
+ GtkTextIter *end,
+ PlumaView *view)
+{
+ GdkRectangle visible_rect;
+ GdkRectangle updated_rect;
+ GdkRectangle redraw_rect;
+ gint y;
+ gint height;
+ GtkTextView *text_view;
+
+ text_view = GTK_TEXT_VIEW (view);
+
+ g_return_if_fail (pluma_document_get_enable_search_highlighting (
+ PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view))));
+
+ /* get visible area */
+ gtk_text_view_get_visible_rect (text_view, &visible_rect);
+
+ /* get updated rectangle */
+ gtk_text_view_get_line_yrange (text_view, start, &y, &height);
+ updated_rect.y = y;
+ gtk_text_view_get_line_yrange (text_view, end, &y, &height);
+ updated_rect.height = y + height - updated_rect.y;
+ updated_rect.x = visible_rect.x;
+ updated_rect.width = visible_rect.width;
+
+ /* intersect both rectangles to see whether we need to queue a redraw */
+ if (gdk_rectangle_intersect (&updated_rect, &visible_rect, &redraw_rect))
+ {
+ GdkRectangle widget_rect;
+
+ gtk_text_view_buffer_to_window_coords (text_view,
+ GTK_TEXT_WINDOW_WIDGET,
+ redraw_rect.x,
+ redraw_rect.y,
+ &widget_rect.x,
+ &widget_rect.y);
+
+ widget_rect.width = redraw_rect.width;
+ widget_rect.height = redraw_rect.height;
+
+ gtk_widget_queue_draw_area (GTK_WIDGET (text_view),
+ widget_rect.x,
+ widget_rect.y,
+ widget_rect.width,
+ widget_rect.height);
+ }
}
static void
delete_line (GtkTextView *text_view,
- gint count)
-{
- GtkTextIter start;
- GtkTextIter end;
- GtkTextBuffer *buffer;
-
- buffer = gtk_text_view_get_buffer (text_view);
-
- gtk_text_view_reset_im_context (text_view);
-
- /* If there is a selection delete the selected lines and
- * ignore count */
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_text_iter_order (&start, &end);
-
- if (gtk_text_iter_starts_line (&end))
- {
- /* Do no delete the line with the cursor if the cursor
- * is at the beginning of the line */
- count = 0;
- }
- else
- count = 1;
- }
-
- gtk_text_iter_set_line_offset (&start, 0);
-
- if (count > 0)
- {
- gtk_text_iter_forward_lines (&end, count);
-
- if (gtk_text_iter_is_end (&end))
- {
- if (gtk_text_iter_backward_line (&start) && !gtk_text_iter_ends_line (&start))
- gtk_text_iter_forward_to_line_end (&start);
- }
- }
- else if (count < 0)
- {
- if (!gtk_text_iter_ends_line (&end))
- gtk_text_iter_forward_to_line_end (&end);
-
- while (count < 0)
- {
- if (!gtk_text_iter_backward_line (&start))
- break;
-
- ++count;
- }
-
- if (count == 0)
- {
- if (!gtk_text_iter_ends_line (&start))
- gtk_text_iter_forward_to_line_end (&start);
- }
- else
- gtk_text_iter_forward_line (&end);
- }
-
- if (!gtk_text_iter_equal (&start, &end))
- {
- GtkTextIter cur = start;
- gtk_text_iter_set_line_offset (&cur, 0);
-
- gtk_text_buffer_begin_user_action (buffer);
-
- gtk_text_buffer_place_cursor (buffer, &cur);
-
- gtk_text_buffer_delete_interactive (buffer,
- &start,
- &end,
- gtk_text_view_get_editable (text_view));
-
- gtk_text_buffer_end_user_action (buffer);
-
- gtk_text_view_scroll_mark_onscreen (text_view,
- gtk_text_buffer_get_insert (buffer));
- }
- else
- {
- gtk_widget_error_bell (GTK_WIDGET (text_view));
- }
+ gint count)
+{
+ GtkTextIter start;
+ GtkTextIter end;
+ GtkTextBuffer *buffer;
+
+ buffer = gtk_text_view_get_buffer (text_view);
+
+ gtk_text_view_reset_im_context (text_view);
+
+ /* If there is a selection delete the selected lines and
+ * ignore count */
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_text_iter_order (&start, &end);
+
+ if (gtk_text_iter_starts_line (&end))
+ {
+ /* Do no delete the line with the cursor if the cursor
+ * is at the beginning of the line */
+ count = 0;
+ }
+ else
+ count = 1;
+ }
+
+ gtk_text_iter_set_line_offset (&start, 0);
+
+ if (count > 0)
+ {
+ gtk_text_iter_forward_lines (&end, count);
+
+ if (gtk_text_iter_is_end (&end))
+ {
+ if (gtk_text_iter_backward_line (&start) && !gtk_text_iter_ends_line (&start))
+ gtk_text_iter_forward_to_line_end (&start);
+ }
+ }
+ else if (count < 0)
+ {
+ if (!gtk_text_iter_ends_line (&end))
+ gtk_text_iter_forward_to_line_end (&end);
+
+ while (count < 0)
+ {
+ if (!gtk_text_iter_backward_line (&start))
+ break;
+
+ ++count;
+ }
+
+ if (count == 0)
+ {
+ if (!gtk_text_iter_ends_line (&start))
+ gtk_text_iter_forward_to_line_end (&start);
+ }
+ else
+ gtk_text_iter_forward_line (&end);
+ }
+
+ if (!gtk_text_iter_equal (&start, &end))
+ {
+ GtkTextIter cur = start;
+ gtk_text_iter_set_line_offset (&cur, 0);
+
+ gtk_text_buffer_begin_user_action (buffer);
+
+ gtk_text_buffer_place_cursor (buffer, &cur);
+
+ gtk_text_buffer_delete_interactive (buffer,
+ &start,
+ &end,
+ gtk_text_view_get_editable (text_view));
+
+ gtk_text_buffer_end_user_action (buffer);
+
+ gtk_text_view_scroll_mark_onscreen (text_view,
+ gtk_text_buffer_get_insert (buffer));
+ }
+ else
+ {
+ gtk_widget_error_bell (GTK_WIDGET (text_view));
+ }
}
static void
pluma_view_delete_from_cursor (GtkTextView *text_view,
- GtkDeleteType type,
- gint count)
-{
- /* We override the standard handler for delete_from_cursor since
- the GTK_DELETE_PARAGRAPHS case is not implemented as we like (i.e. it
- does not remove the carriage return in the previous line)
- */
- switch (type)
- {
- case GTK_DELETE_PARAGRAPHS:
- delete_line (text_view, count);
- break;
- default:
- GTK_TEXT_VIEW_CLASS (pluma_view_parent_class)->delete_from_cursor(text_view, type, count);
- break;
- }
+ GtkDeleteType type,
+ gint count)
+{
+ /* We override the standard handler for delete_from_cursor since
+ the GTK_DELETE_PARAGRAPHS case is not implemented as we like (i.e. it
+ does not remove the carriage return in the previous line)
+ */
+ switch (type)
+ {
+ case GTK_DELETE_PARAGRAPHS:
+ delete_line (text_view, count);
+ break;
+ default:
+ GTK_TEXT_VIEW_CLASS (pluma_view_parent_class)->delete_from_cursor(text_view, type, count);
+ break;
+ }
}
diff --git a/pluma/pluma-window-activatable.c b/pluma/pluma-window-activatable.c
index 74597b2a..7de75254 100644
--- a/pluma/pluma-window-activatable.c
+++ b/pluma/pluma-window-activatable.c
@@ -4,18 +4,18 @@
*
* Copyright (C) 2010 Steve Frécinaux
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program 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 Library General Public License for more details.
+ * This program 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 Library General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see https://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see https://www.gnu.org/licenses/.
*/
#include <config.h>
diff --git a/pluma/pluma-window-activatable.h b/pluma/pluma-window-activatable.h
index de95b05d..9646507c 100644
--- a/pluma/pluma-window-activatable.h
+++ b/pluma/pluma-window-activatable.h
@@ -4,18 +4,18 @@
*
* Copyright (C) 2010 - Steve Frécinaux
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program 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 Library General Public License for more details.
+ * This program 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 Library General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see https://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see https://www.gnu.org/licenses/.
*/
#ifndef __PLUMA_WINDOW_ACTIVATABLE_H__
diff --git a/pluma/pluma-window.c b/pluma/pluma-window.c
index e797b6e0..e28bf7ec 100644
--- a/pluma/pluma-window.c
+++ b/pluma/pluma-window.c
@@ -67,8 +67,8 @@
#define LANGUAGE_DATA "PlumaWindowLanguageData"
#define FULLSCREEN_ANIMATION_SPEED 4
-#define PLUMA_WINDOW_DEFAULT_WIDTH 650
-#define PLUMA_WINDOW_DEFAULT_HEIGHT 500
+#define PLUMA_WINDOW_DEFAULT_WIDTH 650
+#define PLUMA_WINDOW_DEFAULT_HEIGHT 500
/* Local variables */
static gboolean cansave = TRUE;
@@ -76,214 +76,214 @@ static gboolean cansave = TRUE;
/* Signals */
enum
{
- TAB_ADDED,
- TAB_REMOVED,
- TABS_REORDERED,
- ACTIVE_TAB_CHANGED,
- ACTIVE_TAB_STATE_CHANGED,
- LAST_SIGNAL
+ TAB_ADDED,
+ TAB_REMOVED,
+ TABS_REORDERED,
+ ACTIVE_TAB_CHANGED,
+ ACTIVE_TAB_STATE_CHANGED,
+ LAST_SIGNAL
};
static guint signals[LAST_SIGNAL] = { 0 };
enum
{
- PROP_0,
- PROP_STATE
+ PROP_0,
+ PROP_STATE
};
enum
{
- TARGET_URI_LIST = 100
+ TARGET_URI_LIST = 100
};
G_DEFINE_TYPE_WITH_PRIVATE (PlumaWindow, pluma_window, GTK_TYPE_WINDOW)
-static void recent_manager_changed (GtkRecentManager *manager,
- PlumaWindow *window);
+static void recent_manager_changed (GtkRecentManager *manager,
+ PlumaWindow *window);
static void
pluma_window_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- PlumaWindow *window = PLUMA_WINDOW (object);
+ PlumaWindow *window = PLUMA_WINDOW (object);
- switch (prop_id)
- {
- case PROP_STATE:
- g_value_set_enum (value,
- pluma_window_get_state (window));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ switch (prop_id)
+ {
+ case PROP_STATE:
+ g_value_set_enum (value,
+ pluma_window_get_state (window));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
save_panes_state (PlumaWindow *window)
{
- gint pane_page;
+ gint pane_page;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- g_settings_set (window->priv->editor_settings, PLUMA_SETTINGS_WINDOW_SIZE,
- "(ii)", window->priv->width, window->priv->height);
+ g_settings_set (window->priv->editor_settings, PLUMA_SETTINGS_WINDOW_SIZE,
+ "(ii)", window->priv->width, window->priv->height);
- g_settings_set_int (window->priv->editor_settings, PLUMA_SETTINGS_WINDOW_STATE,
- window->priv->window_state);
+ g_settings_set_int (window->priv->editor_settings, PLUMA_SETTINGS_WINDOW_STATE,
+ window->priv->window_state);
- if (window->priv->side_panel_size > 0)
- g_settings_set_int (window->priv->editor_settings,
- PLUMA_SETTINGS_SIDE_PANEL_SIZE,
- window->priv->side_panel_size);
+ if (window->priv->side_panel_size > 0)
+ g_settings_set_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_SIDE_PANEL_SIZE,
+ window->priv->side_panel_size);
- pane_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (window->priv->side_panel));
- if (pane_page != 0)
- g_settings_set_int (window->priv->editor_settings,
- PLUMA_SETTINGS_SIDE_PANEL_ACTIVE_PAGE,
- pane_page);
+ pane_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (window->priv->side_panel));
+ if (pane_page != 0)
+ g_settings_set_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_SIDE_PANEL_ACTIVE_PAGE,
+ pane_page);
- if (window->priv->bottom_panel_size > 0)
- g_settings_set_int (window->priv->editor_settings,
- PLUMA_SETTINGS_BOTTOM_PANEL_SIZE,
- window->priv->bottom_panel_size);
+ if (window->priv->bottom_panel_size > 0)
+ g_settings_set_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_BOTTOM_PANEL_SIZE,
+ window->priv->bottom_panel_size);
- pane_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (window->priv->bottom_panel));
- if (pane_page != 0)
- g_settings_set_int (window->priv->editor_settings,
- PLUMA_SETTINGS_BOTTOM_PANEL_ACTIVE_PAGE, pane_page);
+ pane_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (window->priv->bottom_panel));
+ if (pane_page != 0)
+ g_settings_set_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_BOTTOM_PANEL_ACTIVE_PAGE, pane_page);
}
static void
pluma_window_dispose (GObject *object)
{
- PlumaWindow *window;
+ PlumaWindow *window;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- window = PLUMA_WINDOW (object);
+ window = PLUMA_WINDOW (object);
- /* Stop tracking removal of panes otherwise we always
- * end up with thinking we had no pane active, since they
- * should all be removed below */
- if (window->priv->bottom_panel_item_removed_handler_id != 0)
- {
- g_signal_handler_disconnect (window->priv->bottom_panel,
- window->priv->bottom_panel_item_removed_handler_id);
- window->priv->bottom_panel_item_removed_handler_id = 0;
- }
+ /* Stop tracking removal of panes otherwise we always
+ * end up with thinking we had no pane active, since they
+ * should all be removed below */
+ if (window->priv->bottom_panel_item_removed_handler_id != 0)
+ {
+ g_signal_handler_disconnect (window->priv->bottom_panel,
+ window->priv->bottom_panel_item_removed_handler_id);
+ window->priv->bottom_panel_item_removed_handler_id = 0;
+ }
- /* First of all, force collection so that plugins
- * really drop some of the references.
- */
- peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
+ /* First of all, force collection so that plugins
+ * really drop some of the references.
+ */
+ peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
- /* save the panes position and make sure to deactivate plugins
- * for this window, but only once */
- if (!window->priv->dispose_has_run)
- {
- save_panes_state (window);
+ /* save the panes position and make sure to deactivate plugins
+ * for this window, but only once */
+ if (!window->priv->dispose_has_run)
+ {
+ save_panes_state (window);
- /* Note that unreffing the extensions will automatically remove
- all extensions which in turn will deactivate the extension */
- g_object_unref (window->priv->extensions);
+ /* Note that unreffing the extensions will automatically remove
+ all extensions which in turn will deactivate the extension */
+ g_object_unref (window->priv->extensions);
- peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
+ peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
- window->priv->dispose_has_run = TRUE;
- }
+ window->priv->dispose_has_run = TRUE;
+ }
- if (window->priv->fullscreen_animation_timeout_id != 0)
- {
- g_source_remove (window->priv->fullscreen_animation_timeout_id);
- window->priv->fullscreen_animation_timeout_id = 0;
- }
+ if (window->priv->fullscreen_animation_timeout_id != 0)
+ {
+ g_source_remove (window->priv->fullscreen_animation_timeout_id);
+ window->priv->fullscreen_animation_timeout_id = 0;
+ }
- if (window->priv->fullscreen_controls != NULL)
- {
- gtk_widget_destroy (window->priv->fullscreen_controls);
+ if (window->priv->fullscreen_controls != NULL)
+ {
+ gtk_widget_destroy (window->priv->fullscreen_controls);
- window->priv->fullscreen_controls = NULL;
- }
+ window->priv->fullscreen_controls = NULL;
+ }
- if (window->priv->recents_handler_id != 0)
- {
- GtkRecentManager *recent_manager;
+ if (window->priv->recents_handler_id != 0)
+ {
+ GtkRecentManager *recent_manager;
- recent_manager = gtk_recent_manager_get_default ();
- g_signal_handler_disconnect (recent_manager,
- window->priv->recents_handler_id);
- window->priv->recents_handler_id = 0;
- }
+ recent_manager = gtk_recent_manager_get_default ();
+ g_signal_handler_disconnect (recent_manager,
+ window->priv->recents_handler_id);
+ window->priv->recents_handler_id = 0;
+ }
- if (window->priv->manager != NULL)
- {
- g_object_unref (window->priv->manager);
- window->priv->manager = NULL;
- }
+ if (window->priv->manager != NULL)
+ {
+ g_object_unref (window->priv->manager);
+ window->priv->manager = NULL;
+ }
- if (window->priv->message_bus != NULL)
- {
- g_object_unref (window->priv->message_bus);
- window->priv->message_bus = NULL;
- }
+ if (window->priv->message_bus != NULL)
+ {
+ g_object_unref (window->priv->message_bus);
+ window->priv->message_bus = NULL;
+ }
- if (window->priv->window_group != NULL)
- {
- g_object_unref (window->priv->window_group);
- window->priv->window_group = NULL;
- }
+ if (window->priv->window_group != NULL)
+ {
+ g_object_unref (window->priv->window_group);
+ window->priv->window_group = NULL;
+ }
- /* We must free the settings after saving the panels */
- g_clear_object (&window->priv->editor_settings);
+ /* We must free the settings after saving the panels */
+ g_clear_object (&window->priv->editor_settings);
- /* Now that there have broken some reference loops,
- * force collection again.
- */
- peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
+ /* Now that there have broken some reference loops,
+ * force collection again.
+ */
+ peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
- G_OBJECT_CLASS (pluma_window_parent_class)->dispose (object);
+ G_OBJECT_CLASS (pluma_window_parent_class)->dispose (object);
}
static void
pluma_window_finalize (GObject *object)
{
- PlumaWindow *window;
+ PlumaWindow *window;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- window = PLUMA_WINDOW (object);
+ window = PLUMA_WINDOW (object);
- if (window->priv->default_location != NULL)
- g_object_unref (window->priv->default_location);
+ if (window->priv->default_location != NULL)
+ g_object_unref (window->priv->default_location);
- G_OBJECT_CLASS (pluma_window_parent_class)->finalize (object);
+ G_OBJECT_CLASS (pluma_window_parent_class)->finalize (object);
}
static gboolean
pluma_window_window_state_event (GtkWidget *widget,
- GdkEventWindowState *event)
+ GdkEventWindowState *event)
{
- PlumaWindow *window = PLUMA_WINDOW (widget);
+ PlumaWindow *window = PLUMA_WINDOW (widget);
- window->priv->window_state = event->new_window_state;
+ window->priv->window_state = event->new_window_state;
- return GTK_WIDGET_CLASS (pluma_window_parent_class)->window_state_event (widget, event);
+ return GTK_WIDGET_CLASS (pluma_window_parent_class)->window_state_event (widget, event);
}
static gboolean
pluma_window_configure_event (GtkWidget *widget,
- GdkEventConfigure *event)
+ GdkEventConfigure *event)
{
- PlumaWindow *window = PLUMA_WINDOW (widget);
+ PlumaWindow *window = PLUMA_WINDOW (widget);
- window->priv->width = event->width;
- window->priv->height = event->height;
+ window->priv->width = event->width;
+ window->priv->height = event->height;
- return GTK_WIDGET_CLASS (pluma_window_parent_class)->configure_event (widget, event);
+ return GTK_WIDGET_CLASS (pluma_window_parent_class)->configure_event (widget, event);
}
/*
@@ -296,214 +296,215 @@ pluma_window_configure_event (GtkWidget *widget,
*/
static gboolean
pluma_window_key_press_event (GtkWidget *widget,
- GdkEventKey *event)
-{
- static gpointer grand_parent_class = NULL;
- GtkWindow *window = GTK_WINDOW (widget);
- gboolean handled = FALSE;
- /* FIXME: avoid making a new gsettings variable here */
- GSettings *settings = g_settings_new (PLUMA_SCHEMA_ID);
-
- if (event->state & GDK_CONTROL_MASK)
- {
- gchar *font;
- gchar *tempsize;
- gint nsize;
-
- font = g_settings_get_string (settings, PLUMA_SETTINGS_EDITOR_FONT);
- tempsize = g_strdup (font);
-
- g_strreverse (tempsize);
- g_strcanon (tempsize, "1234567890", '\0');
- g_strreverse (tempsize);
-
- gchar tempfont [strlen (font)];
- strcpy (tempfont, font);
- tempfont [strlen (font) - strlen (tempsize)] = 0;
-
- sscanf (tempsize, "%d", &nsize);
-
- if ((event->keyval == GDK_KEY_plus) || (event->keyval == GDK_KEY_KP_Add))
- {
- nsize = nsize + 1;
- sprintf (tempsize, "%d", nsize);
-
- if (!g_settings_get_boolean (settings, PLUMA_SETTINGS_USE_DEFAULT_FONT) && (nsize < 73))
- {
- gchar *tmp = g_strconcat (tempfont, tempsize, NULL);
- g_settings_set_string (settings, PLUMA_SETTINGS_EDITOR_FONT, tmp);
- g_free (tmp);
- }
- }
- else if ((event->keyval == GDK_KEY_minus) || (event->keyval == GDK_KEY_KP_Subtract))
- {
- nsize = nsize - 1;
- sprintf (tempsize, "%d", nsize);
-
- if (!g_settings_get_boolean (settings, PLUMA_SETTINGS_USE_DEFAULT_FONT) && (nsize > 5))
- {
- gchar *tmp = g_strconcat (tempfont, tempsize, NULL);
- g_settings_set_string (settings, PLUMA_SETTINGS_EDITOR_FONT, tmp);
- g_free (tmp);
- }
- }
- else if (event->keyval == GDK_KEY_y)
- {
- g_settings_set_boolean (settings, PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS, !g_settings_get_boolean (settings, PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS));
- }
-
- if (g_settings_get_boolean (settings, PLUMA_SETTINGS_CTRL_TABS_SWITCH_TABS))
- {
- GtkNotebook *notebook = GTK_NOTEBOOK (_pluma_window_get_notebook (PLUMA_WINDOW (window)));
-
- int pages = gtk_notebook_get_n_pages (notebook);
- int page_num = gtk_notebook_get_current_page (notebook);
-
- if (event->keyval == GDK_KEY_ISO_Left_Tab)
- {
- if (page_num != 0)
- gtk_notebook_prev_page (notebook);
- else
- gtk_notebook_set_current_page (notebook, (pages - 1));
- handled = TRUE;
- }
-
- if (event->keyval == GDK_KEY_Tab)
- {
- if (page_num != (pages -1))
- gtk_notebook_next_page (notebook);
- else
- gtk_notebook_set_current_page (notebook, 0);
- handled = TRUE;
- }
- }
- g_free (font);
- g_free (tempsize);
- }
-
- g_object_unref (settings);
-
- if (grand_parent_class == NULL)
- grand_parent_class = g_type_class_peek_parent (pluma_window_parent_class);
-
- /* handle focus widget key events */
- if (!handled)
- handled = gtk_window_propagate_key_event (window, event);
-
- /* handle mnemonics and accelerators */
- if (!handled)
- handled = gtk_window_activate_key (window, event);
-
- /* Chain up, invokes binding set */
- if (!handled)
- handled = GTK_WIDGET_CLASS (grand_parent_class)->key_press_event (widget, event);
-
- return handled;
+ GdkEventKey *event)
+{
+ static gpointer grand_parent_class = NULL;
+ GtkWindow *window = GTK_WINDOW (widget);
+ gboolean handled = FALSE;
+ /* FIXME: avoid making a new gsettings variable here */
+ GSettings *settings = g_settings_new (PLUMA_SCHEMA_ID);
+
+ if (event->state & GDK_CONTROL_MASK)
+ {
+ gchar *font;
+ gchar *tempsize;
+ gint nsize;
+
+ font = g_settings_get_string (settings, PLUMA_SETTINGS_EDITOR_FONT);
+ tempsize = g_strdup (font);
+
+ g_strreverse (tempsize);
+ g_strcanon (tempsize, "1234567890", '\0');
+ g_strreverse (tempsize);
+
+ gchar tempfont [strlen (font)];
+ strcpy (tempfont, font);
+ tempfont [strlen (font) - strlen (tempsize)] = 0;
+
+ sscanf (tempsize, "%d", &nsize);
+
+ if ((event->keyval == GDK_KEY_plus) || (event->keyval == GDK_KEY_KP_Add))
+ {
+ nsize = nsize + 1;
+ sprintf (tempsize, "%d", nsize);
+
+ if (!g_settings_get_boolean (settings, PLUMA_SETTINGS_USE_DEFAULT_FONT) && (nsize < 73))
+ {
+ gchar *tmp = g_strconcat (tempfont, tempsize, NULL);
+ g_settings_set_string (settings, PLUMA_SETTINGS_EDITOR_FONT, tmp);
+ g_free (tmp);
+ }
+ }
+ else if ((event->keyval == GDK_KEY_minus) || (event->keyval == GDK_KEY_KP_Subtract))
+ {
+ nsize = nsize - 1;
+ sprintf (tempsize, "%d", nsize);
+
+ if (!g_settings_get_boolean (settings, PLUMA_SETTINGS_USE_DEFAULT_FONT) && (nsize > 5))
+ {
+ gchar *tmp = g_strconcat (tempfont, tempsize, NULL);
+ g_settings_set_string (settings, PLUMA_SETTINGS_EDITOR_FONT, tmp);
+ g_free (tmp);
+ }
+ }
+ else if (event->keyval == GDK_KEY_y)
+ {
+ g_settings_set_boolean (settings, PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS,
+ !g_settings_get_boolean (settings, PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS));
+ }
+
+ if (g_settings_get_boolean (settings, PLUMA_SETTINGS_CTRL_TABS_SWITCH_TABS))
+ {
+ GtkNotebook *notebook = GTK_NOTEBOOK (_pluma_window_get_notebook (PLUMA_WINDOW (window)));
+
+ int pages = gtk_notebook_get_n_pages (notebook);
+ int page_num = gtk_notebook_get_current_page (notebook);
+
+ if (event->keyval == GDK_KEY_ISO_Left_Tab)
+ {
+ if (page_num != 0)
+ gtk_notebook_prev_page (notebook);
+ else
+ gtk_notebook_set_current_page (notebook, (pages - 1));
+ handled = TRUE;
+ }
+
+ if (event->keyval == GDK_KEY_Tab)
+ {
+ if (page_num != (pages -1))
+ gtk_notebook_next_page (notebook);
+ else
+ gtk_notebook_set_current_page (notebook, 0);
+ handled = TRUE;
+ }
+ }
+ g_free (font);
+ g_free (tempsize);
+ }
+
+ g_object_unref (settings);
+
+ if (grand_parent_class == NULL)
+ grand_parent_class = g_type_class_peek_parent (pluma_window_parent_class);
+
+ /* handle focus widget key events */
+ if (!handled)
+ handled = gtk_window_propagate_key_event (window, event);
+
+ /* handle mnemonics and accelerators */
+ if (!handled)
+ handled = gtk_window_activate_key (window, event);
+
+ /* Chain up, invokes binding set */
+ if (!handled)
+ handled = GTK_WIDGET_CLASS (grand_parent_class)->key_press_event (widget, event);
+
+ return handled;
}
static void
pluma_window_tab_removed (PlumaWindow *window,
- PlumaTab *tab)
+ PlumaTab *tab)
{
- peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
+ peas_engine_garbage_collect (PEAS_ENGINE (pluma_plugins_engine_get_default ()));
}
static void
pluma_window_class_init (PlumaWindowClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- klass->tab_removed = pluma_window_tab_removed;
-
- object_class->dispose = pluma_window_dispose;
- object_class->finalize = pluma_window_finalize;
- object_class->get_property = pluma_window_get_property;
-
- widget_class->window_state_event = pluma_window_window_state_event;
- widget_class->configure_event = pluma_window_configure_event;
- widget_class->key_press_event = pluma_window_key_press_event;
-
- signals[TAB_ADDED] =
- g_signal_new ("tab_added",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (PlumaWindowClass, tab_added),
- NULL, NULL, NULL,
- G_TYPE_NONE,
- 1,
- PLUMA_TYPE_TAB);
- signals[TAB_REMOVED] =
- g_signal_new ("tab_removed",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (PlumaWindowClass, tab_removed),
- NULL, NULL, NULL,
- G_TYPE_NONE,
- 1,
- PLUMA_TYPE_TAB);
- signals[TABS_REORDERED] =
- g_signal_new ("tabs_reordered",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (PlumaWindowClass, tabs_reordered),
- NULL, NULL, NULL,
- G_TYPE_NONE,
- 0);
- signals[ACTIVE_TAB_CHANGED] =
- g_signal_new ("active_tab_changed",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (PlumaWindowClass, active_tab_changed),
- NULL, NULL, NULL,
- G_TYPE_NONE,
- 1,
- PLUMA_TYPE_TAB);
- signals[ACTIVE_TAB_STATE_CHANGED] =
- g_signal_new ("active_tab_state_changed",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (PlumaWindowClass, active_tab_state_changed),
- NULL, NULL, NULL,
- G_TYPE_NONE,
- 0);
-
- g_object_class_install_property (object_class,
- PROP_STATE,
- g_param_spec_flags ("state",
- "State",
- "The window's state",
- PLUMA_TYPE_WINDOW_STATE,
- PLUMA_WINDOW_STATE_NORMAL,
- G_PARAM_READABLE |
- G_PARAM_STATIC_STRINGS));
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ klass->tab_removed = pluma_window_tab_removed;
+
+ object_class->dispose = pluma_window_dispose;
+ object_class->finalize = pluma_window_finalize;
+ object_class->get_property = pluma_window_get_property;
+
+ widget_class->window_state_event = pluma_window_window_state_event;
+ widget_class->configure_event = pluma_window_configure_event;
+ widget_class->key_press_event = pluma_window_key_press_event;
+
+ signals[TAB_ADDED] =
+ g_signal_new ("tab_added",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (PlumaWindowClass, tab_added),
+ NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 1,
+ PLUMA_TYPE_TAB);
+ signals[TAB_REMOVED] =
+ g_signal_new ("tab_removed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (PlumaWindowClass, tab_removed),
+ NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 1,
+ PLUMA_TYPE_TAB);
+ signals[TABS_REORDERED] =
+ g_signal_new ("tabs_reordered",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (PlumaWindowClass, tabs_reordered),
+ NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 0);
+ signals[ACTIVE_TAB_CHANGED] =
+ g_signal_new ("active_tab_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (PlumaWindowClass, active_tab_changed),
+ NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 1,
+ PLUMA_TYPE_TAB);
+ signals[ACTIVE_TAB_STATE_CHANGED] =
+ g_signal_new ("active_tab_state_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (PlumaWindowClass, active_tab_state_changed),
+ NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 0);
+
+ g_object_class_install_property (object_class,
+ PROP_STATE,
+ g_param_spec_flags ("state",
+ "State",
+ "The window's state",
+ PLUMA_TYPE_WINDOW_STATE,
+ PLUMA_WINDOW_STATE_NORMAL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
}
static void
menu_item_select_cb (GtkMenuItem *proxy,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- GtkAction *action;
- char *message;
+ GtkAction *action;
+ char *message;
- action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (proxy));
- g_return_if_fail (action != NULL);
+ action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (proxy));
+ g_return_if_fail (action != NULL);
- g_object_get (G_OBJECT (action), "tooltip", &message, NULL);
- if (message)
- {
- gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar),
- window->priv->tip_message_cid, message);
- g_free (message);
- }
+ g_object_get (G_OBJECT (action), "tooltip", &message, NULL);
+ if (message)
+ {
+ gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar),
+ window->priv->tip_message_cid, message);
+ g_free (message);
+ }
}
static void
menu_item_deselect_cb (GtkMenuItem *proxy,
PlumaWindow *window)
{
- gtk_statusbar_pop (GTK_STATUSBAR (window->priv->statusbar),
- window->priv->tip_message_cid);
+ gtk_statusbar_pop (GTK_STATUSBAR (window->priv->statusbar),
+ window->priv->tip_message_cid);
}
static void
@@ -512,765 +513,757 @@ connect_proxy_cb (GtkUIManager *manager,
GtkWidget *proxy,
PlumaWindow *window)
{
- if (GTK_IS_MENU_ITEM (proxy))
- {
- g_signal_connect (proxy, "select",
- G_CALLBACK (menu_item_select_cb), window);
- g_signal_connect (proxy, "deselect",
- G_CALLBACK (menu_item_deselect_cb), window);
- }
+ if (GTK_IS_MENU_ITEM (proxy))
+ {
+ g_signal_connect (proxy, "select",
+ G_CALLBACK (menu_item_select_cb), window);
+ g_signal_connect (proxy, "deselect",
+ G_CALLBACK (menu_item_deselect_cb), window);
+ }
}
static void
disconnect_proxy_cb (GtkUIManager *manager,
- GtkAction *action,
- GtkWidget *proxy,
- PlumaWindow *window)
+ GtkAction *action,
+ GtkWidget *proxy,
+ PlumaWindow *window)
{
- if (GTK_IS_MENU_ITEM (proxy))
- {
- g_signal_handlers_disconnect_by_func
- (proxy, G_CALLBACK (menu_item_select_cb), window);
- g_signal_handlers_disconnect_by_func
- (proxy, G_CALLBACK (menu_item_deselect_cb), window);
- }
+ if (GTK_IS_MENU_ITEM (proxy))
+ {
+ g_signal_handlers_disconnect_by_func
+ (proxy, G_CALLBACK (menu_item_select_cb), window);
+ g_signal_handlers_disconnect_by_func
+ (proxy, G_CALLBACK (menu_item_deselect_cb), window);
+ }
}
static void
apply_toolbar_style (PlumaWindow *window,
- GtkWidget *toolbar)
-{
- switch (window->priv->toolbar_style)
- {
- case PLUMA_TOOLBAR_SYSTEM:
- pluma_debug_message (DEBUG_WINDOW, "PLUMA: SYSTEM");
- gtk_toolbar_unset_style (
- GTK_TOOLBAR (toolbar));
- break;
-
- case PLUMA_TOOLBAR_ICONS:
- pluma_debug_message (DEBUG_WINDOW, "PLUMA: ICONS");
- gtk_toolbar_set_style (
- GTK_TOOLBAR (toolbar),
- GTK_TOOLBAR_ICONS);
- break;
-
- case PLUMA_TOOLBAR_ICONS_AND_TEXT:
- pluma_debug_message (DEBUG_WINDOW, "PLUMA: ICONS_AND_TEXT");
- gtk_toolbar_set_style (
- GTK_TOOLBAR (toolbar),
- GTK_TOOLBAR_BOTH);
- break;
-
- case PLUMA_TOOLBAR_ICONS_BOTH_HORIZ:
- pluma_debug_message (DEBUG_WINDOW, "PLUMA: ICONS_BOTH_HORIZ");
- gtk_toolbar_set_style (
- GTK_TOOLBAR (toolbar),
- GTK_TOOLBAR_BOTH_HORIZ);
- break;
- }
+ GtkWidget *toolbar)
+{
+ switch (window->priv->toolbar_style)
+ {
+ case PLUMA_TOOLBAR_SYSTEM:
+ pluma_debug_message (DEBUG_WINDOW, "PLUMA: SYSTEM");
+ gtk_toolbar_unset_style (GTK_TOOLBAR (toolbar));
+ break;
+
+ case PLUMA_TOOLBAR_ICONS:
+ pluma_debug_message (DEBUG_WINDOW, "PLUMA: ICONS");
+ gtk_toolbar_set_style (GTK_TOOLBAR (toolbar),
+ GTK_TOOLBAR_ICONS);
+ break;
+
+ case PLUMA_TOOLBAR_ICONS_AND_TEXT:
+ pluma_debug_message (DEBUG_WINDOW, "PLUMA: ICONS_AND_TEXT");
+ gtk_toolbar_set_style (GTK_TOOLBAR (toolbar),
+ GTK_TOOLBAR_BOTH);
+ break;
+
+ case PLUMA_TOOLBAR_ICONS_BOTH_HORIZ:
+ pluma_debug_message (DEBUG_WINDOW, "PLUMA: ICONS_BOTH_HORIZ");
+ gtk_toolbar_set_style (GTK_TOOLBAR (toolbar),
+ GTK_TOOLBAR_BOTH_HORIZ);
+ break;
+ }
}
/* Returns TRUE if toolbar is visible */
static gboolean
set_toolbar_style (PlumaWindow *window,
- PlumaWindow *origin)
+ PlumaWindow *origin)
{
- gboolean visible;
- PlumaToolbarSetting style;
- GtkAction *action;
+ gboolean visible;
+ PlumaToolbarSetting style;
+ GtkAction *action;
- if (origin == NULL)
- visible = g_settings_get_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_TOOLBAR_VISIBLE);
- else
- visible = gtk_widget_get_visible (origin->priv->toolbar);
+ if (origin == NULL)
+ visible = g_settings_get_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_TOOLBAR_VISIBLE);
+ else
+ visible = gtk_widget_get_visible (origin->priv->toolbar);
- /* Set visibility */
- if (visible)
- gtk_widget_show (window->priv->toolbar);
- else
- gtk_widget_hide (window->priv->toolbar);
+ /* Set visibility */
+ if (visible)
+ gtk_widget_show (window->priv->toolbar);
+ else
+ gtk_widget_hide (window->priv->toolbar);
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "ViewToolbar");
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "ViewToolbar");
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
- /* Set style */
- if (origin == NULL)
- {
- PlumaSettings *settings;
+ /* Set style */
+ if (origin == NULL)
+ {
+ PlumaSettings *settings;
- settings = _pluma_settings_get_singleton ();
- style = pluma_settings_get_toolbar_style (settings);
- }
- else
- {
- style = origin->priv->toolbar_style;
- }
+ settings = _pluma_settings_get_singleton ();
+ style = pluma_settings_get_toolbar_style (settings);
+ }
+ else
+ {
+ style = origin->priv->toolbar_style;
+ }
- window->priv->toolbar_style = style;
+ window->priv->toolbar_style = style;
- apply_toolbar_style (window, window->priv->toolbar);
+ apply_toolbar_style (window, window->priv->toolbar);
- return visible;
+ return visible;
}
static void
update_next_prev_doc_sensitivity (PlumaWindow *window,
- PlumaTab *tab)
+ PlumaTab *tab)
{
- gint tab_number;
- GtkNotebook *notebook;
- GtkAction *action;
+ gint tab_number;
+ GtkNotebook *notebook;
+ GtkAction *action;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- notebook = GTK_NOTEBOOK (_pluma_window_get_notebook (window));
+ notebook = GTK_NOTEBOOK (_pluma_window_get_notebook (window));
- tab_number = gtk_notebook_page_num (notebook, GTK_WIDGET (tab));
- g_return_if_fail (tab_number >= 0);
+ tab_number = gtk_notebook_page_num (notebook, GTK_WIDGET (tab));
+ g_return_if_fail (tab_number >= 0);
- action = gtk_action_group_get_action (window->priv->action_group,
- "DocumentsPreviousDocument");
- gtk_action_set_sensitive (action, tab_number != 0);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "DocumentsPreviousDocument");
+ gtk_action_set_sensitive (action, tab_number != 0);
- action = gtk_action_group_get_action (window->priv->action_group,
- "DocumentsNextDocument");
- gtk_action_set_sensitive (action,
- tab_number < gtk_notebook_get_n_pages (notebook) - 1);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "DocumentsNextDocument");
+ gtk_action_set_sensitive (action,
+ tab_number < gtk_notebook_get_n_pages (notebook) - 1);
}
static void
update_next_prev_doc_sensitivity_per_window (PlumaWindow *window)
{
- PlumaTab *tab;
- GtkAction *action;
+ PlumaTab *tab;
+ GtkAction *action;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- tab = pluma_window_get_active_tab (window);
- if (tab != NULL)
- {
- update_next_prev_doc_sensitivity (window, tab);
+ tab = pluma_window_get_active_tab (window);
+ if (tab != NULL)
+ {
+ update_next_prev_doc_sensitivity (window, tab);
- return;
- }
+ return;
+ }
- action = gtk_action_group_get_action (window->priv->action_group,
- "DocumentsPreviousDocument");
- gtk_action_set_sensitive (action, FALSE);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "DocumentsPreviousDocument");
+ gtk_action_set_sensitive (action, FALSE);
- action = gtk_action_group_get_action (window->priv->action_group,
- "DocumentsNextDocument");
- gtk_action_set_sensitive (action, FALSE);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "DocumentsNextDocument");
+ gtk_action_set_sensitive (action, FALSE);
}
static void
received_clipboard_contents (GtkClipboard *clipboard,
- GtkSelectionData *selection_data,
- PlumaWindow *window)
+ GtkSelectionData *selection_data,
+ PlumaWindow *window)
{
- gboolean sens;
- GtkAction *action;
+ gboolean sens;
+ GtkAction *action;
- /* getting clipboard contents is async, so we need to
- * get the current tab and its state */
+ /* getting clipboard contents is async, so we need to
+ * get the current tab and its state */
- if (window->priv->active_tab != NULL)
- {
- PlumaTabState state;
- gboolean state_normal;
+ if (window->priv->active_tab != NULL)
+ {
+ PlumaTabState state;
+ gboolean state_normal;
- state = pluma_tab_get_state (window->priv->active_tab);
- state_normal = (state == PLUMA_TAB_STATE_NORMAL);
+ state = pluma_tab_get_state (window->priv->active_tab);
+ state_normal = (state == PLUMA_TAB_STATE_NORMAL);
- sens = state_normal &&
- gtk_selection_data_targets_include_text (selection_data);
- }
- else
- {
- sens = FALSE;
- }
+ sens = state_normal &&
+ gtk_selection_data_targets_include_text (selection_data);
+ }
+ else
+ {
+ sens = FALSE;
+ }
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditPaste");
+ action = gtk_action_group_get_action (window->priv->action_group, "EditPaste");
- gtk_action_set_sensitive (action, sens);
+ gtk_action_set_sensitive (action, sens);
- g_object_unref (window);
+ g_object_unref (window);
}
static void
set_paste_sensitivity_according_to_clipboard (PlumaWindow *window,
- GtkClipboard *clipboard)
+ GtkClipboard *clipboard)
{
- GdkDisplay *display;
+ GdkDisplay *display;
- display = gtk_clipboard_get_display (clipboard);
+ display = gtk_clipboard_get_display (clipboard);
- if (gdk_display_supports_selection_notification (display))
- {
- gtk_clipboard_request_contents (clipboard,
- gdk_atom_intern_static_string ("TARGETS"),
- (GtkClipboardReceivedFunc) received_clipboard_contents,
- g_object_ref (window));
- }
- else
- {
- GtkAction *action;
+ if (gdk_display_supports_selection_notification (display))
+ {
+ gtk_clipboard_request_contents (clipboard,
+ gdk_atom_intern_static_string ("TARGETS"),
+ (GtkClipboardReceivedFunc) received_clipboard_contents,
+ g_object_ref (window));
+ }
+ else
+ {
+ GtkAction *action;
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditPaste");
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditPaste");
- /* XFIXES extension not availbale, make
- * Paste always sensitive */
- gtk_action_set_sensitive (action, TRUE);
- }
+ /* XFIXES extension not availbale, make
+ * Paste always sensitive */
+ gtk_action_set_sensitive (action, TRUE);
+ }
}
static void
set_sensitivity_according_to_tab (PlumaWindow *window,
- PlumaTab *tab)
-{
- PlumaDocument *doc;
- PlumaView *view;
- GtkAction *action;
- gboolean b;
- gboolean state_normal;
- gboolean editable;
- PlumaTabState state;
- GtkClipboard *clipboard;
- PlumaLockdownMask lockdown;
- gboolean enable_syntax_highlighting;
-
- g_return_if_fail (PLUMA_TAB (tab));
-
- pluma_debug (DEBUG_WINDOW);
-
- enable_syntax_highlighting = g_settings_get_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_SYNTAX_HIGHLIGHTING);
-
- lockdown = pluma_app_get_lockdown (pluma_app_get_default ());
-
- state = pluma_tab_get_state (tab);
- state_normal = (state == PLUMA_TAB_STATE_NORMAL);
-
- view = pluma_tab_get_view (tab);
- editable = gtk_text_view_get_editable (GTK_TEXT_VIEW (view));
-
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
-
- clipboard = gtk_widget_get_clipboard (GTK_WIDGET (window),
- GDK_SELECTION_CLIPBOARD);
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileSave");
-
- if (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) {
- gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (doc), TRUE);
- }
-
- gtk_action_set_sensitive (action,
- (state_normal ||
- (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) ||
- (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &&
- !pluma_document_get_readonly (doc) &&
- !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK) &&
- (cansave) &&
- (editable));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileSaveAs");
- gtk_action_set_sensitive (action,
- (state_normal ||
- (state == PLUMA_TAB_STATE_SAVING_ERROR) ||
- (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) ||
- (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &&
- !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileRevert");
- gtk_action_set_sensitive (action,
- (state_normal ||
- (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION)) &&
- !pluma_document_is_untitled (doc));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FilePrintPreview");
- gtk_action_set_sensitive (action,
- state_normal &&
- !(lockdown & PLUMA_LOCKDOWN_PRINTING));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FilePrint");
- gtk_action_set_sensitive (action,
- (state_normal ||
- (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &&
- !(lockdown & PLUMA_LOCKDOWN_PRINTING));
-
- action = gtk_action_group_get_action (window->priv->close_action_group,
- "FileClose");
-
- gtk_action_set_sensitive (action,
- (state != PLUMA_TAB_STATE_CLOSING) &&
- (state != PLUMA_TAB_STATE_SAVING) &&
- (state != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW) &&
- (state != PLUMA_TAB_STATE_PRINTING) &&
- (state != PLUMA_TAB_STATE_PRINT_PREVIEWING) &&
- (state != PLUMA_TAB_STATE_SAVING_ERROR));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditUndo");
- gtk_action_set_sensitive (action,
- state_normal &&
- gtk_source_buffer_can_undo (GTK_SOURCE_BUFFER (doc)));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditRedo");
- gtk_action_set_sensitive (action,
- state_normal &&
- gtk_source_buffer_can_redo (GTK_SOURCE_BUFFER (doc)));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditCut");
- gtk_action_set_sensitive (action,
- state_normal &&
- editable &&
- gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditCopy");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &&
- gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditPaste");
- if (state_normal && editable)
- {
- set_paste_sensitivity_according_to_clipboard (window,
- clipboard);
- }
- else
- {
- gtk_action_set_sensitive (action, FALSE);
- }
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditDelete");
- gtk_action_set_sensitive (action,
- state_normal &&
- editable &&
- gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchFind");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchIncrementalSearch");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchReplace");
- gtk_action_set_sensitive (action,
- state_normal &&
- editable);
-
- b = pluma_document_get_can_search_again (doc);
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchFindNext");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) && b);
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchFindPrevious");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) && b);
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchClearHighlight");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) && b);
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchGoToLine");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "ViewHighlightMode");
- gtk_action_set_sensitive (action,
- (state != PLUMA_TAB_STATE_CLOSING) &&
- enable_syntax_highlighting);
-
- update_next_prev_doc_sensitivity (window, tab);
-
- peas_extension_set_call (window->priv->extensions, "update_state");
+ PlumaTab *tab)
+{
+ PlumaDocument *doc;
+ PlumaView *view;
+ GtkAction *action;
+ gboolean b;
+ gboolean state_normal;
+ gboolean editable;
+ PlumaTabState state;
+ GtkClipboard *clipboard;
+ PlumaLockdownMask lockdown;
+ gboolean enable_syntax_highlighting;
+
+ g_return_if_fail (PLUMA_TAB (tab));
+
+ pluma_debug (DEBUG_WINDOW);
+
+ enable_syntax_highlighting = g_settings_get_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_SYNTAX_HIGHLIGHTING);
+
+ lockdown = pluma_app_get_lockdown (pluma_app_get_default ());
+
+ state = pluma_tab_get_state (tab);
+ state_normal = (state == PLUMA_TAB_STATE_NORMAL);
+
+ view = pluma_tab_get_view (tab);
+ editable = gtk_text_view_get_editable (GTK_TEXT_VIEW (view));
+
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (window),
+ GDK_SELECTION_CLIPBOARD);
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FileSave");
+
+ if (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) {
+ gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (doc), TRUE);
+ }
+
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) ||
+ (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &&
+ !pluma_document_get_readonly (doc) &&
+ !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK) &&
+ (cansave) &&
+ (editable));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FileSaveAs");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ (state == PLUMA_TAB_STATE_SAVING_ERROR) ||
+ (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) ||
+ (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &&
+ !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FileRevert");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ (state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION)) &&
+ !pluma_document_is_untitled (doc));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FilePrintPreview");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ !(lockdown & PLUMA_LOCKDOWN_PRINTING));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FilePrint");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ (state == PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW)) &&
+ !(lockdown & PLUMA_LOCKDOWN_PRINTING));
+
+ action = gtk_action_group_get_action (window->priv->close_action_group,
+ "FileClose");
+
+ gtk_action_set_sensitive (action,
+ (state != PLUMA_TAB_STATE_CLOSING) &&
+ (state != PLUMA_TAB_STATE_SAVING) &&
+ (state != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW) &&
+ (state != PLUMA_TAB_STATE_PRINTING) &&
+ (state != PLUMA_TAB_STATE_PRINT_PREVIEWING) &&
+ (state != PLUMA_TAB_STATE_SAVING_ERROR));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditUndo");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ gtk_source_buffer_can_undo (GTK_SOURCE_BUFFER (doc)));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditRedo");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ gtk_source_buffer_can_redo (GTK_SOURCE_BUFFER (doc)));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditCut");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ editable &&
+ gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditCopy");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &&
+ gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditPaste");
+ if (state_normal && editable)
+ {
+ set_paste_sensitivity_according_to_clipboard (window, clipboard);
+ }
+ else
+ {
+ gtk_action_set_sensitive (action, FALSE);
+ }
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditDelete");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ editable &&
+ gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchFind");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchIncrementalSearch");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchReplace");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ editable);
+
+ b = pluma_document_get_can_search_again (doc);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchFindNext");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) && b);
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchFindPrevious");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) && b);
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchClearHighlight");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) && b);
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchGoToLine");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "ViewHighlightMode");
+ gtk_action_set_sensitive (action,
+ (state != PLUMA_TAB_STATE_CLOSING) &&
+ enable_syntax_highlighting);
+
+ update_next_prev_doc_sensitivity (window, tab);
+
+ peas_extension_set_call (window->priv->extensions, "update_state");
}
static void
language_toggled (GtkToggleAction *action,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- PlumaDocument *doc;
- GtkSourceLanguage *lang;
- const gchar *lang_id;
+ PlumaDocument *doc;
+ GtkSourceLanguage *lang;
+ const gchar *lang_id;
- if (gtk_toggle_action_get_active (action) == FALSE)
- return;
+ if (gtk_toggle_action_get_active (action) == FALSE)
+ return;
- doc = pluma_window_get_active_document (window);
- if (doc == NULL)
- return;
+ doc = pluma_window_get_active_document (window);
+ if (doc == NULL)
+ return;
- lang_id = gtk_action_get_name (GTK_ACTION (action));
+ lang_id = gtk_action_get_name (GTK_ACTION (action));
- if (strcmp (lang_id, LANGUAGE_NONE) == 0)
- {
- /* Normal (no highlighting) */
- lang = NULL;
- }
- else
- {
- lang = gtk_source_language_manager_get_language (
- pluma_get_language_manager (),
- lang_id);
- if (lang == NULL)
- {
- g_warning ("Could not get language %s\n", lang_id);
- }
- }
+ if (strcmp (lang_id, LANGUAGE_NONE) == 0)
+ {
+ /* Normal (no highlighting) */
+ lang = NULL;
+ }
+ else
+ {
+ lang = gtk_source_language_manager_get_language (pluma_get_language_manager (),
+ lang_id);
+ if (lang == NULL)
+ {
+ g_warning ("Could not get language %s\n", lang_id);
+ }
+ }
- pluma_document_set_language (doc, lang);
+ pluma_document_set_language (doc, lang);
}
static gchar *
escape_section_name (const gchar *name)
{
- gchar *ret;
+ gchar *ret;
- ret = g_markup_escape_text (name, -1);
+ ret = g_markup_escape_text (name, -1);
- /* Replace '/' with '-' to avoid problems in xml paths */
- g_strdelimit (ret, "/", '-');
+ /* Replace '/' with '-' to avoid problems in xml paths */
+ g_strdelimit (ret, "/", '-');
- return ret;
+ return ret;
}
static void
create_language_menu_item (GtkSourceLanguage *lang,
- gint index,
- guint ui_id,
- PlumaWindow *window)
-{
- GtkAction *section_action;
- GtkRadioAction *action;
- GtkAction *normal_action;
- GSList *group;
- const gchar *section;
- gchar *escaped_section;
- const gchar *lang_id;
- const gchar *lang_name;
- gchar *escaped_lang_name;
- gchar *tip;
- gchar *path;
-
- section = gtk_source_language_get_section (lang);
- escaped_section = escape_section_name (section);
-
- /* check if the section submenu exists or create it */
- section_action = gtk_action_group_get_action (window->priv->languages_action_group,
- escaped_section);
-
- if (section_action == NULL)
- {
- gchar *section_name;
-
- section_name = pluma_utils_escape_underscores (section, -1);
-
- section_action = gtk_action_new (escaped_section,
- section_name,
- NULL,
- NULL);
-
- g_free (section_name);
-
- gtk_action_group_add_action (window->priv->languages_action_group,
- section_action);
- g_object_unref (section_action);
-
- gtk_ui_manager_add_ui (window->priv->manager,
- ui_id,
- "/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder",
- escaped_section,
- escaped_section,
- GTK_UI_MANAGER_MENU,
- FALSE);
- }
-
- /* now add the language item to the section */
- lang_name = gtk_source_language_get_name (lang);
- lang_id = gtk_source_language_get_id (lang);
-
- escaped_lang_name = pluma_utils_escape_underscores (lang_name, -1);
-
- tip = g_strdup_printf (_("Use %s highlight mode"), lang_name);
- path = g_strdup_printf ("/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder/%s",
- escaped_section);
-
- action = gtk_radio_action_new (lang_id,
- escaped_lang_name,
- tip,
- NULL,
- index);
-
- g_free (escaped_lang_name);
-
- /* Action is added with a NULL accel to make the accel overridable */
- gtk_action_group_add_action_with_accel (window->priv->languages_action_group,
- GTK_ACTION (action),
- NULL);
- g_object_unref (action);
-
- /* add the action to the same radio group of the "Normal" action */
- normal_action = gtk_action_group_get_action (window->priv->languages_action_group,
- LANGUAGE_NONE);
- group = gtk_radio_action_get_group (GTK_RADIO_ACTION (normal_action));
- gtk_radio_action_set_group (action, group);
-
- g_signal_connect (action,
- "activate",
- G_CALLBACK (language_toggled),
- window);
-
- gtk_ui_manager_add_ui (window->priv->manager,
- ui_id,
- path,
- lang_id,
- lang_id,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
-
- g_free (path);
- g_free (tip);
- g_free (escaped_section);
+ gint index,
+ guint ui_id,
+ PlumaWindow *window)
+{
+ GtkAction *section_action;
+ GtkRadioAction *action;
+ GtkAction *normal_action;
+ GSList *group;
+ const gchar *section;
+ gchar *escaped_section;
+ const gchar *lang_id;
+ const gchar *lang_name;
+ gchar *escaped_lang_name;
+ gchar *tip;
+ gchar *path;
+
+ section = gtk_source_language_get_section (lang);
+ escaped_section = escape_section_name (section);
+
+ /* check if the section submenu exists or create it */
+ section_action = gtk_action_group_get_action (window->priv->languages_action_group,
+ escaped_section);
+
+ if (section_action == NULL)
+ {
+ gchar *section_name;
+
+ section_name = pluma_utils_escape_underscores (section, -1);
+
+ section_action = gtk_action_new (escaped_section,
+ section_name,
+ NULL,
+ NULL);
+
+ g_free (section_name);
+
+ gtk_action_group_add_action (window->priv->languages_action_group,
+ section_action);
+ g_object_unref (section_action);
+
+ gtk_ui_manager_add_ui (window->priv->manager,
+ ui_id,
+ "/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder",
+ escaped_section,
+ escaped_section,
+ GTK_UI_MANAGER_MENU,
+ FALSE);
+ }
+
+ /* now add the language item to the section */
+ lang_name = gtk_source_language_get_name (lang);
+ lang_id = gtk_source_language_get_id (lang);
+
+ escaped_lang_name = pluma_utils_escape_underscores (lang_name, -1);
+
+ tip = g_strdup_printf (_("Use %s highlight mode"), lang_name);
+ path = g_strdup_printf ("/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder/%s",
+ escaped_section);
+
+ action = gtk_radio_action_new (lang_id,
+ escaped_lang_name,
+ tip,
+ NULL,
+ index);
+
+ g_free (escaped_lang_name);
+
+ /* Action is added with a NULL accel to make the accel overridable */
+ gtk_action_group_add_action_with_accel (window->priv->languages_action_group,
+ GTK_ACTION (action),
+ NULL);
+ g_object_unref (action);
+
+ /* add the action to the same radio group of the "Normal" action */
+ normal_action = gtk_action_group_get_action (window->priv->languages_action_group,
+ LANGUAGE_NONE);
+ group = gtk_radio_action_get_group (GTK_RADIO_ACTION (normal_action));
+ gtk_radio_action_set_group (action, group);
+
+ g_signal_connect (action,
+ "activate",
+ G_CALLBACK (language_toggled),
+ window);
+
+ gtk_ui_manager_add_ui (window->priv->manager,
+ ui_id,
+ path,
+ lang_id,
+ lang_id,
+ GTK_UI_MANAGER_MENUITEM,
+ FALSE);
+
+ g_free (path);
+ g_free (tip);
+ g_free (escaped_section);
}
static void
create_languages_menu (PlumaWindow *window)
{
- GtkRadioAction *action_none;
- GSList *languages;
- GSList *l;
- guint id;
- gint i;
+ GtkRadioAction *action_none;
+ GSList *languages;
+ GSList *l;
+ guint id;
+ gint i;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- /* add the "Plain Text" item before all the others */
+ /* add the "Plain Text" item before all the others */
- /* Translators: "Plain Text" means that no highlight mode is selected in the
- * "View->Highlight Mode" submenu and so syntax highlighting is disabled */
- action_none = gtk_radio_action_new (LANGUAGE_NONE, _("Plain Text"),
- _("Disable syntax highlighting"),
- NULL,
- -1);
+ /* Translators: "Plain Text" means that no highlight mode is selected in the
+ * "View->Highlight Mode" submenu and so syntax highlighting is disabled */
+ action_none = gtk_radio_action_new (LANGUAGE_NONE, _("Plain Text"),
+ _("Disable syntax highlighting"),
+ NULL,
+ -1);
- gtk_action_group_add_action (window->priv->languages_action_group,
- GTK_ACTION (action_none));
- g_object_unref (action_none);
+ gtk_action_group_add_action (window->priv->languages_action_group,
+ GTK_ACTION (action_none));
+ g_object_unref (action_none);
- g_signal_connect (action_none,
- "activate",
- G_CALLBACK (language_toggled),
- window);
+ g_signal_connect (action_none,
+ "activate",
+ G_CALLBACK (language_toggled),
+ window);
- id = gtk_ui_manager_new_merge_id (window->priv->manager);
+ id = gtk_ui_manager_new_merge_id (window->priv->manager);
- gtk_ui_manager_add_ui (window->priv->manager,
- id,
- "/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder",
- LANGUAGE_NONE,
- LANGUAGE_NONE,
- GTK_UI_MANAGER_MENUITEM,
- TRUE);
+ gtk_ui_manager_add_ui (window->priv->manager,
+ id,
+ "/MenuBar/ViewMenu/ViewHighlightModeMenu/LanguagesMenuPlaceholder",
+ LANGUAGE_NONE,
+ LANGUAGE_NONE,
+ GTK_UI_MANAGER_MENUITEM,
+ TRUE);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action_none), TRUE);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action_none), TRUE);
- /* now add all the known languages */
- languages = pluma_language_manager_list_languages_sorted (
- pluma_get_language_manager (),
- FALSE);
+ /* now add all the known languages */
+ languages = pluma_language_manager_list_languages_sorted (pluma_get_language_manager (),
+ FALSE);
- for (l = languages, i = 0; l != NULL; l = l->next, ++i)
- {
- create_language_menu_item (l->data,
- i,
- id,
- window);
- }
+ for (l = languages, i = 0; l != NULL; l = l->next, ++i)
+ {
+ create_language_menu_item (l->data,
+ i,
+ id,
+ window);
+ }
- g_slist_free (languages);
+ g_slist_free (languages);
}
static void
update_languages_menu (PlumaWindow *window)
{
- PlumaDocument *doc;
- GList *actions;
- GList *l;
- GtkAction *action;
- GtkSourceLanguage *lang;
- const gchar *lang_id;
+ PlumaDocument *doc;
+ GList *actions;
+ GList *l;
+ GtkAction *action;
+ GtkSourceLanguage *lang;
+ const gchar *lang_id;
- doc = pluma_window_get_active_document (window);
- if (doc == NULL)
- return;
+ doc = pluma_window_get_active_document (window);
+ if (doc == NULL)
+ return;
- lang = pluma_document_get_language (doc);
- if (lang != NULL)
- lang_id = gtk_source_language_get_id (lang);
- else
- lang_id = LANGUAGE_NONE;
+ lang = pluma_document_get_language (doc);
+ if (lang != NULL)
+ lang_id = gtk_source_language_get_id (lang);
+ else
+ lang_id = LANGUAGE_NONE;
- actions = gtk_action_group_list_actions (window->priv->languages_action_group);
+ actions = gtk_action_group_list_actions (window->priv->languages_action_group);
- /* prevent recursion */
- for (l = actions; l != NULL; l = l->next)
- {
- g_signal_handlers_block_by_func (GTK_ACTION (l->data),
- G_CALLBACK (language_toggled),
- window);
- }
+ /* prevent recursion */
+ for (l = actions; l != NULL; l = l->next)
+ {
+ g_signal_handlers_block_by_func (GTK_ACTION (l->data),
+ G_CALLBACK (language_toggled),
+ window);
+ }
- action = gtk_action_group_get_action (window->priv->languages_action_group,
- lang_id);
+ action = gtk_action_group_get_action (window->priv->languages_action_group,
+ lang_id);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
- for (l = actions; l != NULL; l = l->next)
- {
- g_signal_handlers_unblock_by_func (GTK_ACTION (l->data),
- G_CALLBACK (language_toggled),
- window);
- }
+ for (l = actions; l != NULL; l = l->next)
+ {
+ g_signal_handlers_unblock_by_func (GTK_ACTION (l->data),
+ G_CALLBACK (language_toggled),
+ window);
+ }
- g_list_free (actions);
+ g_list_free (actions);
}
void
_pluma_recent_add (PlumaWindow *window,
- const gchar *uri,
- const gchar *mime)
+ const gchar *uri,
+ const gchar *mime)
{
- GtkRecentManager *recent_manager;
- GtkRecentData recent_data;
+ GtkRecentManager *recent_manager;
+ GtkRecentData recent_data;
- static gchar *groups[2] = {
- "pluma",
- NULL
- };
+ static gchar *groups[2] = {
+ "pluma",
+ NULL
+ };
- recent_manager = gtk_recent_manager_get_default ();
+ recent_manager = gtk_recent_manager_get_default ();
- recent_data.display_name = NULL;
- recent_data.description = NULL;
- recent_data.mime_type = (gchar *) mime;
- recent_data.app_name = (gchar *) g_get_application_name ();
- recent_data.app_exec = g_strjoin (" ", g_get_prgname (), "%u", NULL);
- recent_data.groups = groups;
- recent_data.is_private = FALSE;
+ recent_data.display_name = NULL;
+ recent_data.description = NULL;
+ recent_data.mime_type = (gchar *) mime;
+ recent_data.app_name = (gchar *) g_get_application_name ();
+ recent_data.app_exec = g_strjoin (" ", g_get_prgname (), "%u", NULL);
+ recent_data.groups = groups;
+ recent_data.is_private = FALSE;
- gtk_recent_manager_add_full (recent_manager,
- uri,
- &recent_data);
+ gtk_recent_manager_add_full (recent_manager,
+ uri,
+ &recent_data);
- g_free (recent_data.app_exec);
+ g_free (recent_data.app_exec);
}
void
_pluma_recent_remove (PlumaWindow *window,
- const gchar *uri)
+ const gchar *uri)
{
- GtkRecentManager *recent_manager;
+ GtkRecentManager *recent_manager;
- recent_manager = gtk_recent_manager_get_default ();
+ recent_manager = gtk_recent_manager_get_default ();
- gtk_recent_manager_remove_item (recent_manager, uri, NULL);
+ gtk_recent_manager_remove_item (recent_manager, uri, NULL);
}
static void
open_recent_file (const gchar *uri,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- GSList *uris = NULL;
+ GSList *uris = NULL;
- uris = g_slist_prepend (uris, (gpointer) uri);
+ uris = g_slist_prepend (uris, (gpointer) uri);
- if (pluma_commands_load_uris (window, uris, NULL, 0) != 1)
- {
- _pluma_recent_remove (window, uri);
- }
+ if (pluma_commands_load_uris (window, uris, NULL, 0) != 1)
+ {
+ _pluma_recent_remove (window, uri);
+ }
- g_slist_free (uris);
+ g_slist_free (uris);
}
static void
recent_chooser_item_activated (GtkRecentChooser *chooser,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gchar *uri;
+ gchar *uri;
- uri = gtk_recent_chooser_get_current_uri (chooser);
+ uri = gtk_recent_chooser_get_current_uri (chooser);
- open_recent_file (uri, window);
+ open_recent_file (uri, window);
- g_free (uri);
+ g_free (uri);
}
static void
recents_menu_activate (GtkAction *action,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- GtkRecentInfo *info;
- const gchar *uri;
+ GtkRecentInfo *info;
+ const gchar *uri;
- info = g_object_get_data (G_OBJECT (action), "gtk-recent-info");
- g_return_if_fail (info != NULL);
+ info = g_object_get_data (G_OBJECT (action), "gtk-recent-info");
+ g_return_if_fail (info != NULL);
- uri = gtk_recent_info_get_uri (info);
+ uri = gtk_recent_info_get_uri (info);
- open_recent_file (uri, window);
+ open_recent_file (uri, window);
}
static gint
sort_recents_mru (GtkRecentInfo *a, GtkRecentInfo *b)
{
- return (gtk_recent_info_get_modified (b) - gtk_recent_info_get_modified (a));
+ return (gtk_recent_info_get_modified (b) - gtk_recent_info_get_modified (a));
}
-static void update_recent_files_menu (PlumaWindow *window);
+static void update_recent_files_menu (PlumaWindow *window);
static void
recent_manager_changed (GtkRecentManager *manager,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- /* regenerate the menu when the model changes */
- update_recent_files_menu (window);
+ /* regenerate the menu when the model changes */
+ update_recent_files_menu (window);
}
/*
@@ -1280,902 +1273,896 @@ recent_manager_changed (GtkRecentManager *manager,
static void
update_recent_files_menu (PlumaWindow *window)
{
- PlumaWindowPrivate *p = window->priv;
- GtkRecentManager *recent_manager;
- guint max_recents;
- GList *actions, *l, *items;
- GList *filtered_items = NULL;
- gint i;
-
- pluma_debug (DEBUG_WINDOW);
-
- max_recents = g_settings_get_uint (window->priv->editor_settings, PLUMA_SETTINGS_MAX_RECENTS);
-
- g_return_if_fail (p->recents_action_group != NULL);
-
- if (p->recents_menu_ui_id != 0)
- gtk_ui_manager_remove_ui (p->manager,
- p->recents_menu_ui_id);
-
- actions = gtk_action_group_list_actions (p->recents_action_group);
- for (l = actions; l != NULL; l = l->next)
- {
- g_signal_handlers_disconnect_by_func (GTK_ACTION (l->data),
- G_CALLBACK (recents_menu_activate),
- window);
- gtk_action_group_remove_action (p->recents_action_group,
- GTK_ACTION (l->data));
- }
- g_list_free (actions);
-
- p->recents_menu_ui_id = gtk_ui_manager_new_merge_id (p->manager);
-
- recent_manager = gtk_recent_manager_get_default ();
- items = gtk_recent_manager_get_items (recent_manager);
-
- /* filter */
- for (l = items; l != NULL; l = l->next)
- {
- GtkRecentInfo *info = l->data;
-
- if (!gtk_recent_info_has_group (info, "pluma"))
- continue;
-
- filtered_items = g_list_prepend (filtered_items, info);
- }
-
- /* sort */
- filtered_items = g_list_sort (filtered_items,
- (GCompareFunc) sort_recents_mru);
-
- i = 0;
- for (l = filtered_items; l != NULL; l = l->next)
- {
- gchar *action_name;
- const gchar *display_name;
- gchar *escaped;
- gchar *label;
- gchar *uri;
- gchar *ruri;
- gchar *tip;
- GtkAction *action;
- GtkRecentInfo *info = l->data;
-
- /* clamp */
- if (i >= max_recents)
- break;
-
- i++;
-
- action_name = g_strdup_printf ("recent-info-%d", i);
-
- display_name = gtk_recent_info_get_display_name (info);
- escaped = pluma_utils_escape_underscores (display_name, -1);
- if (i >= 10)
- label = g_strdup_printf ("%d. %s",
- i,
- escaped);
- else
- label = g_strdup_printf ("_%d. %s",
- i,
- escaped);
- g_free (escaped);
-
- /* gtk_recent_info_get_uri_display (info) is buggy and
- * works only for local files */
- uri = pluma_utils_uri_for_display (gtk_recent_info_get_uri (info));
- ruri = pluma_utils_replace_home_dir_with_tilde (uri);
- g_free (uri);
-
- /* Translators: %s is a URI */
- tip = g_strdup_printf (_("Open '%s'"), ruri);
- g_free (ruri);
-
- action = gtk_action_new (action_name,
- label,
- tip,
- NULL);
-
- g_object_set_data_full (G_OBJECT (action),
- "gtk-recent-info",
- gtk_recent_info_ref (info),
- (GDestroyNotify) gtk_recent_info_unref);
-
- g_signal_connect (action,
- "activate",
- G_CALLBACK (recents_menu_activate),
- window);
-
- gtk_action_group_add_action (p->recents_action_group,
- action);
- g_object_unref (action);
-
- gtk_ui_manager_add_ui (p->manager,
- p->recents_menu_ui_id,
- "/MenuBar/FileMenu/FileRecentsPlaceholder",
- action_name,
- action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
-
- g_free (action_name);
- g_free (label);
- g_free (tip);
- }
-
- g_list_free (filtered_items);
-
- g_list_free_full (items, (GDestroyNotify) gtk_recent_info_unref);
+ PlumaWindowPrivate *p = window->priv;
+ GtkRecentManager *recent_manager;
+ guint max_recents;
+ GList *actions, *l, *items;
+ GList *filtered_items = NULL;
+ gint i;
+
+ pluma_debug (DEBUG_WINDOW);
+
+ max_recents = g_settings_get_uint (window->priv->editor_settings, PLUMA_SETTINGS_MAX_RECENTS);
+
+ g_return_if_fail (p->recents_action_group != NULL);
+
+ if (p->recents_menu_ui_id != 0)
+ gtk_ui_manager_remove_ui (p->manager, p->recents_menu_ui_id);
+
+ actions = gtk_action_group_list_actions (p->recents_action_group);
+ for (l = actions; l != NULL; l = l->next)
+ {
+ g_signal_handlers_disconnect_by_func (GTK_ACTION (l->data),
+ G_CALLBACK (recents_menu_activate),
+ window);
+ gtk_action_group_remove_action (p->recents_action_group,
+ GTK_ACTION (l->data));
+ }
+ g_list_free (actions);
+
+ p->recents_menu_ui_id = gtk_ui_manager_new_merge_id (p->manager);
+
+ recent_manager = gtk_recent_manager_get_default ();
+ items = gtk_recent_manager_get_items (recent_manager);
+
+ /* filter */
+ for (l = items; l != NULL; l = l->next)
+ {
+ GtkRecentInfo *info = l->data;
+
+ if (!gtk_recent_info_has_group (info, "pluma"))
+ continue;
+
+ filtered_items = g_list_prepend (filtered_items, info);
+ }
+
+ /* sort */
+ filtered_items = g_list_sort (filtered_items,
+ (GCompareFunc) sort_recents_mru);
+
+ i = 0;
+ for (l = filtered_items; l != NULL; l = l->next)
+ {
+ gchar *action_name;
+ const gchar *display_name;
+ gchar *escaped;
+ gchar *label;
+ gchar *uri;
+ gchar *ruri;
+ gchar *tip;
+ GtkAction *action;
+ GtkRecentInfo *info = l->data;
+
+ /* clamp */
+ if (i >= max_recents)
+ break;
+
+ i++;
+
+ action_name = g_strdup_printf ("recent-info-%d", i);
+
+ display_name = gtk_recent_info_get_display_name (info);
+ escaped = pluma_utils_escape_underscores (display_name, -1);
+ if (i >= 10)
+ label = g_strdup_printf ("%d. %s",
+ i,
+ escaped);
+ else
+ label = g_strdup_printf ("_%d. %s",
+ i,
+ escaped);
+ g_free (escaped);
+
+ /* gtk_recent_info_get_uri_display (info) is buggy and
+ * works only for local files */
+ uri = pluma_utils_uri_for_display (gtk_recent_info_get_uri (info));
+ ruri = pluma_utils_replace_home_dir_with_tilde (uri);
+ g_free (uri);
+
+ /* Translators: %s is a URI */
+ tip = g_strdup_printf (_("Open '%s'"), ruri);
+ g_free (ruri);
+
+ action = gtk_action_new (action_name,
+ label,
+ tip,
+ NULL);
+
+ g_object_set_data_full (G_OBJECT (action),
+ "gtk-recent-info",
+ gtk_recent_info_ref (info),
+ (GDestroyNotify) gtk_recent_info_unref);
+
+ g_signal_connect (action,
+ "activate",
+ G_CALLBACK (recents_menu_activate),
+ window);
+
+ gtk_action_group_add_action (p->recents_action_group,
+ action);
+ g_object_unref (action);
+
+ gtk_ui_manager_add_ui (p->manager,
+ p->recents_menu_ui_id,
+ "/MenuBar/FileMenu/FileRecentsPlaceholder",
+ action_name,
+ action_name,
+ GTK_UI_MANAGER_MENUITEM,
+ FALSE);
+
+ g_free (action_name);
+ g_free (label);
+ g_free (tip);
+ }
+
+ g_list_free (filtered_items);
+
+ g_list_free_full (items, (GDestroyNotify) gtk_recent_info_unref);
}
static void
set_non_homogeneus (GtkWidget *widget, gpointer data)
{
- gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
+ gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
}
static void
toolbar_visibility_changed (GtkWidget *toolbar,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gboolean visible;
- GtkAction *action;
+ gboolean visible;
+ GtkAction *action;
- visible = gtk_widget_get_visible (toolbar);
+ visible = gtk_widget_get_visible (toolbar);
- g_settings_set_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_TOOLBAR_VISIBLE, visible);
+ g_settings_set_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_TOOLBAR_VISIBLE, visible);
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "ViewToolbar");
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "ViewToolbar");
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
}
static GtkWidget *
setup_toolbar_open_button (PlumaWindow *window,
- GtkWidget *toolbar)
+ GtkWidget *toolbar)
{
- GtkRecentManager *recent_manager;
- GtkRecentFilter *filter;
- GtkWidget *toolbar_recent_menu;
- GtkToolItem *open_button;
- GtkAction *action;
- guint max_recents;
+ GtkRecentManager *recent_manager;
+ GtkRecentFilter *filter;
+ GtkWidget *toolbar_recent_menu;
+ GtkToolItem *open_button;
+ GtkAction *action;
+ guint max_recents;
- recent_manager = gtk_recent_manager_get_default ();
+ recent_manager = gtk_recent_manager_get_default ();
- max_recents = g_settings_get_uint (window->priv->editor_settings, PLUMA_SETTINGS_MAX_RECENTS);
+ max_recents = g_settings_get_uint (window->priv->editor_settings, PLUMA_SETTINGS_MAX_RECENTS);
- /* recent files menu tool button */
- toolbar_recent_menu = gtk_recent_chooser_menu_new_for_manager (recent_manager);
+ /* recent files menu tool button */
+ toolbar_recent_menu = gtk_recent_chooser_menu_new_for_manager (recent_manager);
- gtk_recent_chooser_set_local_only (GTK_RECENT_CHOOSER (toolbar_recent_menu),
- FALSE);
- gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (toolbar_recent_menu),
- GTK_RECENT_SORT_MRU);
- gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (toolbar_recent_menu),
- max_recents);
+ gtk_recent_chooser_set_local_only (GTK_RECENT_CHOOSER (toolbar_recent_menu),
+ FALSE);
+ gtk_recent_chooser_set_sort_type (GTK_RECENT_CHOOSER (toolbar_recent_menu),
+ GTK_RECENT_SORT_MRU);
+ gtk_recent_chooser_set_limit (GTK_RECENT_CHOOSER (toolbar_recent_menu),
+ max_recents);
- filter = gtk_recent_filter_new ();
- gtk_recent_filter_add_group (filter, "pluma");
- gtk_recent_chooser_set_filter (GTK_RECENT_CHOOSER (toolbar_recent_menu),
- filter);
+ filter = gtk_recent_filter_new ();
+ gtk_recent_filter_add_group (filter, "pluma");
+ gtk_recent_chooser_set_filter (GTK_RECENT_CHOOSER (toolbar_recent_menu),
+ filter);
- g_signal_connect (toolbar_recent_menu,
- "item_activated",
- G_CALLBACK (recent_chooser_item_activated),
- window);
+ g_signal_connect (toolbar_recent_menu,
+ "item_activated",
+ G_CALLBACK (recent_chooser_item_activated),
+ window);
- /* add the custom Open button to the toolbar */
- open_button = gtk_menu_tool_button_new (gtk_image_new_from_icon_name ("document-open",
- GTK_ICON_SIZE_MENU),
- _("Open a file"));
+ /* add the custom Open button to the toolbar */
+ open_button = gtk_menu_tool_button_new (gtk_image_new_from_icon_name ("document-open",
+ GTK_ICON_SIZE_MENU),
+ _("Open a file"));
- gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (open_button),
- toolbar_recent_menu);
+ gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (open_button),
+ toolbar_recent_menu);
- gtk_menu_tool_button_set_arrow_tooltip_text (GTK_MENU_TOOL_BUTTON (open_button),
- _("Open a recently used file"));
+ gtk_menu_tool_button_set_arrow_tooltip_text (GTK_MENU_TOOL_BUTTON (open_button),
+ _("Open a recently used file"));
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "FileOpen");
- g_object_set (action,
- "is_important", TRUE,
- "short_label", _("Open"),
- NULL);
- gtk_activatable_set_related_action (GTK_ACTIVATABLE (open_button),
- action);
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "FileOpen");
+ g_object_set (action,
+ "is_important", TRUE,
+ "short_label", _("Open"),
+ NULL);
+ gtk_activatable_set_related_action (GTK_ACTIVATABLE (open_button),
+ action);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
- open_button,
- 1);
+ gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
+ open_button,
+ 1);
- return toolbar_recent_menu;
+ return toolbar_recent_menu;
}
static void
create_menu_bar_and_toolbar (PlumaWindow *window,
- GtkWidget *main_box)
-{
- GtkActionGroup *action_group;
- GtkAction *action;
- GtkUIManager *manager;
- GtkRecentManager *recent_manager;
- GError *error = NULL;
-
- pluma_debug (DEBUG_WINDOW);
-
- manager = gtk_ui_manager_new ();
- window->priv->manager = manager;
-
- gtk_window_add_accel_group (GTK_WINDOW (window),
- gtk_ui_manager_get_accel_group (manager));
-
- action_group = gtk_action_group_new ("PlumaWindowAlwaysSensitiveActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- gtk_action_group_add_actions (action_group,
- pluma_always_sensitive_menu_entries,
- G_N_ELEMENTS (pluma_always_sensitive_menu_entries),
- window);
- gtk_action_group_add_toggle_actions (action_group,
- pluma_always_sensitive_toggle_menu_entries,
- G_N_ELEMENTS (pluma_always_sensitive_toggle_menu_entries),
- window);
-
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
- window->priv->always_sensitive_action_group = action_group;
-
- action_group = gtk_action_group_new ("PlumaWindowActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- gtk_action_group_add_actions (action_group,
- pluma_menu_entries,
- G_N_ELEMENTS (pluma_menu_entries),
- window);
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
- window->priv->action_group = action_group;
-
- /* set short labels to use in the toolbar */
- action = gtk_action_group_get_action (action_group, "FileSave");
- g_object_set (action, "short_label", _("Save"), NULL);
- action = gtk_action_group_get_action (action_group, "FilePrint");
- g_object_set (action, "short_label", _("Print"), NULL);
- action = gtk_action_group_get_action (action_group, "SearchFind");
- g_object_set (action, "short_label", _("Find"), NULL);
- action = gtk_action_group_get_action (action_group, "SearchReplace");
- g_object_set (action, "short_label", _("Replace"), NULL);
-
- /* set which actions should have priority on the toolbar */
- action = gtk_action_group_get_action (action_group, "FileSave");
- g_object_set (action, "is_important", TRUE, NULL);
- action = gtk_action_group_get_action (action_group, "EditUndo");
- g_object_set (action, "is_important", TRUE, NULL);
-
- action_group = gtk_action_group_new ("PlumaQuitWindowActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- gtk_action_group_add_actions (action_group,
- pluma_quit_menu_entries,
- G_N_ELEMENTS (pluma_quit_menu_entries),
- window);
-
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
- window->priv->quit_action_group = action_group;
-
- action_group = gtk_action_group_new ("PlumaCloseWindowActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- gtk_action_group_add_actions (action_group,
- pluma_close_menu_entries,
- G_N_ELEMENTS (pluma_close_menu_entries),
- window);
-
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
- window->priv->close_action_group = action_group;
-
- action_group = gtk_action_group_new ("PlumaWindowPanesActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- gtk_action_group_add_toggle_actions (action_group,
- pluma_panes_toggle_menu_entries,
- G_N_ELEMENTS (pluma_panes_toggle_menu_entries),
- window);
-
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
- window->priv->panes_action_group = action_group;
-
- /* now load the UI definition */
- gtk_ui_manager_add_ui_from_file (manager,
- PLUMA_DATADIR "/ui/pluma-ui.xml",
- &error);
- if (error != NULL)
- {
- g_warning ("Could not merge %s: %s",
- PLUMA_DATADIR "/ui/pluma-ui.xml",
- error->message);
- g_error_free (error);
- }
-
- /* show tooltips in the statusbar */
- g_signal_connect (manager,
- "connect_proxy",
- G_CALLBACK (connect_proxy_cb),
- window);
- g_signal_connect (manager,
- "disconnect_proxy",
- G_CALLBACK (disconnect_proxy_cb),
- window);
-
- /* recent files menu */
- action_group = gtk_action_group_new ("RecentFilesActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- window->priv->recents_action_group = action_group;
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
-
- recent_manager = gtk_recent_manager_get_default ();
- window->priv->recents_handler_id = g_signal_connect (recent_manager,
- "changed",
- G_CALLBACK (recent_manager_changed),
- window);
- update_recent_files_menu (window);
-
- /* languages menu */
- action_group = gtk_action_group_new ("LanguagesActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- window->priv->languages_action_group = action_group;
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
- create_languages_menu (window);
-
- /* list of open documents menu */
- action_group = gtk_action_group_new ("DocumentsListActions");
- gtk_action_group_set_translation_domain (action_group, NULL);
- window->priv->documents_list_action_group = action_group;
- gtk_ui_manager_insert_action_group (manager, action_group, 0);
- g_object_unref (action_group);
-
- window->priv->menubar = gtk_ui_manager_get_widget (manager, "/MenuBar");
- gtk_box_pack_start (GTK_BOX (main_box),
- window->priv->menubar,
- FALSE,
- FALSE,
- 0);
-
- window->priv->toolbar = gtk_ui_manager_get_widget (manager, "/ToolBar");
- gtk_style_context_add_class (gtk_widget_get_style_context (window->priv->toolbar),
- GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
- gtk_box_pack_start (GTK_BOX (main_box),
- window->priv->toolbar,
- FALSE,
- FALSE,
- 0);
-
- set_toolbar_style (window, NULL);
-
- window->priv->toolbar_recent_menu = setup_toolbar_open_button (window,
- window->priv->toolbar);
-
- gtk_container_foreach (GTK_CONTAINER (window->priv->toolbar),
- (GtkCallback)set_non_homogeneus,
- NULL);
-
- g_signal_connect_after (G_OBJECT (window->priv->toolbar),
- "show",
- G_CALLBACK (toolbar_visibility_changed),
- window);
- g_signal_connect_after (G_OBJECT (window->priv->toolbar),
- "hide",
- G_CALLBACK (toolbar_visibility_changed),
- window);
+ GtkWidget *main_box)
+{
+ GtkActionGroup *action_group;
+ GtkAction *action;
+ GtkUIManager *manager;
+ GtkRecentManager *recent_manager;
+ GError *error = NULL;
+ gchar *ui_file;
+
+ pluma_debug (DEBUG_WINDOW);
+
+ manager = gtk_ui_manager_new ();
+ window->priv->manager = manager;
+
+ gtk_window_add_accel_group (GTK_WINDOW (window),
+ gtk_ui_manager_get_accel_group (manager));
+
+ action_group = gtk_action_group_new ("PlumaWindowAlwaysSensitiveActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ gtk_action_group_add_actions (action_group,
+ pluma_always_sensitive_menu_entries,
+ G_N_ELEMENTS (pluma_always_sensitive_menu_entries),
+ window);
+ gtk_action_group_add_toggle_actions (action_group,
+ pluma_always_sensitive_toggle_menu_entries,
+ G_N_ELEMENTS (pluma_always_sensitive_toggle_menu_entries),
+ window);
+
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+ window->priv->always_sensitive_action_group = action_group;
+
+ action_group = gtk_action_group_new ("PlumaWindowActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ gtk_action_group_add_actions (action_group,
+ pluma_menu_entries,
+ G_N_ELEMENTS (pluma_menu_entries),
+ window);
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+ window->priv->action_group = action_group;
+
+ /* set short labels to use in the toolbar */
+ action = gtk_action_group_get_action (action_group, "FileSave");
+ g_object_set (action, "short_label", _("Save"), NULL);
+ action = gtk_action_group_get_action (action_group, "FilePrint");
+ g_object_set (action, "short_label", _("Print"), NULL);
+ action = gtk_action_group_get_action (action_group, "SearchFind");
+ g_object_set (action, "short_label", _("Find"), NULL);
+ action = gtk_action_group_get_action (action_group, "SearchReplace");
+ g_object_set (action, "short_label", _("Replace"), NULL);
+
+ /* set which actions should have priority on the toolbar */
+ action = gtk_action_group_get_action (action_group, "FileSave");
+ g_object_set (action, "is_important", TRUE, NULL);
+ action = gtk_action_group_get_action (action_group, "EditUndo");
+ g_object_set (action, "is_important", TRUE, NULL);
+
+ action_group = gtk_action_group_new ("PlumaQuitWindowActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ gtk_action_group_add_actions (action_group,
+ pluma_quit_menu_entries,
+ G_N_ELEMENTS (pluma_quit_menu_entries),
+ window);
+
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+ window->priv->quit_action_group = action_group;
+
+ action_group = gtk_action_group_new ("PlumaCloseWindowActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ gtk_action_group_add_actions (action_group,
+ pluma_close_menu_entries,
+ G_N_ELEMENTS (pluma_close_menu_entries),
+ window);
+
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+ window->priv->close_action_group = action_group;
+
+ action_group = gtk_action_group_new ("PlumaWindowPanesActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ gtk_action_group_add_toggle_actions (action_group,
+ pluma_panes_toggle_menu_entries,
+ G_N_ELEMENTS (pluma_panes_toggle_menu_entries),
+ window);
+
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+ window->priv->panes_action_group = action_group;
+
+ /* now load the UI definition */
+ gtk_ui_manager_add_ui_from_file (manager,
+ PLUMA_DATADIR "/ui/pluma-ui.xml",
+ &error);
+ if (error != NULL)
+ {
+ g_warning ("Could not merge %s: %s",
+ PLUMA_DATADIR "/ui/pluma-ui.xml",
+ error->message);
+ g_error_free (error);
+ }
+
+ /* show tooltips in the statusbar */
+ g_signal_connect (manager,
+ "connect_proxy",
+ G_CALLBACK (connect_proxy_cb),
+ window);
+ g_signal_connect (manager,
+ "disconnect_proxy",
+ G_CALLBACK (disconnect_proxy_cb),
+ window);
+
+ /* recent files menu */
+ action_group = gtk_action_group_new ("RecentFilesActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ window->priv->recents_action_group = action_group;
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+
+ recent_manager = gtk_recent_manager_get_default ();
+ window->priv->recents_handler_id = g_signal_connect (recent_manager,
+ "changed",
+ G_CALLBACK (recent_manager_changed),
+ window);
+ update_recent_files_menu (window);
+
+ /* languages menu */
+ action_group = gtk_action_group_new ("LanguagesActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ window->priv->languages_action_group = action_group;
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+ create_languages_menu (window);
+
+ /* list of open documents menu */
+ action_group = gtk_action_group_new ("DocumentsListActions");
+ gtk_action_group_set_translation_domain (action_group, NULL);
+ window->priv->documents_list_action_group = action_group;
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+ g_object_unref (action_group);
+
+ window->priv->menubar = gtk_ui_manager_get_widget (manager, "/MenuBar");
+ gtk_box_pack_start (GTK_BOX (main_box),
+ window->priv->menubar,
+ FALSE,
+ FALSE,
+ 0);
+
+ window->priv->toolbar = gtk_ui_manager_get_widget (manager, "/ToolBar");
+ gtk_style_context_add_class (gtk_widget_get_style_context (window->priv->toolbar),
+ GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
+ gtk_box_pack_start (GTK_BOX (main_box),
+ window->priv->toolbar,
+ FALSE,
+ FALSE,
+ 0);
+
+ set_toolbar_style (window, NULL);
+
+ window->priv->toolbar_recent_menu = setup_toolbar_open_button (window, window->priv->toolbar);
+
+ gtk_container_foreach (GTK_CONTAINER (window->priv->toolbar),
+ (GtkCallback)set_non_homogeneus,
+ NULL);
+
+ g_signal_connect_after (G_OBJECT (window->priv->toolbar),
+ "show",
+ G_CALLBACK (toolbar_visibility_changed),
+ window);
+ g_signal_connect_after (G_OBJECT (window->priv->toolbar),
+ "hide",
+ G_CALLBACK (toolbar_visibility_changed),
+ window);
}
static void
documents_list_menu_activate (GtkToggleAction *action,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gint n;
+ gint n;
- if (gtk_toggle_action_get_active (action) == FALSE)
- return;
+ if (gtk_toggle_action_get_active (action) == FALSE)
+ return;
- n = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (action));
- gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook), n);
+ n = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (action));
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook), n);
}
static gchar *
get_menu_tip_for_tab (PlumaTab *tab)
{
- PlumaDocument *doc;
- gchar *uri;
- gchar *ruri;
- gchar *tip;
+ PlumaDocument *doc;
+ gchar *uri;
+ gchar *ruri;
+ gchar *tip;
- doc = pluma_tab_get_document (tab);
+ doc = pluma_tab_get_document (tab);
- uri = pluma_document_get_uri_for_display (doc);
- ruri = pluma_utils_replace_home_dir_with_tilde (uri);
- g_free (uri);
+ uri = pluma_document_get_uri_for_display (doc);
+ ruri = pluma_utils_replace_home_dir_with_tilde (uri);
+ g_free (uri);
- /* Translators: %s is a URI */
- tip = g_strdup_printf (_("Activate '%s'"), ruri);
- g_free (ruri);
+ /* Translators: %s is a URI */
+ tip = g_strdup_printf (_("Activate '%s'"), ruri);
+ g_free (ruri);
- return tip;
+ return tip;
}
static void
update_documents_list_menu (PlumaWindow *window)
{
- PlumaWindowPrivate *p = window->priv;
- GList *actions, *l;
- gint n, i;
- guint id;
- GSList *group = NULL;
-
- pluma_debug (DEBUG_WINDOW);
-
- g_return_if_fail (p->documents_list_action_group != NULL);
-
- if (p->documents_list_menu_ui_id != 0)
- gtk_ui_manager_remove_ui (p->manager,
- p->documents_list_menu_ui_id);
-
- actions = gtk_action_group_list_actions (p->documents_list_action_group);
- for (l = actions; l != NULL; l = l->next)
- {
- g_signal_handlers_disconnect_by_func (GTK_ACTION (l->data),
- G_CALLBACK (documents_list_menu_activate),
- window);
- gtk_action_group_remove_action (p->documents_list_action_group,
- GTK_ACTION (l->data));
- }
- g_list_free (actions);
-
- n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (p->notebook));
-
- id = (n > 0) ? gtk_ui_manager_new_merge_id (p->manager) : 0;
-
- for (i = 0; i < n; i++)
- {
- GtkWidget *tab;
- GtkRadioAction *action;
- gchar *action_name;
- gchar *tab_name;
- gchar *name;
- gchar *tip;
- gchar *accel;
-
- tab = gtk_notebook_get_nth_page (GTK_NOTEBOOK (p->notebook), i);
-
- /* NOTE: the action is associated to the position of the tab in
- * the notebook not to the tab itself! This is needed to work
- * around the gtk+ bug #170727: gtk leaves around the accels
- * of the action. Since the accel depends on the tab position
- * the problem is worked around, action with the same name always
- * get the same accel.
- */
- action_name = g_strdup_printf ("Tab_%d", i);
- tab_name = _pluma_tab_get_name (PLUMA_TAB (tab));
- name = pluma_utils_escape_underscores (tab_name, -1);
- tip = get_menu_tip_for_tab (PLUMA_TAB (tab));
-
- /* alt + 1, 2, 3... 0 to switch to the first ten tabs */
- accel = (i < 10) ? g_strdup_printf ("<alt>%d", (i + 1) % 10) : NULL;
-
- action = gtk_radio_action_new (action_name,
- name,
- tip,
- NULL,
- i);
-
- if (group != NULL)
- gtk_radio_action_set_group (action, group);
-
- /* note that group changes each time we add an action, so it must be updated */
- group = gtk_radio_action_get_group (action);
-
- gtk_action_group_add_action_with_accel (p->documents_list_action_group,
- GTK_ACTION (action),
- accel);
-
- g_signal_connect (action,
- "activate",
- G_CALLBACK (documents_list_menu_activate),
- window);
-
- gtk_ui_manager_add_ui (p->manager,
- id,
- "/MenuBar/DocumentsMenu/DocumentsListPlaceholder",
- action_name, action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
-
- if (PLUMA_TAB (tab) == p->active_tab)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
-
- g_object_unref (action);
-
- g_free (action_name);
- g_free (tab_name);
- g_free (name);
- g_free (tip);
- g_free (accel);
- }
-
- p->documents_list_menu_ui_id = id;
+ PlumaWindowPrivate *p = window->priv;
+ GList *actions, *l;
+ gint n, i;
+ guint id;
+ GSList *group = NULL;
+
+ pluma_debug (DEBUG_WINDOW);
+
+ g_return_if_fail (p->documents_list_action_group != NULL);
+
+ if (p->documents_list_menu_ui_id != 0)
+ gtk_ui_manager_remove_ui (p->manager,
+ p->documents_list_menu_ui_id);
+
+ actions = gtk_action_group_list_actions (p->documents_list_action_group);
+ for (l = actions; l != NULL; l = l->next)
+ {
+ g_signal_handlers_disconnect_by_func (GTK_ACTION (l->data),
+ G_CALLBACK (documents_list_menu_activate),
+ window);
+ gtk_action_group_remove_action (p->documents_list_action_group,
+ GTK_ACTION (l->data));
+ }
+ g_list_free (actions);
+
+ n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (p->notebook));
+
+ id = (n > 0) ? gtk_ui_manager_new_merge_id (p->manager) : 0;
+
+ for (i = 0; i < n; i++)
+ {
+ GtkWidget *tab;
+ GtkRadioAction *action;
+ gchar *action_name;
+ gchar *tab_name;
+ gchar *name;
+ gchar *tip;
+ gchar *accel;
+
+ tab = gtk_notebook_get_nth_page (GTK_NOTEBOOK (p->notebook), i);
+
+ /* NOTE: the action is associated to the position of the tab in
+ * the notebook not to the tab itself! This is needed to work
+ * around the gtk+ bug #170727: gtk leaves around the accels
+ * of the action. Since the accel depends on the tab position
+ * the problem is worked around, action with the same name always
+ * get the same accel.
+ */
+ action_name = g_strdup_printf ("Tab_%d", i);
+ tab_name = _pluma_tab_get_name (PLUMA_TAB (tab));
+ name = pluma_utils_escape_underscores (tab_name, -1);
+ tip = get_menu_tip_for_tab (PLUMA_TAB (tab));
+
+ /* alt + 1, 2, 3... 0 to switch to the first ten tabs */
+ accel = (i < 10) ? g_strdup_printf ("<alt>%d", (i + 1) % 10) : NULL;
+
+ action = gtk_radio_action_new (action_name,
+ name,
+ tip,
+ NULL,
+ i);
+
+ if (group != NULL)
+ gtk_radio_action_set_group (action, group);
+
+ /* note that group changes each time we add an action, so it must be updated */
+ group = gtk_radio_action_get_group (action);
+
+ gtk_action_group_add_action_with_accel (p->documents_list_action_group,
+ GTK_ACTION (action),
+ accel);
+
+ g_signal_connect (action,
+ "activate",
+ G_CALLBACK (documents_list_menu_activate),
+ window);
+
+ gtk_ui_manager_add_ui (p->manager,
+ id,
+ "/MenuBar/DocumentsMenu/DocumentsListPlaceholder",
+ action_name, action_name,
+ GTK_UI_MANAGER_MENUITEM,
+ FALSE);
+
+ if (PLUMA_TAB (tab) == p->active_tab)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+
+ g_object_unref (action);
+
+ g_free (action_name);
+ g_free (tab_name);
+ g_free (name);
+ g_free (tip);
+ g_free (accel);
+ }
+
+ p->documents_list_menu_ui_id = id;
}
/* Returns TRUE if status bar is visible */
static gboolean
set_statusbar_style (PlumaWindow *window,
- PlumaWindow *origin)
+ PlumaWindow *origin)
{
- GtkAction *action;
- gboolean visible;
+ GtkAction *action;
+ gboolean visible;
- if (origin == NULL)
- visible = g_settings_get_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_STATUSBAR_VISIBLE);
- else
- visible = gtk_widget_get_visible (origin->priv->statusbar);
+ if (origin == NULL)
+ visible = g_settings_get_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_STATUSBAR_VISIBLE);
+ else
+ visible = gtk_widget_get_visible (origin->priv->statusbar);
- if (visible)
- gtk_widget_show (window->priv->statusbar);
- else
- gtk_widget_hide (window->priv->statusbar);
+ if (visible)
+ gtk_widget_show (window->priv->statusbar);
+ else
+ gtk_widget_hide (window->priv->statusbar);
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "ViewStatusbar");
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "ViewStatusbar");
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
- return visible;
+ return visible;
}
static void
statusbar_visibility_changed (GtkWidget *statusbar,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gboolean visible;
- GtkAction *action;
+ gboolean visible;
+ GtkAction *action;
- visible = gtk_widget_get_visible (statusbar);
+ visible = gtk_widget_get_visible (statusbar);
- g_settings_set_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_STATUSBAR_VISIBLE, visible);
+ g_settings_set_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_STATUSBAR_VISIBLE, visible);
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "ViewStatusbar");
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "ViewStatusbar");
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
}
static void
tab_width_combo_changed (PlumaStatusComboBox *combo,
- GtkMenuItem *item,
- PlumaWindow *window)
+ GtkMenuItem *item,
+ PlumaWindow *window)
{
- PlumaView *view;
- guint width_data = 0;
+ PlumaView *view;
+ guint width_data = 0;
- view = pluma_window_get_active_view (window);
+ view = pluma_window_get_active_view (window);
- if (!view)
- return;
+ if (!view)
+ return;
- width_data = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), TAB_WIDTH_DATA));
+ width_data = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), TAB_WIDTH_DATA));
- if (width_data == 0)
- return;
+ if (width_data == 0)
+ return;
- g_signal_handler_block (view, window->priv->tab_width_id);
- gtk_source_view_set_tab_width (GTK_SOURCE_VIEW (view), width_data);
- g_signal_handler_unblock (view, window->priv->tab_width_id);
+ g_signal_handler_block (view, window->priv->tab_width_id);
+ gtk_source_view_set_tab_width (GTK_SOURCE_VIEW (view), width_data);
+ g_signal_handler_unblock (view, window->priv->tab_width_id);
}
static void
use_spaces_toggled (GtkCheckMenuItem *item,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- PlumaView *view;
+ PlumaView *view;
- view = pluma_window_get_active_view (window);
+ view = pluma_window_get_active_view (window);
- g_signal_handler_block (view, window->priv->spaces_instead_of_tabs_id);
- gtk_source_view_set_insert_spaces_instead_of_tabs (
- GTK_SOURCE_VIEW (view),
- gtk_check_menu_item_get_active (item));
- g_signal_handler_unblock (view, window->priv->spaces_instead_of_tabs_id);
+ g_signal_handler_block (view, window->priv->spaces_instead_of_tabs_id);
+ gtk_source_view_set_insert_spaces_instead_of_tabs (GTK_SOURCE_VIEW (view),
+ gtk_check_menu_item_get_active (item));
+ g_signal_handler_unblock (view, window->priv->spaces_instead_of_tabs_id);
}
static void
language_combo_changed (PlumaStatusComboBox *combo,
- GtkMenuItem *item,
- PlumaWindow *window)
+ GtkMenuItem *item,
+ PlumaWindow *window)
{
- PlumaDocument *doc;
- GtkSourceLanguage *language;
+ PlumaDocument *doc;
+ GtkSourceLanguage *language;
- doc = pluma_window_get_active_document (window);
+ doc = pluma_window_get_active_document (window);
- if (!doc)
- return;
+ if (!doc)
+ return;
- language = GTK_SOURCE_LANGUAGE (g_object_get_data (G_OBJECT (item), LANGUAGE_DATA));
+ language = GTK_SOURCE_LANGUAGE (g_object_get_data (G_OBJECT (item), LANGUAGE_DATA));
- g_signal_handler_block (doc, window->priv->language_changed_id);
- pluma_document_set_language (doc, language);
- g_signal_handler_unblock (doc, window->priv->language_changed_id);
+ g_signal_handler_block (doc, window->priv->language_changed_id);
+ pluma_document_set_language (doc, language);
+ g_signal_handler_unblock (doc, window->priv->language_changed_id);
}
typedef struct
{
- const gchar *label;
- guint width;
+ const gchar *label;
+ guint width;
} TabWidthDefinition;
static void
fill_tab_width_combo (PlumaWindow *window)
{
- static TabWidthDefinition defs[] = {
- {"2", 2},
- {"4", 4},
- {"8", 8},
- {"", 0}, /* custom size */
- {NULL, 0}
- };
+ static TabWidthDefinition defs[] = {
+ {"2", 2},
+ {"4", 4},
+ {"8", 8},
+ {"", 0}, /* custom size */
+ {NULL, 0}
+ };
- PlumaStatusComboBox *combo = PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo);
- guint i = 0;
- GtkWidget *item;
+ PlumaStatusComboBox *combo = PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo);
+ guint i = 0;
+ GtkWidget *item;
- while (defs[i].label != NULL)
- {
- item = gtk_menu_item_new_with_label (defs[i].label);
- g_object_set_data (G_OBJECT (item), TAB_WIDTH_DATA, GINT_TO_POINTER (defs[i].width));
+ while (defs[i].label != NULL)
+ {
+ item = gtk_menu_item_new_with_label (defs[i].label);
+ g_object_set_data (G_OBJECT (item), TAB_WIDTH_DATA, GINT_TO_POINTER (defs[i].width));
- pluma_status_combo_box_add_item (combo,
- GTK_MENU_ITEM (item),
- defs[i].label);
+ pluma_status_combo_box_add_item (combo,
+ GTK_MENU_ITEM (item),
+ defs[i].label);
- if (defs[i].width != 0)
- gtk_widget_show (item);
+ if (defs[i].width != 0)
+ gtk_widget_show (item);
- ++i;
- }
+ ++i;
+ }
- item = gtk_separator_menu_item_new ();
- pluma_status_combo_box_add_item (combo, GTK_MENU_ITEM (item), NULL);
- gtk_widget_show (item);
+ item = gtk_separator_menu_item_new ();
+ pluma_status_combo_box_add_item (combo, GTK_MENU_ITEM (item), NULL);
+ gtk_widget_show (item);
- item = gtk_check_menu_item_new_with_label (_("Use Spaces"));
- pluma_status_combo_box_add_item (combo, GTK_MENU_ITEM (item), NULL);
- gtk_widget_show (item);
+ item = gtk_check_menu_item_new_with_label (_("Use Spaces"));
+ pluma_status_combo_box_add_item (combo, GTK_MENU_ITEM (item), NULL);
+ gtk_widget_show (item);
- g_signal_connect (item,
- "toggled",
- G_CALLBACK (use_spaces_toggled),
- window);
+ g_signal_connect (item,
+ "toggled",
+ G_CALLBACK (use_spaces_toggled),
+ window);
}
static void
fill_language_combo (PlumaWindow *window)
{
- GtkSourceLanguageManager *manager;
- GSList *languages;
- GSList *item;
- GtkWidget *menu_item;
- const gchar *name;
+ GtkSourceLanguageManager *manager;
+ GSList *languages;
+ GSList *item;
+ GtkWidget *menu_item;
+ const gchar *name;
- manager = pluma_get_language_manager ();
- languages = pluma_language_manager_list_languages_sorted (manager, FALSE);
+ manager = pluma_get_language_manager ();
+ languages = pluma_language_manager_list_languages_sorted (manager, FALSE);
- name = _("Plain Text");
- menu_item = gtk_menu_item_new_with_label (name);
- gtk_widget_show (menu_item);
+ name = _("Plain Text");
+ menu_item = gtk_menu_item_new_with_label (name);
+ gtk_widget_show (menu_item);
- g_object_set_data (G_OBJECT (menu_item), LANGUAGE_DATA, NULL);
- pluma_status_combo_box_add_item (PLUMA_STATUS_COMBO_BOX (window->priv->language_combo),
- GTK_MENU_ITEM (menu_item),
- name);
+ g_object_set_data (G_OBJECT (menu_item), LANGUAGE_DATA, NULL);
+ pluma_status_combo_box_add_item (PLUMA_STATUS_COMBO_BOX (window->priv->language_combo),
+ GTK_MENU_ITEM (menu_item),
+ name);
- for (item = languages; item; item = item->next)
- {
- GtkSourceLanguage *lang = GTK_SOURCE_LANGUAGE (item->data);
+ for (item = languages; item; item = item->next)
+ {
+ GtkSourceLanguage *lang = GTK_SOURCE_LANGUAGE (item->data);
- name = gtk_source_language_get_name (lang);
- menu_item = gtk_menu_item_new_with_label (name);
- gtk_widget_show (menu_item);
+ name = gtk_source_language_get_name (lang);
+ menu_item = gtk_menu_item_new_with_label (name);
+ gtk_widget_show (menu_item);
- g_object_set_data_full (G_OBJECT (menu_item),
- LANGUAGE_DATA,
- g_object_ref (lang),
- (GDestroyNotify)g_object_unref);
+ g_object_set_data_full (G_OBJECT (menu_item),
+ LANGUAGE_DATA,
+ g_object_ref (lang),
+ (GDestroyNotify)g_object_unref);
- pluma_status_combo_box_add_item (PLUMA_STATUS_COMBO_BOX (window->priv->language_combo),
- GTK_MENU_ITEM (menu_item),
- name);
- }
+ pluma_status_combo_box_add_item (PLUMA_STATUS_COMBO_BOX (window->priv->language_combo),
+ GTK_MENU_ITEM (menu_item),
+ name);
+ }
- g_slist_free (languages);
+ g_slist_free (languages);
}
static void
create_statusbar (PlumaWindow *window,
- GtkWidget *main_box)
+ GtkWidget *main_box)
{
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- window->priv->statusbar = pluma_statusbar_new ();
+ window->priv->statusbar = pluma_statusbar_new ();
- window->priv->generic_message_cid = gtk_statusbar_get_context_id
- (GTK_STATUSBAR (window->priv->statusbar), "generic_message");
- window->priv->tip_message_cid = gtk_statusbar_get_context_id
- (GTK_STATUSBAR (window->priv->statusbar), "tip_message");
+ window->priv->generic_message_cid = gtk_statusbar_get_context_id
+ (GTK_STATUSBAR (window->priv->statusbar), "generic_message");
+ window->priv->tip_message_cid = gtk_statusbar_get_context_id
+ (GTK_STATUSBAR (window->priv->statusbar), "tip_message");
- gtk_box_pack_end (GTK_BOX (main_box),
- window->priv->statusbar,
- FALSE,
- TRUE,
- 0);
+ gtk_box_pack_end (GTK_BOX (main_box),
+ window->priv->statusbar,
+ FALSE,
+ TRUE,
+ 0);
- window->priv->tab_width_combo = pluma_status_combo_box_new (_("Tab Width"));
- gtk_widget_show (window->priv->tab_width_combo);
- gtk_box_pack_end (GTK_BOX (window->priv->statusbar),
- window->priv->tab_width_combo,
- FALSE,
- TRUE,
- 0);
+ window->priv->tab_width_combo = pluma_status_combo_box_new (_("Tab Width"));
+ gtk_widget_show (window->priv->tab_width_combo);
+ gtk_box_pack_end (GTK_BOX (window->priv->statusbar),
+ window->priv->tab_width_combo,
+ FALSE,
+ TRUE,
+ 0);
- fill_tab_width_combo (window);
+ fill_tab_width_combo (window);
- g_signal_connect (G_OBJECT (window->priv->tab_width_combo),
- "changed",
- G_CALLBACK (tab_width_combo_changed),
- window);
+ g_signal_connect (G_OBJECT (window->priv->tab_width_combo),
+ "changed",
+ G_CALLBACK (tab_width_combo_changed),
+ window);
- window->priv->language_combo = pluma_status_combo_box_new (NULL);
- gtk_widget_show (window->priv->language_combo);
- gtk_box_pack_end (GTK_BOX (window->priv->statusbar),
- window->priv->language_combo,
- FALSE,
- TRUE,
- 0);
+ window->priv->language_combo = pluma_status_combo_box_new (NULL);
+ gtk_widget_show (window->priv->language_combo);
+ gtk_box_pack_end (GTK_BOX (window->priv->statusbar),
+ window->priv->language_combo,
+ FALSE,
+ TRUE,
+ 0);
- fill_language_combo (window);
+ fill_language_combo (window);
- g_signal_connect (G_OBJECT (window->priv->language_combo),
- "changed",
- G_CALLBACK (language_combo_changed),
- window);
+ g_signal_connect (G_OBJECT (window->priv->language_combo),
+ "changed",
+ G_CALLBACK (language_combo_changed),
+ window);
- g_signal_connect_after (G_OBJECT (window->priv->statusbar),
- "show",
- G_CALLBACK (statusbar_visibility_changed),
- window);
- g_signal_connect_after (G_OBJECT (window->priv->statusbar),
- "hide",
- G_CALLBACK (statusbar_visibility_changed),
- window);
+ g_signal_connect_after (G_OBJECT (window->priv->statusbar),
+ "show",
+ G_CALLBACK (statusbar_visibility_changed),
+ window);
+ g_signal_connect_after (G_OBJECT (window->priv->statusbar),
+ "hide",
+ G_CALLBACK (statusbar_visibility_changed),
+ window);
- set_statusbar_style (window, NULL);
+ set_statusbar_style (window, NULL);
}
static PlumaWindow *
clone_window (PlumaWindow *origin)
{
- PlumaWindow *window;
- GdkScreen *screen;
- PlumaApp *app;
- gint panel_page;
+ PlumaWindow *window;
+ GdkScreen *screen;
+ PlumaApp *app;
+ gint panel_page;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- app = pluma_app_get_default ();
+ app = pluma_app_get_default ();
- screen = gtk_window_get_screen (GTK_WINDOW (origin));
- window = pluma_app_create_window (app, screen);
+ screen = gtk_window_get_screen (GTK_WINDOW (origin));
+ window = pluma_app_create_window (app, screen);
- if ((origin->priv->window_state & GDK_WINDOW_STATE_MAXIMIZED) != 0)
- {
- gint w, h;
+ if ((origin->priv->window_state & GDK_WINDOW_STATE_MAXIMIZED) != 0)
+ {
+ gint w, h;
- _pluma_window_get_default_size (&w, &h);
- gtk_window_set_default_size (GTK_WINDOW (window), w, h);
- gtk_window_maximize (GTK_WINDOW (window));
- }
- else
- {
- gtk_window_set_default_size (GTK_WINDOW (window),
- origin->priv->width,
- origin->priv->height);
+ _pluma_window_get_default_size (&w, &h);
+ gtk_window_set_default_size (GTK_WINDOW (window), w, h);
+ gtk_window_maximize (GTK_WINDOW (window));
+ }
+ else
+ {
+ gtk_window_set_default_size (GTK_WINDOW (window),
+ origin->priv->width,
+ origin->priv->height);
- gtk_window_unmaximize (GTK_WINDOW (window));
- }
+ gtk_window_unmaximize (GTK_WINDOW (window));
+ }
- if ((origin->priv->window_state & GDK_WINDOW_STATE_STICKY ) != 0)
- gtk_window_stick (GTK_WINDOW (window));
- else
- gtk_window_unstick (GTK_WINDOW (window));
+ if ((origin->priv->window_state & GDK_WINDOW_STATE_STICKY ) != 0)
+ gtk_window_stick (GTK_WINDOW (window));
+ else
+ gtk_window_unstick (GTK_WINDOW (window));
- /* set the panes size, the paned position will be set when
- * they are mapped */
- window->priv->side_panel_size = origin->priv->side_panel_size;
- window->priv->bottom_panel_size = origin->priv->bottom_panel_size;
+ /* set the panes size, the paned position will be set when
+ * they are mapped */
+ window->priv->side_panel_size = origin->priv->side_panel_size;
+ window->priv->bottom_panel_size = origin->priv->bottom_panel_size;
- panel_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (origin->priv->side_panel));
- _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->side_panel),
- panel_page);
+ panel_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (origin->priv->side_panel));
+ _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->side_panel), panel_page);
- panel_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (origin->priv->bottom_panel));
- _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->bottom_panel),
- panel_page);
+ panel_page = _pluma_panel_get_active_item_id (PLUMA_PANEL (origin->priv->bottom_panel));
+ _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->bottom_panel), panel_page);
- if (gtk_widget_get_visible (origin->priv->side_panel))
- gtk_widget_show (window->priv->side_panel);
- else
- gtk_widget_hide (window->priv->side_panel);
+ if (gtk_widget_get_visible (origin->priv->side_panel))
+ gtk_widget_show (window->priv->side_panel);
+ else
+ gtk_widget_hide (window->priv->side_panel);
- if (gtk_widget_get_visible (origin->priv->bottom_panel))
- gtk_widget_show (window->priv->bottom_panel);
- else
- gtk_widget_hide (window->priv->bottom_panel);
+ if (gtk_widget_get_visible (origin->priv->bottom_panel))
+ gtk_widget_show (window->priv->bottom_panel);
+ else
+ gtk_widget_hide (window->priv->bottom_panel);
- set_statusbar_style (window, origin);
- set_toolbar_style (window, origin);
+ set_statusbar_style (window, origin);
+ set_toolbar_style (window, origin);
- return window;
+ return window;
}
static void
update_cursor_position_statusbar (GtkTextBuffer *buffer,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gint row, col;
- GtkTextIter iter;
- PlumaView *view;
+ gint row, col;
+ GtkTextIter iter;
+ PlumaView *view;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- if (buffer != GTK_TEXT_BUFFER (pluma_window_get_active_document (window)))
- return;
+ if (buffer != GTK_TEXT_BUFFER (pluma_window_get_active_document (window)))
+ return;
- view = pluma_window_get_active_view (window);
+ view = pluma_window_get_active_view (window);
- gtk_text_buffer_get_iter_at_mark (buffer,
- &iter,
- gtk_text_buffer_get_insert (buffer));
+ gtk_text_buffer_get_iter_at_mark (buffer,
+ &iter,
+ gtk_text_buffer_get_insert (buffer));
- row = gtk_text_iter_get_line (&iter);
+ row = gtk_text_iter_get_line (&iter);
- col = gtk_source_view_get_visual_column (GTK_SOURCE_VIEW(view), &iter);
+ col = gtk_source_view_get_visual_column (GTK_SOURCE_VIEW(view), &iter);
- pluma_statusbar_set_cursor_position (
- PLUMA_STATUSBAR (window->priv->statusbar),
- row + 1,
- col + 1);
+ pluma_statusbar_set_cursor_position (PLUMA_STATUSBAR (window->priv->statusbar),
+ row + 1,
+ col + 1);
}
static void
update_overwrite_mode_statusbar (GtkTextView *view,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- if (view != GTK_TEXT_VIEW (pluma_window_get_active_view (window)))
- return;
+ if (view != GTK_TEXT_VIEW (pluma_window_get_active_view (window)))
+ return;
- /* Note that we have to use !gtk_text_view_get_overwrite since we
- are in the in the signal handler of "toggle overwrite" that is
- G_SIGNAL_RUN_LAST
- */
- pluma_statusbar_set_overwrite (
- PLUMA_STATUSBAR (window->priv->statusbar),
- !gtk_text_view_get_overwrite (view));
+ /* Note that we have to use !gtk_text_view_get_overwrite since we
+ are in the in the signal handler of "toggle overwrite" that is
+ G_SIGNAL_RUN_LAST
+ */
+ pluma_statusbar_set_overwrite (PLUMA_STATUSBAR (window->priv->statusbar),
+ !gtk_text_view_get_overwrite (view));
}
#define MAX_TITLE_LENGTH 100
@@ -2183,1012 +2170,999 @@ update_overwrite_mode_statusbar (GtkTextView *view,
static void
set_title (PlumaWindow *window)
{
- PlumaDocument *doc = NULL;
- gchar *name;
- gchar *dirname = NULL;
- gchar *title = NULL;
- gint len;
- GtkAction *action;
-
- if (window->priv->active_tab == NULL)
- {
- gtk_window_set_title (GTK_WINDOW (window), "Pluma");
- return;
- }
-
- doc = pluma_tab_get_document (window->priv->active_tab);
- g_return_if_fail (doc != NULL);
-
- name = pluma_document_get_short_name_for_display (doc);
-
- len = g_utf8_strlen (name, -1);
-
- /* if the name is awfully long, truncate it and be done with it,
- * otherwise also show the directory (ellipsized if needed)
- */
- if (len > MAX_TITLE_LENGTH)
- {
- gchar *tmp;
-
- tmp = pluma_utils_str_middle_truncate (name,
- MAX_TITLE_LENGTH);
- g_free (name);
- name = tmp;
- }
- else
- {
- GFile *file;
-
- file = pluma_document_get_location (doc);
- if (file != NULL)
- {
- gchar *str;
-
- str = pluma_utils_location_get_dirname_for_display (file);
- g_object_unref (file);
-
- /* use the remaining space for the dir, but use a min of 20 chars
- * so that we do not end up with a dirname like "(a...b)".
- * This means that in the worst case when the filename is long 99
- * we have a title long 99 + 20, but I think it's a rare enough
- * case to be acceptable. It's justa darn title afterall :)
- */
- dirname = pluma_utils_str_middle_truncate (str,
- MAX (20, MAX_TITLE_LENGTH - len));
- g_free (str);
- }
- }
-
- if (gtk_text_buffer_get_modified (GTK_TEXT_BUFFER (doc)))
- {
- gchar *tmp_name;
-
- tmp_name = g_strdup_printf ("*%s", name);
- g_free (name);
-
- name = tmp_name;
- cansave = TRUE;
- }
- else
- cansave = FALSE;
-
- if (pluma_document_get_readonly (doc))
- {
- if (dirname != NULL)
- title = g_strdup_printf ("%s [%s] (%s) - Pluma",
- name,
- _("Read-Only"),
- dirname);
- else
- title = g_strdup_printf ("%s [%s] - Pluma",
- name,
- _("Read-Only"));
- }
- else
- {
- if (dirname != NULL)
- title = g_strdup_printf ("%s (%s) - Pluma",
- name,
- dirname);
- else
- title = g_strdup_printf ("%s - Pluma",
- name);
- }
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileSave");
- gtk_action_set_sensitive (action, cansave);
-
- gtk_window_set_title (GTK_WINDOW (window), title);
-
- g_free (dirname);
- g_free (name);
- g_free (title);
+ PlumaDocument *doc = NULL;
+ gchar *name;
+ gchar *dirname = NULL;
+ gchar *title = NULL;
+ gint len;
+ GtkAction *action;
+
+ if (window->priv->active_tab == NULL)
+ {
+ gtk_window_set_title (GTK_WINDOW (window), "Pluma");
+ return;
+ }
+
+ doc = pluma_tab_get_document (window->priv->active_tab);
+ g_return_if_fail (doc != NULL);
+
+ name = pluma_document_get_short_name_for_display (doc);
+
+ len = g_utf8_strlen (name, -1);
+
+ /* if the name is awfully long, truncate it and be done with it,
+ * otherwise also show the directory (ellipsized if needed)
+ */
+ if (len > MAX_TITLE_LENGTH)
+ {
+ gchar *tmp;
+
+ tmp = pluma_utils_str_middle_truncate (name, MAX_TITLE_LENGTH);
+ g_free (name);
+ name = tmp;
+ }
+ else
+ {
+ GFile *file;
+
+ file = pluma_document_get_location (doc);
+ if (file != NULL)
+ {
+ gchar *str;
+
+ str = pluma_utils_location_get_dirname_for_display (file);
+ g_object_unref (file);
+
+ /* use the remaining space for the dir, but use a min of 20 chars
+ * so that we do not end up with a dirname like "(a...b)".
+ * This means that in the worst case when the filename is long 99
+ * we have a title long 99 + 20, but I think it's a rare enough
+ * case to be acceptable. It's justa darn title afterall :)
+ */
+ dirname = pluma_utils_str_middle_truncate (str, MAX (20, MAX_TITLE_LENGTH - len));
+ g_free (str);
+ }
+ }
+
+ if (gtk_text_buffer_get_modified (GTK_TEXT_BUFFER (doc)))
+ {
+ gchar *tmp_name;
+
+ tmp_name = g_strdup_printf ("*%s", name);
+ g_free (name);
+
+ name = tmp_name;
+ cansave = TRUE;
+ }
+ else
+ cansave = FALSE;
+
+ if (pluma_document_get_readonly (doc))
+ {
+ if (dirname != NULL)
+ title = g_strdup_printf ("%s [%s] (%s) - Pluma",
+ name,
+ _("Read-Only"),
+ dirname);
+ else
+ title = g_strdup_printf ("%s [%s] - Pluma",
+ name,
+ _("Read-Only"));
+ }
+ else
+ {
+ if (dirname != NULL)
+ title = g_strdup_printf ("%s (%s) - Pluma",
+ name,
+ dirname);
+ else
+ title = g_strdup_printf ("%s - Pluma",
+ name);
+ }
+
+ action = gtk_action_group_get_action (window->priv->action_group, "FileSave");
+ gtk_action_set_sensitive (action, cansave);
+
+ gtk_window_set_title (GTK_WINDOW (window), title);
+
+ g_free (dirname);
+ g_free (name);
+ g_free (title);
}
#undef MAX_TITLE_LENGTH
static void
set_tab_width_item_blocked (PlumaWindow *window,
- GtkMenuItem *item)
+ GtkMenuItem *item)
{
- g_signal_handlers_block_by_func (window->priv->tab_width_combo,
- tab_width_combo_changed,
- window);
+ g_signal_handlers_block_by_func (window->priv->tab_width_combo,
+ tab_width_combo_changed,
+ window);
- pluma_status_combo_box_set_item (PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo),
- item);
+ pluma_status_combo_box_set_item (PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo),
+ item);
- g_signal_handlers_unblock_by_func (window->priv->tab_width_combo,
- tab_width_combo_changed,
- window);
+ g_signal_handlers_unblock_by_func (window->priv->tab_width_combo,
+ tab_width_combo_changed,
+ window);
}
static void
spaces_instead_of_tabs_changed (GObject *object,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- PlumaView *view = PLUMA_VIEW (object);
- gboolean active = gtk_source_view_get_insert_spaces_instead_of_tabs (
- GTK_SOURCE_VIEW (view));
- GList *children = pluma_status_combo_box_get_items (
- PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo));
- GtkCheckMenuItem *item;
+ PlumaView *view = PLUMA_VIEW (object);
+ gboolean active = gtk_source_view_get_insert_spaces_instead_of_tabs (GTK_SOURCE_VIEW (view));
+ GList *children = pluma_status_combo_box_get_items (PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo));
+ GtkCheckMenuItem *item;
- item = GTK_CHECK_MENU_ITEM (g_list_last (children)->data);
+ item = GTK_CHECK_MENU_ITEM (g_list_last (children)->data);
- gtk_check_menu_item_set_active (item, active);
+ gtk_check_menu_item_set_active (item, active);
- g_list_free (children);
+ g_list_free (children);
}
static void
tab_width_changed (GObject *object,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- GList *items;
- GList *item;
- PlumaStatusComboBox *combo = PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo);
- guint new_tab_width;
- gboolean found = FALSE;
+ GList *items;
+ GList *item;
+ PlumaStatusComboBox *combo = PLUMA_STATUS_COMBO_BOX (window->priv->tab_width_combo);
+ guint new_tab_width;
+ gboolean found = FALSE;
- items = pluma_status_combo_box_get_items (combo);
+ items = pluma_status_combo_box_get_items (combo);
- new_tab_width = gtk_source_view_get_tab_width (GTK_SOURCE_VIEW (object));
+ new_tab_width = gtk_source_view_get_tab_width (GTK_SOURCE_VIEW (object));
- for (item = items; item; item = item->next)
- {
- guint tab_width = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item->data), TAB_WIDTH_DATA));
+ for (item = items; item; item = item->next)
+ {
+ guint tab_width = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item->data), TAB_WIDTH_DATA));
- if (tab_width == new_tab_width)
- {
- set_tab_width_item_blocked (window, GTK_MENU_ITEM (item->data));
- found = TRUE;
- }
+ if (tab_width == new_tab_width)
+ {
+ set_tab_width_item_blocked (window, GTK_MENU_ITEM (item->data));
+ found = TRUE;
+ }
- if (GTK_IS_SEPARATOR_MENU_ITEM (item->next->data))
- {
- if (!found)
- {
- /* Set for the last item the custom thing */
- gchar *text;
+ if (GTK_IS_SEPARATOR_MENU_ITEM (item->next->data))
+ {
+ if (!found)
+ {
+ /* Set for the last item the custom thing */
+ gchar *text;
- text = g_strdup_printf ("%u", new_tab_width);
- pluma_status_combo_box_set_item_text (combo,
- GTK_MENU_ITEM (item->data),
- text);
+ text = g_strdup_printf ("%u", new_tab_width);
+ pluma_status_combo_box_set_item_text (combo,
+ GTK_MENU_ITEM (item->data),
+ text);
- gtk_label_set_text (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item->data))),
- text);
+ gtk_label_set_text (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item->data))),
+ text);
- set_tab_width_item_blocked (window, GTK_MENU_ITEM (item->data));
- gtk_widget_show (GTK_WIDGET (item->data));
- }
- else
- {
- gtk_widget_hide (GTK_WIDGET (item->data));
- }
+ set_tab_width_item_blocked (window, GTK_MENU_ITEM (item->data));
+ gtk_widget_show (GTK_WIDGET (item->data));
+ }
+ else
+ {
+ gtk_widget_hide (GTK_WIDGET (item->data));
+ }
- break;
- }
- }
+ break;
+ }
+ }
- g_list_free (items);
+ g_list_free (items);
}
static void
language_changed (GObject *object,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- GList *items;
- GList *item;
- PlumaStatusComboBox *combo = PLUMA_STATUS_COMBO_BOX (window->priv->language_combo);
- GtkSourceLanguage *new_language;
- const gchar *new_id;
+ GList *items;
+ GList *item;
+ PlumaStatusComboBox *combo = PLUMA_STATUS_COMBO_BOX (window->priv->language_combo);
+ GtkSourceLanguage *new_language;
+ const gchar *new_id;
- items = pluma_status_combo_box_get_items (combo);
+ items = pluma_status_combo_box_get_items (combo);
- new_language = gtk_source_buffer_get_language (GTK_SOURCE_BUFFER (object));
+ new_language = gtk_source_buffer_get_language (GTK_SOURCE_BUFFER (object));
- if (new_language)
- new_id = gtk_source_language_get_id (new_language);
- else
- new_id = NULL;
+ if (new_language)
+ new_id = gtk_source_language_get_id (new_language);
+ else
+ new_id = NULL;
- for (item = items; item; item = item->next)
- {
- GtkSourceLanguage *lang = g_object_get_data (G_OBJECT (item->data), LANGUAGE_DATA);
+ for (item = items; item; item = item->next)
+ {
+ GtkSourceLanguage *lang = g_object_get_data (G_OBJECT (item->data), LANGUAGE_DATA);
- if ((new_id == NULL && lang == NULL) ||
- (new_id != NULL && lang != NULL && strcmp (gtk_source_language_get_id (lang),
- new_id) == 0))
- {
- g_signal_handlers_block_by_func (window->priv->language_combo,
- language_combo_changed,
- window);
+ if ((new_id == NULL && lang == NULL) ||
+ (new_id != NULL && lang != NULL && strcmp (gtk_source_language_get_id (lang), new_id) == 0))
+ {
+ g_signal_handlers_block_by_func (window->priv->language_combo,
+ language_combo_changed,
+ window);
- pluma_status_combo_box_set_item (PLUMA_STATUS_COMBO_BOX (window->priv->language_combo),
- GTK_MENU_ITEM (item->data));
+ pluma_status_combo_box_set_item (PLUMA_STATUS_COMBO_BOX (window->priv->language_combo),
+ GTK_MENU_ITEM (item->data));
- g_signal_handlers_unblock_by_func (window->priv->language_combo,
- language_combo_changed,
- window);
- }
- }
+ g_signal_handlers_unblock_by_func (window->priv->language_combo,
+ language_combo_changed,
+ window);
+ }
+ }
- g_list_free (items);
+ g_list_free (items);
}
static void
notebook_switch_page (GtkNotebook *book,
- GtkWidget *pg,
- gint page_num,
- PlumaWindow *window)
-{
- PlumaView *view;
- PlumaTab *tab;
- GtkAction *action;
- gchar *action_name;
-
- /* CHECK: I don't know why but it seems notebook_switch_page is called
- two times every time the user change the active tab */
-
- tab = PLUMA_TAB (gtk_notebook_get_nth_page (book, page_num));
- if (tab == window->priv->active_tab)
- return;
-
- if (window->priv->active_tab)
- {
- if (window->priv->tab_width_id)
- {
- g_signal_handler_disconnect (pluma_tab_get_view (window->priv->active_tab),
- window->priv->tab_width_id);
-
- window->priv->tab_width_id = 0;
- }
-
- if (window->priv->spaces_instead_of_tabs_id)
- {
- g_signal_handler_disconnect (pluma_tab_get_view (window->priv->active_tab),
- window->priv->spaces_instead_of_tabs_id);
-
- window->priv->spaces_instead_of_tabs_id = 0;
- }
- }
-
- /* set the active tab */
- window->priv->active_tab = tab;
-
- set_title (window);
- set_sensitivity_according_to_tab (window, tab);
-
- /* activate the right item in the documents menu */
- action_name = g_strdup_printf ("Tab_%d", page_num);
- action = gtk_action_group_get_action (window->priv->documents_list_action_group,
- action_name);
-
- /* sometimes the action doesn't exist yet, and the proper action
- * is set active during the documents list menu creation
- * CHECK: would it be nicer if active_tab was a property and we monitored the notify signal?
- */
- if (action != NULL)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
-
- g_free (action_name);
-
- /* update the syntax menu */
- update_languages_menu (window);
-
- view = pluma_tab_get_view (tab);
-
- /* sync the statusbar */
- update_cursor_position_statusbar (GTK_TEXT_BUFFER (pluma_tab_get_document (tab)),
- window);
- pluma_statusbar_set_overwrite (PLUMA_STATUSBAR (window->priv->statusbar),
- gtk_text_view_get_overwrite (GTK_TEXT_VIEW (view)));
-
- gtk_widget_show (window->priv->tab_width_combo);
- gtk_widget_show (window->priv->language_combo);
-
- window->priv->tab_width_id = g_signal_connect (view,
- "notify::tab-width",
- G_CALLBACK (tab_width_changed),
- window);
- window->priv->spaces_instead_of_tabs_id = g_signal_connect (view,
- "notify::insert-spaces-instead-of-tabs",
- G_CALLBACK (spaces_instead_of_tabs_changed),
- window);
-
- window->priv->language_changed_id = g_signal_connect (pluma_tab_get_document (tab),
- "notify::language",
- G_CALLBACK (language_changed),
- window);
-
- /* call it for the first time */
- tab_width_changed (G_OBJECT (view), NULL, window);
- spaces_instead_of_tabs_changed (G_OBJECT (view), NULL, window);
- language_changed (G_OBJECT (pluma_tab_get_document (tab)), NULL, window);
-
- g_signal_emit (G_OBJECT (window),
- signals[ACTIVE_TAB_CHANGED],
- 0,
- window->priv->active_tab);
+ GtkWidget *pg,
+ gint page_num,
+ PlumaWindow *window)
+{
+ PlumaView *view;
+ PlumaTab *tab;
+ GtkAction *action;
+ gchar *action_name;
+
+ /* CHECK: I don't know why but it seems notebook_switch_page is called
+ two times every time the user change the active tab */
+
+ tab = PLUMA_TAB (gtk_notebook_get_nth_page (book, page_num));
+ if (tab == window->priv->active_tab)
+ return;
+
+ if (window->priv->active_tab)
+ {
+ if (window->priv->tab_width_id)
+ {
+ g_signal_handler_disconnect (pluma_tab_get_view (window->priv->active_tab),
+ window->priv->tab_width_id);
+
+ window->priv->tab_width_id = 0;
+ }
+
+ if (window->priv->spaces_instead_of_tabs_id)
+ {
+ g_signal_handler_disconnect (pluma_tab_get_view (window->priv->active_tab),
+ window->priv->spaces_instead_of_tabs_id);
+
+ window->priv->spaces_instead_of_tabs_id = 0;
+ }
+ }
+
+ /* set the active tab */
+ window->priv->active_tab = tab;
+
+ set_title (window);
+ set_sensitivity_according_to_tab (window, tab);
+
+ /* activate the right item in the documents menu */
+ action_name = g_strdup_printf ("Tab_%d", page_num);
+ action = gtk_action_group_get_action (window->priv->documents_list_action_group,
+ action_name);
+
+ /* sometimes the action doesn't exist yet, and the proper action
+ * is set active during the documents list menu creation
+ * CHECK: would it be nicer if active_tab was a property and we monitored the notify signal?
+ */
+ if (action != NULL)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+
+ g_free (action_name);
+
+ /* update the syntax menu */
+ update_languages_menu (window);
+
+ view = pluma_tab_get_view (tab);
+
+ /* sync the statusbar */
+ update_cursor_position_statusbar (GTK_TEXT_BUFFER (pluma_tab_get_document (tab)),
+ window);
+ pluma_statusbar_set_overwrite (PLUMA_STATUSBAR (window->priv->statusbar),
+ gtk_text_view_get_overwrite (GTK_TEXT_VIEW (view)));
+
+ gtk_widget_show (window->priv->tab_width_combo);
+ gtk_widget_show (window->priv->language_combo);
+
+ window->priv->tab_width_id = g_signal_connect (view,
+ "notify::tab-width",
+ G_CALLBACK (tab_width_changed),
+ window);
+ window->priv->spaces_instead_of_tabs_id = g_signal_connect (view,
+ "notify::insert-spaces-instead-of-tabs",
+ G_CALLBACK (spaces_instead_of_tabs_changed),
+ window);
+
+ window->priv->language_changed_id = g_signal_connect (pluma_tab_get_document (tab),
+ "notify::language",
+ G_CALLBACK (language_changed),
+ window);
+
+ /* call it for the first time */
+ tab_width_changed (G_OBJECT (view), NULL, window);
+ spaces_instead_of_tabs_changed (G_OBJECT (view), NULL, window);
+ language_changed (G_OBJECT (pluma_tab_get_document (tab)), NULL, window);
+
+ g_signal_emit (G_OBJECT (window),
+ signals[ACTIVE_TAB_CHANGED],
+ 0,
+ window->priv->active_tab);
}
static void
set_sensitivity_according_to_window_state (PlumaWindow *window)
{
- GtkAction *action;
- PlumaLockdownMask lockdown;
-
- lockdown = pluma_app_get_lockdown (pluma_app_get_default ());
-
- /* We disable File->Quit/SaveAll/CloseAll while printing to avoid to have two
- operations (save and print/print preview) that uses the message area at
- the same time (may be we can remove this limitation in the future) */
- /* We disable File->Quit/CloseAll if state is saving since saving cannot be
- cancelled (may be we can remove this limitation in the future) */
- gtk_action_group_set_sensitive (window->priv->quit_action_group,
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
- !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileCloseAll");
- gtk_action_set_sensitive (action,
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
- !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING));
-
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileSaveAll");
- gtk_action_set_sensitive (action,
- !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING) &&
- !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK));
-
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "FileNew");
- gtk_action_set_sensitive (action,
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
-
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "FileOpen");
- gtk_action_set_sensitive (action,
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
-
- gtk_action_group_set_sensitive (window->priv->recents_action_group,
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
-
- pluma_notebook_set_close_buttons_sensitive (PLUMA_NOTEBOOK (window->priv->notebook),
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
-
- pluma_notebook_set_tab_drag_and_drop_enabled (PLUMA_NOTEBOOK (window->priv->notebook),
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
-
- if ((window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) != 0)
- {
- /* TODO: If we really care, Find could be active
- * when in SAVING_SESSION state */
-
- if (gtk_action_group_get_sensitive (window->priv->action_group))
- gtk_action_group_set_sensitive (window->priv->action_group,
- FALSE);
- if (gtk_action_group_get_sensitive (window->priv->quit_action_group))
- gtk_action_group_set_sensitive (window->priv->quit_action_group,
- FALSE);
- if (gtk_action_group_get_sensitive (window->priv->close_action_group))
- gtk_action_group_set_sensitive (window->priv->close_action_group,
- FALSE);
- }
- else
- {
- if (!gtk_action_group_get_sensitive (window->priv->action_group))
- gtk_action_group_set_sensitive (window->priv->action_group,
- window->priv->num_tabs > 0);
- if (!gtk_action_group_get_sensitive (window->priv->quit_action_group))
- gtk_action_group_set_sensitive (window->priv->quit_action_group,
- window->priv->num_tabs > 0);
- if (!gtk_action_group_get_sensitive (window->priv->close_action_group))
- {
- gtk_action_group_set_sensitive (window->priv->close_action_group,
- window->priv->num_tabs > 0);
- }
- }
+ GtkAction *action;
+ PlumaLockdownMask lockdown;
+
+ lockdown = pluma_app_get_lockdown (pluma_app_get_default ());
+
+ /* We disable File->Quit/SaveAll/CloseAll while printing to avoid to have two
+ operations (save and print/print preview) that uses the message area at
+ the same time (may be we can remove this limitation in the future) */
+ /* We disable File->Quit/CloseAll if state is saving since saving cannot be
+ cancelled (may be we can remove this limitation in the future) */
+ gtk_action_group_set_sensitive (window->priv->quit_action_group,
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
+ !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FileCloseAll");
+ gtk_action_set_sensitive (action,
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
+ !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING));
+
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FileSaveAll");
+ gtk_action_set_sensitive (action,
+ !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING) &&
+ !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK));
+
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "FileNew");
+ gtk_action_set_sensitive (action,
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
+
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "FileOpen");
+ gtk_action_set_sensitive (action,
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
+
+ gtk_action_group_set_sensitive (window->priv->recents_action_group,
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
+
+ pluma_notebook_set_close_buttons_sensitive (PLUMA_NOTEBOOK (window->priv->notebook),
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
+
+ pluma_notebook_set_tab_drag_and_drop_enabled (PLUMA_NOTEBOOK (window->priv->notebook),
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
+
+ if ((window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) != 0)
+ {
+ /* TODO: If we really care, Find could be active
+ * when in SAVING_SESSION state */
+
+ if (gtk_action_group_get_sensitive (window->priv->action_group))
+ gtk_action_group_set_sensitive (window->priv->action_group, FALSE);
+
+ if (gtk_action_group_get_sensitive (window->priv->quit_action_group))
+ gtk_action_group_set_sensitive (window->priv->quit_action_group, FALSE);
+
+ if (gtk_action_group_get_sensitive (window->priv->close_action_group))
+ gtk_action_group_set_sensitive (window->priv->close_action_group, FALSE);
+ }
+ else
+ {
+ if (!gtk_action_group_get_sensitive (window->priv->action_group))
+ gtk_action_group_set_sensitive (window->priv->action_group, window->priv->num_tabs > 0);
+
+ if (!gtk_action_group_get_sensitive (window->priv->quit_action_group))
+ gtk_action_group_set_sensitive (window->priv->quit_action_group, window->priv->num_tabs > 0);
+
+ if (!gtk_action_group_get_sensitive (window->priv->close_action_group))
+ gtk_action_group_set_sensitive (window->priv->close_action_group, window->priv->num_tabs > 0);
+ }
}
static void
update_tab_autosave (GtkWidget *widget,
- gpointer data)
+ gpointer data)
{
- PlumaTab *tab = PLUMA_TAB (widget);
- gboolean *enabled = (gboolean *) data;
+ PlumaTab *tab = PLUMA_TAB (widget);
+ gboolean *enabled = (gboolean *) data;
- pluma_tab_set_auto_save_enabled (tab, *enabled);
+ pluma_tab_set_auto_save_enabled (tab, *enabled);
}
void
_pluma_window_set_lockdown (PlumaWindow *window,
- PlumaLockdownMask lockdown)
+ PlumaLockdownMask lockdown)
{
- PlumaTab *tab;
- GtkAction *action;
- gboolean autosave;
+ PlumaTab *tab;
+ GtkAction *action;
+ gboolean autosave;
- /* start/stop autosave in each existing tab */
- autosave = g_settings_get_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_AUTO_SAVE);
- gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
- update_tab_autosave,
- &autosave);
+ /* start/stop autosave in each existing tab */
+ autosave = g_settings_get_boolean (window->priv->editor_settings, PLUMA_SETTINGS_AUTO_SAVE);
+ gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+ update_tab_autosave,
+ &autosave);
- /* update menues wrt the current active tab */
- tab = pluma_window_get_active_tab (window);
+ /* update menues wrt the current active tab */
+ tab = pluma_window_get_active_tab (window);
- set_sensitivity_according_to_tab (window, tab);
+ set_sensitivity_according_to_tab (window, tab);
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileSaveAll");
- gtk_action_set_sensitive (action,
- !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING) &&
- !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK));
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FileSaveAll");
+ gtk_action_set_sensitive (action,
+ !(window->priv->state & PLUMA_WINDOW_STATE_PRINTING) &&
+ !(lockdown & PLUMA_LOCKDOWN_SAVE_TO_DISK));
}
static void
analyze_tab_state (PlumaTab *tab,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- PlumaTabState ts;
+ PlumaTabState ts;
- ts = pluma_tab_get_state (tab);
+ ts = pluma_tab_get_state (tab);
- switch (ts)
- {
- case PLUMA_TAB_STATE_LOADING:
- case PLUMA_TAB_STATE_REVERTING:
- window->priv->state |= PLUMA_WINDOW_STATE_LOADING;
- break;
+ switch (ts)
+ {
+ case PLUMA_TAB_STATE_LOADING:
+ case PLUMA_TAB_STATE_REVERTING:
+ window->priv->state |= PLUMA_WINDOW_STATE_LOADING;
+ break;
- case PLUMA_TAB_STATE_SAVING:
- window->priv->state |= PLUMA_WINDOW_STATE_SAVING;
- break;
+ case PLUMA_TAB_STATE_SAVING:
+ window->priv->state |= PLUMA_WINDOW_STATE_SAVING;
+ break;
- case PLUMA_TAB_STATE_PRINTING:
- case PLUMA_TAB_STATE_PRINT_PREVIEWING:
- window->priv->state |= PLUMA_WINDOW_STATE_PRINTING;
- break;
+ case PLUMA_TAB_STATE_PRINTING:
+ case PLUMA_TAB_STATE_PRINT_PREVIEWING:
+ window->priv->state |= PLUMA_WINDOW_STATE_PRINTING;
+ break;
- case PLUMA_TAB_STATE_LOADING_ERROR:
- case PLUMA_TAB_STATE_REVERTING_ERROR:
- case PLUMA_TAB_STATE_SAVING_ERROR:
- case PLUMA_TAB_STATE_GENERIC_ERROR:
- window->priv->state |= PLUMA_WINDOW_STATE_ERROR;
- ++window->priv->num_tabs_with_error;
- default:
- /* NOP */
- break;
- }
+ case PLUMA_TAB_STATE_LOADING_ERROR:
+ case PLUMA_TAB_STATE_REVERTING_ERROR:
+ case PLUMA_TAB_STATE_SAVING_ERROR:
+ case PLUMA_TAB_STATE_GENERIC_ERROR:
+ window->priv->state |= PLUMA_WINDOW_STATE_ERROR;
+ ++window->priv->num_tabs_with_error;
+ default:
+ /* NOP */
+ break;
+ }
}
static void
update_window_state (PlumaWindow *window)
{
- PlumaWindowState old_ws;
- gint old_num_of_errors;
+ PlumaWindowState old_ws;
+ gint old_num_of_errors;
- pluma_debug_message (DEBUG_WINDOW, "Old state: %x", window->priv->state);
+ pluma_debug_message (DEBUG_WINDOW, "Old state: %x", window->priv->state);
- old_ws = window->priv->state;
- old_num_of_errors = window->priv->num_tabs_with_error;
+ old_ws = window->priv->state;
+ old_num_of_errors = window->priv->num_tabs_with_error;
- window->priv->state = old_ws & PLUMA_WINDOW_STATE_SAVING_SESSION;
+ window->priv->state = old_ws & PLUMA_WINDOW_STATE_SAVING_SESSION;
- window->priv->num_tabs_with_error = 0;
+ window->priv->num_tabs_with_error = 0;
- gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
- (GtkCallback)analyze_tab_state,
- window);
+ gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+ (GtkCallback)analyze_tab_state,
+ window);
- pluma_debug_message (DEBUG_WINDOW, "New state: %x", window->priv->state);
+ pluma_debug_message (DEBUG_WINDOW, "New state: %x", window->priv->state);
- if (old_ws != window->priv->state)
- {
- set_sensitivity_according_to_window_state (window);
+ if (old_ws != window->priv->state)
+ {
+ set_sensitivity_according_to_window_state (window);
- pluma_statusbar_set_window_state (PLUMA_STATUSBAR (window->priv->statusbar),
- window->priv->state,
- window->priv->num_tabs_with_error);
+ pluma_statusbar_set_window_state (PLUMA_STATUSBAR (window->priv->statusbar),
+ window->priv->state,
+ window->priv->num_tabs_with_error);
- g_object_notify (G_OBJECT (window), "state");
- }
- else if (old_num_of_errors != window->priv->num_tabs_with_error)
- {
- pluma_statusbar_set_window_state (PLUMA_STATUSBAR (window->priv->statusbar),
- window->priv->state,
- window->priv->num_tabs_with_error);
- }
+ g_object_notify (G_OBJECT (window), "state");
+ }
+ else if (old_num_of_errors != window->priv->num_tabs_with_error)
+ {
+ pluma_statusbar_set_window_state (PLUMA_STATUSBAR (window->priv->statusbar),
+ window->priv->state,
+ window->priv->num_tabs_with_error);
+ }
}
static void
sync_state (PlumaTab *tab,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- update_window_state (window);
+ update_window_state (window);
- if (tab != window->priv->active_tab)
- return;
+ if (tab != window->priv->active_tab)
+ return;
- set_sensitivity_according_to_tab (window, tab);
+ set_sensitivity_according_to_tab (window, tab);
- g_signal_emit (G_OBJECT (window), signals[ACTIVE_TAB_STATE_CHANGED], 0);
+ g_signal_emit (G_OBJECT (window), signals[ACTIVE_TAB_STATE_CHANGED], 0);
}
static void
sync_name (PlumaTab *tab,
- GParamSpec *pspec,
- PlumaWindow *window)
-{
- GtkAction *action;
- gchar *action_name;
- gchar *tab_name;
- gchar *escaped_name;
- gchar *tip;
- gint n;
- PlumaDocument *doc;
-
- if (tab == window->priv->active_tab)
- {
- set_title (window);
-
- doc = pluma_tab_get_document (tab);
- action = gtk_action_group_get_action (window->priv->action_group,
- "FileRevert");
- gtk_action_set_sensitive (action,
- !pluma_document_is_untitled (doc));
- }
-
- /* sync the item in the documents list menu */
- n = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->notebook),
- GTK_WIDGET (tab));
- action_name = g_strdup_printf ("Tab_%d", n);
- action = gtk_action_group_get_action (window->priv->documents_list_action_group,
- action_name);
- g_free (action_name);
- g_return_if_fail (action != NULL);
-
- tab_name = _pluma_tab_get_name (tab);
- escaped_name = pluma_utils_escape_underscores (tab_name, -1);
- tip = get_menu_tip_for_tab (tab);
-
- g_object_set (action, "label", escaped_name, NULL);
- g_object_set (action, "tooltip", tip, NULL);
-
- g_free (tab_name);
- g_free (escaped_name);
- g_free (tip);
-
- peas_extension_set_call (window->priv->extensions, "update_state");
+ GParamSpec *pspec,
+ PlumaWindow *window)
+{
+ GtkAction *action;
+ gchar *action_name;
+ gchar *tab_name;
+ gchar *escaped_name;
+ gchar *tip;
+ gint n;
+ PlumaDocument *doc;
+
+ if (tab == window->priv->active_tab)
+ {
+ set_title (window);
+
+ doc = pluma_tab_get_document (tab);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "FileRevert");
+ gtk_action_set_sensitive (action, !pluma_document_is_untitled (doc));
+ }
+
+ /* sync the item in the documents list menu */
+ n = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->notebook), GTK_WIDGET (tab));
+
+ action_name = g_strdup_printf ("Tab_%d", n);
+ action = gtk_action_group_get_action (window->priv->documents_list_action_group,
+ action_name);
+ g_free (action_name);
+ g_return_if_fail (action != NULL);
+
+ tab_name = _pluma_tab_get_name (tab);
+ escaped_name = pluma_utils_escape_underscores (tab_name, -1);
+ tip = get_menu_tip_for_tab (tab);
+
+ g_object_set (action, "label", escaped_name, NULL);
+ g_object_set (action, "tooltip", tip, NULL);
+
+ g_free (tab_name);
+ g_free (escaped_name);
+ g_free (tip);
+
+ peas_extension_set_call (window->priv->extensions, "update_state");
}
static PlumaWindow *
get_drop_window (GtkWidget *widget)
{
- GtkWidget *target_window;
+ GtkWidget *target_window;
- target_window = gtk_widget_get_toplevel (widget);
- g_return_val_if_fail (PLUMA_IS_WINDOW (target_window), NULL);
+ target_window = gtk_widget_get_toplevel (widget);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (target_window), NULL);
- if ((PLUMA_WINDOW(target_window)->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) != 0)
- return NULL;
+ if ((PLUMA_WINDOW(target_window)->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) != 0)
+ return NULL;
- return PLUMA_WINDOW (target_window);
+ return PLUMA_WINDOW (target_window);
}
static void
load_uris_from_drop (PlumaWindow *window,
- gchar **uri_list)
+ gchar **uri_list)
{
- GSList *uris = NULL;
- gint i;
+ GSList *uris = NULL;
+ gint i;
- if (uri_list == NULL)
- return;
+ if (uri_list == NULL)
+ return;
- for (i = 0; uri_list[i] != NULL; ++i)
- {
- uris = g_slist_prepend (uris, uri_list[i]);
- }
+ for (i = 0; uri_list[i] != NULL; ++i)
+ {
+ uris = g_slist_prepend (uris, uri_list[i]);
+ }
- uris = g_slist_reverse (uris);
- pluma_commands_load_uris (window,
- uris,
- NULL,
- 0);
+ uris = g_slist_reverse (uris);
+ pluma_commands_load_uris (window,
+ uris,
+ NULL,
+ 0);
- g_slist_free (uris);
+ g_slist_free (uris);
}
/* Handle drops on the PlumaWindow */
static void
-drag_data_received_cb (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint timestamp,
- gpointer data)
+drag_data_received_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint timestamp,
+ gpointer data)
{
- PlumaWindow *window;
- gchar **uri_list;
+ PlumaWindow *window;
+ gchar **uri_list;
- window = get_drop_window (widget);
+ window = get_drop_window (widget);
- if (window == NULL)
- return;
+ if (window == NULL)
+ return;
- if (info == TARGET_URI_LIST)
- {
- uri_list = pluma_utils_drop_get_uris(selection_data);
- load_uris_from_drop (window, uri_list);
- g_strfreev (uri_list);
- }
+ if (info == TARGET_URI_LIST)
+ {
+ uri_list = pluma_utils_drop_get_uris(selection_data);
+ load_uris_from_drop (window, uri_list);
+ g_strfreev (uri_list);
+ }
}
/* Handle drops on the PlumaView */
static void
drop_uris_cb (GtkWidget *widget,
- gchar **uri_list)
+ gchar **uri_list)
{
- PlumaWindow *window;
+ PlumaWindow *window;
- window = get_drop_window (widget);
+ window = get_drop_window (widget);
- if (window == NULL)
- return;
+ if (window == NULL)
+ return;
- load_uris_from_drop (window, uri_list);
+ load_uris_from_drop (window, uri_list);
}
static void
fullscreen_controls_show (PlumaWindow *window)
{
- GdkScreen *screen;
- GdkDisplay *display;
- GdkRectangle fs_rect;
- gint w, h;
+ GdkScreen *screen;
+ GdkDisplay *display;
+ GdkRectangle fs_rect;
+ gint w, h;
- screen = gtk_window_get_screen (GTK_WINDOW (window));
- display = gdk_screen_get_display (screen);
+ screen = gtk_window_get_screen (GTK_WINDOW (window));
+ display = gdk_screen_get_display (screen);
- gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,
- gtk_widget_get_window (GTK_WIDGET (window))),
- &fs_rect);
+ gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,
+ gtk_widget_get_window (GTK_WIDGET (window))),
+ &fs_rect);
- gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls), &w, &h);
+ gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls), &w, &h);
- gtk_window_resize (GTK_WINDOW (window->priv->fullscreen_controls),
- fs_rect.width, h);
+ gtk_window_resize (GTK_WINDOW (window->priv->fullscreen_controls),
+ fs_rect.width, h);
- gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
- fs_rect.x, fs_rect.y - h + 1);
+ gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
+ fs_rect.x, fs_rect.y - h + 1);
- gtk_widget_show_all (window->priv->fullscreen_controls);
+ gtk_widget_show_all (window->priv->fullscreen_controls);
}
static gboolean
run_fullscreen_animation (gpointer data)
{
- PlumaWindow *window = PLUMA_WINDOW (data);
- GdkScreen *screen;
- GdkDisplay *display;
- GdkRectangle fs_rect;
- gint x, y;
-
- screen = gtk_window_get_screen (GTK_WINDOW (window));
- display = gdk_screen_get_display (screen);
-
- gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,
- gtk_widget_get_window (GTK_WIDGET (window))),
- &fs_rect);
-
- gtk_window_get_position (GTK_WINDOW (window->priv->fullscreen_controls),
- &x, &y);
-
- if (window->priv->fullscreen_animation_enter)
- {
- if (y == fs_rect.y)
- {
- window->priv->fullscreen_animation_timeout_id = 0;
- return FALSE;
- }
- else
- {
- gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
- x, y + 1);
- return TRUE;
- }
- }
- else
- {
- gint w, h;
-
- gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls),
- &w, &h);
-
- if (y == fs_rect.y - h + 1)
- {
- window->priv->fullscreen_animation_timeout_id = 0;
- return FALSE;
- }
- else
- {
- gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
- x, y - 1);
- return TRUE;
- }
- }
+ PlumaWindow *window = PLUMA_WINDOW (data);
+ GdkScreen *screen;
+ GdkDisplay *display;
+ GdkRectangle fs_rect;
+ gint x, y;
+
+ screen = gtk_window_get_screen (GTK_WINDOW (window));
+ display = gdk_screen_get_display (screen);
+
+ gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,
+ gtk_widget_get_window (GTK_WIDGET (window))),
+ &fs_rect);
+
+ gtk_window_get_position (GTK_WINDOW (window->priv->fullscreen_controls),
+ &x,
+ &y);
+
+ if (window->priv->fullscreen_animation_enter)
+ {
+ if (y == fs_rect.y)
+ {
+ window->priv->fullscreen_animation_timeout_id = 0;
+ return FALSE;
+ }
+ else
+ {
+ gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
+ x, y + 1);
+ return TRUE;
+ }
+ }
+ else
+ {
+ gint w, h;
+
+ gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls),
+ &w, &h);
+
+ if (y == fs_rect.y - h + 1)
+ {
+ window->priv->fullscreen_animation_timeout_id = 0;
+ return FALSE;
+ }
+ else
+ {
+ gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
+ x, y - 1);
+ return TRUE;
+ }
+ }
}
static void
show_hide_fullscreen_toolbar (PlumaWindow *window,
- gboolean show,
- gint height)
-{
- GtkSettings *settings;
- gboolean enable_animations;
-
- settings = gtk_widget_get_settings (GTK_WIDGET (window));
- g_object_get (G_OBJECT (settings),
- "gtk-enable-animations",
- &enable_animations,
- NULL);
-
- if (enable_animations)
- {
- window->priv->fullscreen_animation_enter = show;
-
- if (window->priv->fullscreen_animation_timeout_id == 0)
- {
- window->priv->fullscreen_animation_timeout_id =
- g_timeout_add (FULLSCREEN_ANIMATION_SPEED,
- (GSourceFunc) run_fullscreen_animation,
- window);
- }
- }
- else
- {
- GdkRectangle fs_rect;
- GdkScreen *screen;
- GdkDisplay *display;
-
- screen = gtk_window_get_screen (GTK_WINDOW (window));
- display = gdk_screen_get_display (screen);
-
- gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,
- gtk_widget_get_window (GTK_WIDGET (window))),
- &fs_rect);
-
- if (show)
- gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
- fs_rect.x, fs_rect.y);
- else
- gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
- fs_rect.x, fs_rect.y - height + 1);
- }
+ gboolean show,
+ gint height)
+{
+ GtkSettings *settings;
+ gboolean enable_animations;
+
+ settings = gtk_widget_get_settings (GTK_WIDGET (window));
+ g_object_get (G_OBJECT (settings),
+ "gtk-enable-animations",
+ &enable_animations,
+ NULL);
+
+ if (enable_animations)
+ {
+ window->priv->fullscreen_animation_enter = show;
+
+ if (window->priv->fullscreen_animation_timeout_id == 0)
+ {
+ window->priv->fullscreen_animation_timeout_id =
+ g_timeout_add (FULLSCREEN_ANIMATION_SPEED,
+ (GSourceFunc) run_fullscreen_animation,
+ window);
+ }
+ }
+ else
+ {
+ GdkRectangle fs_rect;
+ GdkScreen *screen;
+ GdkDisplay *display;
+
+ screen = gtk_window_get_screen (GTK_WINDOW (window));
+ display = gdk_screen_get_display (screen);
+
+ gdk_monitor_get_geometry (gdk_display_get_monitor_at_window (display,
+ gtk_widget_get_window (GTK_WIDGET (window))),
+ &fs_rect);
+
+ if (show)
+ gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
+ fs_rect.x, fs_rect.y);
+ else
+ gtk_window_move (GTK_WINDOW (window->priv->fullscreen_controls),
+ fs_rect.x, fs_rect.y - height + 1);
+ }
}
static gboolean
-on_fullscreen_controls_enter_notify_event (GtkWidget *widget,
- GdkEventCrossing *event,
- PlumaWindow *window)
+on_fullscreen_controls_enter_notify_event (GtkWidget *widget,
+ GdkEventCrossing *event,
+ PlumaWindow *window)
{
- show_hide_fullscreen_toolbar (window, TRUE, 0);
+ show_hide_fullscreen_toolbar (window, TRUE, 0);
- return FALSE;
+ return FALSE;
}
static gboolean
-on_fullscreen_controls_leave_notify_event (GtkWidget *widget,
- GdkEventCrossing *event,
- PlumaWindow *window)
+on_fullscreen_controls_leave_notify_event (GtkWidget *widget,
+ GdkEventCrossing *event,
+ PlumaWindow *window)
{
- GdkDevice *device;
- gint w, h;
- gint x, y;
+ GdkDevice *device;
+ gint w, h;
+ gint x, y;
- device = gdk_event_get_device ((GdkEvent *)event);
+ device = gdk_event_get_device ((GdkEvent *)event);
- gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls), &w, &h);
- gdk_device_get_position (device, NULL, &x, &y);
+ gtk_window_get_size (GTK_WINDOW (window->priv->fullscreen_controls), &w, &h);
+ gdk_device_get_position (device, NULL, &x, &y);
- /* gtk seems to emit leave notify when clicking on tool items,
- * work around it by checking the coordinates
- */
- if (y >= h)
- {
- show_hide_fullscreen_toolbar (window, FALSE, h);
- }
+ /* gtk seems to emit leave notify when clicking on tool items,
+ * work around it by checking the coordinates
+ */
+ if (y >= h)
+ {
+ show_hide_fullscreen_toolbar (window, FALSE, h);
+ }
- return FALSE;
+ return FALSE;
}
static void
fullscreen_controls_build (PlumaWindow *window)
{
- PlumaWindowPrivate *priv = window->priv;
- GtkWidget *toolbar;
- GtkAction *action;
+ PlumaWindowPrivate *priv = window->priv;
+ GtkWidget *toolbar;
+ GtkAction *action;
- if (priv->fullscreen_controls != NULL)
- return;
+ if (priv->fullscreen_controls != NULL)
+ return;
- priv->fullscreen_controls = gtk_window_new (GTK_WINDOW_POPUP);
+ priv->fullscreen_controls = gtk_window_new (GTK_WINDOW_POPUP);
- gtk_window_set_transient_for (GTK_WINDOW (priv->fullscreen_controls),
- &window->window);
+ gtk_window_set_transient_for (GTK_WINDOW (priv->fullscreen_controls),
+ &window->window);
- /* popup toolbar */
- toolbar = gtk_ui_manager_get_widget (priv->manager, "/FullscreenToolBar");
- gtk_container_add (GTK_CONTAINER (priv->fullscreen_controls),
- toolbar);
+ /* popup toolbar */
+ toolbar = gtk_ui_manager_get_widget (priv->manager, "/FullscreenToolBar");
+ gtk_container_add (GTK_CONTAINER (priv->fullscreen_controls), toolbar);
- action = gtk_action_group_get_action (priv->always_sensitive_action_group,
- "LeaveFullscreen");
- g_object_set (action, "is-important", TRUE, NULL);
+ action = gtk_action_group_get_action (priv->always_sensitive_action_group,
+ "LeaveFullscreen");
+ g_object_set (action, "is-important", TRUE, NULL);
- setup_toolbar_open_button (window, toolbar);
+ setup_toolbar_open_button (window, toolbar);
- gtk_container_foreach (GTK_CONTAINER (toolbar),
- (GtkCallback)set_non_homogeneus,
- NULL);
+ gtk_container_foreach (GTK_CONTAINER (toolbar),
+ (GtkCallback)set_non_homogeneus,
+ NULL);
- /* Set the toolbar style */
- gtk_toolbar_set_style (GTK_TOOLBAR (toolbar),
- GTK_TOOLBAR_BOTH_HORIZ);
+ /* Set the toolbar style */
+ gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ);
- g_signal_connect (priv->fullscreen_controls, "enter-notify-event",
- G_CALLBACK (on_fullscreen_controls_enter_notify_event),
- window);
- g_signal_connect (priv->fullscreen_controls, "leave-notify-event",
- G_CALLBACK (on_fullscreen_controls_leave_notify_event),
- window);
+ g_signal_connect (priv->fullscreen_controls, "enter-notify-event",
+ G_CALLBACK (on_fullscreen_controls_enter_notify_event),
+ window);
+ g_signal_connect (priv->fullscreen_controls, "leave-notify-event",
+ G_CALLBACK (on_fullscreen_controls_leave_notify_event),
+ window);
}
static void
can_search_again (PlumaDocument *doc,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- gboolean sensitive;
- GtkAction *action;
+ gboolean sensitive;
+ GtkAction *action;
- if (doc != pluma_window_get_active_document (window))
- return;
+ if (doc != pluma_window_get_active_document (window))
+ return;
- sensitive = pluma_document_get_can_search_again (doc);
+ sensitive = pluma_document_get_can_search_again (doc);
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchFindNext");
- gtk_action_set_sensitive (action, sensitive);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchFindNext");
+ gtk_action_set_sensitive (action, sensitive);
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchFindPrevious");
- gtk_action_set_sensitive (action, sensitive);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchFindPrevious");
+ gtk_action_set_sensitive (action, sensitive);
- action = gtk_action_group_get_action (window->priv->action_group,
- "SearchClearHighlight");
- gtk_action_set_sensitive (action, sensitive);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "SearchClearHighlight");
+ gtk_action_set_sensitive (action, sensitive);
}
static void
can_undo (PlumaDocument *doc,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- GtkAction *action;
- gboolean sensitive;
+ GtkAction *action;
+ gboolean sensitive;
- sensitive = gtk_source_buffer_can_undo (GTK_SOURCE_BUFFER (doc));
+ sensitive = gtk_source_buffer_can_undo (GTK_SOURCE_BUFFER (doc));
- if (doc != pluma_window_get_active_document (window))
- return;
+ if (doc != pluma_window_get_active_document (window))
+ return;
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditUndo");
- gtk_action_set_sensitive (action, sensitive);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditUndo");
+ gtk_action_set_sensitive (action, sensitive);
}
static void
can_redo (PlumaDocument *doc,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- GtkAction *action;
- gboolean sensitive;
+ GtkAction *action;
+ gboolean sensitive;
- sensitive = gtk_source_buffer_can_redo (GTK_SOURCE_BUFFER (doc));
+ sensitive = gtk_source_buffer_can_redo (GTK_SOURCE_BUFFER (doc));
- if (doc != pluma_window_get_active_document (window))
- return;
+ if (doc != pluma_window_get_active_document (window))
+ return;
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditRedo");
- gtk_action_set_sensitive (action, sensitive);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditRedo");
+ gtk_action_set_sensitive (action, sensitive);
}
static void
selection_changed (PlumaDocument *doc,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- PlumaTab *tab;
- PlumaView *view;
- GtkAction *action;
- PlumaTabState state;
- gboolean state_normal;
- gboolean editable;
+ PlumaTab *tab;
+ PlumaView *view;
+ GtkAction *action;
+ PlumaTabState state;
+ gboolean state_normal;
+ gboolean editable;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- if (doc != pluma_window_get_active_document (window))
- return;
+ if (doc != pluma_window_get_active_document (window))
+ return;
- tab = pluma_tab_get_from_document (doc);
- state = pluma_tab_get_state (tab);
- state_normal = (state == PLUMA_TAB_STATE_NORMAL);
+ tab = pluma_tab_get_from_document (doc);
+ state = pluma_tab_get_state (tab);
+ state_normal = (state == PLUMA_TAB_STATE_NORMAL);
- view = pluma_tab_get_view (tab);
- editable = gtk_text_view_get_editable (GTK_TEXT_VIEW (view));
+ view = pluma_tab_get_view (tab);
+ editable = gtk_text_view_get_editable (GTK_TEXT_VIEW (view));
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditCut");
- gtk_action_set_sensitive (action,
- state_normal &&
- editable &&
- gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditCut");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ editable &&
+ gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditCopy");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &&
- gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditCopy");
+ gtk_action_set_sensitive (action,
+ (state_normal ||
+ state == PLUMA_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION) &&
+ gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
- action = gtk_action_group_get_action (window->priv->action_group,
- "EditDelete");
- gtk_action_set_sensitive (action,
- state_normal &&
- editable &&
- gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "EditDelete");
+ gtk_action_set_sensitive (action,
+ state_normal &&
+ editable &&
+ gtk_text_buffer_get_has_selection (GTK_TEXT_BUFFER (doc)));
- peas_extension_set_call (window->priv->extensions, "update_state");
+ peas_extension_set_call (window->priv->extensions, "update_state");
}
static void
sync_languages_menu (PlumaDocument *doc,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- update_languages_menu (window);
- peas_extension_set_call (window->priv->extensions, "update_state");
+ update_languages_menu (window);
+ peas_extension_set_call (window->priv->extensions, "update_state");
}
static void
readonly_changed (PlumaDocument *doc,
- GParamSpec *pspec,
- PlumaWindow *window)
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- set_sensitivity_according_to_tab (window, window->priv->active_tab);
+ set_sensitivity_according_to_tab (window, window->priv->active_tab);
- sync_name (window->priv->active_tab, NULL, window);
+ sync_name (window->priv->active_tab, NULL, window);
- peas_extension_set_call (window->priv->extensions, "update_state");
+ peas_extension_set_call (window->priv->extensions, "update_state");
}
static void
@@ -3196,327 +3170,323 @@ editable_changed (PlumaView *view,
GParamSpec *arg1,
PlumaWindow *window)
{
- peas_extension_set_call (window->priv->extensions, "update_state");
+ peas_extension_set_call (window->priv->extensions, "update_state");
}
static void
update_sensitivity_according_to_open_tabs (PlumaWindow *window)
{
- GtkAction *action;
+ GtkAction *action;
- /* Set sensitivity */
- gtk_action_group_set_sensitive (window->priv->action_group,
- window->priv->num_tabs != 0);
+ /* Set sensitivity */
+ gtk_action_group_set_sensitive (window->priv->action_group,
+ window->priv->num_tabs != 0);
- action = gtk_action_group_get_action (window->priv->action_group,
- "DocumentsMoveToNewWindow");
- gtk_action_set_sensitive (action,
- window->priv->num_tabs > 1);
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "DocumentsMoveToNewWindow");
+ gtk_action_set_sensitive (action, window->priv->num_tabs > 1);
- gtk_action_group_set_sensitive (window->priv->close_action_group,
- window->priv->num_tabs != 0);
+ gtk_action_group_set_sensitive (window->priv->close_action_group,
+ window->priv->num_tabs != 0);
}
static void
notebook_tab_added (PlumaNotebook *notebook,
- PlumaTab *tab,
- PlumaWindow *window)
-{
- PlumaView *view;
- PlumaDocument *doc;
-
- pluma_debug (DEBUG_WINDOW);
-
- g_return_if_fail ((window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) == 0);
-
- ++window->priv->num_tabs;
-
- update_sensitivity_according_to_open_tabs (window);
-
- view = pluma_tab_get_view (tab);
- doc = pluma_tab_get_document (tab);
-
- /* IMPORTANT: remember to disconnect the signal in notebook_tab_removed
- * if a new signal is connected here */
-
- g_signal_connect (tab,
- "notify::name",
- G_CALLBACK (sync_name),
- window);
- g_signal_connect (tab,
- "notify::state",
- G_CALLBACK (sync_state),
- window);
-
- g_signal_connect (doc,
- "cursor-moved",
- G_CALLBACK (update_cursor_position_statusbar),
- window);
- g_signal_connect (doc,
- "notify::can-search-again",
- G_CALLBACK (can_search_again),
- window);
- g_signal_connect (doc,
- "notify::can-undo",
- G_CALLBACK (can_undo),
- window);
- g_signal_connect (doc,
- "notify::can-redo",
- G_CALLBACK (can_redo),
- window);
- g_signal_connect (doc,
- "notify::has-selection",
- G_CALLBACK (selection_changed),
- window);
- g_signal_connect (doc,
- "notify::language",
- G_CALLBACK (sync_languages_menu),
- window);
- g_signal_connect (doc,
- "notify::read-only",
- G_CALLBACK (readonly_changed),
- window);
- g_signal_connect (view,
- "toggle_overwrite",
- G_CALLBACK (update_overwrite_mode_statusbar),
- window);
- g_signal_connect (view,
- "notify::editable",
- G_CALLBACK (editable_changed),
- window);
-
- update_documents_list_menu (window);
-
- g_signal_connect (view,
- "drop_uris",
- G_CALLBACK (drop_uris_cb),
- NULL);
-
- update_window_state (window);
-
- g_signal_emit (G_OBJECT (window), signals[TAB_ADDED], 0, tab);
+ PlumaTab *tab,
+ PlumaWindow *window)
+{
+ PlumaView *view;
+ PlumaDocument *doc;
+
+ pluma_debug (DEBUG_WINDOW);
+
+ g_return_if_fail ((window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) == 0);
+
+ ++window->priv->num_tabs;
+
+ update_sensitivity_according_to_open_tabs (window);
+
+ view = pluma_tab_get_view (tab);
+ doc = pluma_tab_get_document (tab);
+
+ /* IMPORTANT: remember to disconnect the signal in notebook_tab_removed
+ * if a new signal is connected here */
+
+ g_signal_connect (tab,
+ "notify::name",
+ G_CALLBACK (sync_name),
+ window);
+ g_signal_connect (tab,
+ "notify::state",
+ G_CALLBACK (sync_state),
+ window);
+
+ g_signal_connect (doc,
+ "cursor-moved",
+ G_CALLBACK (update_cursor_position_statusbar),
+ window);
+ g_signal_connect (doc,
+ "notify::can-search-again",
+ G_CALLBACK (can_search_again),
+ window);
+ g_signal_connect (doc,
+ "notify::can-undo",
+ G_CALLBACK (can_undo),
+ window);
+ g_signal_connect (doc,
+ "notify::can-redo",
+ G_CALLBACK (can_redo),
+ window);
+ g_signal_connect (doc,
+ "notify::has-selection",
+ G_CALLBACK (selection_changed),
+ window);
+ g_signal_connect (doc,
+ "notify::language",
+ G_CALLBACK (sync_languages_menu),
+ window);
+ g_signal_connect (doc,
+ "notify::read-only",
+ G_CALLBACK (readonly_changed),
+ window);
+ g_signal_connect (view,
+ "toggle_overwrite",
+ G_CALLBACK (update_overwrite_mode_statusbar),
+ window);
+ g_signal_connect (view,
+ "notify::editable",
+ G_CALLBACK (editable_changed),
+ window);
+
+ update_documents_list_menu (window);
+
+ g_signal_connect (view,
+ "drop_uris",
+ G_CALLBACK (drop_uris_cb),
+ NULL);
+
+ update_window_state (window);
+
+ g_signal_emit (G_OBJECT (window), signals[TAB_ADDED], 0, tab);
}
static void
notebook_tab_removed (PlumaNotebook *notebook,
- PlumaTab *tab,
- PlumaWindow *window)
-{
- PlumaView *view;
- PlumaDocument *doc;
-
- pluma_debug (DEBUG_WINDOW);
-
- g_return_if_fail ((window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) == 0);
-
- --window->priv->num_tabs;
-
- view = pluma_tab_get_view (tab);
- doc = pluma_tab_get_document (tab);
-
- g_signal_handlers_disconnect_by_func (tab,
- G_CALLBACK (sync_name),
- window);
- g_signal_handlers_disconnect_by_func (tab,
- G_CALLBACK (sync_state),
- window);
- g_signal_handlers_disconnect_by_func (doc,
- G_CALLBACK (update_cursor_position_statusbar),
- window);
- g_signal_handlers_disconnect_by_func (doc,
- G_CALLBACK (can_search_again),
- window);
- g_signal_handlers_disconnect_by_func (doc,
- G_CALLBACK (can_undo),
- window);
- g_signal_handlers_disconnect_by_func (doc,
- G_CALLBACK (can_redo),
- window);
- g_signal_handlers_disconnect_by_func (doc,
- G_CALLBACK (selection_changed),
- window);
- g_signal_handlers_disconnect_by_func (doc,
- G_CALLBACK (sync_languages_menu),
- window);
- g_signal_handlers_disconnect_by_func (doc,
- G_CALLBACK (readonly_changed),
- window);
- g_signal_handlers_disconnect_by_func (view,
- G_CALLBACK (update_overwrite_mode_statusbar),
- window);
- g_signal_handlers_disconnect_by_func (view,
- G_CALLBACK (editable_changed),
- window);
- g_signal_handlers_disconnect_by_func (view,
- G_CALLBACK (drop_uris_cb),
- NULL);
-
- if (window->priv->tab_width_id && tab == pluma_window_get_active_tab (window))
- {
- g_signal_handler_disconnect (view, window->priv->tab_width_id);
- window->priv->tab_width_id = 0;
- }
-
- if (window->priv->spaces_instead_of_tabs_id && tab == pluma_window_get_active_tab (window))
- {
- g_signal_handler_disconnect (view, window->priv->spaces_instead_of_tabs_id);
- window->priv->spaces_instead_of_tabs_id = 0;
- }
-
- if (window->priv->language_changed_id && tab == pluma_window_get_active_tab (window))
- {
- g_signal_handler_disconnect (doc, window->priv->language_changed_id);
- window->priv->language_changed_id = 0;
- }
-
- g_return_if_fail (window->priv->num_tabs >= 0);
- if (window->priv->num_tabs == 0)
- {
- window->priv->active_tab = NULL;
-
- set_title (window);
-
- /* Remove line and col info */
- pluma_statusbar_set_cursor_position (
- PLUMA_STATUSBAR (window->priv->statusbar),
- -1,
- -1);
-
- pluma_statusbar_clear_overwrite (
- PLUMA_STATUSBAR (window->priv->statusbar));
-
- /* hide the combos */
- gtk_widget_hide (window->priv->tab_width_combo);
- gtk_widget_hide (window->priv->language_combo);
- }
-
- if (!window->priv->removing_tabs)
- {
- update_documents_list_menu (window);
- update_next_prev_doc_sensitivity_per_window (window);
- }
- else
- {
- if (window->priv->num_tabs == 0)
- {
- update_documents_list_menu (window);
- update_next_prev_doc_sensitivity_per_window (window);
- }
- }
-
- update_sensitivity_according_to_open_tabs (window);
-
- if (window->priv->num_tabs == 0)
- {
- peas_extension_set_call (window->priv->extensions, "update_state");
- }
-
- update_window_state (window);
-
- g_signal_emit (G_OBJECT (window), signals[TAB_REMOVED], 0, tab);
+ PlumaTab *tab,
+ PlumaWindow *window)
+{
+ PlumaView *view;
+ PlumaDocument *doc;
+
+ pluma_debug (DEBUG_WINDOW);
+
+ g_return_if_fail ((window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION) == 0);
+
+ --window->priv->num_tabs;
+
+ view = pluma_tab_get_view (tab);
+ doc = pluma_tab_get_document (tab);
+
+ g_signal_handlers_disconnect_by_func (tab,
+ G_CALLBACK (sync_name),
+ window);
+ g_signal_handlers_disconnect_by_func (tab,
+ G_CALLBACK (sync_state),
+ window);
+ g_signal_handlers_disconnect_by_func (doc,
+ G_CALLBACK (update_cursor_position_statusbar),
+ window);
+ g_signal_handlers_disconnect_by_func (doc,
+ G_CALLBACK (can_search_again),
+ window);
+ g_signal_handlers_disconnect_by_func (doc,
+ G_CALLBACK (can_undo),
+ window);
+ g_signal_handlers_disconnect_by_func (doc,
+ G_CALLBACK (can_redo),
+ window);
+ g_signal_handlers_disconnect_by_func (doc,
+ G_CALLBACK (selection_changed),
+ window);
+ g_signal_handlers_disconnect_by_func (doc,
+ G_CALLBACK (sync_languages_menu),
+ window);
+ g_signal_handlers_disconnect_by_func (doc,
+ G_CALLBACK (readonly_changed),
+ window);
+ g_signal_handlers_disconnect_by_func (view,
+ G_CALLBACK (update_overwrite_mode_statusbar),
+ window);
+ g_signal_handlers_disconnect_by_func (view,
+ G_CALLBACK (editable_changed),
+ window);
+ g_signal_handlers_disconnect_by_func (view,
+ G_CALLBACK (drop_uris_cb),
+ NULL);
+
+ if (window->priv->tab_width_id && tab == pluma_window_get_active_tab (window))
+ {
+ g_signal_handler_disconnect (view, window->priv->tab_width_id);
+ window->priv->tab_width_id = 0;
+ }
+
+ if (window->priv->spaces_instead_of_tabs_id && tab == pluma_window_get_active_tab (window))
+ {
+ g_signal_handler_disconnect (view, window->priv->spaces_instead_of_tabs_id);
+ window->priv->spaces_instead_of_tabs_id = 0;
+ }
+
+ if (window->priv->language_changed_id && tab == pluma_window_get_active_tab (window))
+ {
+ g_signal_handler_disconnect (doc, window->priv->language_changed_id);
+ window->priv->language_changed_id = 0;
+ }
+
+ g_return_if_fail (window->priv->num_tabs >= 0);
+ if (window->priv->num_tabs == 0)
+ {
+ window->priv->active_tab = NULL;
+
+ set_title (window);
+
+ /* Remove line and col info */
+ pluma_statusbar_set_cursor_position (PLUMA_STATUSBAR (window->priv->statusbar),
+ -1,
+ -1);
+
+ pluma_statusbar_clear_overwrite (PLUMA_STATUSBAR (window->priv->statusbar));
+
+ /* hide the combos */
+ gtk_widget_hide (window->priv->tab_width_combo);
+ gtk_widget_hide (window->priv->language_combo);
+ }
+
+ if (!window->priv->removing_tabs)
+ {
+ update_documents_list_menu (window);
+ update_next_prev_doc_sensitivity_per_window (window);
+ }
+ else
+ {
+ if (window->priv->num_tabs == 0)
+ {
+ update_documents_list_menu (window);
+ update_next_prev_doc_sensitivity_per_window (window);
+ }
+ }
+
+ update_sensitivity_according_to_open_tabs (window);
+
+ if (window->priv->num_tabs == 0)
+ {
+ peas_extension_set_call (window->priv->extensions, "update_state");
+ }
+
+ update_window_state (window);
+
+ g_signal_emit (G_OBJECT (window), signals[TAB_REMOVED], 0, tab);
}
static void
notebook_tabs_reordered (PlumaNotebook *notebook,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- update_documents_list_menu (window);
- update_next_prev_doc_sensitivity_per_window (window);
+ update_documents_list_menu (window);
+ update_next_prev_doc_sensitivity_per_window (window);
- g_signal_emit (G_OBJECT (window), signals[TABS_REORDERED], 0);
+ g_signal_emit (G_OBJECT (window), signals[TABS_REORDERED], 0);
}
static void
notebook_tab_detached (PlumaNotebook *notebook,
- PlumaTab *tab,
- PlumaWindow *window)
+ PlumaTab *tab,
+ PlumaWindow *window)
{
- PlumaWindow *new_window;
+ PlumaWindow *new_window;
- new_window = clone_window (window);
+ new_window = clone_window (window);
- pluma_notebook_move_tab (notebook,
- PLUMA_NOTEBOOK (_pluma_window_get_notebook (new_window)),
- tab, 0);
+ pluma_notebook_move_tab (notebook,
+ PLUMA_NOTEBOOK (_pluma_window_get_notebook (new_window)),
+ tab, 0);
- gtk_window_set_position (GTK_WINDOW (new_window),
- GTK_WIN_POS_MOUSE);
+ gtk_window_set_position (GTK_WINDOW (new_window), GTK_WIN_POS_MOUSE);
- gtk_widget_show (GTK_WIDGET (new_window));
+ gtk_widget_show (GTK_WIDGET (new_window));
}
static void
notebook_tab_close_request (PlumaNotebook *notebook,
- PlumaTab *tab,
- GtkWindow *window)
+ PlumaTab *tab,
+ GtkWindow *window)
{
- /* Note: we are destroying the tab before the default handler
- * seems to be ok, but we need to keep an eye on this. */
- _pluma_cmd_file_close_tab (tab, PLUMA_WINDOW (window));
+ /* Note: we are destroying the tab before the default handler
+ * seems to be ok, but we need to keep an eye on this. */
+ _pluma_cmd_file_close_tab (tab, PLUMA_WINDOW (window));
}
static gboolean
show_notebook_popup_menu (GtkNotebook *notebook,
- PlumaWindow *window,
- GdkEventButton *event)
+ PlumaWindow *window,
+ GdkEventButton *event)
{
- GtkWidget *menu;
-// GtkAction *action;
+ GtkWidget *menu;
+// GtkAction *action;
- menu = gtk_ui_manager_get_widget (window->priv->manager, "/NotebookPopup");
- g_return_val_if_fail (menu != NULL, FALSE);
+ menu = gtk_ui_manager_get_widget (window->priv->manager, "/NotebookPopup");
+ g_return_val_if_fail (menu != NULL, FALSE);
// CHECK do we need this?
#if 0
- /* allow extensions to sync when showing the popup */
- action = gtk_action_group_get_action (window->priv->action_group,
- "NotebookPopupAction");
- g_return_val_if_fail (action != NULL, FALSE);
- gtk_action_activate (action);
+ /* allow extensions to sync when showing the popup */
+ action = gtk_action_group_get_action (window->priv->action_group,
+ "NotebookPopupAction");
+ g_return_val_if_fail (action != NULL, FALSE);
+ gtk_action_activate (action);
#endif
- GtkWidget *tab;
- GtkWidget *tab_label;
+ GtkWidget *tab;
+ GtkWidget *tab_label;
- tab = GTK_WIDGET (pluma_window_get_active_tab (window));
- g_return_val_if_fail (tab != NULL, FALSE);
+ tab = GTK_WIDGET (pluma_window_get_active_tab (window));
+ g_return_val_if_fail (tab != NULL, FALSE);
- tab_label = gtk_notebook_get_tab_label (notebook, tab);
+ tab_label = gtk_notebook_get_tab_label (notebook, tab);
- gtk_menu_popup_at_widget (GTK_MENU (menu),
- tab_label,
- GDK_GRAVITY_SOUTH_WEST,
- GDK_GRAVITY_NORTH_WEST,
- (const GdkEvent*) event);
+ gtk_menu_popup_at_widget (GTK_MENU (menu),
+ tab_label,
+ GDK_GRAVITY_SOUTH_WEST,
+ GDK_GRAVITY_NORTH_WEST,
+ (const GdkEvent*) event);
- gtk_menu_shell_select_first (GTK_MENU_SHELL (menu), FALSE);
+ gtk_menu_shell_select_first (GTK_MENU_SHELL (menu), FALSE);
- return TRUE;
+ return TRUE;
}
static gboolean
notebook_button_press_event (GtkNotebook *notebook,
- GdkEventButton *event,
- PlumaWindow *window)
+ GdkEventButton *event,
+ PlumaWindow *window)
{
- if (event->type == GDK_BUTTON_PRESS)
- {
- if (event->button == 3)
- return show_notebook_popup_menu (notebook, window, event);
+ if (event->type == GDK_BUTTON_PRESS)
+ {
+ if (event->button == 3)
+ return show_notebook_popup_menu (notebook, window, event);
- else if (event->button == 2)
- {
- PlumaTab *tab;
- tab = pluma_window_get_active_tab (window);
- notebook_tab_close_request (PLUMA_NOTEBOOK (notebook), tab, GTK_WINDOW (window));
- }
- }
- else if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1))
- {
- pluma_window_create_tab (window, TRUE);
- }
+ else if (event->button == 2)
+ {
+ PlumaTab *tab;
+ tab = pluma_window_get_active_tab (window);
+ notebook_tab_close_request (PLUMA_NOTEBOOK (notebook), tab, GTK_WINDOW (window));
+ }
+ }
+ else if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1))
+ {
+ pluma_window_create_tab (window, TRUE);
+ }
- return FALSE;
+ return FALSE;
}
static gboolean
@@ -3524,601 +3494,593 @@ notebook_scroll_event (GtkNotebook *notebook,
GdkEventScroll *event,
PlumaWindow *window)
{
- if (event->direction == GDK_SCROLL_UP || event->direction == GDK_SCROLL_LEFT)
- {
- gtk_notebook_prev_page (notebook);
- }
- else if (event->direction == GDK_SCROLL_DOWN || event->direction == GDK_SCROLL_RIGHT)
- {
- gtk_notebook_next_page (notebook);
- }
+ if (event->direction == GDK_SCROLL_UP || event->direction == GDK_SCROLL_LEFT)
+ {
+ gtk_notebook_prev_page (notebook);
+ }
+ else if (event->direction == GDK_SCROLL_DOWN || event->direction == GDK_SCROLL_RIGHT)
+ {
+ gtk_notebook_next_page (notebook);
+ }
- return FALSE;
+ return FALSE;
}
static gboolean
notebook_popup_menu (GtkNotebook *notebook,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- /* Only respond if the notebook is the actual focus */
- if (PLUMA_IS_NOTEBOOK (gtk_window_get_focus (GTK_WINDOW (window))))
- {
- return show_notebook_popup_menu (notebook, window, NULL);
- }
+ /* Only respond if the notebook is the actual focus */
+ if (PLUMA_IS_NOTEBOOK (gtk_window_get_focus (GTK_WINDOW (window))))
+ {
+ return show_notebook_popup_menu (notebook, window, NULL);
+ }
- return FALSE;
+ return FALSE;
}
static void
side_panel_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- PlumaWindow *window)
+ GtkAllocation *allocation,
+ PlumaWindow *window)
{
- window->priv->side_panel_size = allocation->width;
+ window->priv->side_panel_size = allocation->width;
}
static void
bottom_panel_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation,
- PlumaWindow *window)
+ GtkAllocation *allocation,
+ PlumaWindow *window)
{
- window->priv->bottom_panel_size = allocation->height;
+ window->priv->bottom_panel_size = allocation->height;
}
static void
hpaned_restore_position (GtkWidget *widget,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gint pos;
+ gint pos;
- pluma_debug_message (DEBUG_WINDOW,
- "Restoring hpaned position: side panel size %d",
- window->priv->side_panel_size);
+ pluma_debug_message (DEBUG_WINDOW,
+ "Restoring hpaned position: side panel size %d",
+ window->priv->side_panel_size);
- pos = MAX (100, window->priv->side_panel_size);
- gtk_paned_set_position (GTK_PANED (window->priv->hpaned), pos);
+ pos = MAX (100, window->priv->side_panel_size);
+ gtk_paned_set_position (GTK_PANED (window->priv->hpaned), pos);
- /* start monitoring the size */
- g_signal_connect (window->priv->side_panel,
- "size-allocate",
- G_CALLBACK (side_panel_size_allocate),
- window);
+ /* start monitoring the size */
+ g_signal_connect (window->priv->side_panel,
+ "size-allocate",
+ G_CALLBACK (side_panel_size_allocate),
+ window);
- /* run this only once */
- g_signal_handlers_disconnect_by_func (widget, hpaned_restore_position, window);
+ /* run this only once */
+ g_signal_handlers_disconnect_by_func (widget, hpaned_restore_position, window);
}
static void
vpaned_restore_position (GtkWidget *widget,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- GtkAllocation allocation;
- gint pos;
+ GtkAllocation allocation;
+ gint pos;
- gtk_widget_get_allocation (widget, &allocation);
+ gtk_widget_get_allocation (widget, &allocation);
- pluma_debug_message (DEBUG_WINDOW,
- "Restoring vpaned position: bottom panel size %d",
- window->priv->bottom_panel_size);
+ pluma_debug_message (DEBUG_WINDOW,
+ "Restoring vpaned position: bottom panel size %d",
+ window->priv->bottom_panel_size);
- pos = allocation.height -
- MAX (50, window->priv->bottom_panel_size);
- gtk_paned_set_position (GTK_PANED (window->priv->vpaned), pos);
+ pos = allocation.height - MAX (50, window->priv->bottom_panel_size);
+ gtk_paned_set_position (GTK_PANED (window->priv->vpaned), pos);
- /* start monitoring the size */
- g_signal_connect (window->priv->bottom_panel,
- "size-allocate",
- G_CALLBACK (bottom_panel_size_allocate),
- window);
+ /* start monitoring the size */
+ g_signal_connect (window->priv->bottom_panel,
+ "size-allocate",
+ G_CALLBACK (bottom_panel_size_allocate),
+ window);
- /* run this only once */
- g_signal_handlers_disconnect_by_func (widget, vpaned_restore_position, window);
+ /* run this only once */
+ g_signal_handlers_disconnect_by_func (widget, vpaned_restore_position, window);
}
static void
side_panel_visibility_changed (GtkWidget *side_panel,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gboolean visible;
- GtkAction *action;
+ gboolean visible;
+ GtkAction *action;
- visible = gtk_widget_get_visible (side_panel);
+ visible = gtk_widget_get_visible (side_panel);
- if (!g_settings_get_boolean (window->priv->editor_settings, "show-tabs-with-side-pane"))
- {
- if (visible)
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), FALSE);
- else
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook),
- g_settings_get_boolean (window->priv->editor_settings, "show-single-tab") ||
- (gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->priv->notebook)) > 1));
- }
- else
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook),
- g_settings_get_boolean (window->priv->editor_settings, "show-single-tab") ||
- (gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->priv->notebook)) > 1));
+ if (!g_settings_get_boolean (window->priv->editor_settings, "show-tabs-with-side-pane"))
+ {
+ if (visible)
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), FALSE);
+ else
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook),
+ g_settings_get_boolean (window->priv->editor_settings, "show-single-tab") ||
+ (gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->priv->notebook)) > 1));
+ }
+ else
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook),
+ g_settings_get_boolean (window->priv->editor_settings, "show-single-tab") ||
+ (gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->priv->notebook)) > 1));
- g_settings_set_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_SIDE_PANE_VISIBLE,
- visible);
+ g_settings_set_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_SIDE_PANE_VISIBLE,
+ visible);
- action = gtk_action_group_get_action (window->priv->panes_action_group,
- "ViewSidePane");
+ action = gtk_action_group_get_action (window->priv->panes_action_group,
+ "ViewSidePane");
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
- /* focus the document */
- if (!visible && window->priv->active_tab != NULL)
- gtk_widget_grab_focus (GTK_WIDGET (
- pluma_tab_get_view (PLUMA_TAB (window->priv->active_tab))));
+ /* focus the document */
+ if (!visible && window->priv->active_tab != NULL)
+ gtk_widget_grab_focus (GTK_WIDGET (pluma_tab_get_view (PLUMA_TAB (window->priv->active_tab))));
}
static void
create_side_panel (PlumaWindow *window)
{
- GtkWidget *documents_panel;
+ GtkWidget *documents_panel;
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- window->priv->side_panel = pluma_panel_new (GTK_ORIENTATION_VERTICAL);
+ window->priv->side_panel = pluma_panel_new (GTK_ORIENTATION_VERTICAL);
- gtk_paned_pack1 (GTK_PANED (window->priv->hpaned),
- window->priv->side_panel,
- FALSE,
- FALSE);
+ gtk_paned_pack1 (GTK_PANED (window->priv->hpaned),
+ window->priv->side_panel,
+ FALSE,
+ FALSE);
- g_signal_connect_after (window->priv->side_panel,
- "show",
- G_CALLBACK (side_panel_visibility_changed),
- window);
- g_signal_connect_after (window->priv->side_panel,
- "hide",
- G_CALLBACK (side_panel_visibility_changed),
- window);
+ g_signal_connect_after (window->priv->side_panel,
+ "show",
+ G_CALLBACK (side_panel_visibility_changed),
+ window);
+ g_signal_connect_after (window->priv->side_panel,
+ "hide",
+ G_CALLBACK (side_panel_visibility_changed),
+ window);
- documents_panel = pluma_documents_panel_new (window);
- pluma_panel_add_item_with_icon (PLUMA_PANEL (window->priv->side_panel),
- documents_panel,
- _("Documents"),
- "text-x-generic");
+ documents_panel = pluma_documents_panel_new (window);
+ pluma_panel_add_item_with_icon (PLUMA_PANEL (window->priv->side_panel),
+ documents_panel,
+ _("Documents"),
+ "text-x-generic");
}
static void
bottom_panel_visibility_changed (PlumaPanel *bottom_panel,
- PlumaWindow *window)
+ PlumaWindow *window)
{
- gboolean visible;
- GtkAction *action;
+ gboolean visible;
+ GtkAction *action;
- visible = gtk_widget_get_visible (GTK_WIDGET (bottom_panel));
+ visible = gtk_widget_get_visible (GTK_WIDGET (bottom_panel));
- g_settings_set_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_BOTTOM_PANE_VISIBLE,
- visible);
+ g_settings_set_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_BOTTOM_PANE_VISIBLE,
+ visible);
- action = gtk_action_group_get_action (window->priv->panes_action_group,
- "ViewBottomPane");
+ action = gtk_action_group_get_action (window->priv->panes_action_group,
+ "ViewBottomPane");
- if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
+ if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)) != visible)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), visible);
- /* focus the document */
- if (!visible && window->priv->active_tab != NULL)
- gtk_widget_grab_focus (GTK_WIDGET (
- pluma_tab_get_view (PLUMA_TAB (window->priv->active_tab))));
+ /* focus the document */
+ if (!visible && window->priv->active_tab != NULL)
+ gtk_widget_grab_focus (GTK_WIDGET (pluma_tab_get_view (PLUMA_TAB (window->priv->active_tab))));
}
static void
bottom_panel_item_removed (PlumaPanel *panel,
- GtkWidget *item,
- PlumaWindow *window)
+ GtkWidget *item,
+ PlumaWindow *window)
{
- if (pluma_panel_get_n_items (panel) == 0)
- {
- GtkAction *action;
+ if (pluma_panel_get_n_items (panel) == 0)
+ {
+ GtkAction *action;
- gtk_widget_hide (GTK_WIDGET (panel));
+ gtk_widget_hide (GTK_WIDGET (panel));
- action = gtk_action_group_get_action (window->priv->panes_action_group,
- "ViewBottomPane");
- gtk_action_set_sensitive (action, FALSE);
- }
+ action = gtk_action_group_get_action (window->priv->panes_action_group,
+ "ViewBottomPane");
+ gtk_action_set_sensitive (action, FALSE);
+ }
}
static void
bottom_panel_item_added (PlumaPanel *panel,
- GtkWidget *item,
- PlumaWindow *window)
+ GtkWidget *item,
+ PlumaWindow *window)
{
- /* if it's the first item added, set the menu item
- * sensitive and if needed show the panel */
- if (pluma_panel_get_n_items (panel) == 1)
- {
- GtkAction *action;
- gboolean show;
+ /* if it's the first item added, set the menu item
+ * sensitive and if needed show the panel */
+ if (pluma_panel_get_n_items (panel) == 1)
+ {
+ GtkAction *action;
+ gboolean show;
- action = gtk_action_group_get_action (window->priv->panes_action_group,
- "ViewBottomPane");
- gtk_action_set_sensitive (action, TRUE);
+ action = gtk_action_group_get_action (window->priv->panes_action_group,
+ "ViewBottomPane");
+ gtk_action_set_sensitive (action, TRUE);
- show = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
- if (show)
- gtk_widget_show (GTK_WIDGET (panel));
- }
+ show = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+ if (show)
+ gtk_widget_show (GTK_WIDGET (panel));
+ }
}
static void
create_bottom_panel (PlumaWindow *window)
{
- pluma_debug (DEBUG_WINDOW);
+ pluma_debug (DEBUG_WINDOW);
- window->priv->bottom_panel = pluma_panel_new (GTK_ORIENTATION_HORIZONTAL);
+ window->priv->bottom_panel = pluma_panel_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_paned_pack2 (GTK_PANED (window->priv->vpaned),
- window->priv->bottom_panel,
- FALSE,
- FALSE);
+ gtk_paned_pack2 (GTK_PANED (window->priv->vpaned),
+ window->priv->bottom_panel,
+ FALSE,
+ FALSE);
- g_signal_connect_after (window->priv->bottom_panel,
- "show",
- G_CALLBACK (bottom_panel_visibility_changed),
- window);
- g_signal_connect_after (window->priv->bottom_panel,
- "hide",
- G_CALLBACK (bottom_panel_visibility_changed),
- window);
+ g_signal_connect_after (window->priv->bottom_panel,
+ "show",
+ G_CALLBACK (bottom_panel_visibility_changed),
+ window);
+ g_signal_connect_after (window->priv->bottom_panel,
+ "hide",
+ G_CALLBACK (bottom_panel_visibility_changed),
+ window);
}
static void
init_panels_visibility (PlumaWindow *window)
{
- gint active_page;
- gboolean side_pane_visible;
- gboolean bottom_pane_visible;
-
- pluma_debug (DEBUG_WINDOW);
-
- /* side pane */
- active_page = g_settings_get_int (window->priv->editor_settings,
- PLUMA_SETTINGS_SIDE_PANEL_ACTIVE_PAGE);
- _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->side_panel),
- active_page);
-
- side_pane_visible = g_settings_get_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_SIDE_PANE_VISIBLE);
- bottom_pane_visible = g_settings_get_boolean (window->priv->editor_settings,
- PLUMA_SETTINGS_BOTTOM_PANE_VISIBLE);
-
- if (side_pane_visible)
-
- {
- gtk_widget_show (window->priv->side_panel);
- }
-
- /* bottom pane, it can be empty */
- if (pluma_panel_get_n_items (PLUMA_PANEL (window->priv->bottom_panel)) > 0)
- {
- active_page = g_settings_get_int (window->priv->editor_settings,
- PLUMA_SETTINGS_BOTTOM_PANEL_ACTIVE_PAGE);
- _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->bottom_panel),
- active_page);
-
- if (bottom_pane_visible)
- {
- gtk_widget_show (window->priv->bottom_panel);
- }
- }
- else
- {
- GtkAction *action;
- action = gtk_action_group_get_action (window->priv->panes_action_group,
- "ViewBottomPane");
- gtk_action_set_sensitive (action, FALSE);
- }
-
- /* start track sensitivity after the initial state is set */
- window->priv->bottom_panel_item_removed_handler_id =
- g_signal_connect (window->priv->bottom_panel,
- "item_removed",
- G_CALLBACK (bottom_panel_item_removed),
- window);
-
- g_signal_connect (window->priv->bottom_panel,
- "item_added",
- G_CALLBACK (bottom_panel_item_added),
- window);
+ gint active_page;
+ gboolean side_pane_visible;
+ gboolean bottom_pane_visible;
+
+ pluma_debug (DEBUG_WINDOW);
+
+ /* side pane */
+ active_page = g_settings_get_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_SIDE_PANEL_ACTIVE_PAGE);
+ _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->side_panel),
+ active_page);
+
+ side_pane_visible = g_settings_get_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_SIDE_PANE_VISIBLE);
+ bottom_pane_visible = g_settings_get_boolean (window->priv->editor_settings,
+ PLUMA_SETTINGS_BOTTOM_PANE_VISIBLE);
+
+ if (side_pane_visible)
+
+ {
+ gtk_widget_show (window->priv->side_panel);
+ }
+
+ /* bottom pane, it can be empty */
+ if (pluma_panel_get_n_items (PLUMA_PANEL (window->priv->bottom_panel)) > 0)
+ {
+ active_page = g_settings_get_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_BOTTOM_PANEL_ACTIVE_PAGE);
+ _pluma_panel_set_active_item_by_id (PLUMA_PANEL (window->priv->bottom_panel),
+ active_page);
+
+ if (bottom_pane_visible)
+ {
+ gtk_widget_show (window->priv->bottom_panel);
+ }
+ }
+ else
+ {
+ GtkAction *action;
+ action = gtk_action_group_get_action (window->priv->panes_action_group,
+ "ViewBottomPane");
+ gtk_action_set_sensitive (action, FALSE);
+ }
+
+ /* start track sensitivity after the initial state is set */
+ window->priv->bottom_panel_item_removed_handler_id =
+ g_signal_connect (window->priv->bottom_panel,
+ "item_removed",
+ G_CALLBACK (bottom_panel_item_removed),
+ window);
+
+ g_signal_connect (window->priv->bottom_panel,
+ "item_added",
+ G_CALLBACK (bottom_panel_item_added),
+ window);
}
static void
-clipboard_owner_change (GtkClipboard *clipboard,
- GdkEventOwnerChange *event,
- PlumaWindow *window)
+clipboard_owner_change (GtkClipboard *clipboard,
+ GdkEventOwnerChange *event,
+ PlumaWindow *window)
{
- set_paste_sensitivity_according_to_clipboard (window,
- clipboard);
+ set_paste_sensitivity_according_to_clipboard (window, clipboard);
}
static void
window_realized (GtkWidget *window,
- gpointer *data)
+ gpointer *data)
{
- GtkClipboard *clipboard;
+ GtkClipboard *clipboard;
- clipboard = gtk_widget_get_clipboard (window,
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (window, GDK_SELECTION_CLIPBOARD);
- g_signal_connect (clipboard,
- "owner_change",
- G_CALLBACK (clipboard_owner_change),
- window);
+ g_signal_connect (clipboard,
+ "owner_change",
+ G_CALLBACK (clipboard_owner_change),
+ window);
}
static void
window_unrealized (GtkWidget *window,
- gpointer *data)
+ gpointer *data)
{
- GtkClipboard *clipboard;
+ GtkClipboard *clipboard;
- clipboard = gtk_widget_get_clipboard (window,
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (window, GDK_SELECTION_CLIPBOARD);
- g_signal_handlers_disconnect_by_func (clipboard,
- G_CALLBACK (clipboard_owner_change),
- window);
+ g_signal_handlers_disconnect_by_func (clipboard,
+ G_CALLBACK (clipboard_owner_change),
+ window);
}
static void
check_window_is_active (PlumaWindow *window,
- GParamSpec *property,
- gpointer useless)
-{
- if (window->priv->window_state & GDK_WINDOW_STATE_FULLSCREEN)
- {
- if (gtk_window_is_active (GTK_WINDOW (window)))
- {
- gtk_widget_show (window->priv->fullscreen_controls);
- }
- else
- {
- gtk_widget_hide (window->priv->fullscreen_controls);
- }
- }
+ GParamSpec *property,
+ gpointer useless)
+{
+ if (window->priv->window_state & GDK_WINDOW_STATE_FULLSCREEN)
+ {
+ if (gtk_window_is_active (GTK_WINDOW (window)))
+ {
+ gtk_widget_show (window->priv->fullscreen_controls);
+ }
+ else
+ {
+ gtk_widget_hide (window->priv->fullscreen_controls);
+ }
+ }
}
static void
connect_notebook_signals (PlumaWindow *window,
- GtkWidget *notebook)
-{
- g_signal_connect (notebook,
- "switch-page",
- G_CALLBACK (notebook_switch_page),
- window);
- g_signal_connect (notebook,
- "tab-added",
- G_CALLBACK (notebook_tab_added),
- window);
- g_signal_connect (notebook,
- "tab-removed",
- G_CALLBACK (notebook_tab_removed),
- window);
- g_signal_connect (notebook,
- "tabs-reordered",
- G_CALLBACK (notebook_tabs_reordered),
- window);
- g_signal_connect (notebook,
- "tab-detached",
- G_CALLBACK (notebook_tab_detached),
- window);
- g_signal_connect (notebook,
- "tab-close-request",
- G_CALLBACK (notebook_tab_close_request),
- window);
- g_signal_connect (notebook,
- "button-press-event",
- G_CALLBACK (notebook_button_press_event),
- window);
- g_signal_connect (notebook,
- "popup-menu",
- G_CALLBACK (notebook_popup_menu),
- window);
- g_signal_connect (notebook,
- "scroll-event",
- G_CALLBACK (notebook_scroll_event),
- window);
+ GtkWidget *notebook)
+{
+ g_signal_connect (notebook,
+ "switch-page",
+ G_CALLBACK (notebook_switch_page),
+ window);
+ g_signal_connect (notebook,
+ "tab-added",
+ G_CALLBACK (notebook_tab_added),
+ window);
+ g_signal_connect (notebook,
+ "tab-removed",
+ G_CALLBACK (notebook_tab_removed),
+ window);
+ g_signal_connect (notebook,
+ "tabs-reordered",
+ G_CALLBACK (notebook_tabs_reordered),
+ window);
+ g_signal_connect (notebook,
+ "tab-detached",
+ G_CALLBACK (notebook_tab_detached),
+ window);
+ g_signal_connect (notebook,
+ "tab-close-request",
+ G_CALLBACK (notebook_tab_close_request),
+ window);
+ g_signal_connect (notebook,
+ "button-press-event",
+ G_CALLBACK (notebook_button_press_event),
+ window);
+ g_signal_connect (notebook,
+ "popup-menu",
+ G_CALLBACK (notebook_popup_menu),
+ window);
+ g_signal_connect (notebook,
+ "scroll-event",
+ G_CALLBACK (notebook_scroll_event),
+ window);
}
static void
add_notebook (PlumaWindow *window,
- GtkWidget *notebook)
+ GtkWidget *notebook)
{
- gtk_paned_pack1 (GTK_PANED (window->priv->vpaned),
- notebook,
- TRUE,
- TRUE);
+ gtk_paned_pack1 (GTK_PANED (window->priv->vpaned),
+ notebook,
+ TRUE,
+ TRUE);
- gtk_widget_show (notebook);
+ gtk_widget_show (notebook);
- gtk_widget_add_events (notebook, GDK_SCROLL_MASK);
- connect_notebook_signals (window, notebook);
+ gtk_widget_add_events (notebook, GDK_SCROLL_MASK);
+ connect_notebook_signals (window, notebook);
}
static void
on_extension_added (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaWindow *window)
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaWindow *window)
{
- peas_extension_call (exten, "activate", window);
+ peas_extension_call (exten, "activate", window);
}
static void
on_extension_removed (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaWindow *window)
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaWindow *window)
{
- peas_extension_call (exten, "deactivate", window);
+ peas_extension_call (exten, "deactivate", window);
- /* Ensure update of ui manager, because we suspect it does something
- * with expected static strings in the type module (when unloaded the
- * strings don't exist anymore, and ui manager updates in an idle
- * func) */
- gtk_ui_manager_ensure_update (window->priv->manager);
+ /* Ensure update of ui manager, because we suspect it does something
+ * with expected static strings in the type module (when unloaded the
+ * strings don't exist anymore, and ui manager updates in an idle
+ * func) */
+ gtk_ui_manager_ensure_update (window->priv->manager);
}
static void
pluma_window_init (PlumaWindow *window)
{
- GtkWidget *main_box;
- GtkTargetList *tl;
-
- pluma_debug (DEBUG_WINDOW);
-
- window->priv = pluma_window_get_instance_private (window);
- window->priv->active_tab = NULL;
- window->priv->num_tabs = 0;
- window->priv->removing_tabs = FALSE;
- window->priv->state = PLUMA_WINDOW_STATE_NORMAL;
- window->priv->dispose_has_run = FALSE;
- window->priv->fullscreen_controls = NULL;
- window->priv->fullscreen_animation_timeout_id = 0;
- window->priv->editor_settings = g_settings_new (PLUMA_SCHEMA_ID);
-
- window->priv->message_bus = pluma_message_bus_new ();
-
- window->priv->window_group = gtk_window_group_new ();
- gtk_window_group_add_window (window->priv->window_group, GTK_WINDOW (window));
-
- GtkStyleContext *context;
-
- context = gtk_widget_get_style_context (GTK_WIDGET (window));
- gtk_style_context_add_class (context, "pluma-window");
-
- main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add (GTK_CONTAINER (window), main_box);
- gtk_widget_show (main_box);
-
- /* Add menu bar and toolbar bar */
- create_menu_bar_and_toolbar (window, main_box);
-
- /* Add status bar */
- create_statusbar (window, main_box);
-
- /* Add the main area */
- pluma_debug_message (DEBUG_WINDOW, "Add main area");
- window->priv->hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_box_pack_start (GTK_BOX (main_box),
- window->priv->hpaned,
- TRUE,
- TRUE,
- 0);
-
- window->priv->vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
- gtk_paned_pack2 (GTK_PANED (window->priv->hpaned),
- window->priv->vpaned,
- TRUE,
- FALSE);
-
- pluma_debug_message (DEBUG_WINDOW, "Create pluma notebook");
- window->priv->notebook = pluma_notebook_new ();
- add_notebook (window, window->priv->notebook);
-
- /* side and bottom panels */
- create_side_panel (window);
- create_bottom_panel (window);
-
- /* panes' state must be restored after panels have been mapped,
- * since the bottom pane position depends on the size of the vpaned. */
- window->priv->side_panel_size = g_settings_get_int (window->priv->editor_settings,
- PLUMA_SETTINGS_SIDE_PANEL_SIZE);
- window->priv->bottom_panel_size = g_settings_get_int (window->priv->editor_settings,
- PLUMA_SETTINGS_BOTTOM_PANEL_SIZE);
-
- g_signal_connect_after (window->priv->hpaned,
- "map",
- G_CALLBACK (hpaned_restore_position),
- window);
- g_signal_connect_after (window->priv->vpaned,
- "map",
- G_CALLBACK (vpaned_restore_position),
- window);
-
- gtk_widget_show (window->priv->hpaned);
- gtk_widget_show (window->priv->vpaned);
-
- /* Drag and drop support, set targets to NULL because we add the
- default uri_targets below */
- gtk_drag_dest_set (GTK_WIDGET (window),
- GTK_DEST_DEFAULT_MOTION |
- GTK_DEST_DEFAULT_HIGHLIGHT |
- GTK_DEST_DEFAULT_DROP,
- NULL,
- 0,
- GDK_ACTION_COPY);
-
- /* Add uri targets */
- tl = gtk_drag_dest_get_target_list (GTK_WIDGET (window));
-
- if (tl == NULL)
- {
- tl = gtk_target_list_new (NULL, 0);
- gtk_drag_dest_set_target_list (GTK_WIDGET (window), tl);
- gtk_target_list_unref (tl);
- }
-
- gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
-
- /* connect instead of override, so that we can
- * share the cb code with the view */
- g_signal_connect (window,
- "drag_data_received",
- G_CALLBACK (drag_data_received_cb),
- NULL);
-
- /* we can get the clipboard only after the widget
- * is realized */
- g_signal_connect (window,
- "realize",
- G_CALLBACK (window_realized),
- NULL);
- g_signal_connect (window,
- "unrealize",
- G_CALLBACK (window_unrealized),
- NULL);
-
- /* Check if the window is active for fullscreen */
- g_signal_connect (window,
- "notify::is-active",
- G_CALLBACK (check_window_is_active),
- NULL);
-
- pluma_debug_message (DEBUG_WINDOW, "Update plugins ui");
-
- window->priv->extensions = peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
+ GtkWidget *main_box;
+ GtkTargetList *tl;
+
+ pluma_debug (DEBUG_WINDOW);
+
+ window->priv = pluma_window_get_instance_private (window);
+ window->priv->active_tab = NULL;
+ window->priv->num_tabs = 0;
+ window->priv->removing_tabs = FALSE;
+ window->priv->state = PLUMA_WINDOW_STATE_NORMAL;
+ window->priv->dispose_has_run = FALSE;
+ window->priv->fullscreen_controls = NULL;
+ window->priv->fullscreen_animation_timeout_id = 0;
+ window->priv->editor_settings = g_settings_new (PLUMA_SCHEMA_ID);
+
+ window->priv->message_bus = pluma_message_bus_new ();
+
+ window->priv->window_group = gtk_window_group_new ();
+ gtk_window_group_add_window (window->priv->window_group, GTK_WINDOW (window));
+
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (window));
+ gtk_style_context_add_class (context, "pluma-window");
+
+ main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add (GTK_CONTAINER (window), main_box);
+ gtk_widget_show (main_box);
+
+ /* Add menu bar and toolbar bar */
+ create_menu_bar_and_toolbar (window, main_box);
+
+ /* Add status bar */
+ create_statusbar (window, main_box);
+
+ /* Add the main area */
+ pluma_debug_message (DEBUG_WINDOW, "Add main area");
+ window->priv->hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
+ gtk_box_pack_start (GTK_BOX (main_box),
+ window->priv->hpaned,
+ TRUE,
+ TRUE,
+ 0);
+
+ window->priv->vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
+ gtk_paned_pack2 (GTK_PANED (window->priv->hpaned),
+ window->priv->vpaned,
+ TRUE,
+ FALSE);
+
+ pluma_debug_message (DEBUG_WINDOW, "Create pluma notebook");
+ window->priv->notebook = pluma_notebook_new ();
+ add_notebook (window, window->priv->notebook);
+
+ /* side and bottom panels */
+ create_side_panel (window);
+ create_bottom_panel (window);
+
+ /* panes' state must be restored after panels have been mapped,
+ * since the bottom pane position depends on the size of the vpaned. */
+ window->priv->side_panel_size = g_settings_get_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_SIDE_PANEL_SIZE);
+ window->priv->bottom_panel_size = g_settings_get_int (window->priv->editor_settings,
+ PLUMA_SETTINGS_BOTTOM_PANEL_SIZE);
+
+ g_signal_connect_after (window->priv->hpaned,
+ "map",
+ G_CALLBACK (hpaned_restore_position),
+ window);
+ g_signal_connect_after (window->priv->vpaned,
+ "map",
+ G_CALLBACK (vpaned_restore_position),
+ window);
+
+ gtk_widget_show (window->priv->hpaned);
+ gtk_widget_show (window->priv->vpaned);
+
+ /* Drag and drop support, set targets to NULL because we add the
+ default uri_targets below */
+ gtk_drag_dest_set (GTK_WIDGET (window),
+ GTK_DEST_DEFAULT_MOTION |
+ GTK_DEST_DEFAULT_HIGHLIGHT |
+ GTK_DEST_DEFAULT_DROP,
+ NULL,
+ 0,
+ GDK_ACTION_COPY);
+
+ /* Add uri targets */
+ tl = gtk_drag_dest_get_target_list (GTK_WIDGET (window));
+
+ if (tl == NULL)
+ {
+ tl = gtk_target_list_new (NULL, 0);
+ gtk_drag_dest_set_target_list (GTK_WIDGET (window), tl);
+ gtk_target_list_unref (tl);
+ }
+
+ gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
+
+ /* connect instead of override, so that we can
+ * share the cb code with the view */
+ g_signal_connect (window,
+ "drag_data_received",
+ G_CALLBACK (drag_data_received_cb),
+ NULL);
+
+ /* we can get the clipboard only after the widget
+ * is realized */
+ g_signal_connect (window,
+ "realize",
+ G_CALLBACK (window_realized),
+ NULL);
+ g_signal_connect (window,
+ "unrealize",
+ G_CALLBACK (window_unrealized),
+ NULL);
+
+ /* Check if the window is active for fullscreen */
+ g_signal_connect (window,
+ "notify::is-active",
+ G_CALLBACK (check_window_is_active),
+ NULL);
+
+ pluma_debug_message (DEBUG_WINDOW, "Update plugins ui");
+
+ window->priv->extensions = peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
PLUMA_TYPE_WINDOW_ACTIVATABLE,
"window",
window,
NULL);
- g_signal_connect (window->priv->extensions,
- "extension-added",
- G_CALLBACK (on_extension_added),
- window);
- g_signal_connect (window->priv->extensions,
- "extension-removed",
- G_CALLBACK (on_extension_removed),
- window);
+ g_signal_connect (window->priv->extensions, "extension-added",
+ G_CALLBACK (on_extension_added),
+ window);
+ g_signal_connect (window->priv->extensions, "extension-removed",
+ G_CALLBACK (on_extension_removed),
+ window);
- peas_extension_set_call (window->priv->extensions, "activate");
+ peas_extension_set_call (window->priv->extensions, "activate");
- /* set visibility of panes.
- This needs to be done after plugins activatation */
- init_panels_visibility (window);
+ /* set visibility of panes.
+ * This needs to be done after plugins activatation */
+ init_panels_visibility (window);
- update_sensitivity_according_to_open_tabs (window);
+ update_sensitivity_according_to_open_tabs (window);
- pluma_debug_message (DEBUG_WINDOW, "END");
+ pluma_debug_message (DEBUG_WINDOW, "END");
}
/**
@@ -4132,16 +4094,16 @@ pluma_window_init (PlumaWindow *window)
PlumaView *
pluma_window_get_active_view (PlumaWindow *window)
{
- PlumaView *view;
+ PlumaView *view;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- if (window->priv->active_tab == NULL)
- return NULL;
+ if (window->priv->active_tab == NULL)
+ return NULL;
- view = pluma_tab_get_view (PLUMA_TAB (window->priv->active_tab));
+ view = pluma_tab_get_view (PLUMA_TAB (window->priv->active_tab));
- return view;
+ return view;
}
/**
@@ -4155,23 +4117,23 @@ pluma_window_get_active_view (PlumaWindow *window)
PlumaDocument *
pluma_window_get_active_document (PlumaWindow *window)
{
- PlumaView *view;
+ PlumaView *view;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- view = pluma_window_get_active_view (window);
- if (view == NULL)
- return NULL;
+ view = pluma_window_get_active_view (window);
+ if (view == NULL)
+ return NULL;
- return PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ return PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
}
GtkWidget *
_pluma_window_get_notebook (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return window->priv->notebook;
+ return window->priv->notebook;
}
/**
@@ -4186,26 +4148,26 @@ _pluma_window_get_notebook (PlumaWindow *window)
*/
PlumaTab *
pluma_window_create_tab (PlumaWindow *window,
- gboolean jump_to)
+ gboolean jump_to)
{
- PlumaTab *tab;
+ PlumaTab *tab;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- tab = PLUMA_TAB (_pluma_tab_new ());
- gtk_widget_show (GTK_WIDGET (tab));
+ tab = PLUMA_TAB (_pluma_tab_new ());
+ gtk_widget_show (GTK_WIDGET (tab));
- pluma_notebook_add_tab (PLUMA_NOTEBOOK (window->priv->notebook),
- tab,
- -1,
- jump_to);
+ pluma_notebook_add_tab (PLUMA_NOTEBOOK (window->priv->notebook),
+ tab,
+ -1,
+ jump_to);
- if (!gtk_widget_get_visible (GTK_WIDGET (window)))
- {
- gtk_window_present (GTK_WINDOW (window));
- }
+ if (!gtk_widget_get_visible (GTK_WIDGET (window)))
+ {
+ gtk_window_present (GTK_WINDOW (window));
+ }
- return tab;
+ return tab;
}
/**
@@ -4226,38 +4188,37 @@ pluma_window_create_tab (PlumaWindow *window,
*/
PlumaTab *
pluma_window_create_tab_from_uri (PlumaWindow *window,
- const gchar *uri,
- const PlumaEncoding *encoding,
- gint line_pos,
- gboolean create,
- gboolean jump_to)
+ const gchar *uri,
+ const PlumaEncoding *encoding,
+ gint line_pos,
+ gboolean create,
+ gboolean jump_to)
{
- GtkWidget *tab;
-
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- g_return_val_if_fail (uri != NULL, NULL);
+ GtkWidget *tab;
- tab = _pluma_tab_new_from_uri (uri,
- encoding,
- line_pos,
- create);
- if (tab == NULL)
- return NULL;
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (uri != NULL, NULL);
- gtk_widget_show (tab);
+ tab = _pluma_tab_new_from_uri (uri,
+ encoding,
+ line_pos,
+ create);
+ if (tab == NULL)
+ return NULL;
- pluma_notebook_add_tab (PLUMA_NOTEBOOK (window->priv->notebook),
- PLUMA_TAB (tab),
- -1,
- jump_to);
+ gtk_widget_show (tab);
+ pluma_notebook_add_tab (PLUMA_NOTEBOOK (window->priv->notebook),
+ PLUMA_TAB (tab),
+ -1,
+ jump_to);
- if (!gtk_widget_get_visible (GTK_WIDGET (window)))
- {
- gtk_window_present (GTK_WINDOW (window));
- }
+ if (!gtk_widget_get_visible (GTK_WIDGET (window)))
+ {
+ gtk_window_present (GTK_WINDOW (window));
+ }
- return PLUMA_TAB (tab);
+ return PLUMA_TAB (tab);
}
/**
@@ -4271,20 +4232,20 @@ pluma_window_create_tab_from_uri (PlumaWindow *window,
PlumaTab *
pluma_window_get_active_tab (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return (window->priv->active_tab == NULL) ?
- NULL : PLUMA_TAB (window->priv->active_tab);
+ return (window->priv->active_tab == NULL) ?
+ NULL : PLUMA_TAB (window->priv->active_tab);
}
static void
add_document (PlumaTab *tab, GList **res)
{
- PlumaDocument *doc;
+ PlumaDocument *doc;
- doc = pluma_tab_get_document (tab);
+ doc = pluma_tab_get_document (tab);
- *res = g_list_prepend (*res, doc);
+ *res = g_list_prepend (*res, doc);
}
/**
@@ -4300,27 +4261,27 @@ add_document (PlumaTab *tab, GList **res)
GList *
pluma_window_get_documents (PlumaWindow *window)
{
- GList *res = NULL;
+ GList *res = NULL;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
- (GtkCallback)add_document,
- &res);
+ gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+ (GtkCallback)add_document,
+ &res);
- res = g_list_reverse (res);
+ res = g_list_reverse (res);
- return res;
+ return res;
}
static void
add_view (PlumaTab *tab, GList **res)
{
- PlumaView *view;
+ PlumaView *view;
- view = pluma_tab_get_view (tab);
+ view = pluma_tab_get_view (tab);
- *res = g_list_prepend (*res, view);
+ *res = g_list_prepend (*res, view);
}
/**
@@ -4335,17 +4296,17 @@ add_view (PlumaTab *tab, GList **res)
GList *
pluma_window_get_views (PlumaWindow *window)
{
- GList *res = NULL;
+ GList *res = NULL;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
- (GtkCallback)add_view,
- &res);
+ gtk_container_foreach (GTK_CONTAINER (window->priv->notebook),
+ (GtkCallback)add_view,
+ &res);
- res = g_list_reverse (res);
+ res = g_list_reverse (res);
- return res;
+ return res;
}
/**
@@ -4357,15 +4318,14 @@ pluma_window_get_views (PlumaWindow *window)
*/
void
pluma_window_close_tab (PlumaWindow *window,
- PlumaTab *tab)
+ PlumaTab *tab)
{
- g_return_if_fail (PLUMA_IS_WINDOW (window));
- g_return_if_fail (PLUMA_IS_TAB (tab));
- g_return_if_fail ((pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SAVING) &&
- (pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (PLUMA_IS_TAB (tab));
+ g_return_if_fail ((pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SAVING) &&
+ (pluma_tab_get_state (tab) != PLUMA_TAB_STATE_SHOWING_PRINT_PREVIEW));
- pluma_notebook_remove_tab (PLUMA_NOTEBOOK (window->priv->notebook),
- tab);
+ pluma_notebook_remove_tab (PLUMA_NOTEBOOK (window->priv->notebook), tab);
}
/**
@@ -4377,15 +4337,15 @@ pluma_window_close_tab (PlumaWindow *window,
void
pluma_window_close_all_tabs (PlumaWindow *window)
{
- g_return_if_fail (PLUMA_IS_WINDOW (window));
- g_return_if_fail (!(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (!(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
- window->priv->removing_tabs = TRUE;
+ window->priv->removing_tabs = TRUE;
- pluma_notebook_remove_all_tabs (PLUMA_NOTEBOOK (window->priv->notebook));
+ pluma_notebook_remove_all_tabs (PLUMA_NOTEBOOK (window->priv->notebook));
- window->priv->removing_tabs = FALSE;
+ window->priv->removing_tabs = FALSE;
}
/**
@@ -4397,53 +4357,52 @@ pluma_window_close_all_tabs (PlumaWindow *window)
*/
void
pluma_window_close_tabs (PlumaWindow *window,
- const GList *tabs)
+ const GList *tabs)
{
- g_return_if_fail (PLUMA_IS_WINDOW (window));
- g_return_if_fail (!(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
- !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (!(window->priv->state & PLUMA_WINDOW_STATE_SAVING) &&
+ !(window->priv->state & PLUMA_WINDOW_STATE_SAVING_SESSION));
- if (tabs == NULL)
- return;
+ if (tabs == NULL)
+ return;
- window->priv->removing_tabs = TRUE;
+ window->priv->removing_tabs = TRUE;
- while (tabs != NULL)
- {
- if (tabs->next == NULL)
- window->priv->removing_tabs = FALSE;
+ while (tabs != NULL)
+ {
+ if (tabs->next == NULL)
+ window->priv->removing_tabs = FALSE;
- pluma_notebook_remove_tab (PLUMA_NOTEBOOK (window->priv->notebook),
- PLUMA_TAB (tabs->data));
+ pluma_notebook_remove_tab (PLUMA_NOTEBOOK (window->priv->notebook),
+ PLUMA_TAB (tabs->data));
- tabs = g_list_next (tabs);
- }
+ tabs = g_list_next (tabs);
+ }
- g_return_if_fail (window->priv->removing_tabs == FALSE);
+ g_return_if_fail (window->priv->removing_tabs == FALSE);
}
PlumaWindow *
_pluma_window_move_tab_to_new_window (PlumaWindow *window,
- PlumaTab *tab)
+ PlumaTab *tab)
{
- PlumaWindow *new_window;
+ PlumaWindow *new_window;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- g_return_val_if_fail (PLUMA_IS_TAB (tab), NULL);
- g_return_val_if_fail (gtk_notebook_get_n_pages (
- GTK_NOTEBOOK (window->priv->notebook)) > 1,
- NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_TAB (tab), NULL);
+ g_return_val_if_fail (gtk_notebook_get_n_pages (GTK_NOTEBOOK (window->priv->notebook)) > 1,
+ NULL);
- new_window = clone_window (window);
+ new_window = clone_window (window);
- pluma_notebook_move_tab (PLUMA_NOTEBOOK (window->priv->notebook),
- PLUMA_NOTEBOOK (new_window->priv->notebook),
- tab,
- -1);
+ pluma_notebook_move_tab (PLUMA_NOTEBOOK (window->priv->notebook),
+ PLUMA_NOTEBOOK (new_window->priv->notebook),
+ tab,
+ -1);
- gtk_widget_show (GTK_WIDGET (new_window));
+ gtk_widget_show (GTK_WIDGET (new_window));
- return new_window;
+ return new_window;
}
/**
@@ -4455,19 +4414,19 @@ _pluma_window_move_tab_to_new_window (PlumaWindow *window,
*/
void
pluma_window_set_active_tab (PlumaWindow *window,
- PlumaTab *tab)
+ PlumaTab *tab)
{
- gint page_num;
+ gint page_num;
- g_return_if_fail (PLUMA_IS_WINDOW (window));
- g_return_if_fail (PLUMA_IS_TAB (tab));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (PLUMA_IS_TAB (tab));
- page_num = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->notebook),
- GTK_WIDGET (tab));
- g_return_if_fail (page_num != -1);
+ page_num = gtk_notebook_page_num (GTK_NOTEBOOK (window->priv->notebook),
+ GTK_WIDGET (tab));
+ g_return_if_fail (page_num != -1);
- gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook),
- page_num);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (window->priv->notebook),
+ page_num);
}
/**
@@ -4481,17 +4440,17 @@ pluma_window_set_active_tab (PlumaWindow *window,
GtkWindowGroup *
pluma_window_get_group (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return window->priv->window_group;
+ return window->priv->window_group;
}
gboolean
_pluma_window_is_removing_tabs (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE);
- return window->priv->removing_tabs;
+ return window->priv->removing_tabs;
}
/**
@@ -4505,9 +4464,9 @@ _pluma_window_is_removing_tabs (PlumaWindow *window)
GtkUIManager *
pluma_window_get_ui_manager (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return window->priv->manager;
+ return window->priv->manager;
}
/**
@@ -4521,9 +4480,9 @@ pluma_window_get_ui_manager (PlumaWindow *window)
PlumaPanel *
pluma_window_get_side_panel (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return PLUMA_PANEL (window->priv->side_panel);
+ return PLUMA_PANEL (window->priv->side_panel);
}
/**
@@ -4537,9 +4496,9 @@ pluma_window_get_side_panel (PlumaWindow *window)
PlumaPanel *
pluma_window_get_bottom_panel (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return PLUMA_PANEL (window->priv->bottom_panel);
+ return PLUMA_PANEL (window->priv->bottom_panel);
}
/**
@@ -4553,9 +4512,9 @@ pluma_window_get_bottom_panel (PlumaWindow *window)
GtkWidget *
pluma_window_get_statusbar (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), 0);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), 0);
- return window->priv->statusbar;
+ return window->priv->statusbar;
}
/**
@@ -4569,36 +4528,36 @@ pluma_window_get_statusbar (PlumaWindow *window)
PlumaWindowState
pluma_window_get_state (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), PLUMA_WINDOW_STATE_NORMAL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), PLUMA_WINDOW_STATE_NORMAL);
- return window->priv->state;
+ return window->priv->state;
}
GFile *
_pluma_window_get_default_location (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return window->priv->default_location != NULL ?
- g_object_ref (window->priv->default_location) : NULL;
+ return window->priv->default_location != NULL ?
+ g_object_ref (window->priv->default_location) : NULL;
}
void
_pluma_window_set_default_location (PlumaWindow *window,
- GFile *location)
+ GFile *location)
{
- GFile *dir;
+ GFile *dir;
- g_return_if_fail (PLUMA_IS_WINDOW (window));
- g_return_if_fail (G_IS_FILE (location));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (G_IS_FILE (location));
- dir = g_file_get_parent (location);
- g_return_if_fail (dir != NULL);
+ dir = g_file_get_parent (location);
+ g_return_if_fail (dir != NULL);
- if (window->priv->default_location != NULL)
- g_object_unref (window->priv->default_location);
+ if (window->priv->default_location != NULL)
+ g_object_unref (window->priv->default_location);
- window->priv->default_location = dir;
+ window->priv->default_location = dir;
}
/**
@@ -4613,144 +4572,144 @@ _pluma_window_set_default_location (PlumaWindow *window,
GList *
pluma_window_get_unsaved_documents (PlumaWindow *window)
{
- GList *unsaved_docs = NULL;
- GList *tabs;
- GList *l;
+ GList *unsaved_docs = NULL;
+ GList *tabs;
+ GList *l;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- tabs = gtk_container_get_children (GTK_CONTAINER (window->priv->notebook));
+ tabs = gtk_container_get_children (GTK_CONTAINER (window->priv->notebook));
- l = tabs;
- while (l != NULL)
- {
- PlumaTab *tab;
+ l = tabs;
+ while (l != NULL)
+ {
+ PlumaTab *tab;
- tab = PLUMA_TAB (l->data);
+ tab = PLUMA_TAB (l->data);
- if (!_pluma_tab_can_close (tab))
- {
- PlumaDocument *doc;
+ if (!_pluma_tab_can_close (tab))
+ {
+ PlumaDocument *doc;
- doc = pluma_tab_get_document (tab);
- unsaved_docs = g_list_prepend (unsaved_docs, doc);
- }
+ doc = pluma_tab_get_document (tab);
+ unsaved_docs = g_list_prepend (unsaved_docs, doc);
+ }
- l = g_list_next (l);
- }
+ l = g_list_next (l);
+ }
- g_list_free (tabs);
+ g_list_free (tabs);
- return g_list_reverse (unsaved_docs);
+ return g_list_reverse (unsaved_docs);
}
void
_pluma_window_set_saving_session_state (PlumaWindow *window,
- gboolean saving_session)
+ gboolean saving_session)
{
- PlumaWindowState old_state;
+ PlumaWindowState old_state;
- g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
- old_state = window->priv->state;
+ old_state = window->priv->state;
- if (saving_session)
- window->priv->state |= PLUMA_WINDOW_STATE_SAVING_SESSION;
- else
- window->priv->state &= ~PLUMA_WINDOW_STATE_SAVING_SESSION;
+ if (saving_session)
+ window->priv->state |= PLUMA_WINDOW_STATE_SAVING_SESSION;
+ else
+ window->priv->state &= ~PLUMA_WINDOW_STATE_SAVING_SESSION;
- if (old_state != window->priv->state)
- {
- set_sensitivity_according_to_window_state (window);
+ if (old_state != window->priv->state)
+ {
+ set_sensitivity_according_to_window_state (window);
- g_object_notify (G_OBJECT (window), "state");
- }
+ g_object_notify (G_OBJECT (window), "state");
+ }
}
static void
-hide_notebook_tabs_on_fullscreen (GtkNotebook *notebook,
- GParamSpec *pspec,
- PlumaWindow *window)
+hide_notebook_tabs_on_fullscreen (GtkNotebook *notebook,
+ GParamSpec *pspec,
+ PlumaWindow *window)
{
- gtk_notebook_set_show_tabs (notebook, FALSE);
+ gtk_notebook_set_show_tabs (notebook, FALSE);
}
void
_pluma_window_fullscreen (PlumaWindow *window)
{
- g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
- if (_pluma_window_is_fullscreen (window))
- return;
+ if (_pluma_window_is_fullscreen (window))
+ return;
- /* Go to fullscreen mode and hide bars */
- gtk_window_fullscreen (&window->window);
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), FALSE);
- g_signal_connect (window->priv->notebook, "notify::show-tabs",
- G_CALLBACK (hide_notebook_tabs_on_fullscreen), window);
+ /* Go to fullscreen mode and hide bars */
+ gtk_window_fullscreen (&window->window);
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), FALSE);
+ g_signal_connect (window->priv->notebook, "notify::show-tabs",
+ G_CALLBACK (hide_notebook_tabs_on_fullscreen), window);
- gtk_widget_hide (window->priv->menubar);
+ gtk_widget_hide (window->priv->menubar);
- g_signal_handlers_block_by_func (window->priv->toolbar,
- toolbar_visibility_changed,
- window);
- gtk_widget_hide (window->priv->toolbar);
+ g_signal_handlers_block_by_func (window->priv->toolbar,
+ toolbar_visibility_changed,
+ window);
+ gtk_widget_hide (window->priv->toolbar);
- g_signal_handlers_block_by_func (window->priv->statusbar,
- statusbar_visibility_changed,
- window);
- gtk_widget_hide (window->priv->statusbar);
+ g_signal_handlers_block_by_func (window->priv->statusbar,
+ statusbar_visibility_changed,
+ window);
+ gtk_widget_hide (window->priv->statusbar);
- fullscreen_controls_build (window);
- fullscreen_controls_show (window);
+ fullscreen_controls_build (window);
+ fullscreen_controls_show (window);
}
void
_pluma_window_unfullscreen (PlumaWindow *window)
{
- gboolean visible;
- GtkAction *action;
+ gboolean visible;
+ GtkAction *action;
- g_return_if_fail (PLUMA_IS_WINDOW (window));
+ g_return_if_fail (PLUMA_IS_WINDOW (window));
- if (!_pluma_window_is_fullscreen (window))
- return;
+ if (!_pluma_window_is_fullscreen (window))
+ return;
- /* Unfullscreen and show bars */
- gtk_window_unfullscreen (&window->window);
- g_signal_handlers_disconnect_by_func (window->priv->notebook,
- hide_notebook_tabs_on_fullscreen,
- window);
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), TRUE);
- gtk_widget_show (window->priv->menubar);
+ /* Unfullscreen and show bars */
+ gtk_window_unfullscreen (&window->window);
+ g_signal_handlers_disconnect_by_func (window->priv->notebook,
+ hide_notebook_tabs_on_fullscreen,
+ window);
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (window->priv->notebook), TRUE);
+ gtk_widget_show (window->priv->menubar);
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "ViewToolbar");
- visible = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
- if (visible)
- gtk_widget_show (window->priv->toolbar);
- g_signal_handlers_unblock_by_func (window->priv->toolbar,
- toolbar_visibility_changed,
- window);
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "ViewToolbar");
+ visible = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+ if (visible)
+ gtk_widget_show (window->priv->toolbar);
+ g_signal_handlers_unblock_by_func (window->priv->toolbar,
+ toolbar_visibility_changed,
+ window);
- action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
- "ViewStatusbar");
- visible = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
- if (visible)
- gtk_widget_show (window->priv->statusbar);
- g_signal_handlers_unblock_by_func (window->priv->statusbar,
- statusbar_visibility_changed,
- window);
+ action = gtk_action_group_get_action (window->priv->always_sensitive_action_group,
+ "ViewStatusbar");
+ visible = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+ if (visible)
+ gtk_widget_show (window->priv->statusbar);
+ g_signal_handlers_unblock_by_func (window->priv->statusbar,
+ statusbar_visibility_changed,
+ window);
- gtk_widget_hide (window->priv->fullscreen_controls);
+ gtk_widget_hide (window->priv->fullscreen_controls);
}
gboolean
_pluma_window_is_fullscreen (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), FALSE);
- return window->priv->window_state & GDK_WINDOW_STATE_FULLSCREEN;
+ return window->priv->window_state & GDK_WINDOW_STATE_FULLSCREEN;
}
/**
@@ -4764,45 +4723,45 @@ _pluma_window_is_fullscreen (PlumaWindow *window)
*/
PlumaTab *
pluma_window_get_tab_from_location (PlumaWindow *window,
- GFile *location)
+ GFile *location)
{
- GList *tabs;
- GList *l;
- PlumaTab *ret = NULL;
+ GList *tabs;
+ GList *l;
+ PlumaTab *ret = NULL;
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- g_return_val_if_fail (G_IS_FILE (location), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (G_IS_FILE (location), NULL);
- tabs = gtk_container_get_children (GTK_CONTAINER (window->priv->notebook));
+ tabs = gtk_container_get_children (GTK_CONTAINER (window->priv->notebook));
- for (l = tabs; l != NULL; l = g_list_next (l))
- {
- PlumaDocument *d;
- PlumaTab *t;
- GFile *f;
+ for (l = tabs; l != NULL; l = g_list_next (l))
+ {
+ PlumaDocument *d;
+ PlumaTab *t;
+ GFile *f;
- t = PLUMA_TAB (l->data);
- d = pluma_tab_get_document (t);
+ t = PLUMA_TAB (l->data);
+ d = pluma_tab_get_document (t);
- f = pluma_document_get_location (d);
+ f = pluma_document_get_location (d);
- if ((f != NULL))
- {
- gboolean found = g_file_equal (location, f);
+ if ((f != NULL))
+ {
+ gboolean found = g_file_equal (location, f);
- g_object_unref (f);
+ g_object_unref (f);
- if (found)
- {
- ret = t;
- break;
- }
- }
- }
+ if (found)
+ {
+ ret = t;
+ break;
+ }
+ }
+ }
- g_list_free (tabs);
+ g_list_free (tabs);
- return ret;
+ return ret;
}
/**
@@ -4814,20 +4773,20 @@ pluma_window_get_tab_from_location (PlumaWindow *window,
*
* Return value: (transfer none): the #PlumaMessageBus associated with @window
*/
-PlumaMessageBus *
+PlumaMessageBus *
pluma_window_get_message_bus (PlumaWindow *window)
{
- g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (PLUMA_IS_WINDOW (window), NULL);
- return window->priv->message_bus;
+ return window->priv->message_bus;
}
void
_pluma_window_get_default_size (gint *width, gint *height)
{
- g_return_if_fail (width != NULL && height != NULL);
+ g_return_if_fail (width != NULL && height != NULL);
- *width = PLUMA_WINDOW_DEFAULT_WIDTH;
- *height = PLUMA_WINDOW_DEFAULT_HEIGHT;
+ *width = PLUMA_WINDOW_DEFAULT_WIDTH;
+ *height = PLUMA_WINDOW_DEFAULT_HEIGHT;
}