diff options
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | help/C/index.docbook | 314 | ||||
-rw-r--r-- | plugins/Makefile.am | 2 | ||||
-rw-r--r-- | plugins/changecase/Makefile.am | 33 | ||||
-rw-r--r-- | plugins/changecase/README.md | 3 | ||||
-rw-r--r-- | plugins/changecase/changecase.plugin.desktop.in | 8 | ||||
-rw-r--r-- | plugins/changecase/pluma-changecase-plugin.c | 470 | ||||
-rw-r--r-- | plugins/changecase/pluma-changecase-plugin.h | 79 | ||||
-rw-r--r-- | pluma/pluma-commands-edit.c | 64 | ||||
-rw-r--r-- | pluma/pluma-commands.h | 8 | ||||
-rw-r--r-- | pluma/pluma-ui.h | 9 | ||||
-rw-r--r-- | pluma/pluma-ui.xml | 26 | ||||
-rw-r--r-- | pluma/pluma-view.c | 97 | ||||
-rw-r--r-- | pluma/pluma-view.h | 6 | ||||
-rw-r--r-- | po/POTFILES.in | 2 |
15 files changed, 333 insertions, 789 deletions
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 @@ <copyright its:translate="no"> <year>2015-2020</year> - <holder>MATE Documentation Project</holder> + <holder>MATE Documentation Project</holder> </copyright> <copyright its:translate="no"> <year>2007</year> - <holder>GNOME Documentation Project</holder> + <holder>GNOME Documentation Project</holder> </copyright> <copyright its:translate="no"> <year>2002</year> <year>2003</year> <year>2004</year> - <holder>Sun Microsystems</holder> + <holder>Sun Microsystems</holder> </copyright> <copyright its:translate="no"> <year>2000</year> - <holder>Eric Baudais</holder> + <holder>Eric Baudais</holder> </copyright> <publisher> @@ -88,7 +88,7 @@ <affiliation> <orgname its:translate="yes">GNOME Documentation Project</orgname> </affiliation> - <email>[email protected]</email> + <email>[email protected]</email> </author> <othercredit role="other"> <personname> @@ -277,7 +277,7 @@ <imageobject> <imagedata fileref="figures/pluma_window.png" format="PNG"/> </imageobject> - <textobject> + <textobject> <phrase its:translate="yes">Shows pluma main window.</phrase> </textobject> </mediaobject> @@ -286,25 +286,25 @@ <para>The <application>pluma</application> window contains the following elements:</para> <variablelist> - <varlistentry> + <varlistentry> <term>Menubar</term> <listitem> <para>The menus on the menubar contain all the commands you need to work with files in <application>pluma</application>.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term>Toolbar</term> <listitem> <para>The toolbar contains a subset of the commands that you can access from the menubar.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term>Display area</term> <listitem> <para>The display area contains the text of the file that you are editing.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term>Statusbar</term> <listitem> <para>The statusbar displays information about current <application>pluma</application> activity and contextual information about the menu items. The statusbar also displays the following information:</para> @@ -318,14 +318,14 @@ </itemizedlist> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term>Side Pane</term> <listitem> <para>The side pane displays a list of open documents, and other information depending on which plugins are enabled.</para> <para>By default, the side pane is not shown. To show it, choose <menuchoice> <guimenu>View</guimenu> <guimenuitem>Side Pane</guimenuitem> </menuchoice>.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term>Bottom Pane</term> <listitem> <para>The bottom pane is used by programming tools such as the <application>Python Console</application> plugin to display output.</para> @@ -472,13 +472,13 @@ <info> <title>Finding Text</title> </info> - + <para>To search a file for a string of text, perform the following steps:</para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> - <para>Choose <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Find</guimenuitem> + <para>Choose <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Find</guimenuitem> </menuchoice> to display the <guilabel>Find</guilabel> dialog.</para> </listitem> <listitem> @@ -488,25 +488,25 @@ <para>Click <guibutton>Find</guibutton> to search the file for the first occurrence of the string after your current cursor position. If <application>pluma</application> finds the string, the application selects first occurrence of the string. Other occurrences of the string are highlighted.</para> </listitem> <listitem> - <para>To find the next occurrence of the string, click <guibutton>Find</guibutton> or choose <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Find Next</guimenuitem> - </menuchoice>. To find the previous occurrence of the text, choose <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Find Previous</guimenuitem> + <para>To find the next occurrence of the string, click <guibutton>Find</guibutton> or choose <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Find Next</guimenuitem> + </menuchoice>. To find the previous occurrence of the text, choose <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Find Previous</guimenuitem> </menuchoice>.</para> </listitem> </orderedlist> - <para>After you have closed the <guilabel>Find</guilabel> dialog, you can still move the selection to other occurrences of the text by choosing <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Find Next</guimenuitem> - </menuchoice> and <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Find Previous</guimenuitem> + <para>After you have closed the <guilabel>Find</guilabel> dialog, you can still move the selection to other occurrences of the text by choosing <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Find Next</guimenuitem> + </menuchoice> and <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Find Previous</guimenuitem> </menuchoice>.</para> - <para>To remove the highlighting from the text, choose <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Clear Highlight</guimenuitem> + <para>To remove the highlighting from the text, choose <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Clear Highlight</guimenuitem> </menuchoice>.</para> <para>Refer to the <link xlink:href="man:pcrepattern"> <citerefentry> <refentrytitle>pcrepattern</refentrytitle> <manvolnum>3</manvolnum> </citerefentry> </link> for more information about the syntax and the semantics of the regular expressions supported on <guilabel>Find</guilabel> dialog.</para> </section> @@ -515,12 +515,12 @@ <info> <title>Incremental Search</title> </info> - + <para>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.)</para> - <para>To start an incremental search, choose <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Incremental Search</guimenuitem> + <para>To start an incremental search, choose <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Incremental Search</guimenuitem> </menuchoice>. The search box appears at the top of the display area. </para> <para>Begin typing, and text that matches will be highlighted in the document. The first instance after the cursor position is also selected.</para> <para>To advance the selection to the next match while keeping the incremental search box open, press <keycombo> @@ -544,9 +544,9 @@ <para>To search a file for a string, and replace the string with an alternative string, perform the following steps:</para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> - <para>Choose <menuchoice> - <guimenu>Search</guimenu> - <guimenuitem>Replace</guimenuitem> + <para>Choose <menuchoice> + <guimenu>Search</guimenu> + <guimenuitem>Replace</guimenuitem> </menuchoice> to display the <guilabel>Replace</guilabel> dialog.</para> </listitem> <listitem> @@ -566,7 +566,7 @@ <info> <title>Find and Replace Options</title> </info> - + <para>The <guilabel>Find</guilabel> dialog and the <guilabel>Replace</guilabel> dialog both have the following options:</para> <itemizedlist> <listitem> @@ -589,7 +589,7 @@ <info> <title>Special Characters</title> </info> - + <para>You can include the following escape sequences in the text to find or replace to represent special characters:</para> <variablelist> <varlistentry> @@ -662,23 +662,23 @@ <title>General Tabbed Section</title> </info> <variablelist> - <varlistentry> + <varlistentry> <term> - <guilabel>Print syntax highlighting</guilabel> + <guilabel>Print syntax highlighting</guilabel> </term> <listitem> <para>Select this option to print syntax highlighting. For more information about syntax highlighting, see <xref linkend="pluma-set-highlightmode"/>.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Print page headers</guilabel> + <guilabel>Print page headers</guilabel> </term> <listitem> <para>Select this option to include a header on each page that you print. You cannot configure the header. </para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> <guilabel>Line Numbers</guilabel> </term> @@ -687,9 +687,9 @@ <para>Use the <guilabel>Number every ... lines </guilabel> spin box to specify how often to print the line numbers, for example every 5 lines, every 10 lines, and so on.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Text Wrapping</guilabel> + <guilabel>Text Wrapping</guilabel> </term> <listitem> <para>Select the <guilabel>Enable text wrapping</guilabel> 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.</para> @@ -704,15 +704,15 @@ <title>Fonts</title> </info> <variablelist> - <varlistentry> + <varlistentry> <term> - <guilabel>Body</guilabel> + <guilabel>Body</guilabel> </term> <listitem> <para>Click on this button to select the font used to print the body text of a file.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> <guilabel>Line numbers</guilabel> </term> @@ -720,9 +720,9 @@ <para>Click on this button to select the font used to print line numbers.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Headers and footers</guilabel> + <guilabel>Headers and footers</guilabel> </term> <listitem> <para>Click on this button to select the font to use to print the headers and footers in a file. </para> @@ -757,9 +757,9 @@ <title>Job Tabbed Section</title> </info> <variablelist> - <varlistentry> + <varlistentry> <term> - <guilabel>Print range</guilabel> + <guilabel>Print range</guilabel> </term> <listitem> <para>Select one of the following options to determine how many pages to print:</para> @@ -785,9 +785,9 @@ </itemizedlist> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Copies</guilabel> + <guilabel>Copies</guilabel> </term> <listitem> <para>Use the <guilabel>Number of copies</guilabel> spin box to specify the number of copies of the file that you want to print.</para> @@ -801,28 +801,28 @@ <info> <title>Printer Tabbed Section</title> </info> - + <variablelist> - <varlistentry> + <varlistentry> <term> - <guilabel>Printer</guilabel> + <guilabel>Printer</guilabel> </term> <listitem> <para>Use this drop-down list to select the printer to which you want to print the file.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Settings</guilabel> + <guilabel>Settings</guilabel> </term> <listitem> <para>Use this drop-down list to select the printer settings.</para> <para>To configure the printer, click <guibutton>Configure</guibutton>. For example, you can enable or disable duplex printing, or schedule delayed printing, if this functionality is supported by the printer.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Location</guilabel> + <guilabel>Location</guilabel> </term> <listitem> <para>Use this drop-down list to select one of the following print destinations:</para> @@ -867,25 +867,25 @@ </variablelist> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>State</guilabel> + <guilabel>State</guilabel> </term> <listitem> <para>This functionality is not supported in this version of pluma.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Type</guilabel> + <guilabel>Type</guilabel> </term> <listitem> <para>This functionality is not supported in this version of pluma.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Comment</guilabel> + <guilabel>Comment</guilabel> </term> <listitem> <para>This functionality is not supported in this version of pluma.</para> @@ -898,62 +898,62 @@ <info> <title>Paper Tabbed Section</title> </info> - + <variablelist> - <varlistentry> + <varlistentry> <term> - <guilabel>Paper size</guilabel> + <guilabel>Paper size</guilabel> </term> <listitem> <para>Use this drop-down list to select the size of the paper to which you want to print the file.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Width</guilabel> + <guilabel>Width</guilabel> </term> <listitem> <para>Use this spin box to specify the width of the paper. Use the adjacent drop-down list to change the measurement unit.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Height</guilabel> + <guilabel>Height</guilabel> </term> <listitem> <para>Use this spin box to specify the height of the paper.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Feed orientation</guilabel> + <guilabel>Feed orientation</guilabel> </term> <listitem> <para>Use this drop-down list to select the orientation of the paper in the printer.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Page orientation</guilabel> + <guilabel>Page orientation</guilabel> </term> <listitem> <para>Use this drop-down list to select the page orientation.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Layout</guilabel> + <guilabel>Layout</guilabel> </term> <listitem> <para>Use this drop-down list to select the page layout. A preview of each layout that you select is displayed in the <guilabel>Preview</guilabel> area.</para> </listitem> </varlistentry> - <varlistentry> + <varlistentry> <term> - <guilabel>Paper tray</guilabel> + <guilabel>Paper tray</guilabel> </term> <listitem> - <para>Use this drop-down list to select the paper tray.</para> + <para>Use this drop-down list to select the paper tray.</para> </listitem> </varlistentry> </variablelist> @@ -972,7 +972,7 @@ <info> <title>Syntax Highlighting</title> </info> - + <para>Syntax highlighting makes source code easier to read by showing different parts of the text in different colors.</para> <para><application>pluma</application> chooses an appropriate syntax highlighting mode based on a document's type. To override the syntax highlighting mode, choose <menuchoice> <guimenu>View</guimenu> <guimenuitem>Highlight Mode</guimenuitem> </menuchoice>, then choose one of the following menu items:</para> <variablelist> @@ -1270,6 +1270,38 @@ </row> <row valign="top"> <entry> + <para>Ctrl + U</para> + </entry> + <entry> + <para>Change case to uppercase.</para> + </entry> + </row> + <row valign="top"> + <entry> + <para>Ctrl + L</para> + </entry> + <entry> + <para>Change case to lowercase.</para> + </entry> + </row> + <row valign="top"> + <entry> + <para>Alt + U</para> + </entry> + <entry> + <para>Toggle case of each character.</para> + </entry> + </row> + <row valign="top"> + <entry> + <para>Alt + L</para> + </entry> + <entry> + <para>Capitalize each word.</para> + </entry> + </row> + <row valign="top"> + <entry> <para>Alt + Up</para> </entry> <entry> @@ -1541,7 +1573,7 @@ <variablelist> <varlistentry> <term> - <guilabel>Text Wrapping</guilabel> + <guilabel>Text Wrapping</guilabel> </term> <listitem> <para>Select the <guilabel>Enable text wrapping</guilabel> 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</para> @@ -1591,7 +1623,7 @@ <variablelist> <varlistentry> <term> - <guilabel>Tabs</guilabel> + <guilabel>Tabs</guilabel> </term> <listitem> <para>Use the <guilabel>Tab width</guilabel> spin box to specify the width of the space that <application> pluma</application> inserts when you press the <keycap>Tab</keycap> key. </para> @@ -1600,7 +1632,7 @@ </varlistentry> <varlistentry> <term> - <guilabel>Auto Indentation</guilabel> + <guilabel>Auto Indentation</guilabel> </term> <listitem> <para>Select the <guilabel>Enable auto indentation</guilabel> option to specify that the next line starts at the indentation level of the current line. </para> @@ -1608,7 +1640,7 @@ </varlistentry> <varlistentry> <term> - <guilabel>File Saving</guilabel> + <guilabel>File Saving</guilabel> </term> <listitem> <para>Select the <guilabel>Create a backup copy of files before saving</guilabel> 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.</para> @@ -1622,11 +1654,11 @@ <info> <title>Font & Colors Preferences</title> </info> - + <variablelist> <varlistentry> <term> - <guilabel>Font</guilabel> + <guilabel>Font</guilabel> </term> <listitem> <para>Select the <guilabel>Use default theme font</guilabel> option to use the default system font for the text in the <application>pluma</application> text window. </para> @@ -1721,7 +1753,7 @@ <info> <title>Disabling a Plugin</title> </info> - + <para>A plugin remains enabled when you quit <application>pluma</application>. </para> <para>To disable a <application>pluma</application> plugin, perform the following steps:</para> <orderedlist inheritnum="ignore" continuation="restarts"> @@ -1763,11 +1795,6 @@ <itemizedlist> <listitem> <para> - <xref linkend="pluma-change-case-plugin"/> allows you to change the case of the selected text. - </para> - </listitem> - <listitem> - <para> <xref linkend="pluma-document-statistics-plugin"/> shows the number of lines, words, and characters in the document. </para> </listitem> @@ -1832,81 +1859,6 @@ </note> </section> - <section xml:id="pluma-change-case-plugin"> - <info> - <title>Change Case Plugin</title> - </info> - <para>The <application>Change Case</application> plugin changes the case of the selected text.</para> - <para>The following items are added to the <guimenu>Edit</guimenu> menu when the <application>Change Case</application> plugin is enabled:</para> - <informaltable frame="all"> - <tgroup cols="3" colsep="1" rowsep="1"> - <colspec colname="COLSPEC0" colwidth="33*"/> - <colspec colname="COLSPEC1" colwidth="33*"/> - <colspec colname="COLSPEC2" colwidth="33*"/> - <thead> - <row valign="top"> - <entry colname="COLSPEC0"> - <para>Menu Item</para> - </entry> - <entry colname="COLSPEC1"> - <para>Action</para> - </entry> - <entry colname="COLSPEC2"> - <para>Example</para> - </entry> - </row> - </thead> - <tbody> - <row valign="top"> - <entry> - <para><menuchoice> <guimenu>Edit</guimenu> <guisubmenu>Change Case</guisubmenu> <guimenuitem>All Upper Case</guimenuitem> </menuchoice></para> - </entry> - <entry> - <para>Change each character to uppercase. </para> - </entry> - <entry> - <para><literal>This text</literal> becomes <literal>THIS TEXT</literal></para> - </entry> - </row> - <row valign="top"> - <entry> - <para><menuchoice> <guimenu>Edit</guimenu> <guisubmenu>Change Case</guisubmenu> <guimenuitem>All Lower Case</guimenuitem> </menuchoice></para> - </entry> - <entry> - <para>Change each character to lowercase. </para> - </entry> - <entry> - <para><literal>This Text</literal> becomes <literal>this text</literal></para> - </entry> - </row> - <row valign="top"> - <entry> - <para><menuchoice> <guimenu>Edit</guimenu> <guisubmenu>Change Case</guisubmenu> <guimenuitem>Invert Case</guimenuitem> </menuchoice></para> - </entry> - <entry> - <para>Change each lowercase character to uppercase, and change each uppercase character to lowercase. </para> - </entry> - <entry> - <para><literal>This Text</literal> becomes <literal>tHIS tEXT</literal></para> - </entry> - </row> - <row valign="top"> - <entry> - <para><menuchoice> <guimenu>Edit</guimenu> <guisubmenu>Change Case</guisubmenu> <guimenuitem>Title Case</guimenuitem> </menuchoice></para> - </entry> - <entry> - <para>Change the first character of each word to uppercase. </para> - </entry> - <entry> - <para><literal>this text</literal> becomes <literal>This Text</literal></para> - </entry> - </row> - </tbody> - </tgroup> - </informaltable> - - </section> - <section xml:id="pluma-document-statistics-plugin"> <info> <title>Document Statistics Plugin</title> @@ -2148,19 +2100,19 @@ </info> <para>To configure the Insert Date/Time plugin, perform the following steps:</para> <orderedlist inheritnum="ignore" continuation="restarts"> - <listitem> + <listitem> <para>Choose <menuchoice> <guimenu>Edit</guimenu> <guimenuitem>Preferences</guimenuitem> </menuchoice>.</para> </listitem> - <listitem> + <listitem> <para>Select the <guilabel>Plugins</guilabel> tab.</para> </listitem> - <listitem> + <listitem> <para>Select the <guilabel>Insert Date/Time</guilabel> plugin.</para> </listitem> - <listitem> + <listitem> <para>Click <guibutton>Configure Plugin</guibutton> to display the <guilabel>Configure insert date/time plugin</guilabel> dialog.</para> </listitem> - <listitem> + <listitem> <para>Select one of the options, as follows: </para> <itemizedlist> <listitem> @@ -2180,11 +2132,11 @@ </listitem> </itemizedlist> </listitem> - <listitem> + <listitem> <para>Click <guibutton>OK</guibutton> to close the <guilabel>Configure insert date/time plugin</guilabel> dialog. </para> </listitem> - <listitem> + <listitem> <para>To close the <guilabel>Preferences</guilabel> dialog, click <guibutton>Close</guibutton>.</para> </listitem> </orderedlist> @@ -2264,7 +2216,7 @@ <listitem> <para>When your document is ready, save it.</para> </listitem> - <listitem> + <listitem> <para>You will see that any trailing whitespaces has been stripped after the document has been saved.</para> </listitem> </orderedlist> 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 <[email protected]> -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 <config.h> -#endif - -#include "pluma-changecase-plugin.h" - -#include <glib/gi18n-lib.h> -#include <gmodule.h> -#include <libpeas/peas-activatable.h> - -#include <pluma/pluma-window.h> -#include <pluma/pluma-debug.h> - -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[] = -"<ui>" -" <menubar name='MenuBar'>" -" <menu name='EditMenu' action='Edit'>" -" <placeholder name='EditOps_6'>" -" <menu action='ChangeCase'>" -" <menuitem action='UpperCase'/>" -" <menuitem action='LowerCase'/>" -" <menuitem action='InvertCase'/>" -" <menuitem action='TitleCase'/>" -" </menu>" -" </placeholder>" -" </menu>" -" </menubar>" -"</ui>"; - - -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 <glib.h> -#include <glib-object.h> -#include <libpeas/peas-extension-base.h> -#include <libpeas/peas-object-module.h> - -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 @@ -165,6 +165,70 @@ _pluma_cmd_edit_select_all (GtkAction *action, } 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"), "<control>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 @@ <menuitem name="EditCopyMenu" action="EditCopy"/> <menuitem name="EditPasteMenu" action="EditPaste"/> <menuitem name="EditDeleteMenu" action="EditDelete"/> - <placeholder name="EditOps_1" /> + <placeholder name="EditOps_1" /> <separator/> - <placeholder name="EditOps_2" /> + <placeholder name="EditOps_2" /> <menuitem name="EditSelectAllMenu" action="EditSelectAll"/> <placeholder name="EditOps_3" /> <separator/> @@ -71,6 +71,12 @@ <placeholder name="EditOps_5" /> <separator/> <placeholder name="EditOps_6" /> + <menu name="ChangeCaseMenu" action="ChangeCase"> + <menuitem name="UpperCaseMenu" action="UpperCase" /> + <menuitem name="LowerCaseMenu" action="LowerCase" /> + <menuitem name="InvertCaseMenu" action="InvertCase" /> + <menuitem name="TitleCaseMenu" action="TitleCase" /> + </menu> <separator/> <menuitem name="EditPreferencesMenu" action="EditPreferences"/> </menu> @@ -103,12 +109,12 @@ <separator/> <placeholder name="SearchOps_4" /> <separator/> - <menuitem name="SearchClearHighlight" action="SearchClearHighlight"/> + <menuitem name="SearchClearHighlight" action="SearchClearHighlight"/> <placeholder name="SearchOps_5" /> <separator/> <placeholder name="SearchOps_6" /> <separator/> - <menuitem name="SearchGoToLineMenu" action="SearchGoToLine"/> + <menuitem name="SearchGoToLineMenu" action="SearchGoToLine"/> <placeholder name="SearchOps_7" /> <separator/> <placeholder name="SearchOps_8" /> @@ -136,7 +142,7 @@ <placeholder name="DocumentsOps_2" /> <separator/> <placeholder name="DocumentsOps_3" /> - <menuitem action="DocumentsPreviousDocument" /> + <menuitem action="DocumentsPreviousDocument" /> <menuitem action="DocumentsNextDocument" /> <separator/> <menuitem action="DocumentsMoveToNewWindow"/> @@ -195,7 +201,7 @@ <separator/> <menuitem action="FilePrint"/> <separator/> - <placeholder name="NotebookPupupOps_1"/> + <placeholder name="NotebookPupupOps_1"/> <separator/> <menuitem name="FileCloseMenu" action="FileClose"/> </popup> 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 |