From d85c0aa6ec87e91901e393f701873085e5eeddb0 Mon Sep 17 00:00:00 2001
From: mbkma <39454100+mbkma@users.noreply.github.com>
Date: Wed, 5 Aug 2020 11:19:36 +0200
Subject: Remove changecase plugin. Functionality is provided by GtkSourceView.
(#565)
---
configure.ac | 1 -
help/C/index.docbook | 314 +++++++---------
plugins/Makefile.am | 2 -
plugins/changecase/Makefile.am | 33 --
plugins/changecase/README.md | 3 -
plugins/changecase/changecase.plugin.desktop.in | 8 -
plugins/changecase/pluma-changecase-plugin.c | 470 ------------------------
plugins/changecase/pluma-changecase-plugin.h | 79 ----
pluma/pluma-commands-edit.c | 64 ++++
pluma/pluma-commands.h | 8 +
pluma/pluma-ui.h | 9 +
pluma/pluma-ui.xml | 26 +-
pluma/pluma-view.c | 97 +++++
pluma/pluma-view.h | 6 +
po/POTFILES.in | 2 -
15 files changed, 333 insertions(+), 789 deletions(-)
delete mode 100644 plugins/changecase/Makefile.am
delete mode 100644 plugins/changecase/README.md
delete mode 100644 plugins/changecase/changecase.plugin.desktop.in
delete mode 100644 plugins/changecase/pluma-changecase-plugin.c
delete mode 100644 plugins/changecase/pluma-changecase-plugin.h
diff --git a/configure.ac b/configure.ac
index 0490de3a..94760c6e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -243,7 +243,6 @@ pluma/Makefile
help/Makefile
pixmaps/Makefile
plugins/Makefile
-plugins/changecase/Makefile
plugins/docinfo/Makefile
plugins/externaltools/data/Makefile
plugins/externaltools/Makefile
diff --git a/help/C/index.docbook b/help/C/index.docbook
index c363df9f..5961f617 100644
--- a/help/C/index.docbook
+++ b/help/C/index.docbook
@@ -21,21 +21,21 @@
2015-2020
- MATE Documentation Project
+ MATE Documentation Project
2007
- GNOME Documentation Project
+ GNOME Documentation Project
2002
2003
2004
- Sun Microsystems
+ Sun Microsystems
2000
- Eric Baudais
+ Eric Baudais
@@ -88,7 +88,7 @@
GNOME Documentation Project
- baudais@okstate.edu
+ baudais@okstate.edu
@@ -277,7 +277,7 @@
-
+
Shows pluma main window.
@@ -286,25 +286,25 @@
The pluma window contains the following elements:
-
+
Menubar
The menus on the menubar contain all the commands you need to work with files in pluma.
-
+
Toolbar
The toolbar contains a subset of the commands that you can access from the menubar.
-
+
Display area
The display area contains the text of the file that you are editing.
-
+
Statusbar
The statusbar displays information about current pluma activity and contextual information about the menu items. The statusbar also displays the following information:
@@ -318,14 +318,14 @@
-
+
Side Pane
The side pane displays a list of open documents, and other information depending on which plugins are enabled.
By default, the side pane is not shown. To show it, choose View Side Pane .
-
+
Bottom Pane
The bottom pane is used by programming tools such as the Python Console plugin to display output.
@@ -472,13 +472,13 @@
Finding Text
-
+
To search a file for a string of text, perform the following steps:
- Choose
- Search
- Find
+ Choose
+ Search
+ Find
to display the Find dialog.
@@ -488,25 +488,25 @@
Click Find to search the file for the first occurrence of the string after your current cursor position. If pluma finds the string, the application selects first occurrence of the string. Other occurrences of the string are highlighted.
- To find the next occurrence of the string, click Find or choose
- Search
- Find Next
- . To find the previous occurrence of the text, choose
- Search
- Find Previous
+ To find the next occurrence of the string, click Find or choose
+ Search
+ Find Next
+ . To find the previous occurrence of the text, choose
+ Search
+ Find Previous
.
- After you have closed the Find dialog, you can still move the selection to other occurrences of the text by choosing
- Search
- Find Next
- and
- Search
- Find Previous
+ After you have closed the Find dialog, you can still move the selection to other occurrences of the text by choosing
+ Search
+ Find Next
+ and
+ Search
+ Find Previous
.
- To remove the highlighting from the text, choose
- Search
- Clear Highlight
+ To remove the highlighting from the text, choose
+ Search
+ Clear Highlight
.
Refer to the pcrepattern 3 for more information about the syntax and the semantics of the regular expressions supported on Find dialog.
@@ -515,12 +515,12 @@
Incremental Search
-
+
Incremental search highlights matching text in the document as you type it letter by letter. (This is similar to the search feature in several web browsers.)
- To start an incremental search, choose
- Search
- Incremental Search
+ To start an incremental search, choose
+ Search
+ Incremental Search
. The search box appears at the top of the display area.
Begin typing, and text that matches will be highlighted in the document. The first instance after the cursor position is also selected.
To advance the selection to the next match while keeping the incremental search box open, press
@@ -544,9 +544,9 @@
To search a file for a string, and replace the string with an alternative string, perform the following steps:
- Choose
- Search
- Replace
+ Choose
+ Search
+ Replace
to display the Replace dialog.
@@ -566,7 +566,7 @@
Find and Replace Options
-
+
The Find dialog and the Replace dialog both have the following options:
@@ -589,7 +589,7 @@
Special Characters
-
+
You can include the following escape sequences in the text to find or replace to represent special characters:
@@ -662,23 +662,23 @@
General Tabbed Section
-
+
- Print syntax highlighting
+ Print syntax highlighting
Select this option to print syntax highlighting. For more information about syntax highlighting, see .
-
+
- Print page headers
+ Print page headers
Select this option to include a header on each page that you print. You cannot configure the header.
-
+
Line Numbers
@@ -687,9 +687,9 @@
Use the Number every ... lines spin box to specify how often to print the line numbers, for example every 5 lines, every 10 lines, and so on.
-
+
- Text Wrapping
+ Text Wrapping
Select the Enable text wrapping option to wrap text onto the next line, at a character level, when you print a file. The application counts wrapped lines as one line for line numbering purposes.
@@ -704,15 +704,15 @@
Fonts
-
+
- Body
+ Body
Click on this button to select the font used to print the body text of a file.
-
+
Line numbers
@@ -720,9 +720,9 @@
Click on this button to select the font used to print line numbers.
-
+
- Headers and footers
+ Headers and footers
Click on this button to select the font to use to print the headers and footers in a file.
@@ -757,9 +757,9 @@
Job Tabbed Section
-
+
- Print range
+ Print range
Select one of the following options to determine how many pages to print:
@@ -785,9 +785,9 @@
-
+
- Copies
+ Copies
Use the Number of copies spin box to specify the number of copies of the file that you want to print.
@@ -801,28 +801,28 @@
Printer Tabbed Section
-
+
-
+
- Printer
+ Printer
Use this drop-down list to select the printer to which you want to print the file.
-
+
- Settings
+ Settings
Use this drop-down list to select the printer settings.
To configure the printer, click Configure. For example, you can enable or disable duplex printing, or schedule delayed printing, if this functionality is supported by the printer.
-
+
- Location
+ Location
Use this drop-down list to select one of the following print destinations:
@@ -867,25 +867,25 @@
-
+
- State
+ State
This functionality is not supported in this version of pluma.
-
+
- Type
+ Type
This functionality is not supported in this version of pluma.
-
+
- Comment
+ Comment
This functionality is not supported in this version of pluma.
@@ -898,62 +898,62 @@
Paper Tabbed Section
-
+
-
+
- Paper size
+ Paper size
Use this drop-down list to select the size of the paper to which you want to print the file.
-
+
- Width
+ Width
Use this spin box to specify the width of the paper. Use the adjacent drop-down list to change the measurement unit.
-
+
- Height
+ Height
Use this spin box to specify the height of the paper.
-
+
- Feed orientation
+ Feed orientation
Use this drop-down list to select the orientation of the paper in the printer.
-
+
- Page orientation
+ Page orientation
Use this drop-down list to select the page orientation.
-
+
- Layout
+ Layout
Use this drop-down list to select the page layout. A preview of each layout that you select is displayed in the Preview area.
-
+
- Paper tray
+ Paper tray
- Use this drop-down list to select the paper tray.
+ Use this drop-down list to select the paper tray.
@@ -972,7 +972,7 @@
Syntax Highlighting
-
+
Syntax highlighting makes source code easier to read by showing different parts of the text in different colors.
pluma chooses an appropriate syntax highlighting mode based on a document's type. To override the syntax highlighting mode, choose View Highlight Mode , then choose one of the following menu items:
@@ -1268,6 +1268,38 @@
Delete current line.
+
+
+ Ctrl + U
+
+
+ Change case to uppercase.
+
+
+
+
+ Ctrl + L
+
+
+ Change case to lowercase.
+
+
+
+
+ Alt + U
+
+
+ Toggle case of each character.
+
+
+
+
+ Alt + L
+
+
+ Capitalize each word.
+
+
Alt + Up
@@ -1541,7 +1573,7 @@
- Text Wrapping
+ Text Wrapping
Select the Enable text wrapping option to have long lines of text flow into paragraphs instead of running off the edge of the text window. This avoids having to scroll horizontally
@@ -1591,7 +1623,7 @@
- Tabs
+ Tabs
Use the Tab width spin box to specify the width of the space that pluma inserts when you press the Tab key.
@@ -1600,7 +1632,7 @@
- Auto Indentation
+ Auto Indentation
Select the Enable auto indentation option to specify that the next line starts at the indentation level of the current line.
@@ -1608,7 +1640,7 @@
- File Saving
+ File Saving
Select the Create a backup copy of files before saving option to create a backup copy of a file each time you save the file. The backup copy of the file contains a ~ at the end of the filename.
@@ -1622,11 +1654,11 @@
Font & Colors Preferences
-
+
- Font
+ Font
Select the Use default theme font option to use the default system font for the text in the pluma text window.
@@ -1721,7 +1753,7 @@
Disabling a Plugin
-
+
A plugin remains enabled when you quit pluma.
To disable a pluma plugin, perform the following steps:
@@ -1761,11 +1793,6 @@
File browser
-->
-
-
- allows you to change the case of the selected text.
-
-
shows the number of lines, words, and characters in the document.
@@ -1832,81 +1859,6 @@
-
-
- Change Case Plugin
-
- The Change Case plugin changes the case of the selected text.
- The following items are added to the Edit menu when the Change Case plugin is enabled:
-
-
-
-
-
-
-
-
- Menu Item
-
-
- Action
-
-
- Example
-
-
-
-
-
-
- Edit Change Case All Upper Case
-
-
- Change each character to uppercase.
-
-
- This text becomes THIS TEXT
-
-
-
-
- Edit Change Case All Lower Case
-
-
- Change each character to lowercase.
-
-
- This Text becomes this text
-
-
-
-
- Edit Change Case Invert Case
-
-
- Change each lowercase character to uppercase, and change each uppercase character to lowercase.
-
-
- This Text becomes tHIS tEXT
-
-
-
-
- Edit Change Case Title Case
-
-
- Change the first character of each word to uppercase.
-
-
- this text becomes This Text
-
-
-
-
-
-
-
-
Document Statistics Plugin
@@ -2148,19 +2100,19 @@
To configure the Insert Date/Time plugin, perform the following steps:
-
+
Choose Edit Preferences .
-
+
Select the Plugins tab.
-
+
Select the Insert Date/Time plugin.
-
+
Click Configure Plugin to display the Configure insert date/time plugin dialog.
-
+
Select one of the options, as follows:
@@ -2180,11 +2132,11 @@
-
+
Click OK to close the Configure insert date/time plugin dialog.
-
+
To close the Preferences dialog, click Close.
@@ -2264,7 +2216,7 @@
When your document is ready, save it.
-
+
You will see that any trailing whitespaces has been stripped after the document has been saved.
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 28ae8910..4a40c74d 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -1,5 +1,4 @@
DIST_SUBDIRS = \
- changecase \
docinfo \
externaltools \
filebrowser \
@@ -14,7 +13,6 @@ DIST_SUBDIRS = \
trailsave
SUBDIRS = \
- changecase \
docinfo \
externaltools \
filebrowser \
diff --git a/plugins/changecase/Makefile.am b/plugins/changecase/Makefile.am
deleted file mode 100644
index e30cfa37..00000000
--- a/plugins/changecase/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-# changecase plugin
-plugindir = $(PLUMA_PLUGINS_LIBS_DIR)
-
-AM_CPPFLAGS = \
- -I$(top_srcdir) \
- $(PLUMA_CFLAGS) \
- $(WARN_CFLAGS)
-
-plugin_LTLIBRARIES = libchangecase.la
-
-libchangecase_la_SOURCES = \
- pluma-changecase-plugin.h \
- pluma-changecase-plugin.c
-
-libchangecase_la_LDFLAGS = $(PLUGIN_LIBTOOL_FLAGS)
-libchangecase_la_LIBADD = $(PLUMA_LIBS)
-
-uidir = $(PLUMA_PLUGINS_DATA_DIR)/changecase
-ui_DATA =
-
-plugin_in_files = changecase.plugin.desktop.in
-plugin_DATA = $(plugin_in_files:.plugin.desktop.in=.plugin)
-
-$(plugin_DATA): $(plugin_in_files)
- $(AM_V_GEN) $(MSGFMT) --keyword=Name --keyword=Description --desktop --template $< -d $(top_srcdir)/po -o $@
-
-EXTRA_DIST = $(ui_DATA) $(plugin_in_files)
-
-CLEANFILES = $(plugin_DATA)
-DISTCLEANFILES = $(plugin_DATA)
-
-
--include $(top_srcdir)/git.mk
diff --git a/plugins/changecase/README.md b/plugins/changecase/README.md
deleted file mode 100644
index 7f9dadad..00000000
--- a/plugins/changecase/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Change case Plugin
-
-The Change Case plugin changes the case of the selected text, like uppercase to lowercase and vice versa. To know more, see the **Plugins** section of the pluma user manual.
\ No newline at end of file
diff --git a/plugins/changecase/changecase.plugin.desktop.in b/plugins/changecase/changecase.plugin.desktop.in
deleted file mode 100644
index bff2f4f6..00000000
--- a/plugins/changecase/changecase.plugin.desktop.in
+++ /dev/null
@@ -1,8 +0,0 @@
-[Plugin]
-Module=changecase
-IAge=2
-Name=Change Case
-Description=Changes the case of selected text.
-Authors=Paolo Borelli
-Copyright=Copyright © 2004-2005 Paolo Borelli
-Website=https://mate-desktop.org
diff --git a/plugins/changecase/pluma-changecase-plugin.c b/plugins/changecase/pluma-changecase-plugin.c
deleted file mode 100644
index 0c0f5289..00000000
--- a/plugins/changecase/pluma-changecase-plugin.c
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * pluma-changecase-plugin.c
- *
- * Copyright (C) 2004-2005 - Paolo Borelli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $Id$
- */
-
-#ifdef HAVE_CONFIG_H
-#include
-#endif
-
-#include "pluma-changecase-plugin.h"
-
-#include
-#include
-#include
-
-#include
-#include
-
-static void peas_activatable_iface_init (PeasActivatableInterface *iface);
-
-struct _PlumaChangecasePluginPrivate
-{
- GtkWidget *window;
-
- GtkActionGroup *action_group;
- guint ui_id;
-};
-
-G_DEFINE_DYNAMIC_TYPE_EXTENDED (PlumaChangecasePlugin,
- pluma_changecase_plugin,
- PEAS_TYPE_EXTENSION_BASE,
- 0,
- G_ADD_PRIVATE_DYNAMIC (PlumaChangecasePlugin)
- G_IMPLEMENT_INTERFACE_DYNAMIC (PEAS_TYPE_ACTIVATABLE,
- peas_activatable_iface_init))
-
-enum {
- PROP_0,
- PROP_OBJECT
-};
-
-typedef enum {
- TO_UPPER_CASE,
- TO_LOWER_CASE,
- INVERT_CASE,
- TO_TITLE_CASE,
-} ChangeCaseChoice;
-
-static void
-do_upper_case (GtkTextBuffer *buffer,
- GtkTextIter *start,
- GtkTextIter *end)
-{
- GString *s = g_string_new (NULL);
-
- while (!gtk_text_iter_is_end (start) &&
- !gtk_text_iter_equal (start, end))
- {
- gunichar c, nc;
-
- c = gtk_text_iter_get_char (start);
- nc = g_unichar_toupper (c);
- g_string_append_unichar (s, nc);
-
- gtk_text_iter_forward_char (start);
- }
-
- gtk_text_buffer_delete_selection (buffer, TRUE, TRUE);
- gtk_text_buffer_insert_at_cursor (buffer, s->str, s->len);
-
- g_string_free (s, TRUE);
-}
-
-static void
-do_lower_case (GtkTextBuffer *buffer,
- GtkTextIter *start,
- GtkTextIter *end)
-{
- GString *s = g_string_new (NULL);
-
- while (!gtk_text_iter_is_end (start) &&
- !gtk_text_iter_equal (start, end))
- {
- gunichar c, nc;
-
- c = gtk_text_iter_get_char (start);
- nc = g_unichar_tolower (c);
- g_string_append_unichar (s, nc);
-
- gtk_text_iter_forward_char (start);
- }
-
- gtk_text_buffer_delete_selection (buffer, TRUE, TRUE);
- gtk_text_buffer_insert_at_cursor (buffer, s->str, s->len);
-
- g_string_free (s, TRUE);
-}
-
-static void
-do_invert_case (GtkTextBuffer *buffer,
- GtkTextIter *start,
- GtkTextIter *end)
-{
- GString *s = g_string_new (NULL);
-
- while (!gtk_text_iter_is_end (start) &&
- !gtk_text_iter_equal (start, end))
- {
- gunichar c, nc;
-
- c = gtk_text_iter_get_char (start);
- if (g_unichar_islower (c))
- nc = g_unichar_toupper (c);
- else
- nc = g_unichar_tolower (c);
- g_string_append_unichar (s, nc);
-
- gtk_text_iter_forward_char (start);
- }
-
- gtk_text_buffer_delete_selection (buffer, TRUE, TRUE);
- gtk_text_buffer_insert_at_cursor (buffer, s->str, s->len);
-
- g_string_free (s, TRUE);
-}
-
-static void
-do_title_case (GtkTextBuffer *buffer,
- GtkTextIter *start,
- GtkTextIter *end)
-{
- GString *s = g_string_new (NULL);
-
- while (!gtk_text_iter_is_end (start) &&
- !gtk_text_iter_equal (start, end))
- {
- gunichar c, nc;
-
- c = gtk_text_iter_get_char (start);
- if (gtk_text_iter_starts_word (start))
- nc = g_unichar_totitle (c);
- else
- nc = g_unichar_tolower (c);
- g_string_append_unichar (s, nc);
-
- gtk_text_iter_forward_char (start);
- }
-
- gtk_text_buffer_delete_selection (buffer, TRUE, TRUE);
- gtk_text_buffer_insert_at_cursor (buffer, s->str, s->len);
-
- g_string_free (s, TRUE);
-}
-
-static void
-change_case (PlumaWindow *window,
- ChangeCaseChoice choice)
-{
- PlumaDocument *doc;
- GtkTextIter start, end;
-
- pluma_debug (DEBUG_PLUGINS);
-
- doc = pluma_window_get_active_document (window);
- g_return_if_fail (doc != NULL);
-
- if (!gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &start, &end))
- {
- return;
- }
-
- gtk_text_buffer_begin_user_action (GTK_TEXT_BUFFER (doc));
-
- switch (choice)
- {
- case TO_UPPER_CASE:
- do_upper_case (GTK_TEXT_BUFFER (doc), &start, &end);
- break;
- case TO_LOWER_CASE:
- do_lower_case (GTK_TEXT_BUFFER (doc), &start, &end);
- break;
- case INVERT_CASE:
- do_invert_case (GTK_TEXT_BUFFER (doc), &start, &end);
- break;
- case TO_TITLE_CASE:
- do_title_case (GTK_TEXT_BUFFER (doc), &start, &end);
- break;
- default:
- g_return_if_reached ();
- }
-
- gtk_text_buffer_end_user_action (GTK_TEXT_BUFFER (doc));
-}
-
-static void
-upper_case_cb (GtkAction *action,
- PlumaWindow *window)
-{
- change_case (window, TO_UPPER_CASE);
-}
-
-static void
-lower_case_cb (GtkAction *action,
- PlumaWindow *window)
-{
- change_case (window, TO_LOWER_CASE);
-}
-
-static void
-invert_case_cb (GtkAction *action,
- PlumaWindow *window)
-{
- change_case (window, INVERT_CASE);
-}
-
-static void
-title_case_cb (GtkAction *action,
- PlumaWindow *window)
-{
- change_case (window, TO_TITLE_CASE);
-}
-
-static const GtkActionEntry action_entries[] =
-{
- { "ChangeCase", NULL, N_("C_hange Case") },
- { "UpperCase", NULL, N_("All _Upper Case"), NULL,
- N_("Change selected text to upper case"),
- G_CALLBACK (upper_case_cb) },
- { "LowerCase", NULL, N_("All _Lower Case"), NULL,
- N_("Change selected text to lower case"),
- G_CALLBACK (lower_case_cb) },
- { "InvertCase", NULL, N_("_Invert Case"), NULL,
- N_("Invert the case of selected text"),
- G_CALLBACK (invert_case_cb) },
- { "TitleCase", NULL, N_("_Title Case"), NULL,
- N_("Capitalize the first letter of each selected word"),
- G_CALLBACK (title_case_cb) }
-};
-
-const gchar submenu[] =
-""
-" "
-" "
-" "
-"";
-
-
-static void
-pluma_changecase_plugin_init (PlumaChangecasePlugin *plugin)
-{
- pluma_debug_message (DEBUG_PLUGINS, "PlumaChangecasePlugin initializing");
-
- plugin->priv = pluma_changecase_plugin_get_instance_private (plugin);
-}
-
-static void
-pluma_changecase_plugin_dispose (GObject *object)
-{
- PlumaChangecasePlugin *plugin = PLUMA_CHANGECASE_PLUGIN (object);
-
- pluma_debug_message (DEBUG_PLUGINS, "PlumaChangecasePlugin disposing");
-
- if (plugin->priv->window != NULL)
- {
- g_object_unref (plugin->priv->window);
- plugin->priv->window = NULL;
- }
-
- if (plugin->priv->action_group != NULL)
- {
- g_object_unref (plugin->priv->action_group);
- plugin->priv->action_group = NULL;
- }
-
- G_OBJECT_CLASS (pluma_changecase_plugin_parent_class)->dispose (object);
-}
-
-static void
-pluma_changecase_plugin_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- PlumaChangecasePlugin *plugin = PLUMA_CHANGECASE_PLUGIN (object);
-
- switch (prop_id)
- {
- case PROP_OBJECT:
- plugin->priv->window = GTK_WIDGET (g_value_dup_object (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-pluma_changecase_plugin_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- PlumaChangecasePlugin *plugin = PLUMA_CHANGECASE_PLUGIN (object);
-
- switch (prop_id)
- {
- case PROP_OBJECT:
- g_value_set_object (value, plugin->priv->window);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-update_ui (PlumaChangecasePluginPrivate *data)
-{
- PlumaWindow *window;
- GtkTextView *view;
- GtkAction *action;
- gboolean sensitive = FALSE;
-
- pluma_debug (DEBUG_PLUGINS);
-
- window = PLUMA_WINDOW (data->window);
- view = GTK_TEXT_VIEW (pluma_window_get_active_view (window));
-
- if (view != NULL)
- {
- GtkTextBuffer *buffer;
-
- buffer = gtk_text_view_get_buffer (view);
- sensitive = (gtk_text_view_get_editable (view) &&
- gtk_text_buffer_get_has_selection (buffer));
- }
-
- action = gtk_action_group_get_action (data->action_group,
- "ChangeCase");
- gtk_action_set_sensitive (action, sensitive);
-}
-
-static void
-pluma_changecase_plugin_activate (PeasActivatable *activatable)
-{
- PlumaChangecasePluginPrivate *data;
- PlumaWindow *window;
- GtkUIManager *manager;
- GError *error = NULL;
-
- pluma_debug (DEBUG_PLUGINS);
-
- data = PLUMA_CHANGECASE_PLUGIN (activatable)->priv;
- window = PLUMA_WINDOW (data->window);
-
- manager = pluma_window_get_ui_manager (window);
-
- data->action_group = gtk_action_group_new ("PlumaChangecasePluginActions");
- gtk_action_group_set_translation_domain (data->action_group,
- GETTEXT_PACKAGE);
- gtk_action_group_add_actions (data->action_group,
- action_entries,
- G_N_ELEMENTS (action_entries),
- window);
-
- gtk_ui_manager_insert_action_group (manager, data->action_group, -1);
-
- data->ui_id = gtk_ui_manager_add_ui_from_string (manager,
- submenu,
- -1,
- &error);
- if (data->ui_id == 0)
- {
- g_warning ("%s", error->message);
- return;
- }
-
- update_ui (data);
-}
-
-static void
-pluma_changecase_plugin_deactivate (PeasActivatable *activatable)
-{
- PlumaChangecasePluginPrivate *data;
- PlumaWindow *window;
- GtkUIManager *manager;
-
- pluma_debug (DEBUG_PLUGINS);
-
- data = PLUMA_CHANGECASE_PLUGIN (activatable)->priv;
- window = PLUMA_WINDOW (data->window);
-
- manager = pluma_window_get_ui_manager (window);
-
- gtk_ui_manager_remove_ui (manager, data->ui_id);
- gtk_ui_manager_remove_action_group (manager, data->action_group);
-}
-
-static void
-pluma_changecase_plugin_update_state (PeasActivatable *activatable)
-{
- pluma_debug (DEBUG_PLUGINS);
-
- update_ui (PLUMA_CHANGECASE_PLUGIN (activatable)->priv);
-}
-
-static void
-pluma_changecase_plugin_class_init (PlumaChangecasePluginClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->dispose = pluma_changecase_plugin_dispose;
- object_class->set_property = pluma_changecase_plugin_set_property;
- object_class->get_property = pluma_changecase_plugin_get_property;
-
- g_object_class_override_property (object_class, PROP_OBJECT, "object");
-}
-
-static void
-pluma_changecase_plugin_class_finalize (PlumaChangecasePluginClass *klass)
-{
- /* dummy function - used by G_DEFINE_DYNAMIC_TYPE_EXTENDED */
-}
-
-static void
-peas_activatable_iface_init (PeasActivatableInterface *iface)
-{
- iface->activate = pluma_changecase_plugin_activate;
- iface->deactivate = pluma_changecase_plugin_deactivate;
- iface->update_state = pluma_changecase_plugin_update_state;
-}
-
-G_MODULE_EXPORT void
-peas_register_types (PeasObjectModule *module)
-{
- pluma_changecase_plugin_register_type (G_TYPE_MODULE (module));
-
- peas_object_module_register_extension_type (module,
- PEAS_TYPE_ACTIVATABLE,
- PLUMA_TYPE_CHANGECASE_PLUGIN);
-}
diff --git a/plugins/changecase/pluma-changecase-plugin.h b/plugins/changecase/pluma-changecase-plugin.h
deleted file mode 100644
index d6611097..00000000
--- a/plugins/changecase/pluma-changecase-plugin.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * pluma-changecase-plugin.h
- *
- * Copyright (C) 2004-2005 - Paolo Borelli
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $Id$
- */
-
-#ifndef __PLUMA_CHANGECASE_PLUGIN_H__
-#define __PLUMA_CHANGECASE_PLUGIN_H__
-
-#include
-#include
-#include
-#include
-
-G_BEGIN_DECLS
-
-/*
- * Type checking and casting macros
- */
-#define PLUMA_TYPE_CHANGECASE_PLUGIN (pluma_changecase_plugin_get_type ())
-#define PLUMA_CHANGECASE_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PLUMA_TYPE_CHANGECASE_PLUGIN, PlumaChangecasePlugin))
-#define PLUMA_CHANGECASE_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), PLUMA_TYPE_CHANGECASE_PLUGIN, PlumaChangecasePluginClass))
-#define PLUMA_IS_CHANGECASE_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PLUMA_TYPE_CHANGECASE_PLUGIN))
-#define PLUMA_IS_CHANGECASE_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), PLUMA_TYPE_CHANGECASE_PLUGIN))
-#define PLUMA_CHANGECASE_PLUGIN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PLUMA_TYPE_CHANGECASE_PLUGIN, PlumaChangecasePluginClass))
-
-/* Private structure type */
-typedef struct _PlumaChangecasePluginPrivate PlumaChangecasePluginPrivate;
-
-/*
- * Main object structure
- */
-typedef struct _PlumaChangecasePlugin PlumaChangecasePlugin;
-
-struct _PlumaChangecasePlugin
-{
- PeasExtensionBase parent_instance;
-
- /*< private >*/
- PlumaChangecasePluginPrivate *priv;
-};
-
-/*
- * Class definition
- */
-typedef struct _PlumaChangecasePluginClass PlumaChangecasePluginClass;
-
-struct _PlumaChangecasePluginClass
-{
- PeasExtensionBaseClass parent_class;
-};
-
-/*
- * Public methods
- */
-GType pluma_changecase_plugin_get_type (void) G_GNUC_CONST;
-
-/* All the plugins must implement this function */
-G_MODULE_EXPORT void peas_register_types (PeasObjectModule *module);
-
-G_END_DECLS
-
-#endif /* __PLUMA_CHANGECASE_PLUGIN_H__ */
diff --git a/pluma/pluma-commands-edit.c b/pluma/pluma-commands-edit.c
index 3915da8f..71e953af 100644
--- a/pluma/pluma-commands-edit.c
+++ b/pluma/pluma-commands-edit.c
@@ -164,6 +164,70 @@ _pluma_cmd_edit_select_all (GtkAction *action,
gtk_widget_grab_focus (GTK_WIDGET (active_view));
}
+void
+_pluma_cmd_edit_upper_case (GtkAction *action,
+ PlumaWindow *window)
+{
+ PlumaView *active_view;
+
+ pluma_debug (DEBUG_COMMANDS);
+
+ active_view = pluma_window_get_active_view (window);
+ g_return_if_fail (active_view);
+
+ pluma_view_upper_case_selection (active_view);
+
+ gtk_widget_grab_focus (GTK_WIDGET (active_view));
+}
+
+void
+_pluma_cmd_edit_lower_case (GtkAction *action,
+ PlumaWindow *window)
+{
+ PlumaView *active_view;
+
+ pluma_debug (DEBUG_COMMANDS);
+
+ active_view = pluma_window_get_active_view (window);
+ g_return_if_fail (active_view);
+
+ pluma_view_lower_case_selection (active_view);
+
+ gtk_widget_grab_focus (GTK_WIDGET (active_view));
+}
+
+void
+_pluma_cmd_edit_invert_case (GtkAction *action,
+ PlumaWindow *window)
+{
+ PlumaView *active_view;
+
+ pluma_debug (DEBUG_COMMANDS);
+
+ active_view = pluma_window_get_active_view (window);
+ g_return_if_fail (active_view);
+
+ pluma_view_invert_case_selection (active_view);
+
+ gtk_widget_grab_focus (GTK_WIDGET (active_view));
+}
+
+void
+_pluma_cmd_edit_title_case (GtkAction *action,
+ PlumaWindow *window)
+{
+ PlumaView *active_view;
+
+ pluma_debug (DEBUG_COMMANDS);
+
+ active_view = pluma_window_get_active_view (window);
+ g_return_if_fail (active_view);
+
+ pluma_view_title_case_selection (active_view);
+
+ gtk_widget_grab_focus (GTK_WIDGET (active_view));
+}
+
void
_pluma_cmd_edit_preferences (GtkAction *action,
PlumaWindow *window)
diff --git a/pluma/pluma-commands.h b/pluma/pluma-commands.h
index 2fc44259..b2d5b423 100644
--- a/pluma/pluma-commands.h
+++ b/pluma/pluma-commands.h
@@ -103,6 +103,14 @@ void _pluma_cmd_edit_paste (GtkAction *action,
PlumaWindow *window);
void _pluma_cmd_edit_delete (GtkAction *action,
PlumaWindow *window);
+void _pluma_cmd_edit_upper_case (GtkAction *action,
+ PlumaWindow *window);
+void _pluma_cmd_edit_lower_case (GtkAction *action,
+ PlumaWindow *window);
+void _pluma_cmd_edit_invert_case (GtkAction *action,
+ PlumaWindow *window);
+void _pluma_cmd_edit_title_case (GtkAction *action,
+ PlumaWindow *window);
void _pluma_cmd_edit_select_all (GtkAction *action,
PlumaWindow *window);
void _pluma_cmd_edit_preferences (GtkAction *action,
diff --git a/pluma/pluma-ui.h b/pluma/pluma-ui.h
index 824e1e32..2567ebb0 100644
--- a/pluma/pluma-ui.h
+++ b/pluma/pluma-ui.h
@@ -103,6 +103,15 @@ static const GtkActionEntry pluma_menu_entries[] =
N_("Delete the selected text"), G_CALLBACK (_pluma_cmd_edit_delete) },
{ "EditSelectAll", "edit-select-all", N_("Select _All"), "A",
N_("Select the entire document"), G_CALLBACK (_pluma_cmd_edit_select_all) },
+ { "ChangeCase", NULL, N_("C_hange Case"), NULL, NULL, NULL },
+ { "UpperCase", NULL, N_("All _Upper Case"), NULL,
+ N_("Change selected text to upper case"), G_CALLBACK (_pluma_cmd_edit_upper_case) },
+ { "LowerCase", NULL, N_("All _Lower Case"), NULL,
+ N_("Change selected text to lower case"), G_CALLBACK (_pluma_cmd_edit_lower_case) },
+ { "InvertCase", NULL, N_("_Invert Case"), NULL,
+ N_("Invert the case of selected text"), G_CALLBACK (_pluma_cmd_edit_invert_case) },
+ { "TitleCase", NULL, N_("_Title Case"), NULL,
+ N_("Capitalize the first letter of each selected word"), G_CALLBACK (_pluma_cmd_edit_title_case) },
/* View menu */
{ "ViewHighlightMode", NULL, N_("_Highlight Mode") },
diff --git a/pluma/pluma-ui.xml b/pluma/pluma-ui.xml
index f2c69b42..0c2c0d95 100644
--- a/pluma/pluma-ui.xml
+++ b/pluma/pluma-ui.xml
@@ -2,7 +2,7 @@
* pluma-ui.xml
* This file is part of pluma
*
- * Copyright (C) 2005 - Paolo Maggi
+ * Copyright (C) 2005 - Paolo Maggi
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,9 +19,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
- * Modified by the pluma Team, 2005. See the AUTHORS file for a
- * list of people on the pluma Team.
- * See the ChangeLog files for a list of changes.
+ * Modified by the pluma Team, 2005. See the AUTHORS file for a
+ * list of people on the pluma Team.
+ * See the ChangeLog files for a list of changes.
*
* $Id$
-->
@@ -60,9 +60,9 @@
-
+
-
+
@@ -71,6 +71,12 @@
+
+
+
+
+
+
@@ -103,12 +109,12 @@
-
+
-
+
@@ -136,7 +142,7 @@
-
+
@@ -195,7 +201,7 @@
-
+
diff --git a/pluma/pluma-view.c b/pluma/pluma-view.c
index 24bc0007..1c376877 100644
--- a/pluma/pluma-view.c
+++ b/pluma/pluma-view.c
@@ -323,6 +323,27 @@ pluma_view_class_init (PlumaViewClass *klass)
"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
@@ -753,6 +774,82 @@ pluma_view_delete_selection (PlumaView *view)
0.0);
}
+void
+pluma_view_upper_case_selection (PlumaView *view)
+{
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
+
+ pluma_debug (DEBUG_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);
+
+ 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;
+
+ pluma_debug (DEBUG_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);
+
+ 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;
+
+ pluma_debug (DEBUG_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);
+
+ 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;
+
+ pluma_debug (DEBUG_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);
+
+ 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);
+ }
+}
+
/**
* pluma_view_select_all:
* @view: a #PlumaView
diff --git a/pluma/pluma-view.h b/pluma/pluma-view.h
index c2f5e1df..afad9e08 100644
--- a/pluma/pluma-view.h
+++ b/pluma/pluma-view.h
@@ -95,6 +95,12 @@ void pluma_view_cut_clipboard (PlumaView *view);
void pluma_view_copy_clipboard (PlumaView *view);
void pluma_view_paste_clipboard (PlumaView *view);
void pluma_view_delete_selection (PlumaView *view);
+
+void pluma_view_upper_case_selection (PlumaView *view);
+void pluma_view_lower_case_selection (PlumaView *view);
+void pluma_view_invert_case_selection (PlumaView *view);
+void pluma_view_title_case_selection (PlumaView *view);
+
void pluma_view_select_all (PlumaView *view);
void pluma_view_scroll_to_cursor (PlumaView *view);
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d3754054..04cc2256 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -41,8 +41,6 @@ pluma/pluma-ui.xml
pluma/pluma-utils.c
pluma/pluma-view.c
pluma/pluma-window.c
-plugins/changecase/changecase.plugin.desktop.in
-plugins/changecase/pluma-changecase-plugin.c
plugins/docinfo/docinfo.plugin.desktop.in
plugins/docinfo/docinfo.ui
plugins/docinfo/pluma-docinfo-plugin.c
--
cgit v1.2.1