Merge branch 'master' into gtk3-support
4
.gitignore
vendored
@ -46,7 +46,9 @@ Makefile.in
|
||||
/localwin32.mk
|
||||
/.lock-wscript
|
||||
/ltmain.sh
|
||||
/m4/
|
||||
/m4/lt*.m4
|
||||
/m4/intltool.m4
|
||||
/m4/libtool.m4
|
||||
/make_deb.sh
|
||||
/missing
|
||||
/mkinstalldirs
|
||||
|
||||
3
NEWS
@ -7,7 +7,8 @@ Geany 1.23 (unreleased)
|
||||
* Fix too aggressive scope caching (#2142789, #2667917, #2868850).
|
||||
|
||||
Editor
|
||||
* Update Scintilla to version 3.2.2 (#2808638, #3540469).
|
||||
* Update Scintilla to version 3.2.3 (#2808638, #2909124, #3094431,
|
||||
#3233160, #3540469).
|
||||
|
||||
Search
|
||||
* 'Mark All' now also uses the fully-featured PCRE engine (#3564132).
|
||||
|
||||
@ -115,8 +115,16 @@ AC_CONFIG_FILES([
|
||||
Makefile
|
||||
icons/Makefile
|
||||
icons/16x16/Makefile
|
||||
icons/24x24/Makefile
|
||||
icons/32x32/Makefile
|
||||
icons/48x48/Makefile
|
||||
icons/scalable/Makefile
|
||||
icons/tango/Makefile
|
||||
icons/tango/16x16/Makefile
|
||||
icons/tango/24x24/Makefile
|
||||
icons/tango/32x32/Makefile
|
||||
icons/tango/48x48/Makefile
|
||||
icons/tango/scalable/Makefile
|
||||
tagmanager/Makefile
|
||||
tagmanager/ctags/Makefile
|
||||
tagmanager/mio/Makefile
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
Abc=*.abc;*.abp;
|
||||
ActionScript=*.as;
|
||||
Ada=*.adb;*.ads;
|
||||
Asciidoc=*.asciidoc;
|
||||
ASM=*.asm;
|
||||
CAML=*.ml;*.mli;
|
||||
C=*.c;*.h;
|
||||
|
||||
35
data/filetypes.asciidoc
Normal file
@ -0,0 +1,35 @@
|
||||
# For complete documentation of this file, please see Geany's main documentation
|
||||
[styling]
|
||||
# no syntax highlighting yet
|
||||
|
||||
[settings]
|
||||
# default extension used when saving files
|
||||
extension=asciidoc
|
||||
|
||||
# the following characters are these which a "word" can contains, see documentation
|
||||
#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
|
||||
|
||||
# single comments, like # in this file
|
||||
comment_single=//
|
||||
# multiline comments
|
||||
#comment_open=////
|
||||
#comment_close=////
|
||||
|
||||
# set to false if a comment character/string should start at column 0 of a line, true uses any
|
||||
# indentation of the line, e.g. setting to true causes the following on pressing CTRL+d
|
||||
#command_example();
|
||||
# setting to false would generate this
|
||||
# command_example();
|
||||
# This setting works only for single line comments
|
||||
comment_use_indent=false
|
||||
|
||||
# context action command (please see Geany's main documentation for details)
|
||||
context_action_cmd=
|
||||
|
||||
# sort tags by appearance
|
||||
symbol_list_sort_mode=1
|
||||
|
||||
[indentation]
|
||||
#width=4
|
||||
# 0 is spaces, 1 is tabs, 2 is tab & spaces
|
||||
#type=1
|
||||
@ -10,6 +10,7 @@ number=number_1
|
||||
word=keyword_1
|
||||
word2=keyword_2
|
||||
string=string_1
|
||||
stringraw=string_2
|
||||
character=character
|
||||
uuid=other
|
||||
preprocessor=preprocessor
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
# For complete documentation of this file, please see Geany's main documentation
|
||||
[styling]
|
||||
# Edit these in the colorscheme .conf file instead
|
||||
default=value
|
||||
default=default
|
||||
comment=comment
|
||||
section=tag
|
||||
key=attribute
|
||||
|
||||
@ -3,13 +3,20 @@
|
||||
# Edit these in the colorscheme .conf file instead
|
||||
default=default
|
||||
comment=comment
|
||||
programmer_comment=comment_doc
|
||||
reference=comment
|
||||
flags=comment
|
||||
fuzzy=comment_doc_keyword
|
||||
msgid=keyword_1
|
||||
msgid_text=string_1
|
||||
msgid_text_eol=string_eol
|
||||
msgstr=keyword_2
|
||||
msgstr_text=string_1
|
||||
msgstr_text_eol=string_eol
|
||||
msgctxt=keyword_3
|
||||
msgctxt_text=string_1
|
||||
fuzzy=comment_doc_keyword
|
||||
msgctxt_text_eol=string_eol
|
||||
error=error
|
||||
|
||||
[settings]
|
||||
# default extension used when saving files
|
||||
|
||||
@ -10,7 +10,7 @@ extension=rst
|
||||
#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
|
||||
|
||||
# single comments, like # in this file
|
||||
comment_single=..
|
||||
comment_single=..\s
|
||||
# multiline comments
|
||||
#comment_open=
|
||||
#comment_close=
|
||||
|
||||
139
data/geany.glade
@ -3,6 +3,13 @@
|
||||
<requires lib="gtk+" version="2.16"/>
|
||||
<!-- interface-naming-policy project-wide -->
|
||||
<object class="GtkAccelGroup" id="accelgroup1"/>
|
||||
<object class="GtkIconFactory" id="iconfactory1">
|
||||
<sources>
|
||||
<source stock-id="geany-build" icon-name="geany-build"/>
|
||||
<source stock-id="geany-close-all" icon-name="geany-close-all"/>
|
||||
<source stock-id="geany-save-all" icon-name="geany-save-all"/>
|
||||
</sources>
|
||||
</object>
|
||||
<object class="GtkAdjustment" id="adjustment1">
|
||||
<property name="lower">3</property>
|
||||
<property name="upper">1000</property>
|
||||
@ -467,7 +474,7 @@
|
||||
<object class="GtkImage" id="image4061">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-close</property>
|
||||
<property name="stock">geany-close-all</property>
|
||||
<property name="icon-size">1</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image4062">
|
||||
@ -671,7 +678,7 @@
|
||||
<object class="GtkImage" id="image4057">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-save</property>
|
||||
<property name="stock">geany-save-all</property>
|
||||
<property name="icon-size">1</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image4058">
|
||||
@ -713,6 +720,7 @@
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="skip_pager_hint">True</property>
|
||||
<property name="has_separator">True</property>
|
||||
<property name="icon_name">geany</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="dialog-vbox3">
|
||||
<property name="visible">True</property>
|
||||
@ -5879,6 +5887,20 @@
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="bg_image">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Background image:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="terminal_scrollback_lines_label">
|
||||
<property name="visible">True</property>
|
||||
@ -5887,8 +5909,8 @@
|
||||
<property name="label" translatable="yes">Scrollback lines:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
@ -5901,8 +5923,8 @@
|
||||
<property name="label" translatable="yes">Shell:</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
@ -5931,7 +5953,7 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="tooltip_text" translatable="yes">Sets the backround color of the text in the terminal widget</property>
|
||||
<property name="tooltip_text" translatable="yes">Sets the background color of the text in the terminal widget</property>
|
||||
<property name="title" translatable="yes">Color Chooser</property>
|
||||
<property name="color">#000000000000</property>
|
||||
</object>
|
||||
@ -5943,6 +5965,49 @@
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkEntry" id="entry_image">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="tooltip_text" translatable="yes">Sets the path to the background image in the terminal widget</property>
|
||||
<property name="invisible_char">•</property>
|
||||
<property name="primary_icon_activatable">False</property>
|
||||
<property name="secondary_icon_activatable">False</property>
|
||||
<property name="primary_icon_sensitive">True</property>
|
||||
<property name="secondary_icon_sensitive">True</property>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="button_term_image">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="image1337">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-open</property>
|
||||
<property name="icon-size">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="spin_scrollback">
|
||||
<property name="visible">True</property>
|
||||
@ -5960,8 +6025,8 @@
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
@ -5979,8 +6044,8 @@
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
@ -6002,8 +6067,8 @@
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
@ -6366,6 +6431,7 @@
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="transient_for">window1</property>
|
||||
<property name="has_separator">True</property>
|
||||
<property name="icon_name">geany</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkVBox" id="project_dialog_vbox">
|
||||
<property name="visible">True</property>
|
||||
@ -7227,6 +7293,7 @@
|
||||
<object class="GtkWindow" id="window1">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title" translatable="yes">Geany</property>
|
||||
<property name="icon_name">geany</property>
|
||||
<child internal-child="accessible">
|
||||
<object class="AtkObject" id="window1-atkobject">
|
||||
<property name="AtkObject::accessible-name" translatable="yes">Geany</property>
|
||||
@ -7699,6 +7766,32 @@
|
||||
<signal name="activate" handler="on_select_current_paragraph1_activate" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="separator63">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="move_lines_up1">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">_Move Line(s) Up</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_move_lines_up1_activate" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="move_lines_down1">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">_Move Line(s) Down</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_move_lines_down1_activate" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="separator52">
|
||||
<property name="visible">True</property>
|
||||
@ -7749,16 +7842,6 @@
|
||||
<signal name="activate" handler="on_toggle_case1_activate" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="transpose_current_line1">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">_Transpose Current Line</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_transpose_current_line1_activate" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparatorMenuItem" id="separator28">
|
||||
<property name="visible">True</property>
|
||||
@ -8864,6 +8947,16 @@
|
||||
<property name="can_focus">False</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="clone1">
|
||||
<property name="use_action_appearance">False</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">_Clone</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_clone1_activate" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkMenuItem" id="strip_trailing_spaces1">
|
||||
<property name="use_action_appearance">False</property>
|
||||
|
||||
893
doc/geany.html
@ -565,6 +565,14 @@ order. It is not alphabetical as shown in the documents list
|
||||
See the `Notebook tab keybindings`_ section for useful
|
||||
shortcuts including for Most-Recently-Used document switching.
|
||||
|
||||
Cloning documents
|
||||
^^^^^^^^^^^^^^^^^
|
||||
The `Document->Clone` menu item copies the current document's text,
|
||||
cursor position and properties into a new untitled document. If
|
||||
there is a selection, only the selected text is copied. This can be
|
||||
useful when making temporary copies of text or for creating
|
||||
documents with similar or identical contents.
|
||||
|
||||
|
||||
Character sets and Unicode Byte-Order-Mark (BOM)
|
||||
------------------------------------------------
|
||||
@ -2011,9 +2019,9 @@ Use indicators to show compile errors
|
||||
Underline lines with compile errors using red squiggles to indicate
|
||||
them in the editor area.
|
||||
|
||||
Newline strip trailing spaces
|
||||
Remove any white space at the end of the line when you hit the
|
||||
Enter/Return key.
|
||||
Newline strips trailing spaces
|
||||
Remove any whitespace at the end of the line when you hit the
|
||||
Enter/Return key. See also `Strip trailing spaces`_.
|
||||
|
||||
Line breaking column
|
||||
The editor column number to insert a newline at when Line Breaking
|
||||
@ -2297,8 +2305,13 @@ Ensure consistent line endings
|
||||
Ensures that newline characters always get converted before
|
||||
saving, avoiding mixed line endings in the same file.
|
||||
|
||||
.. _Strip trailing spaces:
|
||||
|
||||
Strip trailing spaces
|
||||
Remove the trailing spaces on each line of the document.
|
||||
Remove any whitespace at the end of each document line.
|
||||
|
||||
.. note::
|
||||
This does not apply to Diff documents, e.g. patch files.
|
||||
|
||||
Replace tabs by space
|
||||
Replace all tabs in the document with the equivalent number of spaces.
|
||||
@ -2476,10 +2489,11 @@ indent_hard_tab_width The size of a tab character. Don't change 8
|
||||
**Interface related**
|
||||
show_symbol_list_expanders Whether to show or hide the small true to new
|
||||
expander icons on the symbol list documents
|
||||
allow_always_save treeview. Whether files can be saved false immediately
|
||||
always, even if they don't have any
|
||||
changes. By default, the Save button and
|
||||
menu item are disabled when a file is
|
||||
treeview.
|
||||
allow_always_save Whether files can be saved always, even false immediately
|
||||
if they don't have any changes.
|
||||
By default, the Save button and menu
|
||||
item are disabled when a file is
|
||||
unchanged. When setting this option to
|
||||
true, the Save button and menu item are
|
||||
always active and files can be saved.
|
||||
@ -2590,6 +2604,9 @@ Foreground color
|
||||
Background color
|
||||
Select the background color of the terminal.
|
||||
|
||||
Background image
|
||||
Select the background image to show behind the terminal's text.
|
||||
|
||||
Scrollback lines
|
||||
The number of lines buffered so that you can scroll though the history.
|
||||
|
||||
@ -3462,7 +3479,8 @@ Find Document Usage Ctrl-Shift-D Finds all occurrences
|
||||
Mark All Ctrl-Shift-M Highlight all matches of the current
|
||||
word/selection in the current document
|
||||
with a colored box. If there's nothing to
|
||||
find, highlighted matches will be cleared.
|
||||
find, or the cursor is next to an existing match,
|
||||
the highlighted matches will be cleared.
|
||||
=============================== ========================= ==================================================
|
||||
|
||||
|
||||
@ -3610,6 +3628,8 @@ Document keybindings
|
||||
==================================== ==================== ==================================================
|
||||
Action Default shortcut Description
|
||||
==================================== ==================== ==================================================
|
||||
Clone See `Cloning documents`_.
|
||||
|
||||
Replace tabs by space Replaces all tabs with the right amount of spaces.
|
||||
|
||||
Replace spaces by tabs Replaces leading spaces with tab characters.
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
iconsdir = $(datadir)/icons/hicolor/16x16/apps
|
||||
iconsdir = $(datadir)/icons/hicolor/16x16
|
||||
icons_appsdir = $(iconsdir)/apps
|
||||
icons_actionsdir = $(iconsdir)/actions
|
||||
|
||||
icons_DATA = \
|
||||
dist_icons_apps_DATA = \
|
||||
classviewer-class.png \
|
||||
classviewer-macro.png \
|
||||
classviewer-member.png \
|
||||
@ -11,6 +13,7 @@ icons_DATA = \
|
||||
classviewer-var.png \
|
||||
geany.png
|
||||
|
||||
EXTRA_DIST = $(icons_DATA) \
|
||||
classviewer-var.xpm \
|
||||
classviewer-method.xpm
|
||||
dist_icons_actions_DATA = \
|
||||
geany-build.png \
|
||||
geany-close-all.png \
|
||||
geany-save-all.png
|
||||
|
||||
|
Before Width: | Height: | Size: 332 B After Width: | Height: | Size: 257 B |
@ -1,27 +0,0 @@
|
||||
/* XPM */
|
||||
static char *classviewer_method[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 16 5 1",
|
||||
" c black",
|
||||
". c #E0BC38",
|
||||
"X c #F0DC5C",
|
||||
"o c #FCFC80",
|
||||
"O c None",
|
||||
/* pixels */
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOO OOOO",
|
||||
"OOOOOOOOO oo OO",
|
||||
"OOOOOOOO ooooo O",
|
||||
"OOOOOOO ooooo. O",
|
||||
"OOOO O XXoo.. O",
|
||||
"OOO oo XXX... O",
|
||||
"OO ooooo XX.. OO",
|
||||
"O ooooo. X. OOO",
|
||||
"O XXoo.. O OOOO",
|
||||
"O XXX... OOOOOOO",
|
||||
"O XXX.. OOOOOOOO",
|
||||
"OO X. OOOOOOOOO",
|
||||
"OOOO OOOOOOOOOO"
|
||||
};
|
||||
|
Before Width: | Height: | Size: 287 B After Width: | Height: | Size: 273 B |
@ -1,27 +0,0 @@
|
||||
/* XPM */
|
||||
static char *classviewer_var[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"16 16 5 1",
|
||||
" c black",
|
||||
". c #8C748C",
|
||||
"X c #9C94A4",
|
||||
"o c #ACB4C0",
|
||||
"O c None",
|
||||
/* pixels */
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOOOOOOOOO",
|
||||
"OOOOOOOOO OOOOO",
|
||||
"OOOOOOOO oo OOO",
|
||||
"OOOOOOO ooooo OO",
|
||||
"OOOOOO ooooo. OO",
|
||||
"OOOOOO XXoo.. OO",
|
||||
"OOOOOO XXX... OO",
|
||||
"OOOOOO XXX.. OOO",
|
||||
"OOOOOOO X. OOOO",
|
||||
"OOOOOOOOO OOOOO",
|
||||
"OOOOOOOOOOOOOOOO"
|
||||
};
|
||||
BIN
icons/16x16/geany-build.png
Normal file
|
After Width: | Height: | Size: 822 B |
BIN
icons/16x16/geany-close-all.png
Normal file
|
After Width: | Height: | Size: 760 B |
BIN
icons/16x16/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 785 B |
6
icons/24x24/Makefile.am
Normal file
@ -0,0 +1,6 @@
|
||||
icons_actionsdir = $(datadir)/icons/hicolor/24x24/actions
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-build.png \
|
||||
geany-close-all.png \
|
||||
geany-save-all.png
|
||||
BIN
icons/24x24/geany-build.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
icons/24x24/geany-close-all.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
icons/24x24/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
6
icons/32x32/Makefile.am
Normal file
@ -0,0 +1,6 @@
|
||||
icons_actionsdir = $(datadir)/icons/hicolor/32x32/actions
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-build.png \
|
||||
geany-close-all.png \
|
||||
geany-save-all.png
|
||||
BIN
icons/32x32/geany-build.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
icons/32x32/geany-close-all.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
icons/32x32/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
@ -1,4 +1,11 @@
|
||||
iconsdir = $(datadir)/icons/hicolor/48x48/apps
|
||||
icons_DATA = geany.png
|
||||
iconsdir = $(datadir)/icons/hicolor/48x48
|
||||
icons_appsdir = $(iconsdir)/apps
|
||||
icons_actionsdir = $(iconsdir)/actions
|
||||
|
||||
EXTRA_DIST = $(icons_DATA)
|
||||
dist_icons_apps_DATA = \
|
||||
geany.png
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-build.png \
|
||||
geany-close-all.png \
|
||||
geany-save-all.png
|
||||
|
||||
BIN
icons/48x48/geany-build.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
icons/48x48/geany-close-all.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
icons/48x48/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.2 KiB |
@ -1,20 +1,29 @@
|
||||
SUBDIRS = 16x16 48x48 scalable
|
||||
SUBDIRS = 16x16 24x24 32x32 48x48 scalable tango
|
||||
|
||||
EXTRA_DIST = geany.ico
|
||||
# only install index.theme on Windows
|
||||
if MINGW
|
||||
iconsdir = $(datadir)/icons/hicolor
|
||||
dist_icons_DATA = index.theme
|
||||
endif
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
|
||||
dist_noinst_DATA = geany.ico
|
||||
|
||||
gtk_update_icon_cache = gtk-update-icon-cache -f -t
|
||||
|
||||
install-data-hook:
|
||||
@-if test -z "$(DESTDIR)"; then \
|
||||
echo "Updating Gtk icon cache."; \
|
||||
$(gtk_update_icon_cache); \
|
||||
$(gtk_update_icon_cache) "$(datadir)/icons/hicolor"; \
|
||||
$(gtk_update_icon_cache) "$(datadir)/icons/Tango"; \
|
||||
else \
|
||||
echo "*** Icon cache not updated. Remember to run:"; \
|
||||
echo "***"; \
|
||||
echo "*** $(gtk_update_icon_cache)"; \
|
||||
echo "*** $(gtk_update_icon_cache) '$(datadir)/icons/hicolor'";\
|
||||
echo "*** $(gtk_update_icon_cache) '$(datadir)/icons/Tango'";\
|
||||
echo "***"; \
|
||||
fi
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(datadir)/icons/hicolor/icon-theme.cache;
|
||||
rm -f $(DESTDIR)$(datadir)/icons/hicolor/icon-theme.cache
|
||||
rm -f $(DESTDIR)$(datadir)/icons/Tango/icon-theme.cache
|
||||
|
||||
|
||||
60
icons/index.theme
Normal file
@ -0,0 +1,60 @@
|
||||
[Icon Theme]
|
||||
Name=Hicolor
|
||||
Comment=Fallback icon theme
|
||||
Hidden=true
|
||||
Directories=16x16/actions,16x16/apps,24x24/actions,24x24/apps,32x32/actions,32x32/apps,48x48/actions,48x48/apps,scalable/actions,scalable/apps
|
||||
|
||||
|
||||
[16x16/actions]
|
||||
Size=16
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[16x16/apps]
|
||||
Size=16
|
||||
Context=Applications
|
||||
Type=Threshold
|
||||
|
||||
[24x24/actions]
|
||||
Size=24
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[24x24/apps]
|
||||
Size=24
|
||||
Context=Applications
|
||||
Type=Threshold
|
||||
|
||||
[32x32/actions]
|
||||
Size=32
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[32x32/apps]
|
||||
Size=32
|
||||
Context=Applications
|
||||
Type=Threshold
|
||||
|
||||
[48x48/actions]
|
||||
Size=48
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[48x48/apps]
|
||||
Size=48
|
||||
Context=Applications
|
||||
Type=Threshold
|
||||
|
||||
[scalable/actions]
|
||||
MinSize=1
|
||||
Size=128
|
||||
MaxSize=256
|
||||
Context=Actions
|
||||
Type=Scalable
|
||||
|
||||
[scalable/apps]
|
||||
MinSize=1
|
||||
Size=128
|
||||
MaxSize=256
|
||||
Context=Applications
|
||||
Type=Scalable
|
||||
@ -1,4 +1,11 @@
|
||||
iconsdir = $(datadir)/icons/hicolor/scalable/apps
|
||||
icons_DATA = geany.svg
|
||||
iconsdir = $(datadir)/icons/hicolor/scalable
|
||||
icons_appsdir = $(iconsdir)/apps
|
||||
icons_actionsdir = $(iconsdir)/actions
|
||||
|
||||
EXTRA_DIST = $(icons_DATA)
|
||||
dist_icons_apps_DATA = \
|
||||
geany.svg
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-build.svg \
|
||||
geany-close-all.svg \
|
||||
geany-save-all.svg
|
||||
|
||||
162
icons/scalable/geany-build.svg
Normal file
@ -0,0 +1,162 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Nouveau document 2">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<linearGradient
|
||||
id="linearGradient3876">
|
||||
<stop
|
||||
id="stop3878"
|
||||
offset="0"
|
||||
style="stop-color:#832f07;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#7d2c06;stop-opacity:1;"
|
||||
offset="0.66924989"
|
||||
id="stop3880" />
|
||||
<stop
|
||||
id="stop3882"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3854">
|
||||
<stop
|
||||
style="stop-color:#8c3303;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3856" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3858" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3854"
|
||||
id="radialGradient3862"
|
||||
cx="8.2662506"
|
||||
cy="31.158112"
|
||||
fx="8.2662506"
|
||||
fy="31.158112"
|
||||
r="13.230393"
|
||||
gradientTransform="matrix(-0.84250329,0.40840637,-0.63160073,-1.3029319,36.559251,70.98965)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3876"
|
||||
id="linearGradient3884"
|
||||
x1="27.371437"
|
||||
y1="47.235817"
|
||||
x2="46.754456"
|
||||
y2="22.07579"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.98714021,0,0,0.98714021,-0.112798,0.1861512)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3854"
|
||||
id="radialGradient5114"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.82079822,2.4024917,-1.0801943,0.36904239,5.8309693,-24.501118)"
|
||||
cx="6.8684106"
|
||||
cy="0.77958882"
|
||||
fx="6.8684106"
|
||||
fy="0.77958882"
|
||||
r="8.7621937" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6770833"
|
||||
inkscape:cx="0.78613418"
|
||||
inkscape:cy="9.8218394"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1618"
|
||||
inkscape:window-height="935"
|
||||
inkscape:window-x="60"
|
||||
inkscape:window-y="39"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<cc:license
|
||||
rdf:resource="" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="layer1"
|
||||
style="opacity:1">
|
||||
<g
|
||||
id="g5537">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3842"
|
||||
d="m 1.2832291,6.3829735 0,15.0104005 25.1333659,25.990419 0,-16.84308 z"
|
||||
style="fill:url(#radialGradient3862);fill-opacity:1;stroke:#000000;stroke-width:0.98714024px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3844"
|
||||
d="m 26.416595,47.445489 0,-16.781384 20.359767,-9.56292 0,15.053888 z"
|
||||
style="fill:url(#linearGradient3884);fill-opacity:1;stroke:#000000;stroke-width:0.98714024px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccsssc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3846"
|
||||
d="M 1.2832291,6.3563849 26.498968,30.642054 46.784986,21.131619 21.132989,0.62747085 c 0,0 -2.224918,0.34900676 -1.701408,1.61415635 0.52351,1.2651495 -1.224238,1.8860405 -3.620946,2.83568 C 11.186296,6.9095927 9.0539044,7.2352368 5.2531811,5.688069 3.879367,5.1288278 1.2832291,6.3563849 1.2832291,6.3563849 z"
|
||||
style="fill:#ba4503;fill-opacity:1;stroke:#000000;stroke-width:0.98714024px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="zsssz"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3848"
|
||||
d="m 10.226527,11.446681 c 1.526904,1.548717 3.560029,2.162834 10.252074,-0.479885 6.849258,-2.7048021 6.151245,-3.0974347 4.62434,-4.4498359 C 23.576036,5.1645588 22.894765,4.5230075 17.250288,6.6042111 9.4412627,9.483517 8.6996228,9.8979631 10.226527,11.44668 z"
|
||||
style="fill:url(#radialGradient5114);fill-opacity:1;stroke:#000000;stroke-width:0.98714024000000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<use
|
||||
height="48"
|
||||
width="48"
|
||||
transform="translate(7.1717365,6.0206784)"
|
||||
id="use3850"
|
||||
xlink:href="#path3848"
|
||||
y="0"
|
||||
x="0" />
|
||||
<use
|
||||
height="48"
|
||||
width="48"
|
||||
transform="matrix(0.99867743,-0.05141392,0.05141392,0.99867743,6.7099747,7.8099442)"
|
||||
id="use3852"
|
||||
xlink:href="#use3850"
|
||||
y="0"
|
||||
x="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.7 KiB |
446
icons/scalable/geany-close-all.svg
Normal file
@ -0,0 +1,446 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="geany-close-all.svg"
|
||||
inkscape:export-filename="/home/ban/progs/geany/icons/48x48/geany-close-all.png"
|
||||
inkscape:export-xdpi="67.5"
|
||||
inkscape:export-ydpi="67.5">
|
||||
<defs
|
||||
id="defs2987">
|
||||
<linearGradient
|
||||
id="linearGradient2091">
|
||||
<stop
|
||||
id="stop2093"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2095"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3165">
|
||||
<stop
|
||||
id="stop3167"
|
||||
offset="0"
|
||||
style="stop-color:#e78181;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#e15f5f;stop-opacity:1"
|
||||
offset="0.25"
|
||||
id="stop8599" />
|
||||
<stop
|
||||
id="stop8601"
|
||||
offset="0.68000001"
|
||||
style="stop-color:#c22f2f;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop3169"
|
||||
offset="1"
|
||||
style="stop-color:#a40000;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient7916">
|
||||
<stop
|
||||
id="stop7918"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop7920"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:0" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="10.31934"
|
||||
fy="35.127438"
|
||||
fx="23.070683"
|
||||
cy="35.127438"
|
||||
cx="23.070683"
|
||||
gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient2177-3"
|
||||
xlink:href="#linearGradient2091-0"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient2091-0">
|
||||
<stop
|
||||
id="stop2093-9"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2095-1"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.1314195e-8,2.5479117,-4.8841578,-2.2328085e-8,144.16406,-10.748097)"
|
||||
r="18.500046"
|
||||
fy="24.500458"
|
||||
fx="6.5734448"
|
||||
cy="24.500458"
|
||||
cx="6.5734448"
|
||||
id="radialGradient7958-0"
|
||||
xlink:href="#linearGradient3165-7"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient3165-7">
|
||||
<stop
|
||||
id="stop3167-1"
|
||||
offset="0"
|
||||
style="stop-color:#e78181;stop-opacity:1" />
|
||||
<stop
|
||||
style="stop-color:#e15f5f;stop-opacity:1"
|
||||
offset="0.25"
|
||||
id="stop8599-3" />
|
||||
<stop
|
||||
id="stop8601-6"
|
||||
offset="0.68000001"
|
||||
style="stop-color:#c22f2f;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop3169-3"
|
||||
offset="1"
|
||||
style="stop-color:#a40000;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="43.000458"
|
||||
x2="23.099995"
|
||||
y1="6.0004601"
|
||||
x1="23.172504"
|
||||
id="linearGradient7961-1"
|
||||
xlink:href="#linearGradient7955-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient7955-4"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop7957-6"
|
||||
offset="0"
|
||||
style="stop-color:#c22f2f;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop7959-1"
|
||||
offset="1"
|
||||
style="stop-color:#a40000;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="36.296539"
|
||||
x2="12.717501"
|
||||
y1="17.041941"
|
||||
x1="31.972097"
|
||||
gradientTransform="matrix(1.0494758,-1.0494758,1.0494758,1.0494758,-26.939092,23.169297)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient2181-9"
|
||||
xlink:href="#linearGradient7916-9"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient7916-9">
|
||||
<stop
|
||||
id="stop7918-8"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop7920-5"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:0" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="36.296539"
|
||||
x2="12.717501"
|
||||
y1="17.041941"
|
||||
x1="31.972097"
|
||||
gradientTransform="matrix(1.0494758,-1.0494758,1.0494758,1.0494758,-26.939092,23.169297)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3933"
|
||||
xlink:href="#linearGradient7916-9"
|
||||
inkscape:collect="always" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter4035"
|
||||
x="-0.31406894"
|
||||
width="1.6281379"
|
||||
y="-0.22770001"
|
||||
height="1.4554">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="2.0126026"
|
||||
id="feGaussianBlur4037" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="19.570124"
|
||||
inkscape:cy="2.4606555"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1155"
|
||||
inkscape:window-height="782"
|
||||
inkscape:window-x="248"
|
||||
inkscape:window-y="38"
|
||||
inkscape:window-maximized="0">
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="0,23"
|
||||
id="guide4048" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="24,49.875"
|
||||
id="guide4050" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="48,47.734375"
|
||||
id="guide4052" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="15.998291,45.630484"
|
||||
id="guide4054" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="38.360543,0"
|
||||
id="guide4094" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="-53.46875,-24"
|
||||
id="guide4096" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
|
||||
<dc:description>Cross is from gnome-colors-common; document is inspired by Tango and gnome-icon-theme.</dc:description>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="document">
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#g4144"
|
||||
id="use4152"
|
||||
transform="matrix(0.84344375,0.53721749,-0.53721749,0.84344375,47.402841,10.277409)"
|
||||
width="64"
|
||||
height="64" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#use3987"
|
||||
id="use3989"
|
||||
transform="matrix(0.95588294,0.29374786,-0.29374786,0.95588294,19.002222,1.9979348)"
|
||||
width="64"
|
||||
height="64" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#rect3991"
|
||||
id="use4009"
|
||||
transform="matrix(0.9756233,0.219452,-0.219452,0.9756233,16.417778,3.4268038)"
|
||||
width="64"
|
||||
height="64" />
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#g3837"
|
||||
id="use3987"
|
||||
transform="matrix(0.97550556,0.21997482,-0.21997482,0.97550556,16.467576,3.3647699)"
|
||||
width="64"
|
||||
height="64" />
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4035)"
|
||||
id="rect3991"
|
||||
width="15.379573"
|
||||
height="21.213202"
|
||||
x="13.965359"
|
||||
y="19.098719"
|
||||
ry="2.289192" />
|
||||
<g
|
||||
id="g3837"
|
||||
transform="matrix(1.3339116,0,0,1.3339116,2.574019,-85.670844)">
|
||||
<rect
|
||||
ry="1.2727265"
|
||||
y="73.954544"
|
||||
x="2.5909092"
|
||||
height="20.000017"
|
||||
width="16.999998"
|
||||
id="rect3052"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#7d7d7d;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3823"
|
||||
d="m 5.0948153,90.959162 5.9928977,0"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.0983665,88.948508 11.9928985,0"
|
||||
id="path3825"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3827"
|
||||
d="m 5.0983665,86.952414 11.9928985,0"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;stroke:#dedede;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.0948153,83.959162 5.9928977,0"
|
||||
id="path3829"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3831"
|
||||
d="m 5.0983665,81.948508 11.9928985,0"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.0983665,79.952414 11.9928985,0"
|
||||
id="path3833"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3835"
|
||||
d="m 5.0983665,77.952414 11.9928985,0"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#rect3991"
|
||||
id="use4114"
|
||||
transform="matrix(0.47915458,0,0,0.47915458,-0.51251517,62.668776)"
|
||||
width="64"
|
||||
height="64" />
|
||||
<g
|
||||
id="g4144"
|
||||
transform="matrix(1.276854,0,0,1.276854,-0.48128019,-18.894955)">
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#7d7d7d;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
id="rect4120"
|
||||
width="8.5096235"
|
||||
height="10.011331"
|
||||
x="2.23839"
|
||||
y="68.74881"
|
||||
ry="0.63708377" />
|
||||
<path
|
||||
style="fill:none;stroke:#dedede;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 3.4917606,77.260743 2.9998415,0"
|
||||
id="path4122"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 3.4935382,75.719139 6.0032387,0"
|
||||
id="path4126"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4128"
|
||||
d="m 3.4917606,73.889363 2.9998415,0"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 3.4935382,72.33047 6.0032387,0"
|
||||
id="path4130"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
style="fill:none;stroke:#dedede;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 3.4935382,70.750005 6.0032387,0"
|
||||
id="path4134"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="cross">
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1-9"
|
||||
transform="matrix(0.83206021,0,0,0.83206021,25.311861,-0.06016356)">
|
||||
<path
|
||||
transform="matrix(2.2288248,0,0,1.9190478,-27.171303,-25.505284)"
|
||||
d="m 33.278212,34.94062 c 0,1.281408 -4.620126,2.320194 -10.31934,2.320194 -5.699214,0 -10.31934,-1.038786 -10.31934,-2.320194 0,-1.281407 4.620126,-2.320194 10.31934,-2.320194 5.699214,0 10.31934,1.038787 10.31934,2.320194 z"
|
||||
sodipodi:ry="2.320194"
|
||||
sodipodi:rx="10.31934"
|
||||
sodipodi:cy="34.94062"
|
||||
sodipodi:cx="22.958872"
|
||||
id="path1361"
|
||||
style="opacity:0.2557078;fill:url(#radialGradient2177-3);fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
id="text1314"
|
||||
d="m 42.5,35.000459 -10.50009,-11 10.500001,-10 L 34.99991,6.5004602 24.499911,17.000459 13.999912,6.5004602 6.4999133,14.000459 l 10.4999977,10 -10.4999977,11 7.4999987,7.499999 10.499999,-10.5 9.5,10.5 L 42.5,35.000459 z"
|
||||
style="font-size:59.90107727px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:url(#radialGradient7958-0);fill-opacity:1;stroke:url(#linearGradient7961-1);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
id="path7076"
|
||||
d="m 41,35.000459 -10.50009,-11 10.5,-10 -6,-5.9999998 L 24.50022,18.500459 13.999912,8.0004592 7.9999123,14.000459 l 10.4999987,10 -10.4999987,11 5.9999997,6 10.499999,-10.5 L 34,41 41,35.000459 z"
|
||||
style="font-size:59.90107727px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.4;fill:none;stroke:url(#linearGradient3933);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#layer1-9"
|
||||
id="use4098"
|
||||
transform="matrix(0.37799979,0,0,0.37799979,-0.17347528,63.825548)"
|
||||
width="64"
|
||||
height="64" />
|
||||
</g>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
style="opacity:0.8;display:none"
|
||||
sodipodi:insensitive="true">
|
||||
<image
|
||||
y="64"
|
||||
x="0"
|
||||
id="image3855"
|
||||
xlink:href="file:///home/ban/progs/geany/icons/48x48/geany-close-all.png"
|
||||
height="24"
|
||||
width="24" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
657
icons/scalable/geany-save-all.svg
Normal file
@ -0,0 +1,657 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg2985"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="geany-save-all.svg"
|
||||
inkscape:export-filename="/home/ban/progs/geany/icons/16x16/geany-save-all.png"
|
||||
inkscape:export-xdpi="30"
|
||||
inkscape:export-ydpi="30">
|
||||
<title
|
||||
id="title3080">Save all</title>
|
||||
<defs
|
||||
id="defs2987">
|
||||
<linearGradient
|
||||
y2="-5.9535513"
|
||||
x2="24.285765"
|
||||
y1="14.716651"
|
||||
x1="9.7099533"
|
||||
gradientTransform="matrix(1.117647,0,0,1.1,-290.08518,-48.65)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5471"
|
||||
xlink:href="#linearGradient6056"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="7.8355665"
|
||||
x2="16.552481"
|
||||
y1="2.9626985"
|
||||
x1="16.552481"
|
||||
gradientTransform="matrix(0.9803921,0,0,1.1,-287.3793,-48.3)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5467"
|
||||
xlink:href="#linearGradient6108"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientTransform="translate(-288.67342,-47.5)"
|
||||
y2="3.6734154"
|
||||
x2="14.04664"
|
||||
y1="6.504528"
|
||||
x1="18.963779"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5464"
|
||||
xlink:href="#linearGradient4916"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="3.7493312"
|
||||
x2="18.561535"
|
||||
y1="4.5279388"
|
||||
x1="17.68836"
|
||||
gradientTransform="matrix(1.3472897,0,0,1.3356241,-295.4037,-49.007697)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient5462"
|
||||
xlink:href="#linearGradient6076"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5897">
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5899" />
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5901" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4916">
|
||||
<stop
|
||||
style="stop-color:#888a85;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop4918" />
|
||||
<stop
|
||||
style="stop-color:#5d5f5b;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4920" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient6108">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6110" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6112" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient6076">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop6078" />
|
||||
<stop
|
||||
style="stop-color:#cbcbcb;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop6080" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient6056">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop6058" />
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop6060" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6056"
|
||||
id="linearGradient6062"
|
||||
x1="9.7099533"
|
||||
y1="14.716651"
|
||||
x2="24.285765"
|
||||
y2="-5.9535513"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.117647,0,0,1.1,-1.4117645,-1.15)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6076"
|
||||
id="linearGradient6082"
|
||||
x1="17.68836"
|
||||
y1="4.5279388"
|
||||
x2="18.561535"
|
||||
y2="3.7493312"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3472897,0,0,1.3356241,-6.7302791,-1.5076969)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6108"
|
||||
id="linearGradient6114"
|
||||
x1="16.552481"
|
||||
y1="2.9626985"
|
||||
x2="16.552481"
|
||||
y2="7.8355665"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9803921,0,0,1.1,1.2941182,-0.8000001)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4916"
|
||||
id="linearGradient4922"
|
||||
x1="18.963779"
|
||||
y1="6.504528"
|
||||
x2="14.04664"
|
||||
y2="3.6734154"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5897"
|
||||
id="linearGradient5903"
|
||||
x1="4.1902652"
|
||||
y1="25.646143"
|
||||
x2="14.649404"
|
||||
y2="12.007792"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5897"
|
||||
id="linearGradient5929"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="4.1902652"
|
||||
y1="25.646143"
|
||||
x2="14.649404"
|
||||
y2="12.007792" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="19.035276"
|
||||
x2="21.347517"
|
||||
y1="16.874674"
|
||||
x1="19.28145"
|
||||
id="linearGradient6051"
|
||||
xlink:href="#linearGradient6045"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="matrix(0.9168831,0,0,0.9169468,1.6694447,1.4811158)" />
|
||||
<linearGradient
|
||||
gradientTransform="matrix(0.2947292,0,0,0.2947292,9.2434959,8.1106157)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="22.40896"
|
||||
x2="52.986004"
|
||||
y1="17.590158"
|
||||
x1="48.690983"
|
||||
id="linearGradient5914"
|
||||
xlink:href="#linearGradient5908"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientTransform="matrix(0.4140801,0,0,0.4496565,2.2850397,5.3289509)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="18.158607"
|
||||
x2="56.384373"
|
||||
y1="14.8742"
|
||||
x1="53.454674"
|
||||
id="linearGradient4930"
|
||||
xlink:href="#linearGradient4924"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientTransform="matrix(0.7214926,0,0,0.7210249,4.4502003,-1.0759528)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="23.074486"
|
||||
x2="19.445436"
|
||||
y1="28.73134"
|
||||
x1="25.279068"
|
||||
id="linearGradient5933"
|
||||
xlink:href="#linearGradient5927"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="12.5"
|
||||
fy="16.093563"
|
||||
fx="48.178337"
|
||||
cy="16.093563"
|
||||
cx="48.178337"
|
||||
gradientTransform="matrix(0.117808,0.165688,-0.160285,0.113967,37.8996,24.60705)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient3740"
|
||||
xlink:href="#linearGradient2812"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
gradientTransform="matrix(0.710234,0.703965,-0.828897,0.836278,-17.34172,-12.95082)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
r="12.5"
|
||||
fy="17.172701"
|
||||
fx="18.389807"
|
||||
cy="17.172701"
|
||||
cx="18.389807"
|
||||
id="radialGradient2818"
|
||||
xlink:href="#linearGradient2812"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientTransform="translate(-21.33061,6.070707)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="23.00688"
|
||||
x2="42.993927"
|
||||
y1="18.054306"
|
||||
x1="42.993927"
|
||||
id="linearGradient2802"
|
||||
xlink:href="#linearGradient2796"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
gradientTransform="matrix(1.515341,1.822282e-2,-1.854671e-2,1.542275,-9.89215,-9.850491)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
r="9.5"
|
||||
fy="17.498907"
|
||||
fx="19.825111"
|
||||
cy="17.498907"
|
||||
cx="19.825111"
|
||||
id="radialGradient2794"
|
||||
xlink:href="#linearGradient2788"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.176471,0,13.58824)"
|
||||
r="8.5"
|
||||
fy="16.5"
|
||||
fx="9.5"
|
||||
cy="16.5"
|
||||
cx="9.5"
|
||||
id="radialGradient3221"
|
||||
xlink:href="#linearGradient3215"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient3215"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop3217"
|
||||
offset="0"
|
||||
style="stop-color:#2e3436;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3219"
|
||||
offset="1"
|
||||
style="stop-color:#2e3436;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2788">
|
||||
<stop
|
||||
id="stop2790"
|
||||
offset="0"
|
||||
style="stop-color:#729fcf;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2792"
|
||||
offset="1"
|
||||
style="stop-color:white;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2796"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop2798"
|
||||
offset="0"
|
||||
style="stop-color:#204a87;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2800"
|
||||
offset="1"
|
||||
style="stop-color:#1a3c6e;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2812">
|
||||
<stop
|
||||
id="stop2814"
|
||||
offset="0"
|
||||
style="stop-color:#3070ce;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop2816"
|
||||
offset="1"
|
||||
style="stop-color:#1a3c6e;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5927"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5929"
|
||||
offset="0"
|
||||
style="stop-color:#c17d11;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5931"
|
||||
offset="1"
|
||||
style="stop-color:#c17d11;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4924"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4926"
|
||||
offset="0"
|
||||
style="stop-color:#ef2929;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop4928"
|
||||
offset="1"
|
||||
style="stop-color:#cc0000;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5908"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5910"
|
||||
offset="0"
|
||||
style="stop-color:#d3d7cf;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5912"
|
||||
offset="1"
|
||||
style="stop-color:#888a85;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient6045"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop6047"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop6049"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6045"
|
||||
id="linearGradient6018"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.9168831,0,0,0.9169468,3.9818882,-0.8641132)"
|
||||
x1="19.28145"
|
||||
y1="16.874674"
|
||||
x2="21.347517"
|
||||
y2="19.035276" />
|
||||
<filter
|
||||
id="filter5197"
|
||||
height="2.1394303"
|
||||
y="-0.56971514"
|
||||
width="1.1480616"
|
||||
x="-0.074030781"
|
||||
inkscape:collect="always">
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur5199"
|
||||
stdDeviation="0.68247126"
|
||||
inkscape:collect="always" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
id="linearGradient5206"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5208"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5210"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5222">
|
||||
<stop
|
||||
id="stop5224"
|
||||
offset="0"
|
||||
style="stop-color:#7ea5d6;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5226"
|
||||
offset="1"
|
||||
style="stop-color:#3465a4;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5245"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5247"
|
||||
offset="0"
|
||||
style="stop-color:#3465a4;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5249"
|
||||
offset="1"
|
||||
style="stop-color:#3465a4;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5261"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop5263"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop5265"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5269">
|
||||
<stop
|
||||
id="stop5271"
|
||||
offset="0"
|
||||
style="stop-color:#c6c6c6;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0.5"
|
||||
id="stop5277" />
|
||||
<stop
|
||||
id="stop5273"
|
||||
offset="1"
|
||||
style="stop-color:#a5a5a5;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5222"
|
||||
id="radialGradient3301"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.9015393,0,0,1.8241702,-8.2360563,18.752614)"
|
||||
cx="12.007621"
|
||||
cy="6.9535408"
|
||||
fx="12.007621"
|
||||
fy="6.9535408"
|
||||
r="10.980066" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5206"
|
||||
id="linearGradient3303"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(2.5892857,24.297958)"
|
||||
x1="12.358521"
|
||||
y1="2.6672831"
|
||||
x2="10.859434"
|
||||
y2="28.104784" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5245"
|
||||
id="linearGradient3305"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(2.5892857,24.297958)"
|
||||
x1="12"
|
||||
y1="14.24497"
|
||||
x2="15.3125"
|
||||
y2="23.30747" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5269"
|
||||
id="linearGradient3307"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(2.5892857,24.297958)"
|
||||
x1="9.125"
|
||||
y1="15.5"
|
||||
x2="13.375"
|
||||
y2="20.75" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5261"
|
||||
id="linearGradient3309"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(2.5892857,24.297958)"
|
||||
x1="11.499999"
|
||||
y1="20.473557"
|
||||
x2="11.951921"
|
||||
y2="12.411057" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.4748737"
|
||||
inkscape:cx="153.44631"
|
||||
inkscape:cy="16.570233"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1034"
|
||||
inkscape:window-height="647"
|
||||
inkscape:window-x="204"
|
||||
inkscape:window-y="47"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata2990">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Save all</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title></dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:description>Based on Jakub Steiner "Floppy" icon from GTK sock icon</dc:description>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/LGPL/2.1/" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g3243"
|
||||
transform="matrix(1.4865639,0,0,1.4865639,7.2324175,-34.728295)">
|
||||
<rect
|
||||
ry="1.6350584"
|
||||
rx="1.6350582"
|
||||
y="44.297958"
|
||||
x="3.6517856"
|
||||
height="2.875"
|
||||
width="22.125"
|
||||
id="rect5151"
|
||||
style="opacity:0.48275865;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5197);enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
id="path4572"
|
||||
d="m 4.1184947,26.837815 0,16.744133 2.263422,2.263422 17.7474653,0 c 0.402074,-0.162022 0.832632,-0.267076 0.94759,-1.003331 l 0,-18.059965 c -0.07388,-0.76871 -0.486484,-0.972893 -1.003331,-1.003331 l -19.0075553,0 c -0.559223,0.04883 -0.979009,0.271946 -0.947591,1.059072 z"
|
||||
style="color:#000000;fill:url(#radialGradient3301);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="opacity:0.33908045;color:#000000;fill:none;stroke:url(#linearGradient3303);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 5.0728071,26.748886 0,16.344177 1.7447828,1.713532 17.3186311,0 -0.01371,-18.045873 c 0,0 -19.0497029,-0.01184 -19.0497029,-0.01184 z"
|
||||
id="path5204"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
id="rect5230"
|
||||
d="m 22.589286,28.308016 0,6.354884 c 0,0.905822 -0.740811,1.635058 -1.661011,1.635058 l -12.6779778,0 c -0.9202004,0 -1.6610115,-0.729236 -1.6610115,-1.635058 l 0,-6.354884 c 0,0 16.0000003,0 16.0000003,0 z"
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
y="25.297958"
|
||||
x="6.5892859"
|
||||
height="3"
|
||||
width="16"
|
||||
id="rect5233"
|
||||
style="color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<rect
|
||||
style="color:#000000;fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect5235"
|
||||
width="16"
|
||||
height="0.99999994"
|
||||
x="6.5892859"
|
||||
y="27.297958" />
|
||||
<rect
|
||||
y="25.297958"
|
||||
x="6.5892859"
|
||||
height="0.99999994"
|
||||
width="16"
|
||||
id="rect5237"
|
||||
style="color:#000000;fill:#a40000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<rect
|
||||
y="30.297958"
|
||||
x="8.5892859"
|
||||
height="1"
|
||||
width="12"
|
||||
id="rect5239"
|
||||
style="color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<rect
|
||||
style="color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect5241"
|
||||
width="12"
|
||||
height="1"
|
||||
x="8.5892859"
|
||||
y="33.297958" />
|
||||
<path
|
||||
style="color:#000000;fill:url(#linearGradient3305);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 22.589286,45.2879 0,-6.354884 c 0,-0.905822 -0.740811,-1.635058 -1.661011,-1.635058 l -12.6779778,0 c -0.9202004,0 -1.6610115,0.729236 -1.6610115,1.635058 l 0,6.354884 c 0,0 16.0000003,0 16.0000003,0 z"
|
||||
id="path5243"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
id="path5253"
|
||||
d="m 20.089286,45.797958 0,-6.362884 c 0,-0.906962 -0.733174,-1.637116 -1.643888,-1.637116 l -8.7122248,0 c -0.9107138,0 -1.6438876,0.730154 -1.6438876,1.637116 l 0,6.362884 c 0,0 12.0000004,0 12.0000004,0 z"
|
||||
style="color:#000000;fill:url(#linearGradient3307);fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;fill:#c6c6c6;fill-opacity:1;fill-rule:evenodd;stroke:#eeeeec;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect5257"
|
||||
width="2"
|
||||
height="3.9375002"
|
||||
x="12.089286"
|
||||
y="40.797958" />
|
||||
<rect
|
||||
y="39.860458"
|
||||
x="11.089286"
|
||||
height="3.9375002"
|
||||
width="2"
|
||||
id="rect5255"
|
||||
style="color:#000000;fill:#5884bc;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
style="opacity:0.34482763;color:#000000;fill:none;stroke:url(#linearGradient3309);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 19.166208,44.870071 0,-5.078069 c 0,-0.723825 -0.370378,-0.994045 -1.140982,-0.994045 l -7.871882,0 c -0.7706039,0 -1.1409817,0.27022 -1.1409817,0.994045 l 0,5.078069 c 0,0 10.1538457,0 10.1538457,0 z"
|
||||
id="path5259"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#g3243"
|
||||
id="use3269"
|
||||
transform="translate(-9.7647883,9.6929653)"
|
||||
width="48"
|
||||
height="48" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 23 KiB |
7
icons/tango/16x16/Makefile.am
Normal file
@ -0,0 +1,7 @@
|
||||
icons_actionsdir = $(datadir)/icons/Tango/16x16/actions
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-save-all.png
|
||||
|
||||
dist_noinst_DATA = \
|
||||
geany-save-all.xcfgz
|
||||
BIN
icons/tango/16x16/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 708 B |
BIN
icons/tango/16x16/geany-save-all.xcfgz
Normal file
4
icons/tango/24x24/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
||||
icons_actionsdir = $(datadir)/icons/Tango/24x24/actions
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-save-all.png
|
||||
BIN
icons/tango/24x24/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
4
icons/tango/32x32/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
||||
icons_actionsdir = $(datadir)/icons/Tango/32x32/actions
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-save-all.png
|
||||
BIN
icons/tango/32x32/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
4
icons/tango/48x48/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
||||
icons_actionsdir = $(datadir)/icons/Tango/48x48/actions
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-save-all.png
|
||||
BIN
icons/tango/48x48/geany-save-all.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
7
icons/tango/Makefile.am
Normal file
@ -0,0 +1,7 @@
|
||||
SUBDIRS = 16x16 24x24 32x32 48x48 scalable
|
||||
|
||||
# only install index.theme on Windows
|
||||
if MINGW
|
||||
iconsdir = $(datadir)/icons/Tango
|
||||
dist_icons_DATA = index.theme
|
||||
endif
|
||||
33
icons/tango/index.theme
Normal file
@ -0,0 +1,33 @@
|
||||
[Icon Theme]
|
||||
Name=Tango
|
||||
Comment=Tango Icon Theme
|
||||
Inherits=gnome,crystalsvg
|
||||
Directories=16x16/actions,24x24/actions,32x32/actions,48x48/actions,scalable/actions
|
||||
|
||||
|
||||
[16x16/actions]
|
||||
Size=16
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[24x24/actions]
|
||||
Size=24
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[32x32/actions]
|
||||
Size=32
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[48x48/actions]
|
||||
Size=48
|
||||
Context=Actions
|
||||
Type=Threshold
|
||||
|
||||
[scalable/actions]
|
||||
MinSize=1
|
||||
Size=128
|
||||
MaxSize=256
|
||||
Context=Actions
|
||||
Type=Scalable
|
||||
4
icons/tango/scalable/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
||||
icons_actionsdir = $(datadir)/icons/Tango/scalable/actions
|
||||
|
||||
dist_icons_actions_DATA = \
|
||||
geany-save-all.svg
|
||||
613
icons/tango/scalable/geany-save-all.svg
Normal file
@ -0,0 +1,613 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="geany-save-all.svg"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:version="0.32"
|
||||
id="svg2913"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<title
|
||||
id="title3216">Save All</title>
|
||||
<defs
|
||||
id="defs3">
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
id="linearGradient5048">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient6925">
|
||||
<stop
|
||||
style="stop-color:#204a87;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6927" />
|
||||
<stop
|
||||
style="stop-color:#204a87;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6929" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient6901">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6903" />
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6905" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4991">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4993" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4995" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2187"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop2189"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2191"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8662">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8664" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8666" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8662"
|
||||
id="radialGradient8668"
|
||||
cx="24.837126"
|
||||
cy="36.421127"
|
||||
fx="24.837126"
|
||||
fy="36.421127"
|
||||
r="15.644737"
|
||||
gradientTransform="matrix(1.000000,-7.816467e-32,-1.132409e-32,0.536723,-5.897962e-14,16.87306)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient2555">
|
||||
<stop
|
||||
id="stop2557"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#e6e6e6;stop-opacity:1.0000000;"
|
||||
offset="0.50000000"
|
||||
id="stop2561" />
|
||||
<stop
|
||||
id="stop2563"
|
||||
offset="0.75000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#e1e1e1;stop-opacity:1.0000000;"
|
||||
offset="0.84166664"
|
||||
id="stop2565" />
|
||||
<stop
|
||||
id="stop2559"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4274">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.25490198;"
|
||||
offset="0.0000000"
|
||||
id="stop4276" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop4278" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4254"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4256"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4258"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4244">
|
||||
<stop
|
||||
id="stop4246"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#e4e4e4;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4248"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#d3d3d3;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4236"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4238"
|
||||
offset="0"
|
||||
style="stop-color:#eeeeee;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4240"
|
||||
offset="1"
|
||||
style="stop-color:#eeeeee;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4228">
|
||||
<stop
|
||||
id="stop4230"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4232"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#9f9f9f;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4184">
|
||||
<stop
|
||||
id="stop4186"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#838383;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4188"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#bbbbbb;stop-opacity:0.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientTransform="translate(0.795493,3.799180)"
|
||||
y2="35.281250"
|
||||
x2="24.687500"
|
||||
y1="35.281250"
|
||||
x1="7.0625000"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient4209"
|
||||
xlink:href="#linearGradient4184"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="40.943935"
|
||||
x2="36.183067"
|
||||
y1="28.481176"
|
||||
x1="7.6046205"
|
||||
id="linearGradient4234"
|
||||
xlink:href="#linearGradient4228"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="33.758667"
|
||||
x2="12.221823"
|
||||
y1="37.205811"
|
||||
x1="12.277412"
|
||||
id="linearGradient4242"
|
||||
xlink:href="#linearGradient4236"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.286242,0.781698,-0.710782,1.169552,-2.354348,0.248140)"
|
||||
r="20.935817"
|
||||
fy="2.9585190"
|
||||
fx="15.571491"
|
||||
cy="2.9585190"
|
||||
cx="15.571491"
|
||||
id="radialGradient4250"
|
||||
xlink:href="#linearGradient4244"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="47.620636"
|
||||
x2="44.096100"
|
||||
y1="4.4331360"
|
||||
x1="12.378357"
|
||||
id="linearGradient4260"
|
||||
xlink:href="#linearGradient4254"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="26.357183"
|
||||
x2="23.688078"
|
||||
y1="11.318835"
|
||||
x1="23.688078"
|
||||
id="linearGradient4272"
|
||||
xlink:href="#linearGradient4274"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2555"
|
||||
id="linearGradient2553"
|
||||
x1="33.431175"
|
||||
y1="31.964777"
|
||||
x2="21.747974"
|
||||
y2="11.780679"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6901"
|
||||
id="linearGradient3189"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="14.751649"
|
||||
y1="15.868432"
|
||||
x2="8.8953285"
|
||||
y2="16.743431" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6925"
|
||||
id="linearGradient3191"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="12.25"
|
||||
y1="18.25"
|
||||
x2="7"
|
||||
y2="21.118431" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2187"
|
||||
id="linearGradient3193"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.914114,0,0,0.914114,-3.868698,-2.706902)"
|
||||
x1="33.059906"
|
||||
y1="27.394117"
|
||||
x2="12.624337"
|
||||
y2="12.583769" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4991"
|
||||
id="radialGradient3195"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1.314471,-0.01006312,-0.01022964,1.336221,46.22108,-4.909887)"
|
||||
cx="23.447077"
|
||||
cy="6.4576745"
|
||||
fx="23.447077"
|
||||
fy="6.4576745"
|
||||
r="19.0625" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-height="818"
|
||||
inkscape:window-width="1034"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="11.617397"
|
||||
inkscape:cx="-60.605295"
|
||||
inkscape:zoom="4"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.22745098"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:showpageshadow="false"
|
||||
fill="#3465a4"
|
||||
stroke="#204a87"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Save All</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>hdd</rdf:li>
|
||||
<rdf:li>hard drive</rdf:li>
|
||||
<rdf:li>save</rdf:li>
|
||||
<rdf:li>io</rdf:li>
|
||||
<rdf:li>store</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:identifier />
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<dc:description>From the Tango icon gtk-save; design by Jesse Mayes.</dc:description>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="pix"
|
||||
id="layer2"
|
||||
inkscape:groupmode="layer" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
inkscape:label="down">
|
||||
<g
|
||||
id="g3112">
|
||||
<g
|
||||
transform="matrix(0.02411405,0,0,0.01929202,45.48953,41.75228)"
|
||||
id="g5022"
|
||||
style="display:inline">
|
||||
<rect
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4173"
|
||||
width="1339.6335"
|
||||
height="478.35718"
|
||||
x="-1559.2523"
|
||||
y="-150.69685" />
|
||||
<path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
id="path5058"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path5018"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#535353;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 11.28569,13.087628 C 10.66069,13.087628 10.254441,13.377808 10.004442,13.931381 C 10.004441,13.931381 3.5356915,31.034938 3.5356915,31.034938 C 3.5356915,31.034938 3.2856915,31.706497 3.2856915,32.816188 C 3.2856915,32.816188 3.2856915,42.466156 3.2856915,42.466156 C 3.2856915,43.548769 3.943477,44.091158 4.9419415,44.091156 L 43.50444,44.091156 C 44.489293,44.091156 45.09819,43.372976 45.09819,42.247406 L 45.09819,32.597438 C 45.09819,32.597438 45.204153,31.827015 45.00444,31.284938 L 38.28569,14.087631 C 38.101165,13.575725 37.648785,13.099533 37.16069,13.087628 L 11.28569,13.087628 z "
|
||||
id="path4196"
|
||||
sodipodi:nodetypes="cccsccccccccc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient4234);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.02044296000000001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 3.2735915,32.121812 L 4.0381936,31.429597 L 41.647883,31.492097 L 45.11029,31.809395 L 45.11029,42.247927 C 45.11029,43.373496 44.503272,44.091258 43.518419,44.091258 L 4.9354314,44.091258 C 3.9369667,44.091258 3.2735915,43.549207 3.2735915,42.466594 L 3.2735915,32.121812 z "
|
||||
id="path4170"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="fill:url(#radialGradient4250);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 3.5490842,31.039404 C 2.8347985,32.50369 3.5484686,33.432261 4.5847985,33.432261 C 4.5847985,33.432261 43.584797,33.432261 43.584797,33.432261 C 44.703844,33.408451 45.430035,32.420356 45.013368,31.289403 L 38.299082,14.078704 C 38.114558,13.566798 37.64432,13.090606 37.156225,13.078701 L 11.299083,13.078701 C 10.674083,13.078701 10.263369,13.382274 10.01337,13.935847 C 10.01337,13.935847 3.5490842,31.039404 3.5490842,31.039404 z "
|
||||
id="path3093"
|
||||
sodipodi:nodetypes="csccccccs" />
|
||||
<rect
|
||||
style="opacity:1;color:#000000;fill:url(#linearGradient4209);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.40899991999999985;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4174"
|
||||
width="17.625"
|
||||
height="5.5625"
|
||||
x="7.857996"
|
||||
y="36.299183" />
|
||||
<path
|
||||
style="opacity:0.81142853000000004;fill:url(#linearGradient4242);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 7.8579947,41.86168 C 7.8579947,41.86168 7.8579947,37.850195 7.8579947,37.850195 C 9.6935221,41.029421 16.154485,41.86168 20.795492,41.86168 C 20.795492,41.86168 7.8579947,41.86168 7.8579947,41.86168 z "
|
||||
id="path4194"
|
||||
sodipodi:nodetypes="cscc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 44.796162,30.753688 C 44.859684,32.003662 44.382159,33.069528 43.474046,33.097438 C 43.474046,33.097438 5.3553296,33.097437 5.3553297,33.097438 C 4.0660978,33.097438 3.4875937,32.772491 3.271279,32.229382 C 3.3630404,33.173714 4.0970964,33.878688 5.3553297,33.878688 C 5.3553296,33.878687 43.474046,33.878688 43.474046,33.878688 C 44.550053,33.845617 45.226851,32.454664 44.82621,30.883897 L 44.796162,30.753688 z "
|
||||
id="path4201"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="opacity:0.69142857000000002;color:#000000;fill:url(#linearGradient4272);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 10.96875,15.28125 C 10.922675,15.481571 10.78125,15.668047 10.78125,15.875 C 10.78125,16.823605 11.37223,17.664474 12.125,18.46875 C 12.365268,18.314675 12.490117,18.114342 12.75,17.96875 C 11.809691,17.152746 11.196604,16.252168 10.96875,15.28125 z M 37.625,15.28125 C 37.396273,16.250866 36.782988,17.153676 35.84375,17.96875 C 36.117894,18.122332 36.247738,18.33699 36.5,18.5 C 37.257262,17.693344 37.8125,16.826956 37.8125,15.875 C 37.8125,15.668047 37.670906,15.481571 37.625,15.28125 z M 39.8125,23.71875 C 39.198709,27.758861 32.513887,30.96875 24.28125,30.96875 C 16.068996,30.968751 9.4211001,27.775964 8.78125,23.75 C 8.7488928,23.947132 8.65625,24.141882 8.65625,24.34375 C 8.6562503,28.661697 15.645354,32.187501 24.28125,32.1875 C 32.917146,32.1875 39.937499,28.661698 39.9375,24.34375 C 39.9375,24.130826 39.848449,23.926394 39.8125,23.71875 z "
|
||||
id="path4211" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.45762705999999997;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="path4224"
|
||||
sodipodi:cx="7.2036505"
|
||||
sodipodi:cy="25.593554"
|
||||
sodipodi:rx="1.3700194"
|
||||
sodipodi:ry="1.016466"
|
||||
d="M 8.5736699 25.593554 A 1.3700194 1.016466 0 1 1 5.833631,25.593554 A 1.3700194 1.016466 0 1 1 8.5736699 25.593554 z"
|
||||
transform="translate(0.08838843,5.30178)" />
|
||||
<path
|
||||
transform="translate(33.96705,5.21339)"
|
||||
d="M 8.5736699 25.593554 A 1.3700194 1.016466 0 1 1 5.833631,25.593554 A 1.3700194 1.016466 0 1 1 8.5736699 25.593554 z"
|
||||
sodipodi:ry="1.016466"
|
||||
sodipodi:rx="1.3700194"
|
||||
sodipodi:cy="25.593554"
|
||||
sodipodi:cx="7.2036505"
|
||||
id="path4226"
|
||||
style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.45762705999999997;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccsccccccccc"
|
||||
id="path4252"
|
||||
d="M 11.642515,13.540723 C 11.040823,13.540723 10.649724,13.820081 10.409049,14.35301 C 10.409048,14.35301 3.9940341,30.943732 3.9940341,30.943732 C 3.9940341,30.943732 3.7533573,31.590247 3.7533573,32.658555 C 3.7533573,32.658555 3.7533573,41.948651 3.7533573,41.948651 C 3.7533573,43.303391 4.1974134,43.57555 5.3478414,43.57555 L 43.034746,43.57555 C 44.357872,43.57555 44.569062,43.259153 44.569062,41.738058 L 44.569062,32.447962 C 44.569062,32.447962 44.671072,31.706271 44.478807,31.184409 L 37.885616,14.378434 C 37.707973,13.885617 37.334964,13.552184 36.865071,13.540723 L 11.642515,13.540723 z "
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4260);stroke-width:1.00000024000000010;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
id="path4282"
|
||||
d="M 40.5,36.554166 L 40.5,41.575101"
|
||||
style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372884999999999" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372884999999999"
|
||||
d="M 38.5,36.613943 L 38.5,41.634878"
|
||||
id="path4284" />
|
||||
<path
|
||||
id="path4286"
|
||||
d="M 36.5,36.613943 L 36.5,41.634878"
|
||||
style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372884999999999" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372884999999999"
|
||||
d="M 34.5,36.613943 L 34.5,41.634878"
|
||||
id="path4288" />
|
||||
<path
|
||||
id="path4290"
|
||||
d="M 32.5,36.613943 L 32.5,41.634878"
|
||||
style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372884999999999" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372884999999999"
|
||||
d="M 30.5,36.613943 L 30.5,41.634878"
|
||||
id="path4292" />
|
||||
<path
|
||||
style="opacity:0.09714283999999999;fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 39.5,36.604065 L 39.5,41.625"
|
||||
id="path4294" />
|
||||
<path
|
||||
id="path4296"
|
||||
d="M 37.5,36.663842 L 37.5,41.684777"
|
||||
style="opacity:0.09714283999999999;fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:0.09714283999999999;fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 35.5,36.663842 L 35.5,41.684777"
|
||||
id="path4298" />
|
||||
<path
|
||||
id="path4300"
|
||||
d="M 33.5,36.663842 L 33.5,41.684777"
|
||||
style="opacity:0.09714283999999999;fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:0.09714283999999999;fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000047999999997px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 31.5,36.663842 L 31.5,41.684777"
|
||||
id="path4302" />
|
||||
<path
|
||||
style="opacity:0.43999999000000001;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 7.875,36.3125 L 7.875,41.84375 L 20.4375,41.84375 L 8.21875,41.5 L 7.875,36.3125 z "
|
||||
id="path4572" />
|
||||
<path
|
||||
transform="matrix(1.037815,0,0,1.060747,-1.632878,3.03037)"
|
||||
d="M 39.875 19.5625 A 14.875 6.6875 0 1 1 10.125,19.5625 A 14.875 6.6875 0 1 1 39.875 19.5625 z"
|
||||
sodipodi:ry="6.6875"
|
||||
sodipodi:rx="14.875"
|
||||
sodipodi:cy="19.5625"
|
||||
sodipodi:cx="25"
|
||||
id="path2545"
|
||||
style="opacity:0.20571427000000000;color:#000000;fill:url(#linearGradient2553);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.93365198000000005;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.42372879000000002;visibility:visible;display:inline;overflow:visible"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.14117647;color:#000000;fill:url(#radialGradient8668);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="path8660"
|
||||
sodipodi:cx="24.837126"
|
||||
sodipodi:cy="36.421127"
|
||||
sodipodi:rx="15.644737"
|
||||
sodipodi:ry="8.3968935"
|
||||
d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z"
|
||||
transform="matrix(1.130190,1.178179e-16,7.918544e-17,-0.759601,-3.909725,53.66554)" />
|
||||
</g>
|
||||
<g
|
||||
id="g3080"
|
||||
transform="translate(-3.324104,0)">
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
id="path1432"
|
||||
d="M 3.2034501,25.835194 C 2.1729477,-5.3853369 28.741616,-0.4511153 28.582416,15.788689 l 7.312914,0 L 24.517652,28.774671 12.585426,15.788689 c 0,0 7.541433,0 7.541433,0 C 20.583921,4.8193225 3.4092324,1.6100346 3.2034501,25.835194 z"
|
||||
style="color:#000000;fill:url(#linearGradient3189);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3191);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:block;overflow:visible"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="opacity:0.47159095;color:#000000;fill:none;stroke:url(#linearGradient3193);stroke-width:0.99999934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:block;overflow:visible"
|
||||
d="M 7.6642103,9.1041047 C 12.40638,-0.0400306 28.122336,2.7175443 27.761604,16.579393 l 6.317372,0 c 0,0 -9.565825,10.957376 -9.565825,10.957376 L 14.41668,16.579393 c 0,0 6.45664,0 6.45664,0 C 21.144975,5.0041615 10.922265,5.5345215 7.6642103,9.1041047 z"
|
||||
id="path2177"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
id="path4989"
|
||||
d="m 34.767155,16.211613 -1.984176,2.545709 c -5.410032,-1.516293 -7.88615,2.729342 -15.673695,1.73179 l -3.861286,-4.409035 7.18647,0.08279 C 20.483219,4.3164571 8.3443098,4.998966 5.0292663,13.627829 8.8372201,-1.2611216 27.893316,0.8064118 28.28332,16.114112 l 6.483835,0.0975 z"
|
||||
style="opacity:0.49431817;color:#000000;fill:url(#radialGradient3195);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<use
|
||||
x="0"
|
||||
y="0"
|
||||
xlink:href="#g3080"
|
||||
id="use3150"
|
||||
transform="translate(11.738167,0)"
|
||||
width="48"
|
||||
height="48" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 29 KiB |
@ -716,9 +716,8 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer dat
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((event->keyval == GDK_Up ||
|
||||
event->keyval == GDK_KP_Up) &&
|
||||
(event->state & GDK_MOD1_MASK)) /* FIXME: Alt-Up doesn't seem to work! */
|
||||
if (( (event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && (event->state & GDK_MOD1_MASK)) || /* FIXME: Alt-Up doesn't seem to work! */
|
||||
(event->keyval == GDK_BackSpace) )
|
||||
{
|
||||
on_go_up();
|
||||
return TRUE;
|
||||
|
||||
@ -14,7 +14,6 @@ src/geany.h
|
||||
src/geanymenubuttonaction.c
|
||||
src/geanyentryaction.c
|
||||
src/highlighting.c
|
||||
src/images.c
|
||||
src/keybindings.c
|
||||
src/keyfile.c
|
||||
src/log.c
|
||||
|
||||
113
po/cs.po
@ -4,14 +4,15 @@
|
||||
# Petr Messner <messa@messa.cz>, 2006-2007.
|
||||
# Anna Talianova <anickat1@gmail.com>, 2008.
|
||||
# Karel Kolman <kolmis@gmail.com>, 2009-2011.
|
||||
# Miro Hrončok <miro@hroncok.cz>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Geany 1.22\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-06-03 17:50+0200\n"
|
||||
"PO-Revision-Date: 2010-12-05 15:55+0100\n"
|
||||
"Last-Translator: Karel Kolman <kolmis@gmail.com>\n"
|
||||
"PO-Revision-Date: 2013-01-05 19:00+0100\n"
|
||||
"Last-Translator: Miro Hrončok <miro@hroncok.cz>\n"
|
||||
"Language-Team: Czech <geany-i18n@uvena.de>\n"
|
||||
"Language: cs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -304,21 +305,16 @@ msgid "Always wrap search"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/geany.glade.h:57
|
||||
#, fuzzy
|
||||
msgid "Always wrap search around the document"
|
||||
msgstr "Vždy hledat v celém dokumentu a skrýt dialogové okno Najít"
|
||||
msgstr "Vždy hledat v celém dokumentu"
|
||||
|
||||
#: ../data/geany.glade.h:58
|
||||
#, fuzzy
|
||||
msgid "Hide the Find dialog"
|
||||
msgstr "Vždy hledat v celém dokumentu a skrýt dialogové okno Najít"
|
||||
msgstr "Skrýt dialogové okno Najít"
|
||||
|
||||
#: ../data/geany.glade.h:59
|
||||
#, fuzzy
|
||||
msgid "Hide the Find dialog after clicking Find Next/Previous"
|
||||
msgstr ""
|
||||
"Hledání bude vždy rozšířeno na celý dokument a dialogové okno Najít bude "
|
||||
"skryto po kliknutí na Najít další/předchozí"
|
||||
msgstr "Skrýt sialogové okno Najít po kliknutí na Najít další/předchozí"
|
||||
|
||||
#: ../data/geany.glade.h:60
|
||||
msgid "Use the current word under the cursor for Find dialogs"
|
||||
@ -509,9 +505,8 @@ msgid "Calls the View->Toggle All Additional Widgets command"
|
||||
msgstr "Volá funkci menu Zobrazit->Skrýt/zobrazit všechny ostatní panely"
|
||||
|
||||
#: ../data/geany.glade.h:100
|
||||
#, fuzzy
|
||||
msgid "Switch to last used document after closing a tab"
|
||||
msgstr "Přejít do předchozího dokumentu"
|
||||
msgstr "Přejít na naposledy používaný dokumentu po zvaření záložky"
|
||||
|
||||
#: ../data/geany.glade.h:101
|
||||
msgid "<b>Editor tabs</b>"
|
||||
@ -1448,9 +1443,8 @@ msgid "Sets the font for the terminal widget"
|
||||
msgstr "Nastaví písmo terminálu."
|
||||
|
||||
#: ../data/geany.glade.h:300
|
||||
#, fuzzy
|
||||
msgid "Choose Terminal Font"
|
||||
msgstr "Písmo terminálu:"
|
||||
msgstr "Vyberte písmo terminálu:"
|
||||
|
||||
#: ../data/geany.glade.h:301
|
||||
msgid "Foreground color:"
|
||||
@ -1473,9 +1467,8 @@ msgid "Sets the foreground color of the text in the terminal widget"
|
||||
msgstr "Nastaví barvu textu v okně terminálu."
|
||||
|
||||
#: ../data/geany.glade.h:306
|
||||
#, fuzzy
|
||||
msgid "Sets the backround color of the text in the terminal widget"
|
||||
msgstr "Nastaví barvu pozadí v okně terminálu."
|
||||
msgstr "Nastaví barvu pozadí textu v okně terminálu"
|
||||
|
||||
#: ../data/geany.glade.h:307
|
||||
msgid ""
|
||||
@ -1539,19 +1532,16 @@ msgstr ""
|
||||
"Midnight Commanderu uvnitř VTE."
|
||||
|
||||
#: ../data/geany.glade.h:319
|
||||
#, fuzzy
|
||||
msgid "Follow path of the current file"
|
||||
msgstr "Následovat cestu aktuálního otevřeného souboru"
|
||||
|
||||
#: ../data/geany.glade.h:320
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Whether to execute \\\"cd $path\\\" when you switch between opened files"
|
||||
msgstr ""
|
||||
"Zda provádět příkaz \"cd $cesta\" při přepínání mezi otevřenými soubory."
|
||||
"Zda provádět příkaz \\\"cd $cesta\\\" při přepínání mezi otevřenými soubory."
|
||||
|
||||
#: ../data/geany.glade.h:321
|
||||
#, fuzzy
|
||||
msgid "Execute programs in the VTE"
|
||||
msgstr "Spouštět programy v emulátoru terminálu"
|
||||
|
||||
@ -1576,9 +1566,8 @@ msgstr ""
|
||||
"terminálu. Pozor, programy spuštěné v terminálu nemohou být zastaveny."
|
||||
|
||||
#: ../data/geany.glade.h:325
|
||||
#, fuzzy
|
||||
msgid "<b>Terminal</b>"
|
||||
msgstr "<b>Oprávnění:</b>"
|
||||
msgstr "<b>Terminál:</b>"
|
||||
|
||||
#: ../data/geany.glade.h:326 ../src/prefs.c:1595 ../src/vte.c:281
|
||||
msgid "Terminal"
|
||||
@ -2087,9 +2076,8 @@ msgid "_Keyboard Shortcuts"
|
||||
msgstr "_Klávesové zkratky"
|
||||
|
||||
#: ../data/geany.glade.h:450
|
||||
#, fuzzy
|
||||
msgid "Debug _Messages"
|
||||
msgstr "Debug zprávy"
|
||||
msgstr "Debug _zprávy"
|
||||
|
||||
#: ../data/geany.glade.h:451
|
||||
msgid "_Website"
|
||||
@ -2097,16 +2085,15 @@ msgstr "_Webové stránky"
|
||||
|
||||
#: ../data/geany.glade.h:452
|
||||
msgid "Wi_ki"
|
||||
msgstr ""
|
||||
msgstr "Wi_ki"
|
||||
|
||||
#: ../data/geany.glade.h:453
|
||||
msgid "Report a _Bug"
|
||||
msgstr ""
|
||||
msgstr "_Nahlásit chybu"
|
||||
|
||||
#: ../data/geany.glade.h:454
|
||||
#, fuzzy
|
||||
msgid "_Donate"
|
||||
msgstr "_Neukládat"
|
||||
msgstr "_Přispět"
|
||||
|
||||
#: ../data/geany.glade.h:455 ../src/sidebar.c:124
|
||||
msgid "Symbols"
|
||||
@ -2114,7 +2101,7 @@ msgstr "Symboly"
|
||||
|
||||
#: ../data/geany.glade.h:456
|
||||
msgid "Documents"
|
||||
msgstr "_Dokumenty"
|
||||
msgstr "Dokumenty"
|
||||
|
||||
#: ../data/geany.glade.h:457
|
||||
msgid "Status"
|
||||
@ -2142,6 +2129,13 @@ msgid ""
|
||||
"Frank Lanitz\n"
|
||||
"All rights reserved."
|
||||
msgstr ""
|
||||
"Copyright (c) 2005-2012\n"
|
||||
"Colomban Wendling\n"
|
||||
"Nick Treleaven\n"
|
||||
"Matthew Brush\n"
|
||||
"Enrico Tröger\n"
|
||||
"Frank Lanitz\n"
|
||||
"Všechna práva vyhrazena."
|
||||
|
||||
#: ../src/about.c:157
|
||||
msgid "About Geany"
|
||||
@ -2237,9 +2231,9 @@ msgid "Failed to change the working directory to \"%s\""
|
||||
msgstr "Selhala změna pracovního adresáře na \"%s\""
|
||||
|
||||
#: ../src/build.c:929
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Failed to execute \"%s\" (start-script could not be created: %s)"
|
||||
msgstr "Selhalo spuštění \"%s\" (startovací skript nemohl být vytvořen)"
|
||||
msgstr "Selhalo spuštění \"%s\" (startovací skript nemohl být vytvořen: %s)"
|
||||
|
||||
#: ../src/build.c:984
|
||||
msgid ""
|
||||
@ -2482,9 +2476,9 @@ msgid "No more message items."
|
||||
msgstr "Žádné další zprávy."
|
||||
|
||||
#: ../src/callbacks.c:1673
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Could not open file %s (File not found)"
|
||||
msgstr "Soubor %s nemohl být otevřen (%s)"
|
||||
msgstr "Soubor %s nemohl být otevřen (Soubor nenalezen)"
|
||||
|
||||
#: ../src/dialogs.c:226
|
||||
msgid "Detect from file"
|
||||
@ -3154,23 +3148,21 @@ msgid "Could not find file '%s'."
|
||||
msgstr "Soubor \"%s\" nebyl nalezen."
|
||||
|
||||
#: ../src/highlighting.c:1297
|
||||
#, fuzzy
|
||||
msgid "Default"
|
||||
msgstr "_Výchozí"
|
||||
msgstr "Výchozí"
|
||||
|
||||
#: ../src/highlighting.c:1336
|
||||
#, fuzzy
|
||||
msgid "The current filetype overrides the default style."
|
||||
msgstr "Sestavit aktuální soubor nástrojem Make s výchozím cílem"
|
||||
msgstr "Současný typ souboru přepisuje výchozí styl."
|
||||
|
||||
#: ../src/highlighting.c:1337
|
||||
msgid "This may cause color schemes to display incorrectly."
|
||||
msgstr ""
|
||||
msgstr "Toto může způspbit nesprávné zobrazení barevných schémat."
|
||||
|
||||
#: ../src/highlighting.c:1358
|
||||
#, fuzzy
|
||||
msgid "Color Schemes"
|
||||
msgstr "_Schémata barev"
|
||||
msgstr "Schémata barev"
|
||||
|
||||
#. visual group order
|
||||
#: ../src/keybindings.c:223 ../src/symbols.c:714
|
||||
@ -3410,9 +3402,8 @@ msgid "Send to Custom Command 3"
|
||||
msgstr "Použít Vlastní příkaz 3"
|
||||
|
||||
#: ../src/keybindings.c:400
|
||||
#, fuzzy
|
||||
msgid "Join lines"
|
||||
msgstr "Zakomentovat řádek"
|
||||
msgstr "Spojit řádky"
|
||||
|
||||
#: ../src/keybindings.c:405
|
||||
msgid "Insert date"
|
||||
@ -3763,7 +3754,7 @@ msgstr "Vypsat prefix Geany instalace"
|
||||
|
||||
#: ../src/main.c:138
|
||||
msgid "Open all FILES in read-only mode (see documention)"
|
||||
msgstr ""
|
||||
msgstr "Otevřít všechny SOUBORY v režimu pouze pro čtení (viz dokumentace)"
|
||||
|
||||
#: ../src/main.c:139
|
||||
msgid "Don't load the previous session's files"
|
||||
@ -3899,9 +3890,8 @@ msgid "Plugin"
|
||||
msgstr "Plugin"
|
||||
|
||||
#: ../src/plugins.c:1300
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Popis:"
|
||||
msgstr "Popis"
|
||||
|
||||
#: ../src/plugins.c:1318
|
||||
msgid "No plugins available."
|
||||
@ -4133,9 +4123,9 @@ msgid "Do you want to close it before proceeding?"
|
||||
msgstr "Chcete ho před pokračováním zavřít?"
|
||||
|
||||
#: ../src/project.c:597
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "The '%s' project is open."
|
||||
msgstr "Projekt '%s' je již otevřen."
|
||||
msgstr "Projekt '%s' je otevřen."
|
||||
|
||||
#: ../src/project.c:646
|
||||
msgid "The specified project name is too short."
|
||||
@ -4374,7 +4364,7 @@ msgstr ""
|
||||
#: ../src/search.c:1574
|
||||
#, c-format
|
||||
msgid "Cannot parse extra options: %s"
|
||||
msgstr ""
|
||||
msgstr "Nemohu zpracovat extra hodnoty: %s"
|
||||
|
||||
#: ../src/search.c:1640
|
||||
msgid "Searching..."
|
||||
@ -4423,13 +4413,12 @@ msgstr ""
|
||||
"Jde o závažnou chybu a aplikace bude nyní ukončena."
|
||||
|
||||
#: ../src/stash.c:1099
|
||||
#, fuzzy
|
||||
msgid "Name"
|
||||
msgstr "Název:"
|
||||
msgstr "Název"
|
||||
|
||||
#: ../src/stash.c:1106
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
msgstr "Hodnota"
|
||||
|
||||
#: ../src/symbols.c:693 ../src/symbols.c:743 ../src/symbols.c:810
|
||||
msgid "Chapter"
|
||||
@ -4558,7 +4547,7 @@ msgstr "Třídy"
|
||||
|
||||
#: ../src/symbols.c:790
|
||||
msgid "Anchors"
|
||||
msgstr ""
|
||||
msgstr "Kotvy"
|
||||
|
||||
#: ../src/symbols.c:791
|
||||
msgid "H1 Headings"
|
||||
@ -4638,7 +4627,7 @@ msgstr "Funkce / Úkoly"
|
||||
# Java atd.
|
||||
#: ../src/symbols.c:880 ../src/symbols.c:981
|
||||
msgid "Members"
|
||||
msgstr ""
|
||||
msgstr "Členy"
|
||||
|
||||
# Fortran
|
||||
#: ../src/symbols.c:930
|
||||
@ -4656,7 +4645,7 @@ msgstr "Makra"
|
||||
# ASM
|
||||
#: ../src/symbols.c:943
|
||||
msgid "Defines"
|
||||
msgstr ""
|
||||
msgstr "Definice"
|
||||
|
||||
# Makefiles
|
||||
#: ../src/symbols.c:950
|
||||
@ -4677,7 +4666,7 @@ msgstr "Triggery"
|
||||
|
||||
#: ../src/symbols.c:962
|
||||
msgid "Views"
|
||||
msgstr ""
|
||||
msgstr "Pohledy"
|
||||
|
||||
#: ../src/symbols.c:982
|
||||
msgid "Structs"
|
||||
@ -4685,7 +4674,7 @@ msgstr "Struktury"
|
||||
|
||||
#: ../src/symbols.c:983
|
||||
msgid "Typedefs / Enums"
|
||||
msgstr ""
|
||||
msgstr "Definice typů"
|
||||
|
||||
#: ../src/symbols.c:1728
|
||||
#, c-format
|
||||
@ -4723,9 +4712,8 @@ msgid "Load Tags"
|
||||
msgstr "Načíst tagy"
|
||||
|
||||
#: ../src/symbols.c:1780
|
||||
#, fuzzy
|
||||
msgid "Geany tag files (*.*.tags)"
|
||||
msgstr "Geany soubor tagů (*.tags)"
|
||||
msgstr "Geany soubor tagů (*.*.tags)"
|
||||
|
||||
#. For translators: the first wildcard is the filetype, the second the filename
|
||||
#: ../src/symbols.c:1800
|
||||
@ -4880,13 +4868,12 @@ msgid "Choose more build actions"
|
||||
msgstr "Další akce sestavení"
|
||||
|
||||
#: ../src/toolbar.c:380
|
||||
#, fuzzy
|
||||
msgid "Search Field"
|
||||
msgstr "Hledání selhalo."
|
||||
msgstr "Hledání selhalo"
|
||||
|
||||
#: ../src/toolbar.c:390
|
||||
msgid "Goto Field"
|
||||
msgstr ""
|
||||
msgstr "Políčko přechodu na řádek"
|
||||
|
||||
#: ../src/toolbar.c:579
|
||||
msgid "Separator"
|
||||
@ -5071,9 +5058,9 @@ msgid "pos: %d"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/ui_utils.c:330
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "style: %d"
|
||||
msgstr "Styl ikon:"
|
||||
msgstr "styl: %d"
|
||||
|
||||
#: ../src/ui_utils.c:382
|
||||
msgid " (new instance)"
|
||||
@ -5126,7 +5113,7 @@ msgstr "Zavřít vše"
|
||||
|
||||
#: ../src/ui_utils.c:2225
|
||||
msgid "Geany cannot start!"
|
||||
msgstr ""
|
||||
msgstr "Geany se nemůže spustit!"
|
||||
|
||||
#: ../src/utils.c:87
|
||||
msgid "Select Browser"
|
||||
|
||||
2
po/tr.po
@ -4973,7 +4973,7 @@ msgstr ""
|
||||
#. L = lines
|
||||
#: ../src/ui_utils.c:219
|
||||
msgid "%dL"
|
||||
msgstr "%sS"
|
||||
msgstr "%dS"
|
||||
|
||||
#. RO = read-only
|
||||
#: ../src/ui_utils.c:225 ../src/ui_utils.c:232
|
||||
|
||||
@ -30,6 +30,7 @@ lexers/LexOthers.cxx \
|
||||
lexers/LexPascal.cxx \
|
||||
lexers/LexPerl.cxx \
|
||||
lexers/LexPython.cxx \
|
||||
lexers/LexPO.cxx \
|
||||
lexers/LexR.cxx \
|
||||
lexers/LexRuby.cxx \
|
||||
lexers/LexSQL.cxx \
|
||||
|
||||
@ -541,6 +541,8 @@ void SurfaceImpl::Init(SurfaceID sid, WindowID wid) {
|
||||
PLATFORM_ASSERT(wid);
|
||||
context = cairo_reference(reinterpret_cast<cairo_t *>(sid));
|
||||
pcontext = gtk_widget_create_pango_context(PWidget(wid));
|
||||
// update the Pango context in case sid isn't the widget's surface
|
||||
pango_cairo_update_context(context, pcontext);
|
||||
layout = pango_layout_new(pcontext);
|
||||
cairo_set_line_width(context, 1);
|
||||
createdGC = true;
|
||||
@ -554,6 +556,8 @@ void SurfaceImpl::InitPixMap(int width, int height, Surface *surface_, WindowID
|
||||
PLATFORM_ASSERT(wid);
|
||||
context = cairo_reference(surfImpl->context);
|
||||
pcontext = gtk_widget_create_pango_context(PWidget(wid));
|
||||
// update the Pango context in case surface_ isn't the widget's surface
|
||||
pango_cairo_update_context(context, pcontext);
|
||||
PLATFORM_ASSERT(pcontext);
|
||||
layout = pango_layout_new(pcontext);
|
||||
PLATFORM_ASSERT(layout);
|
||||
|
||||
@ -1213,6 +1213,10 @@ bool ScintillaGTK::ModifyScrollBars(int nMax, int nPage) {
|
||||
modified = true;
|
||||
}
|
||||
#endif
|
||||
if (modified && (paintState == painting)) {
|
||||
paintState = paintAbandoned;
|
||||
}
|
||||
|
||||
return modified;
|
||||
}
|
||||
|
||||
|
||||
@ -1354,6 +1354,13 @@
|
||||
#define SCE_PO_MSGCTXT 6
|
||||
#define SCE_PO_MSGCTXT_TEXT 7
|
||||
#define SCE_PO_FUZZY 8
|
||||
#define SCE_PO_PROGRAMMER_COMMENT 9
|
||||
#define SCE_PO_REFERENCE 10
|
||||
#define SCE_PO_FLAGS 11
|
||||
#define SCE_PO_MSGID_TEXT_EOL 12
|
||||
#define SCE_PO_MSGSTR_TEXT_EOL 13
|
||||
#define SCE_PO_MSGCTXT_TEXT_EOL 14
|
||||
#define SCE_PO_ERROR 15
|
||||
#define SCE_PAS_DEFAULT 0
|
||||
#define SCE_PAS_IDENTIFIER 1
|
||||
#define SCE_PAS_COMMENT 2
|
||||
|
||||
@ -3924,6 +3924,13 @@ val SCE_PO_MSGSTR_TEXT=5
|
||||
val SCE_PO_MSGCTXT=6
|
||||
val SCE_PO_MSGCTXT_TEXT=7
|
||||
val SCE_PO_FUZZY=8
|
||||
val SCE_PO_PROGRAMMER_COMMENT=9
|
||||
val SCE_PO_REFERENCE=10
|
||||
val SCE_PO_FLAGS=11
|
||||
val SCE_PO_MSGID_TEXT_EOL=12
|
||||
val SCE_PO_MSGSTR_TEXT_EOL=13
|
||||
val SCE_PO_MSGCTXT_TEXT_EOL=14
|
||||
val SCE_PO_ERROR=15
|
||||
# Lexical states for SCLEX_PASCAL
|
||||
lex Pascal=SCLEX_PASCAL SCE_PAS_
|
||||
val SCE_PAS_DEFAULT=0
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/** @file LexBash.cxx
|
||||
** Lexer for Bash.
|
||||
**/
|
||||
// Copyright 2004-2010 by Neil Hodgson <neilh@scintilla.org>
|
||||
// Copyright 2004-2012 by Neil Hodgson <neilh@scintilla.org>
|
||||
// Adapted from LexPerl by Kein-Hong Man 2004
|
||||
// The License.txt file describes the conditions under which this software may be distributed.
|
||||
|
||||
@ -49,6 +49,17 @@ using namespace Scintilla;
|
||||
#define BASH_CMD_ARITH 4
|
||||
#define BASH_CMD_DELIM 5
|
||||
|
||||
// state constants for nested delimiter pairs, used by
|
||||
// SCE_SH_STRING and SCE_SH_BACKTICKS processing
|
||||
#define BASH_DELIM_LITERAL 0
|
||||
#define BASH_DELIM_STRING 1
|
||||
#define BASH_DELIM_CSTRING 2
|
||||
#define BASH_DELIM_LSTRING 3
|
||||
#define BASH_DELIM_COMMAND 4
|
||||
#define BASH_DELIM_BACKTICK 5
|
||||
|
||||
#define BASH_DELIM_STACK_MAX 7
|
||||
|
||||
static inline int translateBashDigit(int ch) {
|
||||
if (ch >= '0' && ch <= '9') {
|
||||
return ch - '0';
|
||||
@ -154,6 +165,60 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
};
|
||||
QuoteCls Quote;
|
||||
|
||||
class QuoteStackCls { // Class to manage quote pairs that nest
|
||||
public:
|
||||
int Count;
|
||||
int Up, Down;
|
||||
int Style;
|
||||
int Depth; // levels pushed
|
||||
int *CountStack;
|
||||
int *UpStack;
|
||||
int *StyleStack;
|
||||
QuoteStackCls() {
|
||||
Count = 0;
|
||||
Up = '\0';
|
||||
Down = '\0';
|
||||
Style = 0;
|
||||
Depth = 0;
|
||||
CountStack = new int[BASH_DELIM_STACK_MAX];
|
||||
UpStack = new int[BASH_DELIM_STACK_MAX];
|
||||
StyleStack = new int[BASH_DELIM_STACK_MAX];
|
||||
}
|
||||
void Start(int u, int s) {
|
||||
Count = 1;
|
||||
Up = u;
|
||||
Down = opposite(Up);
|
||||
Style = s;
|
||||
}
|
||||
void Push(int u, int s) {
|
||||
if (Depth >= BASH_DELIM_STACK_MAX)
|
||||
return;
|
||||
CountStack[Depth] = Count;
|
||||
UpStack [Depth] = Up;
|
||||
StyleStack[Depth] = Style;
|
||||
Depth++;
|
||||
Count = 1;
|
||||
Up = u;
|
||||
Down = opposite(Up);
|
||||
Style = s;
|
||||
}
|
||||
void Pop(void) {
|
||||
if (Depth <= 0)
|
||||
return;
|
||||
Depth--;
|
||||
Count = CountStack[Depth];
|
||||
Up = UpStack [Depth];
|
||||
Style = StyleStack[Depth];
|
||||
Down = opposite(Up);
|
||||
}
|
||||
~QuoteStackCls() {
|
||||
delete []CountStack;
|
||||
delete []UpStack;
|
||||
delete []StyleStack;
|
||||
}
|
||||
};
|
||||
QuoteStackCls QuoteStack;
|
||||
|
||||
int numBase = 0;
|
||||
int digit;
|
||||
unsigned int endPos = startPos + length;
|
||||
@ -163,6 +228,8 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
// Always backtracks to the start of a line that is not a continuation
|
||||
// of the previous line (i.e. start of a bash command segment)
|
||||
int ln = styler.GetLine(startPos);
|
||||
if (ln > 0 && startPos == static_cast<unsigned int>(styler.LineStart(ln)))
|
||||
ln--;
|
||||
for (;;) {
|
||||
startPos = styler.LineStart(ln);
|
||||
if (ln == 0 || styler.GetLineState(ln) == BASH_CMD_START)
|
||||
@ -376,7 +443,7 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
sc.ForwardSetState(SCE_SH_DEFAULT);
|
||||
} else if (sc.ch == '\\') {
|
||||
// skip escape prefix
|
||||
} else {
|
||||
} else if (!HereDoc.Quoted) {
|
||||
sc.SetState(SCE_SH_DEFAULT);
|
||||
}
|
||||
if (HereDoc.DelimiterLength >= HERE_DELIM_MAX - 1) { // force blowup
|
||||
@ -401,8 +468,11 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
}
|
||||
char s[HERE_DELIM_MAX];
|
||||
sc.GetCurrent(s, sizeof(s));
|
||||
if (sc.LengthCurrent() == 0)
|
||||
if (sc.LengthCurrent() == 0) { // '' or "" delimiters
|
||||
if (prefixws == 0 && HereDoc.Quoted && HereDoc.DelimiterLength == 0)
|
||||
sc.SetState(SCE_SH_DEFAULT);
|
||||
break;
|
||||
}
|
||||
if (s[strlen(s) - 1] == '\r')
|
||||
s[strlen(s) - 1] = '\0';
|
||||
if (strcmp(HereDoc.Delimiter, s) == 0) {
|
||||
@ -424,9 +494,56 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SCE_SH_STRING: // delimited styles
|
||||
case SCE_SH_STRING: // delimited styles, can nest
|
||||
case SCE_SH_BACKTICKS:
|
||||
case SCE_SH_PARAM:
|
||||
if (sc.ch == '\\' && QuoteStack.Up != '\\') {
|
||||
if (QuoteStack.Style != BASH_DELIM_LITERAL)
|
||||
sc.Forward();
|
||||
} else if (sc.ch == QuoteStack.Down) {
|
||||
QuoteStack.Count--;
|
||||
if (QuoteStack.Count == 0) {
|
||||
if (QuoteStack.Depth > 0) {
|
||||
QuoteStack.Pop();
|
||||
} else
|
||||
sc.ForwardSetState(SCE_SH_DEFAULT);
|
||||
}
|
||||
} else if (sc.ch == QuoteStack.Up) {
|
||||
QuoteStack.Count++;
|
||||
} else {
|
||||
if (QuoteStack.Style == BASH_DELIM_STRING ||
|
||||
QuoteStack.Style == BASH_DELIM_LSTRING
|
||||
) { // do nesting for "string", $"locale-string"
|
||||
if (sc.ch == '`') {
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK);
|
||||
} else if (sc.ch == '$' && sc.chNext == '(') {
|
||||
sc.Forward();
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_COMMAND);
|
||||
}
|
||||
} else if (QuoteStack.Style == BASH_DELIM_COMMAND ||
|
||||
QuoteStack.Style == BASH_DELIM_BACKTICK
|
||||
) { // do nesting for $(command), `command`
|
||||
if (sc.ch == '\'') {
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_LITERAL);
|
||||
} else if (sc.ch == '\"') {
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_STRING);
|
||||
} else if (sc.ch == '`') {
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK);
|
||||
} else if (sc.ch == '$') {
|
||||
if (sc.chNext == '\'') {
|
||||
sc.Forward();
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_CSTRING);
|
||||
} else if (sc.chNext == '\"') {
|
||||
sc.Forward();
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_LSTRING);
|
||||
} else if (sc.chNext == '(') {
|
||||
sc.Forward();
|
||||
QuoteStack.Push(sc.ch, BASH_DELIM_COMMAND);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SCE_SH_PARAM: // ${parameter}
|
||||
if (sc.ch == '\\' && Quote.Up != '\\') {
|
||||
sc.Forward();
|
||||
} else if (sc.ch == Quote.Down) {
|
||||
@ -461,8 +578,14 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
sc.ChangeState(SCE_SH_ERROR);
|
||||
}
|
||||
// HereDoc.Quote always == '\''
|
||||
sc.SetState(SCE_SH_HERE_Q);
|
||||
} else if (HereDoc.DelimiterLength == 0) {
|
||||
// no delimiter, illegal (but '' and "" are legal)
|
||||
sc.ChangeState(SCE_SH_ERROR);
|
||||
sc.SetState(SCE_SH_DEFAULT);
|
||||
} else {
|
||||
sc.SetState(SCE_SH_HERE_Q);
|
||||
}
|
||||
sc.SetState(SCE_SH_HERE_Q);
|
||||
}
|
||||
|
||||
// update cmdState about the current command segment
|
||||
@ -497,13 +620,13 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
sc.SetState(SCE_SH_COMMENTLINE);
|
||||
} else if (sc.ch == '\"') {
|
||||
sc.SetState(SCE_SH_STRING);
|
||||
Quote.Start(sc.ch);
|
||||
QuoteStack.Start(sc.ch, BASH_DELIM_STRING);
|
||||
} else if (sc.ch == '\'') {
|
||||
sc.SetState(SCE_SH_CHARACTER);
|
||||
Quote.Start(sc.ch);
|
||||
} else if (sc.ch == '`') {
|
||||
sc.SetState(SCE_SH_BACKTICKS);
|
||||
Quote.Start(sc.ch);
|
||||
QuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK);
|
||||
} else if (sc.ch == '$') {
|
||||
if (sc.Match("$((")) {
|
||||
sc.SetState(SCE_SH_OPERATOR); // handle '((' later
|
||||
@ -513,17 +636,22 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
sc.Forward();
|
||||
if (sc.ch == '{') {
|
||||
sc.ChangeState(SCE_SH_PARAM);
|
||||
Quote.Start(sc.ch);
|
||||
} else if (sc.ch == '\'') {
|
||||
sc.ChangeState(SCE_SH_STRING);
|
||||
QuoteStack.Start(sc.ch, BASH_DELIM_CSTRING);
|
||||
} else if (sc.ch == '"') {
|
||||
sc.ChangeState(SCE_SH_STRING);
|
||||
} else if (sc.ch == '(' || sc.ch == '`') {
|
||||
QuoteStack.Start(sc.ch, BASH_DELIM_LSTRING);
|
||||
} else if (sc.ch == '(') {
|
||||
sc.ChangeState(SCE_SH_BACKTICKS);
|
||||
QuoteStack.Start(sc.ch, BASH_DELIM_COMMAND);
|
||||
} else if (sc.ch == '`') { // $` seen in a configure script, valid?
|
||||
sc.ChangeState(SCE_SH_BACKTICKS);
|
||||
QuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK);
|
||||
} else {
|
||||
continue; // scalar has no delimiter pair
|
||||
}
|
||||
// fallthrough, open delim for $[{'"(`]
|
||||
Quote.Start(sc.ch);
|
||||
} else if (sc.Match('<', '<')) {
|
||||
sc.SetState(SCE_SH_HERE_DELIM);
|
||||
HereDoc.State = 0;
|
||||
@ -597,6 +725,10 @@ static void ColouriseBashDoc(unsigned int startPos, int length, int initStyle,
|
||||
}// sc.state
|
||||
}
|
||||
sc.Complete();
|
||||
if (sc.state == SCE_SH_HERE_Q) {
|
||||
styler.ChangeLexerState(sc.currentPos, styler.Length());
|
||||
}
|
||||
sc.Complete();
|
||||
}
|
||||
|
||||
static bool IsCommentLine(int line, Accessor &styler) {
|
||||
@ -651,7 +783,7 @@ static void FoldBashDoc(unsigned int startPos, int length, int, WordList *[],
|
||||
if (ch == '<' && chNext == '<') {
|
||||
levelCurrent++;
|
||||
}
|
||||
} else if (style == SCE_SH_HERE_Q && styler.StyleAt(i+1) == SCE_PL_DEFAULT) {
|
||||
} else if (style == SCE_SH_HERE_Q && styler.StyleAt(i+1) == SCE_SH_DEFAULT) {
|
||||
levelCurrent--;
|
||||
}
|
||||
if (atEOL) {
|
||||
|
||||
@ -467,6 +467,7 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
|
||||
int styleBeforeDCKeyword = SCE_C_DEFAULT;
|
||||
bool continuationLine = false;
|
||||
bool isIncludePreprocessor = false;
|
||||
bool isStringInPreprocessor = false;
|
||||
|
||||
int lineCurrent = styler.GetLine(startPos);
|
||||
if ((MaskActive(initStyle) == SCE_C_PREPROCESSOR) ||
|
||||
@ -578,7 +579,9 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
|
||||
break;
|
||||
case SCE_C_NUMBER:
|
||||
// We accept almost anything because of hex. and number suffixes
|
||||
if (!(setWord.Contains(sc.ch) || ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) {
|
||||
if (!(setWord.Contains(sc.ch)
|
||||
|| ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E' ||
|
||||
sc.chPrev == 'p' || sc.chPrev == 'P')))) {
|
||||
sc.SetState(SCE_C_DEFAULT|activitySet);
|
||||
}
|
||||
break;
|
||||
@ -618,13 +621,17 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
|
||||
sc.SetState(SCE_C_DEFAULT|activitySet);
|
||||
}
|
||||
break;
|
||||
case SCE_C_PREPROCESSOR:
|
||||
case SCE_C_PREPROCESSOR:
|
||||
if (options.stylingWithinPreprocessor) {
|
||||
if (IsASpace(sc.ch)) {
|
||||
sc.SetState(SCE_C_DEFAULT|activitySet);
|
||||
}
|
||||
} else {
|
||||
if (sc.Match('/', '*')) {
|
||||
} else if (isStringInPreprocessor && (sc.Match('>') || sc.Match('\"'))) {
|
||||
isStringInPreprocessor = false;
|
||||
} else if (!isStringInPreprocessor) {
|
||||
if ((isIncludePreprocessor && sc.Match('<')) || sc.Match('\"')) {
|
||||
isStringInPreprocessor = true;
|
||||
} else if (sc.Match('/', '*')) {
|
||||
sc.SetState(SCE_C_PREPROCESSORCOMMENT|activitySet);
|
||||
sc.Forward(); // Eat the *
|
||||
} else if (sc.Match('/', '/')) {
|
||||
|
||||
@ -614,78 +614,6 @@ static void FoldDiffDoc(unsigned int startPos, int length, int, WordList *[], Ac
|
||||
} while (static_cast<int>(startPos) + length > curLineStart);
|
||||
}
|
||||
|
||||
static void ColourisePoLine(
|
||||
char *lineBuffer,
|
||||
unsigned int lengthLine,
|
||||
unsigned int startLine,
|
||||
unsigned int endPos,
|
||||
Accessor &styler) {
|
||||
|
||||
unsigned int i = 0;
|
||||
static unsigned int state = SCE_PO_DEFAULT;
|
||||
unsigned int state_start = SCE_PO_DEFAULT;
|
||||
|
||||
while ((i < lengthLine) && isspacechar(lineBuffer[i])) // Skip initial spaces
|
||||
i++;
|
||||
if (i < lengthLine) {
|
||||
if (lineBuffer[i] == '#') {
|
||||
// check if the comment contains any flags ("#, ") and
|
||||
// then whether the flags contain "fuzzy"
|
||||
if (strstart(lineBuffer, "#, ") && strstr(lineBuffer, "fuzzy"))
|
||||
styler.ColourTo(endPos, SCE_PO_FUZZY);
|
||||
else
|
||||
styler.ColourTo(endPos, SCE_PO_COMMENT);
|
||||
} else {
|
||||
if (lineBuffer[0] == '"') {
|
||||
// line continuation, use previous style
|
||||
styler.ColourTo(endPos, state);
|
||||
return;
|
||||
// this implicitly also matches "msgid_plural"
|
||||
} else if (strstart(lineBuffer, "msgid")) {
|
||||
state_start = SCE_PO_MSGID;
|
||||
state = SCE_PO_MSGID_TEXT;
|
||||
} else if (strstart(lineBuffer, "msgstr")) {
|
||||
state_start = SCE_PO_MSGSTR;
|
||||
state = SCE_PO_MSGSTR_TEXT;
|
||||
} else if (strstart(lineBuffer, "msgctxt")) {
|
||||
state_start = SCE_PO_MSGCTXT;
|
||||
state = SCE_PO_MSGCTXT_TEXT;
|
||||
}
|
||||
if (state_start != SCE_PO_DEFAULT) {
|
||||
// find the next space
|
||||
while ((i < lengthLine) && ! isspacechar(lineBuffer[i]))
|
||||
i++;
|
||||
styler.ColourTo(startLine + i - 1, state_start);
|
||||
styler.ColourTo(startLine + i, SCE_PO_DEFAULT);
|
||||
styler.ColourTo(endPos, state);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
styler.ColourTo(endPos, SCE_PO_DEFAULT);
|
||||
}
|
||||
}
|
||||
|
||||
static void ColourisePoDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
|
||||
char lineBuffer[1024];
|
||||
styler.StartAt(startPos);
|
||||
styler.StartSegment(startPos);
|
||||
unsigned int linePos = 0;
|
||||
unsigned int startLine = startPos;
|
||||
for (unsigned int i = startPos; i < startPos + length; i++) {
|
||||
lineBuffer[linePos++] = styler[i];
|
||||
if (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {
|
||||
// End of line (or of line buffer) met, colourise it
|
||||
lineBuffer[linePos] = '\0';
|
||||
ColourisePoLine(lineBuffer, linePos, startLine, i, styler);
|
||||
linePos = 0;
|
||||
startLine = i + 1;
|
||||
}
|
||||
}
|
||||
if (linePos > 0) { // Last line does not have ending characters
|
||||
ColourisePoLine(lineBuffer, linePos, startLine, startPos + length - 1, styler);
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool isassignchar(unsigned char ch) {
|
||||
return (ch == '=') || (ch == ':');
|
||||
}
|
||||
@ -1498,7 +1426,6 @@ static void ColouriseNullDoc(unsigned int startPos, int length, int, WordList *[
|
||||
|
||||
LexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc, "batch", 0, batchWordListDesc);
|
||||
LexerModule lmDiff(SCLEX_DIFF, ColouriseDiffDoc, "diff", FoldDiffDoc, emptyWordListDesc);
|
||||
LexerModule lmPo(SCLEX_PO, ColourisePoDoc, "po", 0, emptyWordListDesc);
|
||||
LexerModule lmProps(SCLEX_PROPERTIES, ColourisePropsDoc, "props", FoldPropsDoc, emptyWordListDesc);
|
||||
LexerModule lmMake(SCLEX_MAKEFILE, ColouriseMakeDoc, "makefile", 0, emptyWordListDesc);
|
||||
LexerModule lmErrorList(SCLEX_ERRORLIST, ColouriseErrorListDoc, "errorlist", 0, emptyWordListDesc);
|
||||
|
||||
149
scintilla/lexers/LexPO.cxx
Normal file
@ -0,0 +1,149 @@
|
||||
// Scintilla source code edit control
|
||||
/** @file LexPO.cxx
|
||||
** Lexer for GetText Translation (PO) files.
|
||||
**/
|
||||
// Copyright 2012 by Colomban Wendling <ban@herbesfolles.org>
|
||||
// The License.txt file describes the conditions under which this software may be distributed.
|
||||
|
||||
// see https://www.gnu.org/software/gettext/manual/gettext.html#PO-Files for the syntax reference
|
||||
// some details are taken from the GNU msgfmt behavior (like that indent is allows in front of lines)
|
||||
|
||||
// TODO:
|
||||
// * add keywords for flags (fuzzy, c-format, ...)
|
||||
// * highlight formats inside c-format strings (%s, %d, etc.)
|
||||
// * style for previous untranslated string? ("#|" comment)
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include "ILexer.h"
|
||||
#include "Scintilla.h"
|
||||
#include "SciLexer.h"
|
||||
|
||||
#include "WordList.h"
|
||||
#include "LexAccessor.h"
|
||||
#include "Accessor.h"
|
||||
#include "StyleContext.h"
|
||||
#include "CharacterSet.h"
|
||||
#include "LexerModule.h"
|
||||
|
||||
#ifdef SCI_NAMESPACE
|
||||
using namespace Scintilla;
|
||||
#endif
|
||||
|
||||
static void ColourisePODoc(unsigned int startPos, int length, int initStyle, WordList *[], Accessor &styler) {
|
||||
StyleContext sc(startPos, length, initStyle, styler);
|
||||
bool escaped = false;
|
||||
int curLine = styler.GetLine(startPos);
|
||||
// the line state holds the last state on or before the line that isn't the default style
|
||||
int curLineState = curLine > 0 ? styler.GetLineState(curLine - 1) : SCE_PO_DEFAULT;
|
||||
|
||||
for (; sc.More(); sc.Forward()) {
|
||||
// whether we should leave a state
|
||||
switch (sc.state) {
|
||||
case SCE_PO_COMMENT:
|
||||
case SCE_PO_PROGRAMMER_COMMENT:
|
||||
case SCE_PO_REFERENCE:
|
||||
case SCE_PO_FLAGS:
|
||||
case SCE_PO_FUZZY:
|
||||
if (sc.atLineEnd)
|
||||
sc.SetState(SCE_PO_DEFAULT);
|
||||
else if (sc.state == SCE_PO_FLAGS && sc.Match("fuzzy"))
|
||||
// here we behave like the previous parser, but this should probably be highlighted
|
||||
// on its own like a keyword rather than changing the whole flags style
|
||||
sc.ChangeState(SCE_PO_FUZZY);
|
||||
break;
|
||||
|
||||
case SCE_PO_MSGCTXT:
|
||||
case SCE_PO_MSGID:
|
||||
case SCE_PO_MSGSTR:
|
||||
if (isspacechar(sc.ch))
|
||||
sc.SetState(SCE_PO_DEFAULT);
|
||||
break;
|
||||
|
||||
case SCE_PO_ERROR:
|
||||
if (sc.atLineEnd)
|
||||
sc.SetState(SCE_PO_DEFAULT);
|
||||
break;
|
||||
|
||||
case SCE_PO_MSGCTXT_TEXT:
|
||||
case SCE_PO_MSGID_TEXT:
|
||||
case SCE_PO_MSGSTR_TEXT:
|
||||
if (sc.atLineEnd) { // invalid inside a string
|
||||
if (sc.state == SCE_PO_MSGCTXT_TEXT)
|
||||
sc.ChangeState(SCE_PO_MSGCTXT_TEXT_EOL);
|
||||
else if (sc.state == SCE_PO_MSGID_TEXT)
|
||||
sc.ChangeState(SCE_PO_MSGID_TEXT_EOL);
|
||||
else if (sc.state == SCE_PO_MSGSTR_TEXT)
|
||||
sc.ChangeState(SCE_PO_MSGSTR_TEXT_EOL);
|
||||
sc.SetState(SCE_PO_DEFAULT);
|
||||
escaped = false;
|
||||
} else {
|
||||
if (escaped)
|
||||
escaped = false;
|
||||
else if (sc.ch == '\\')
|
||||
escaped = true;
|
||||
else if (sc.ch == '"')
|
||||
sc.ForwardSetState(SCE_PO_DEFAULT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// whether we should enter a new state
|
||||
if (sc.state == SCE_PO_DEFAULT) {
|
||||
// forward to the first non-white character on the line
|
||||
bool atLineStart = sc.atLineStart;
|
||||
if (atLineStart) {
|
||||
while (sc.More() && ! sc.atLineEnd && isspacechar(sc.ch))
|
||||
sc.Forward();
|
||||
}
|
||||
|
||||
if (atLineStart && sc.ch == '#') {
|
||||
if (sc.chNext == '.')
|
||||
sc.SetState(SCE_PO_PROGRAMMER_COMMENT);
|
||||
else if (sc.chNext == ':')
|
||||
sc.SetState(SCE_PO_REFERENCE);
|
||||
else if (sc.chNext == ',')
|
||||
sc.SetState(SCE_PO_FLAGS);
|
||||
else
|
||||
sc.SetState(SCE_PO_COMMENT);
|
||||
} else if (atLineStart && sc.Match("msgid")) { // includes msgid_plural
|
||||
sc.SetState(SCE_PO_MSGID);
|
||||
} else if (atLineStart && sc.Match("msgstr")) { // includes [] suffixes
|
||||
sc.SetState(SCE_PO_MSGSTR);
|
||||
} else if (atLineStart && sc.Match("msgctxt")) {
|
||||
sc.SetState(SCE_PO_MSGCTXT);
|
||||
} else if (sc.ch == '"') {
|
||||
if (curLineState == SCE_PO_MSGCTXT || curLineState == SCE_PO_MSGCTXT_TEXT)
|
||||
sc.SetState(SCE_PO_MSGCTXT_TEXT);
|
||||
else if (curLineState == SCE_PO_MSGID || curLineState == SCE_PO_MSGID_TEXT)
|
||||
sc.SetState(SCE_PO_MSGID_TEXT);
|
||||
else if (curLineState == SCE_PO_MSGSTR || curLineState == SCE_PO_MSGSTR_TEXT)
|
||||
sc.SetState(SCE_PO_MSGSTR_TEXT);
|
||||
else
|
||||
sc.SetState(SCE_PO_ERROR);
|
||||
} else if (! isspacechar(sc.ch))
|
||||
sc.SetState(SCE_PO_ERROR);
|
||||
|
||||
if (sc.state != SCE_PO_DEFAULT)
|
||||
curLineState = sc.state;
|
||||
}
|
||||
|
||||
if (sc.atLineEnd) {
|
||||
// Update the line state, so it can be seen by next line
|
||||
curLine = styler.GetLine(sc.currentPos);
|
||||
styler.SetLineState(curLine, curLineState);
|
||||
}
|
||||
}
|
||||
sc.Complete();
|
||||
}
|
||||
|
||||
static const char *const poWordListDesc[] = {
|
||||
0
|
||||
};
|
||||
|
||||
LexerModule lmPO(SCLEX_PO, ColourisePODoc, "po", 0, poWordListDesc);
|
||||
@ -465,7 +465,9 @@ static bool sureThisIsNotHeredoc(int lt2StartPos,
|
||||
}
|
||||
prevStyle = styler.StyleAt(firstWordPosn);
|
||||
// If we have '<<' following a keyword, it's not a heredoc
|
||||
if (prevStyle != SCE_RB_IDENTIFIER) {
|
||||
if (prevStyle != SCE_RB_IDENTIFIER
|
||||
&& prevStyle != SCE_RB_INSTANCE_VAR
|
||||
&& prevStyle != SCE_RB_CLASS_VAR) {
|
||||
return definitely_not_a_here_doc;
|
||||
}
|
||||
int newStyle = prevStyle;
|
||||
@ -495,6 +497,9 @@ static bool sureThisIsNotHeredoc(int lt2StartPos,
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
// on second and next passes, only identifiers may appear since
|
||||
// class and instance variable are private
|
||||
prevStyle = SCE_RB_IDENTIFIER;
|
||||
}
|
||||
// Skip next batch of white-space
|
||||
firstWordPosn = skipWhitespace(firstWordPosn, lt2StartPos, styler);
|
||||
@ -1436,7 +1441,8 @@ static bool keywordIsAmbiguous(const char *prevWord)
|
||||
|| !strcmp(prevWord, "do")
|
||||
|| !strcmp(prevWord, "while")
|
||||
|| !strcmp(prevWord, "unless")
|
||||
|| !strcmp(prevWord, "until")) {
|
||||
|| !strcmp(prevWord, "until")
|
||||
|| !strcmp(prevWord, "for")) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@ -1554,6 +1560,7 @@ static bool keywordIsModifier(const char *word,
|
||||
|
||||
#define WHILE_BACKWARDS "elihw"
|
||||
#define UNTIL_BACKWARDS "litnu"
|
||||
#define FOR_BACKWARDS "rof"
|
||||
|
||||
// Nothing fancy -- look to see if we follow a while/until somewhere
|
||||
// on the current line
|
||||
@ -1591,7 +1598,8 @@ static bool keywordDoStartsLoop(int pos,
|
||||
*dst = 0;
|
||||
// Did we see our keyword?
|
||||
if (!strcmp(prevWord, WHILE_BACKWARDS)
|
||||
|| !strcmp(prevWord, UNTIL_BACKWARDS)) {
|
||||
|| !strcmp(prevWord, UNTIL_BACKWARDS)
|
||||
|| !strcmp(prevWord, FOR_BACKWARDS)) {
|
||||
return true;
|
||||
}
|
||||
// We can move pos to the beginning of the keyword, and then
|
||||
|
||||
@ -122,13 +122,11 @@ public :
|
||||
|
||||
return sqlStatesLine;
|
||||
}
|
||||
|
||||
unsigned short int IntoSelectStatement (unsigned short int sqlStatesLine, bool found) {
|
||||
unsigned short int IntoSelectStatementOrAssignment (unsigned short int sqlStatesLine, bool found) {
|
||||
if (found)
|
||||
sqlStatesLine |= MASK_INTO_SELECT_STATEMENT;
|
||||
sqlStatesLine |= MASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT;
|
||||
else
|
||||
sqlStatesLine &= ~MASK_INTO_SELECT_STATEMENT;
|
||||
|
||||
sqlStatesLine &= ~MASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT;
|
||||
return sqlStatesLine;
|
||||
}
|
||||
|
||||
@ -161,11 +159,9 @@ public :
|
||||
bool IsIntoExceptionBlock (unsigned short int sqlStatesLine) {
|
||||
return (sqlStatesLine & MASK_INTO_EXCEPTION) != 0;
|
||||
}
|
||||
|
||||
bool IsIntoSelectStatement (unsigned short int sqlStatesLine) {
|
||||
return (sqlStatesLine & MASK_INTO_SELECT_STATEMENT) != 0;
|
||||
bool IsIntoSelectStatementOrAssignment (unsigned short int sqlStatesLine) {
|
||||
return (sqlStatesLine & MASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT) != 0;
|
||||
}
|
||||
|
||||
bool IsCaseMergeWithoutWhenFound (unsigned short int sqlStatesLine) {
|
||||
return (sqlStatesLine & MASK_CASE_MERGE_WITHOUT_WHEN_FOUND) != 0;
|
||||
}
|
||||
@ -188,7 +184,7 @@ private :
|
||||
SparseState <unsigned short int> sqlStatement;
|
||||
enum {
|
||||
MASK_NESTED_CASES = 0x01FF,
|
||||
MASK_INTO_SELECT_STATEMENT = 0x0200,
|
||||
MASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT = 0x0200,
|
||||
MASK_CASE_MERGE_WITHOUT_WHEN_FOUND = 0x0400,
|
||||
MASK_MERGE_STATEMENT = 0x0800,
|
||||
MASK_INTO_DECLARE = 0x1000,
|
||||
@ -608,9 +604,12 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle,
|
||||
sqlStatesCurrentLine = sqlStates.IntoMergeStatement(sqlStatesCurrentLine, false);
|
||||
levelNext--;
|
||||
}
|
||||
if (sqlStates.IsIntoSelectStatement(sqlStatesCurrentLine))
|
||||
sqlStatesCurrentLine = sqlStates.IntoSelectStatement(sqlStatesCurrentLine, false);
|
||||
if (sqlStates.IsIntoSelectStatementOrAssignment(sqlStatesCurrentLine))
|
||||
sqlStatesCurrentLine = sqlStates.IntoSelectStatementOrAssignment(sqlStatesCurrentLine, false);
|
||||
}
|
||||
if (ch == ':' && chNext == '=' && !IsCommentStyle(style))
|
||||
sqlStatesCurrentLine = sqlStates.IntoSelectStatementOrAssignment(sqlStatesCurrentLine, true);
|
||||
|
||||
if (options.foldComment && IsStreamCommentStyle(style)) {
|
||||
if (!IsStreamCommentStyle(stylePrev)) {
|
||||
levelNext++;
|
||||
@ -666,10 +665,9 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle,
|
||||
} else {
|
||||
s[j] = '\0';
|
||||
}
|
||||
|
||||
if (!options.foldOnlyBegin &&
|
||||
strcmp(s, "select") == 0) {
|
||||
sqlStatesCurrentLine = sqlStates.IntoSelectStatement(sqlStatesCurrentLine, true);
|
||||
sqlStatesCurrentLine = sqlStates.IntoSelectStatementOrAssignment(sqlStatesCurrentLine, true);
|
||||
} else if (strcmp(s, "if") == 0) {
|
||||
if (endFound) {
|
||||
endFound = false;
|
||||
@ -719,8 +717,10 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle,
|
||||
levelNext--; //again for the "end case;" and block when
|
||||
}
|
||||
} else if (!options.foldOnlyBegin) {
|
||||
if (strcmp(s, "case") == 0)
|
||||
if (strcmp(s, "case") == 0) {
|
||||
sqlStatesCurrentLine = sqlStates.BeginCaseBlock(sqlStatesCurrentLine);
|
||||
sqlStatesCurrentLine = sqlStates.CaseMergeWithoutWhenFound(sqlStatesCurrentLine, true);
|
||||
}
|
||||
|
||||
if (levelCurrent > levelNext)
|
||||
levelCurrent = levelNext;
|
||||
@ -728,7 +728,6 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle,
|
||||
if (!statementFound)
|
||||
levelNext++;
|
||||
|
||||
sqlStatesCurrentLine = sqlStates.CaseMergeWithoutWhenFound(sqlStatesCurrentLine, true);
|
||||
statementFound = true;
|
||||
} else if (levelCurrent > levelNext) {
|
||||
// doesn't include this line into the folding block
|
||||
@ -765,7 +764,7 @@ void SCI_METHOD LexerSQL::Fold(unsigned int startPos, int length, int initStyle,
|
||||
(strcmp(s, "endif") == 0)) {
|
||||
endFound = true;
|
||||
levelNext--;
|
||||
if (sqlStates.IsIntoSelectStatement(sqlStatesCurrentLine) && !sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine))
|
||||
if (sqlStates.IsIntoSelectStatementOrAssignment(sqlStatesCurrentLine) && !sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine))
|
||||
levelNext--;
|
||||
if (levelNext < SC_FOLDLEVELBASE) {
|
||||
levelNext = SC_FOLDLEVELBASE;
|
||||
|
||||
@ -73,6 +73,7 @@ LexHTML.o \
|
||||
LexOthers.o \
|
||||
LexPascal.o \
|
||||
LexPerl.o \
|
||||
LexPO.o \
|
||||
LexPython.o \
|
||||
LexSQL.o \
|
||||
LexCaml.o \
|
||||
|
||||
@ -107,7 +107,7 @@ index 2f75247..a34f834 100644
|
||||
LINK_LEXER(lmPerl);
|
||||
- LINK_LEXER(lmPHPSCRIPT);
|
||||
- LINK_LEXER(lmPLM);
|
||||
LINK_LEXER(lmPo);
|
||||
LINK_LEXER(lmPO);
|
||||
- LINK_LEXER(lmPOV);
|
||||
- LINK_LEXER(lmPowerPro);
|
||||
- LINK_LEXER(lmPowerShell);
|
||||
|
||||
@ -109,7 +109,7 @@ int Scintilla_LinkLexers() {
|
||||
LINK_LEXER(lmOctave);
|
||||
LINK_LEXER(lmPascal);
|
||||
LINK_LEXER(lmPerl);
|
||||
LINK_LEXER(lmPo);
|
||||
LINK_LEXER(lmPO);
|
||||
LINK_LEXER(lmProps);
|
||||
LINK_LEXER(lmPython);
|
||||
LINK_LEXER(lmR);
|
||||
|
||||
@ -69,6 +69,7 @@ void LexInterface::Colourise(int start, int end) {
|
||||
|
||||
Document::Document() {
|
||||
refCount = 0;
|
||||
pcf = NULL;
|
||||
#ifdef _WIN32
|
||||
eolMode = SC_EOL_CRLF;
|
||||
#else
|
||||
@ -123,6 +124,8 @@ Document::~Document() {
|
||||
regex = 0;
|
||||
delete pli;
|
||||
pli = 0;
|
||||
delete pcf;
|
||||
pcf = 0;
|
||||
}
|
||||
|
||||
void Document::Init() {
|
||||
@ -132,6 +135,16 @@ void Document::Init() {
|
||||
}
|
||||
}
|
||||
|
||||
bool Document::SetDBCSCodePage(int dbcsCodePage_) {
|
||||
if (dbcsCodePage != dbcsCodePage_) {
|
||||
dbcsCodePage = dbcsCodePage_;
|
||||
SetCaseFolder(NULL);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void Document::InsertLine(int line) {
|
||||
for (int j=0; j<ldSize; j++) {
|
||||
if (perLineData[j])
|
||||
@ -1419,6 +1432,15 @@ bool Document::MatchesWordOptions(bool word, bool wordStart, int pos, int length
|
||||
(wordStart && IsWordStartAt(pos));
|
||||
}
|
||||
|
||||
bool Document::HasCaseFolder(void) const {
|
||||
return pcf != 0;
|
||||
}
|
||||
|
||||
void Document::SetCaseFolder(CaseFolder *pcf_) {
|
||||
delete pcf;
|
||||
pcf = pcf_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find text in document, supporting both forward and backward
|
||||
* searches (just pass minPos > maxPos to do a backward search)
|
||||
@ -1426,7 +1448,7 @@ bool Document::MatchesWordOptions(bool word, bool wordStart, int pos, int length
|
||||
*/
|
||||
long Document::FindText(int minPos, int maxPos, const char *search,
|
||||
bool caseSensitive, bool word, bool wordStart, bool regExp, int flags,
|
||||
int *length, CaseFolder *pcf) {
|
||||
int *length) {
|
||||
if (*length <= 0)
|
||||
return minPos;
|
||||
if (regExp) {
|
||||
|
||||
@ -212,6 +212,7 @@ private:
|
||||
int refCount;
|
||||
CellBuffer cb;
|
||||
CharClassify charClass;
|
||||
CaseFolder *pcf;
|
||||
char stylingMask;
|
||||
int endStyled;
|
||||
int styleClock;
|
||||
@ -255,6 +256,7 @@ public:
|
||||
int SCI_METHOD Release();
|
||||
|
||||
virtual void Init();
|
||||
bool SetDBCSCodePage(int dbcsCodePage_);
|
||||
virtual void InsertLine(int line);
|
||||
virtual void RemoveLine(int line);
|
||||
|
||||
@ -355,8 +357,10 @@ public:
|
||||
int SCI_METHOD Length() const { return cb.Length(); }
|
||||
void Allocate(int newSize) { cb.Allocate(newSize); }
|
||||
bool MatchesWordOptions(bool word, bool wordStart, int pos, int length);
|
||||
bool HasCaseFolder(void) const;
|
||||
void SetCaseFolder(CaseFolder *pcf_);
|
||||
long FindText(int minPos, int maxPos, const char *search, bool caseSensitive, bool word,
|
||||
bool wordStart, bool regExp, int flags, int *length, CaseFolder *pcf);
|
||||
bool wordStart, bool regExp, int flags, int *length);
|
||||
const char *SubstituteByPosition(const char *text, int *length);
|
||||
int LinesTotal() const;
|
||||
|
||||
|
||||
@ -220,6 +220,7 @@ Editor::Editor() {
|
||||
|
||||
marginNumberPadding = 3;
|
||||
ctrlCharPadding = 3; // +3 For a blank on front and rounded edge each side
|
||||
lastSegItalicsOffset = 2;
|
||||
|
||||
hsStart = -1;
|
||||
hsEnd = -1;
|
||||
@ -2243,7 +2244,7 @@ void Editor::LayoutLine(int line, Surface *surface, ViewStyle &vstyle, LineLayou
|
||||
}
|
||||
// Small hack to make lines that end with italics not cut off the edge of the last character
|
||||
if ((startseg > 0) && lastSegItalics) {
|
||||
ll->positions[startseg] += 2;
|
||||
ll->positions[startseg] += lastSegItalicsOffset;
|
||||
}
|
||||
ll->numCharsInLine = numCharsInLine;
|
||||
ll->numCharsBeforeEOL = numCharsBeforeEOL;
|
||||
@ -3438,6 +3439,8 @@ void Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) {
|
||||
AllocateGraphics();
|
||||
|
||||
RefreshStyleData();
|
||||
if (paintState == paintAbandoned)
|
||||
return; // Scroll bars may have changed so need redraw
|
||||
RefreshPixMaps(surfaceWindow);
|
||||
|
||||
StyleToPositionInView(PositionAfterArea(rcArea));
|
||||
@ -5732,15 +5735,15 @@ long Editor::FindText(
|
||||
|
||||
Sci_TextToFind *ft = reinterpret_cast<Sci_TextToFind *>(lParam);
|
||||
int lengthFound = istrlen(ft->lpstrText);
|
||||
std::auto_ptr<CaseFolder> pcf(CaseFolderForEncoding());
|
||||
if (!pdoc->HasCaseFolder())
|
||||
pdoc->SetCaseFolder(CaseFolderForEncoding());
|
||||
int pos = pdoc->FindText(ft->chrg.cpMin, ft->chrg.cpMax, ft->lpstrText,
|
||||
(wParam & SCFIND_MATCHCASE) != 0,
|
||||
(wParam & SCFIND_WHOLEWORD) != 0,
|
||||
(wParam & SCFIND_WORDSTART) != 0,
|
||||
(wParam & SCFIND_REGEXP) != 0,
|
||||
wParam,
|
||||
&lengthFound,
|
||||
pcf.get());
|
||||
&lengthFound);
|
||||
if (pos != -1) {
|
||||
ft->chrgText.cpMin = pos;
|
||||
ft->chrgText.cpMax = pos + lengthFound;
|
||||
@ -5763,19 +5766,6 @@ void Editor::SearchAnchor() {
|
||||
searchAnchor = SelectionStart().Position();
|
||||
}
|
||||
|
||||
// Simple RAII wrapper for CaseFolder as std::auto_ptr is now deprecated
|
||||
class ScopedCaseFolder {
|
||||
CaseFolder *pcf;
|
||||
public:
|
||||
ScopedCaseFolder(CaseFolder *pcf_) : pcf(pcf_) {
|
||||
}
|
||||
~ScopedCaseFolder() {
|
||||
delete pcf;
|
||||
pcf = 0;
|
||||
}
|
||||
CaseFolder *get() const { return pcf; }
|
||||
};
|
||||
|
||||
/**
|
||||
* Find text from current search anchor: Must call @c SearchAnchor first.
|
||||
* Used for next text and previous text requests.
|
||||
@ -5790,7 +5780,8 @@ long Editor::SearchText(
|
||||
const char *txt = reinterpret_cast<char *>(lParam);
|
||||
int pos;
|
||||
int lengthFound = istrlen(txt);
|
||||
ScopedCaseFolder pcf(CaseFolderForEncoding());
|
||||
if (!pdoc->HasCaseFolder())
|
||||
pdoc->SetCaseFolder(CaseFolderForEncoding());
|
||||
if (iMessage == SCI_SEARCHNEXT) {
|
||||
pos = pdoc->FindText(searchAnchor, pdoc->Length(), txt,
|
||||
(wParam & SCFIND_MATCHCASE) != 0,
|
||||
@ -5798,8 +5789,7 @@ long Editor::SearchText(
|
||||
(wParam & SCFIND_WORDSTART) != 0,
|
||||
(wParam & SCFIND_REGEXP) != 0,
|
||||
wParam,
|
||||
&lengthFound,
|
||||
pcf.get());
|
||||
&lengthFound);
|
||||
} else {
|
||||
pos = pdoc->FindText(searchAnchor, 0, txt,
|
||||
(wParam & SCFIND_MATCHCASE) != 0,
|
||||
@ -5807,8 +5797,7 @@ long Editor::SearchText(
|
||||
(wParam & SCFIND_WORDSTART) != 0,
|
||||
(wParam & SCFIND_REGEXP) != 0,
|
||||
wParam,
|
||||
&lengthFound,
|
||||
pcf.get());
|
||||
&lengthFound);
|
||||
}
|
||||
if (pos != -1) {
|
||||
SetSelection(pos, pos + lengthFound);
|
||||
@ -5841,15 +5830,15 @@ std::string Editor::CaseMapString(const std::string &s, int caseMapping) {
|
||||
long Editor::SearchInTarget(const char *text, int length) {
|
||||
int lengthFound = length;
|
||||
|
||||
ScopedCaseFolder pcf(CaseFolderForEncoding());
|
||||
if (!pdoc->HasCaseFolder())
|
||||
pdoc->SetCaseFolder(CaseFolderForEncoding());
|
||||
int pos = pdoc->FindText(targetStart, targetEnd, text,
|
||||
(searchFlags & SCFIND_MATCHCASE) != 0,
|
||||
(searchFlags & SCFIND_WHOLEWORD) != 0,
|
||||
(searchFlags & SCFIND_WORDSTART) != 0,
|
||||
(searchFlags & SCFIND_REGEXP) != 0,
|
||||
searchFlags,
|
||||
&lengthFound,
|
||||
pcf.get());
|
||||
&lengthFound);
|
||||
if (pos != -1) {
|
||||
targetStart = pos;
|
||||
targetEnd = pos + lengthFound;
|
||||
@ -7098,6 +7087,7 @@ void Editor::StyleSetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam
|
||||
break;
|
||||
case SCI_STYLESETCHARACTERSET:
|
||||
vs.styles[wParam].characterSet = lParam;
|
||||
pdoc->SetCaseFolder(NULL);
|
||||
break;
|
||||
case SCI_STYLESETVISIBLE:
|
||||
vs.styles[wParam].visible = lParam != 0;
|
||||
@ -8076,8 +8066,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
|
||||
|
||||
case SCI_SETCODEPAGE:
|
||||
if (ValidCodePage(wParam)) {
|
||||
pdoc->dbcsCodePage = wParam;
|
||||
InvalidateStyleRedraw();
|
||||
if (pdoc->SetDBCSCodePage(wParam)) {
|
||||
InvalidateStyleRedraw();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@ -271,6 +271,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
|
||||
|
||||
int marginNumberPadding; // the right-side padding of the number margin
|
||||
int ctrlCharPadding; // the padding around control character text blobs
|
||||
int lastSegItalicsOffset; // the offset so as not to clip italic characters at EOLs
|
||||
|
||||
Document *pdoc;
|
||||
|
||||
|
||||
@ -788,7 +788,7 @@ int RESearch::Execute(CharacterIndexer &ci, int lp, int endp) {
|
||||
}
|
||||
case CHR: /* ordinary char: locate it fast */
|
||||
c = *(ap+1);
|
||||
while ((lp < endp) && (ci.CharAt(lp) != c))
|
||||
while ((lp < endp) && (static_cast<unsigned char>(ci.CharAt(lp)) != c))
|
||||
lp++;
|
||||
if (lp >= endp) /* if EOS, fail, else fall thru. */
|
||||
return 0;
|
||||
|
||||
@ -205,6 +205,7 @@ void RunStyles::DeleteRange(int position, int deleteLength) {
|
||||
if (runStart == runEnd) {
|
||||
// Deleting from inside one run
|
||||
starts->InsertText(runStart, -deleteLength);
|
||||
RemoveRunIfEmpty(runStart);
|
||||
} else {
|
||||
runStart = SplitRun(position);
|
||||
runEnd = SplitRun(end);
|
||||
|
||||
@ -1 +1 @@
|
||||
322
|
||||
323
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
|
||||
EXTRA_DIST = images.c gb.c win32.c win32.h plugindata.h \
|
||||
EXTRA_DIST = gb.c win32.c win32.h plugindata.h \
|
||||
documentprivate.h filetypesprivate.h pluginprivate.h projectprivate.h \
|
||||
makefile.win32
|
||||
|
||||
|
||||
10
src/about.c
@ -145,7 +145,6 @@ static GtkWidget *create_dialog(void)
|
||||
GtkWidget *info_box;
|
||||
GtkWidget *header_hbox;
|
||||
GtkWidget *header_eventbox;
|
||||
GdkPixbuf *icon;
|
||||
GtkTextBuffer* tb;
|
||||
gchar *license_text = NULL;
|
||||
gchar buffer[512];
|
||||
@ -158,6 +157,7 @@ static GtkWidget *create_dialog(void)
|
||||
gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(main_widgets.window));
|
||||
gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER_ON_PARENT);
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), _("About Geany"));
|
||||
gtk_window_set_icon_name(GTK_WINDOW(dialog), "geany");
|
||||
gtk_widget_set_name(dialog, "GeanyDialog");
|
||||
gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
|
||||
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE);
|
||||
@ -171,7 +171,7 @@ static GtkWidget *create_dialog(void)
|
||||
gtk_container_set_border_width(GTK_CONTAINER(header_hbox), 4);
|
||||
gtk_widget_show(header_hbox);
|
||||
gtk_container_add(GTK_CONTAINER(header_eventbox), header_hbox);
|
||||
header_image = gtk_image_new();
|
||||
header_image = gtk_image_new_from_icon_name("geany", GTK_ICON_SIZE_DIALOG);
|
||||
gtk_box_pack_start(GTK_BOX(header_hbox), header_image, FALSE, FALSE, 0);
|
||||
header_label = gtk_label_new(NULL);
|
||||
gtk_label_set_use_markup(GTK_LABEL(header_label), TRUE);
|
||||
@ -186,12 +186,6 @@ static GtkWidget *create_dialog(void)
|
||||
g_signal_connect_after(header_label, "style-set", G_CALLBACK(header_label_style_set), NULL);
|
||||
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), header_eventbox, FALSE, FALSE, 0);
|
||||
|
||||
/* set image */
|
||||
icon = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
|
||||
gtk_image_set_from_pixbuf(GTK_IMAGE(header_image), icon);
|
||||
gtk_window_set_icon(GTK_WINDOW(dialog), icon);
|
||||
g_object_unref(icon); /* free our reference */
|
||||
|
||||
/* create notebook */
|
||||
notebook = gtk_notebook_new();
|
||||
gtk_widget_show(notebook);
|
||||
|
||||
16
src/build.c
@ -499,7 +499,7 @@ static GeanyBuildCommand *get_build_group(const GeanyBuildSource src, const Gean
|
||||
* If any parameter is out of range does nothing.
|
||||
*
|
||||
* Updates the menu.
|
||||
*
|
||||
*
|
||||
**/
|
||||
void build_remove_menu_item(const GeanyBuildSource src, const GeanyBuildGroup grp, const gint cmd)
|
||||
{
|
||||
@ -561,12 +561,12 @@ GeanyBuildCommand *build_get_menu_item(GeanyBuildSource src, GeanyBuildGroup grp
|
||||
* This is a pointer to an internal structure and must not be freed.
|
||||
*
|
||||
**/
|
||||
const gchar *build_get_current_menu_item(const GeanyBuildGroup grp, const guint cmd,
|
||||
const gchar *build_get_current_menu_item(const GeanyBuildGroup grp, const guint cmd,
|
||||
const GeanyBuildCmdEntries fld)
|
||||
{
|
||||
GeanyBuildCommand *c;
|
||||
gchar *str = NULL;
|
||||
|
||||
|
||||
g_return_val_if_fail(grp < GEANY_GBG_COUNT, NULL);
|
||||
g_return_val_if_fail(fld < GEANY_BC_CMDENTRIES_COUNT, NULL);
|
||||
g_return_val_if_fail(cmd < build_groups_count[grp], NULL);
|
||||
@ -594,19 +594,19 @@ const gchar *build_get_current_menu_item(const GeanyBuildGroup grp, const guint
|
||||
*
|
||||
* Set the specified field of the command specified by @a src, @a grp and @a cmd.
|
||||
*
|
||||
* @param src the source of the menu item
|
||||
* @param src the source of the menu item
|
||||
* @param grp the group of the specified menu item.
|
||||
* @param cmd the index of the menu item within the group.
|
||||
* @param fld the field in the menu item command to set
|
||||
* @param val the value to set the field to, is copied
|
||||
*
|
||||
**/
|
||||
|
||||
void build_set_menu_item(const GeanyBuildSource src, const GeanyBuildGroup grp,
|
||||
|
||||
void build_set_menu_item(const GeanyBuildSource src, const GeanyBuildGroup grp,
|
||||
const guint cmd, const GeanyBuildCmdEntries fld, const gchar *val)
|
||||
{
|
||||
GeanyBuildCommand **g;
|
||||
|
||||
|
||||
g_return_if_fail(src < GEANY_BCS_COUNT);
|
||||
g_return_if_fail(grp < GEANY_GBG_COUNT);
|
||||
g_return_if_fail(fld < GEANY_BC_CMDENTRIES_COUNT);
|
||||
@ -828,7 +828,7 @@ static GPid build_spawn_cmd(GeanyDocument *doc, const gchar *cmd, const gchar *d
|
||||
&(build_info.pid), NULL, &stdout_fd, &stderr_fd, &error))
|
||||
#endif
|
||||
{
|
||||
geany_debug("g_spawn_async_with_pipes() failed: %s", error->message);
|
||||
geany_debug("build command spawning failed: %s", error->message);
|
||||
ui_set_statusbar(TRUE, _("Process failed (%s)"), error->message);
|
||||
g_strfreev(argv);
|
||||
g_error_free(error);
|
||||
|
||||
@ -174,7 +174,7 @@ G_MODULE_EXPORT void on_save1_activate(GtkMenuItem *menuitem, gpointer user_data
|
||||
|
||||
if (doc != NULL && cur_page >= 0)
|
||||
{
|
||||
document_save_file(doc, FALSE);
|
||||
document_save_file(doc, ui_prefs.allow_always_save);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2087,9 +2087,15 @@ G_MODULE_EXPORT void on_reflow_lines_block1_activate(GtkMenuItem *menuitem, gpoi
|
||||
}
|
||||
|
||||
|
||||
G_MODULE_EXPORT void on_transpose_current_line1_activate(GtkMenuItem *menuitem, gpointer user_data)
|
||||
G_MODULE_EXPORT void on_move_lines_up1_activate(GtkMenuItem *menuitem, gpointer user_data)
|
||||
{
|
||||
keybindings_send_command(GEANY_KEY_GROUP_EDITOR, GEANY_KEYS_EDITOR_TRANSPOSELINE);
|
||||
keybindings_send_command(GEANY_KEY_GROUP_EDITOR, GEANY_KEYS_EDITOR_MOVELINEUP);
|
||||
}
|
||||
|
||||
|
||||
G_MODULE_EXPORT void on_move_lines_down1_activate(GtkMenuItem *menuitem, gpointer user_data)
|
||||
{
|
||||
keybindings_send_command(GEANY_KEY_GROUP_EDITOR, GEANY_KEYS_EDITOR_MOVELINEDOWN);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -642,10 +642,6 @@ G_MODULE_EXPORT void
|
||||
on_reflow_lines_block1_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data);
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
on_transpose_current_line1_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data);
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
on_smart_line_indent1_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data);
|
||||
|
||||
@ -75,10 +75,6 @@ static struct FileSelState
|
||||
gboolean show_hidden;
|
||||
gboolean more_options_visible;
|
||||
} open;
|
||||
struct
|
||||
{
|
||||
gboolean open_in_new_tab;
|
||||
} save;
|
||||
}
|
||||
filesel_state = {
|
||||
{
|
||||
@ -87,9 +83,6 @@ filesel_state = {
|
||||
0,
|
||||
FALSE,
|
||||
FALSE
|
||||
},
|
||||
{
|
||||
FALSE
|
||||
}
|
||||
};
|
||||
|
||||
@ -488,40 +481,26 @@ void dialogs_show_open_file(void)
|
||||
}
|
||||
|
||||
|
||||
static void on_save_as_new_tab_toggled(GtkToggleButton *togglebutton, gpointer user_data)
|
||||
{
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(user_data), ! gtk_toggle_button_get_active(togglebutton));
|
||||
}
|
||||
|
||||
|
||||
static gboolean handle_save_as(const gchar *utf8_filename, gboolean open_new_tab, gboolean rename_file)
|
||||
static gboolean handle_save_as(const gchar *utf8_filename, gboolean rename_file)
|
||||
{
|
||||
GeanyDocument *doc = document_get_current();
|
||||
gboolean success = FALSE;
|
||||
|
||||
g_return_val_if_fail(NZV(utf8_filename), FALSE);
|
||||
|
||||
if (open_new_tab)
|
||||
{ /* "open" the saved file in a new tab and switch to it */
|
||||
doc = document_clone(doc, utf8_filename);
|
||||
success = document_save_file_as(doc, NULL);
|
||||
}
|
||||
else
|
||||
if (doc->file_name != NULL)
|
||||
{
|
||||
if (doc->file_name != NULL)
|
||||
if (rename_file)
|
||||
{
|
||||
if (rename_file)
|
||||
{
|
||||
document_rename_file(doc, utf8_filename);
|
||||
}
|
||||
/* create a new tm_source_file object otherwise tagmanager won't work correctly */
|
||||
tm_workspace_remove_object(doc->tm_file, TRUE, TRUE);
|
||||
doc->tm_file = NULL;
|
||||
document_rename_file(doc, utf8_filename);
|
||||
}
|
||||
success = document_save_file_as(doc, utf8_filename);
|
||||
|
||||
build_menu_update(doc);
|
||||
/* create a new tm_source_file object otherwise tagmanager won't work correctly */
|
||||
tm_workspace_remove_object(doc->tm_file, TRUE, TRUE);
|
||||
doc->tm_file = NULL;
|
||||
}
|
||||
success = document_save_file_as(doc, utf8_filename);
|
||||
|
||||
build_menu_update(doc);
|
||||
return success;
|
||||
}
|
||||
|
||||
@ -550,16 +529,10 @@ static gboolean save_as_dialog_handle_response(GtkWidget *dialog, gint response)
|
||||
/* fall through */
|
||||
case GTK_RESPONSE_ACCEPT:
|
||||
{
|
||||
gboolean open_new_tab = gtk_toggle_button_get_active(
|
||||
GTK_TOGGLE_BUTTON(ui_lookup_widget(dialog, "check_open_new_tab")));
|
||||
gchar *utf8_filename;
|
||||
|
||||
utf8_filename = utils_get_utf8_from_locale(new_filename);
|
||||
success = handle_save_as(utf8_filename, open_new_tab, rename_file);
|
||||
|
||||
if (success)
|
||||
filesel_state.save.open_in_new_tab = open_new_tab;
|
||||
|
||||
success = handle_save_as(utf8_filename, rename_file);
|
||||
g_free(utf8_filename);
|
||||
break;
|
||||
}
|
||||
@ -574,9 +547,9 @@ static gboolean save_as_dialog_handle_response(GtkWidget *dialog, gint response)
|
||||
}
|
||||
|
||||
|
||||
static GtkWidget *create_save_file_dialog(void)
|
||||
static GtkWidget *create_save_file_dialog(GeanyDocument *doc)
|
||||
{
|
||||
GtkWidget *dialog, *vbox, *check_open_new_tab, *rename_btn;
|
||||
GtkWidget *dialog, *rename_btn;
|
||||
const gchar *initdir;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new(_("Save File"), GTK_WINDOW(main_widgets.window),
|
||||
@ -590,21 +563,14 @@ static GtkWidget *create_save_file_dialog(void)
|
||||
|
||||
rename_btn = gtk_dialog_add_button(GTK_DIALOG(dialog), _("R_ename"), GEANY_RESPONSE_RENAME);
|
||||
gtk_widget_set_tooltip_text(rename_btn, _("Save the file and rename it"));
|
||||
/* disable rename unless file exists on disk */
|
||||
gtk_widget_set_sensitive(rename_btn, doc->real_path != NULL);
|
||||
|
||||
gtk_dialog_add_buttons(GTK_DIALOG(dialog),
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
|
||||
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
check_open_new_tab = gtk_check_button_new_with_mnemonic(_("_Open file in a new tab"));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_open_new_tab), filesel_state.save.open_in_new_tab);
|
||||
gtk_widget_set_tooltip_text(check_open_new_tab,
|
||||
_("Keep the current unsaved document open"
|
||||
" and open the newly saved file in a new tab"));
|
||||
gtk_box_pack_start(GTK_BOX(vbox), check_open_new_tab, FALSE, FALSE, 0);
|
||||
gtk_widget_show_all(vbox);
|
||||
gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(dialog), vbox);
|
||||
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
|
||||
gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(dialog), FALSE);
|
||||
|
||||
@ -616,12 +582,6 @@ static GtkWidget *create_save_file_dialog(void)
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), linitdir);
|
||||
g_free(linitdir);
|
||||
}
|
||||
|
||||
g_signal_connect(check_open_new_tab, "toggled",
|
||||
G_CALLBACK(on_save_as_new_tab_toggled), rename_btn);
|
||||
|
||||
ui_hookup_widget(dialog, check_open_new_tab, "check_open_new_tab");
|
||||
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@ -633,7 +593,7 @@ static gboolean show_save_as_gtk(GeanyDocument *doc)
|
||||
|
||||
g_return_val_if_fail(doc != NULL, FALSE);
|
||||
|
||||
dialog = create_save_file_dialog();
|
||||
dialog = create_save_file_dialog(doc);
|
||||
|
||||
if (doc->file_name != NULL)
|
||||
{
|
||||
@ -707,7 +667,7 @@ gboolean dialogs_show_save_as()
|
||||
gchar *utf8_name = win32_show_document_save_as_dialog(GTK_WINDOW(main_widgets.window),
|
||||
_("Save File"), DOC_FILENAME(doc));
|
||||
if (utf8_name != NULL)
|
||||
result = handle_save_as(utf8_name, FALSE, FALSE);
|
||||
result = handle_save_as(utf8_name, FALSE);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@ -736,12 +696,7 @@ static void show_msgbox_dialog(GtkWidget *dialog, GtkMessageType type, GtkWindow
|
||||
break;
|
||||
}
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), title);
|
||||
if (parent == NULL || GTK_IS_DIALOG(parent))
|
||||
{
|
||||
GdkPixbuf *pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
|
||||
gtk_window_set_icon(GTK_WINDOW(dialog), pb);
|
||||
g_object_unref(pb);
|
||||
}
|
||||
gtk_window_set_icon_name(GTK_WINDOW(dialog), "geany");
|
||||
gtk_widget_set_name(dialog, "GeanyDialog");
|
||||
|
||||
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
@ -1609,12 +1564,7 @@ static gint show_prompt(GtkWidget *parent,
|
||||
GTK_BUTTONS_NONE, "%s", question_text);
|
||||
gtk_widget_set_name(dialog, "GeanyDialog");
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), _("Question"));
|
||||
if (parent == NULL || GTK_IS_DIALOG(parent))
|
||||
{
|
||||
GdkPixbuf *pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
|
||||
gtk_window_set_icon(GTK_WINDOW(dialog), pb);
|
||||
g_object_unref(pb);
|
||||
}
|
||||
gtk_window_set_icon_name(GTK_WINDOW(dialog), "geany");
|
||||
|
||||
/* question_text will be in bold if optional extra_text used */
|
||||
if (extra_text != NULL)
|
||||
|
||||
@ -1701,7 +1701,7 @@ gboolean document_save_file(GeanyDocument *doc, gboolean force)
|
||||
}
|
||||
|
||||
/* the "changed" flag should exclude the "readonly" flag, but check it anyway for safety */
|
||||
if (! force && ! ui_prefs.allow_always_save && (! doc->changed || doc->readonly))
|
||||
if (! force && (! doc->changed || doc->readonly))
|
||||
return FALSE;
|
||||
|
||||
fp = project_get_file_prefs();
|
||||
@ -2506,6 +2506,7 @@ void document_undo_clear(GeanyDocument *doc)
|
||||
}
|
||||
|
||||
|
||||
/* note: this is called on SCN_MODIFIED notifications */
|
||||
void document_undo_add(GeanyDocument *doc, guint type, gpointer data)
|
||||
{
|
||||
undo_action *action;
|
||||
@ -2518,7 +2519,10 @@ void document_undo_add(GeanyDocument *doc, guint type, gpointer data)
|
||||
|
||||
g_trash_stack_push(&doc->priv->undo_actions, action);
|
||||
|
||||
document_set_text_changed(doc, TRUE);
|
||||
/* avoid unnecessary redraws */
|
||||
if (type != UNDO_SCINTILLA || !doc->changed)
|
||||
document_set_text_changed(doc, TRUE);
|
||||
|
||||
ui_update_popup_reundo_items(doc);
|
||||
}
|
||||
|
||||
@ -2682,7 +2686,9 @@ static void document_redo_add(GeanyDocument *doc, guint type, gpointer data)
|
||||
|
||||
g_trash_stack_push(&doc->priv->redo_actions, action);
|
||||
|
||||
document_set_text_changed(doc, TRUE);
|
||||
if (type != UNDO_SCINTILLA || !doc->changed)
|
||||
document_set_text_changed(doc, TRUE);
|
||||
|
||||
ui_update_popup_reundo_items(doc);
|
||||
}
|
||||
|
||||
@ -2737,29 +2743,45 @@ GeanyDocument *document_index(gint idx)
|
||||
|
||||
|
||||
/* create a new file and copy file content and properties */
|
||||
GeanyDocument *document_clone(GeanyDocument *old_doc, const gchar *utf8_filename)
|
||||
G_MODULE_EXPORT void on_clone1_activate(GtkMenuItem *menuitem, gpointer user_data)
|
||||
{
|
||||
GeanyDocument *old_doc = document_get_current();
|
||||
|
||||
if (old_doc)
|
||||
document_clone(old_doc);
|
||||
}
|
||||
|
||||
|
||||
GeanyDocument *document_clone(GeanyDocument *old_doc)
|
||||
{
|
||||
gint len;
|
||||
gchar *text;
|
||||
GeanyDocument *doc;
|
||||
ScintillaObject *old_sci;
|
||||
|
||||
g_return_val_if_fail(old_doc != NULL, NULL);
|
||||
g_return_val_if_fail(old_doc, NULL);
|
||||
old_sci = old_doc->editor->sci;
|
||||
if (sci_has_selection(old_sci))
|
||||
text = sci_get_selection_contents(old_sci);
|
||||
else
|
||||
text = sci_get_contents(old_sci, -1);
|
||||
|
||||
len = sci_get_length(old_doc->editor->sci) + 1;
|
||||
text = (gchar*) g_malloc(len);
|
||||
sci_get_text(old_doc->editor->sci, len, text);
|
||||
/* use old file type (or maybe NULL for auto detect would be better?) */
|
||||
doc = document_new_file(utf8_filename, old_doc->file_type, text);
|
||||
doc = document_new_file(NULL, old_doc->file_type, text);
|
||||
g_free(text);
|
||||
document_set_text_changed(doc, TRUE);
|
||||
|
||||
/* copy file properties */
|
||||
doc->editor->line_wrapping = old_doc->editor->line_wrapping;
|
||||
doc->editor->line_breaking = old_doc->editor->line_breaking;
|
||||
doc->editor->auto_indent = old_doc->editor->auto_indent;
|
||||
editor_set_indent(doc->editor, old_doc->editor->indent_type,
|
||||
old_doc->editor->indent_width);
|
||||
doc->readonly = old_doc->readonly;
|
||||
doc->has_bom = old_doc->has_bom;
|
||||
document_set_encoding(doc, old_doc->encoding);
|
||||
sci_set_lines_wrapped(doc->editor->sci, doc->editor->line_wrapping);
|
||||
sci_set_readonly(doc->editor->sci, doc->readonly);
|
||||
|
||||
/* update ui */
|
||||
ui_document_show_hide(doc);
|
||||
return doc;
|
||||
}
|
||||
@ -2832,9 +2854,10 @@ static void monitor_reload_file(GeanyDocument *doc)
|
||||
gchar *base_name = g_path_get_basename(doc->file_name);
|
||||
gint ret;
|
||||
|
||||
/* we use No instead of Cancel to avoid mnemonic clash */
|
||||
ret = dialogs_show_prompt(NULL,
|
||||
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_NO, GTK_RESPONSE_CANCEL,
|
||||
_("_Reload"), GTK_RESPONSE_ACCEPT,
|
||||
_("Do you want to reload it?"),
|
||||
_("The file '%s' on the disk is more recent than\nthe current buffer."),
|
||||
|
||||
@ -210,8 +210,6 @@ gboolean document_account_for_unsaved(void);
|
||||
|
||||
gboolean document_close_all(void);
|
||||
|
||||
GeanyDocument *document_clone(GeanyDocument *old_doc, const gchar *utf8_filename);
|
||||
|
||||
GeanyDocument *document_open_file_full(GeanyDocument *doc, const gchar *filename, gint pos,
|
||||
gboolean readonly, GeanyFiletype *ft, const gchar *forced_enc);
|
||||
|
||||
@ -281,6 +279,8 @@ gint document_compare_by_tab_order_reverse(gconstpointer a, gconstpointer b);
|
||||
|
||||
void document_grab_focus(GeanyDocument *doc);
|
||||
|
||||
GeanyDocument *document_clone(GeanyDocument *old_doc);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
||||
|
||||
200
src/editor.c
@ -110,6 +110,7 @@ static const gchar *snippets_find_completion_by_name(const gchar *type, const gc
|
||||
static void snippets_make_replacements(GeanyEditor *editor, GString *pattern);
|
||||
static gssize replace_cursor_markers(GeanyEditor *editor, GString *pattern);
|
||||
static GeanyFiletype *editor_get_filetype_at_current_pos(GeanyEditor *editor);
|
||||
static gboolean sci_is_blank_line(ScintillaObject *sci, gint line);
|
||||
|
||||
|
||||
void editor_snippets_free(void)
|
||||
@ -600,7 +601,7 @@ static void check_line_breaking(GeanyEditor *editor, gint pos, gchar c)
|
||||
/* last column - distance is the desired column, then retrieve its document position */
|
||||
pos = SSM(sci, SCI_FINDCOLUMN, line, last_col - diff);
|
||||
sci_set_current_position(sci, pos, FALSE);
|
||||
|
||||
sci_scroll_caret(sci);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -697,8 +698,10 @@ static void request_reshowing_calltip(SCNotification *nt)
|
||||
if (calltip.set)
|
||||
{
|
||||
/* delay the reshow of the calltip window to make sure it is actually displayed,
|
||||
* without it might be not visible on SCN_AUTOCCANCEL */
|
||||
g_idle_add(reshow_calltip, NULL);
|
||||
* without it might be not visible on SCN_AUTOCCANCEL. the priority is set to
|
||||
* low to hopefully make Scintilla's events happen before reshowing since they
|
||||
* seem to re-cancel the calltip on autoc menu hiding too */
|
||||
g_idle_add_full(G_PRIORITY_LOW, reshow_calltip, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2819,47 +2822,68 @@ static void real_comment_multiline(GeanyEditor *editor, gint line_start, gint la
|
||||
}
|
||||
|
||||
|
||||
static void real_uncomment_multiline(GeanyEditor *editor)
|
||||
/* find @p text inside the range of the current style */
|
||||
static gint find_in_current_style(ScintillaObject *sci, const gchar *text, gboolean backwards)
|
||||
{
|
||||
gint start = sci_get_current_position(sci);
|
||||
gint end = start;
|
||||
gint len = sci_get_length(sci);
|
||||
gint current_style = sci_get_style_at(sci, start);
|
||||
struct Sci_TextToFind ttf;
|
||||
|
||||
while (start > 0 && sci_get_style_at(sci, start - 1) == current_style)
|
||||
start -= 1;
|
||||
while (end < len && sci_get_style_at(sci, end + 1) == current_style)
|
||||
end += 1;
|
||||
|
||||
ttf.lpstrText = (gchar*) text;
|
||||
ttf.chrg.cpMin = backwards ? end + 1 : start;
|
||||
ttf.chrg.cpMax = backwards ? start : end + 1;
|
||||
return sci_find_text(sci, 0, &ttf);
|
||||
}
|
||||
|
||||
|
||||
static void sci_delete_line(ScintillaObject *sci, gint line)
|
||||
{
|
||||
gint start = sci_get_position_from_line(sci, line);
|
||||
gint len = sci_get_line_length(sci, line);
|
||||
SSM(sci, SCI_DELETERANGE, start, len);
|
||||
}
|
||||
|
||||
|
||||
static gboolean real_uncomment_multiline(GeanyEditor *editor)
|
||||
{
|
||||
/* find the beginning of the multi line comment */
|
||||
gint pos, line, len, x;
|
||||
gchar *linebuf;
|
||||
GeanyDocument *doc;
|
||||
gint start, end, start_line, end_line;
|
||||
GeanyFiletype *ft;
|
||||
const gchar *co, *cc;
|
||||
|
||||
g_return_if_fail(editor != NULL && editor->document->file_type != NULL);
|
||||
doc = editor->document;
|
||||
g_return_val_if_fail(editor != NULL && editor->document->file_type != NULL, FALSE);
|
||||
|
||||
ft = editor_get_filetype_at_current_pos(editor);
|
||||
if (! filetype_get_comment_open_close(ft, FALSE, &co, &cc))
|
||||
g_return_if_reached();
|
||||
g_return_val_if_reached(FALSE);
|
||||
|
||||
/* remove comment open chars */
|
||||
pos = document_find_text(doc, co, NULL, 0, TRUE, FALSE, NULL);
|
||||
SSM(editor->sci, SCI_DELETEBACK, 0, 0);
|
||||
start = find_in_current_style(editor->sci, co, TRUE);
|
||||
end = find_in_current_style(editor->sci, cc, FALSE);
|
||||
|
||||
/* check whether the line is empty and can be deleted */
|
||||
line = sci_get_line_from_position(editor->sci, pos);
|
||||
len = sci_get_line_length(editor->sci, line);
|
||||
linebuf = sci_get_line(editor->sci, line);
|
||||
x = 0;
|
||||
while (linebuf[x] != '\0' && isspace(linebuf[x])) x++;
|
||||
if (x == len) SSM(editor->sci, SCI_LINEDELETE, 0, 0);
|
||||
g_free(linebuf);
|
||||
if (start < 0 || end < 0 || start > end /* who knows */)
|
||||
return FALSE;
|
||||
|
||||
start_line = sci_get_line_from_position(editor->sci, start);
|
||||
end_line = sci_get_line_from_position(editor->sci, end);
|
||||
|
||||
/* remove comment close chars */
|
||||
pos = document_find_text(doc, cc, NULL, 0, FALSE, FALSE, NULL);
|
||||
SSM(editor->sci, SCI_DELETEBACK, 0, 0);
|
||||
SSM(editor->sci, SCI_DELETERANGE, end, strlen(cc));
|
||||
if (sci_is_blank_line(editor->sci, end_line))
|
||||
sci_delete_line(editor->sci, end_line);
|
||||
|
||||
/* check whether the line is empty and can be deleted */
|
||||
line = sci_get_line_from_position(editor->sci, pos);
|
||||
len = sci_get_line_length(editor->sci, line);
|
||||
linebuf = sci_get_line(editor->sci, line);
|
||||
x = 0;
|
||||
while (linebuf[x] != '\0' && isspace(linebuf[x])) x++;
|
||||
if (x == len) SSM(editor->sci, SCI_LINEDELETE, 0, 0);
|
||||
g_free(linebuf);
|
||||
/* remove comment open chars (do it last since it would move the end position) */
|
||||
SSM(editor->sci, SCI_DELETERANGE, start, strlen(co));
|
||||
if (sci_is_blank_line(editor->sci, start_line))
|
||||
sci_delete_line(editor->sci, start_line);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -2992,8 +3016,8 @@ gint editor_do_uncomment(GeanyEditor *editor, gint line, gboolean toggle)
|
||||
style_comment = get_multiline_comment_style(editor, line_start);
|
||||
if (sci_get_style_at(editor->sci, line_start + x) == style_comment)
|
||||
{
|
||||
real_uncomment_multiline(editor);
|
||||
count = 1;
|
||||
if (real_uncomment_multiline(editor))
|
||||
count = 1;
|
||||
}
|
||||
|
||||
/* break because we are already on the last line */
|
||||
@ -3115,8 +3139,8 @@ void editor_do_comment_toggle(GeanyEditor *editor)
|
||||
style_comment = get_multiline_comment_style(editor, line_start);
|
||||
if (sci_get_style_at(editor->sci, line_start + x) == style_comment)
|
||||
{
|
||||
real_uncomment_multiline(editor);
|
||||
count_uncommented++;
|
||||
if (real_uncomment_multiline(editor))
|
||||
count_uncommented++;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3134,46 +3158,40 @@ void editor_do_comment_toggle(GeanyEditor *editor)
|
||||
|
||||
co_len += tm_len;
|
||||
|
||||
/* restore selection if there is one */
|
||||
if (sel_start < sel_end)
|
||||
/* restore selection or caret position */
|
||||
if (single_line)
|
||||
{
|
||||
if (single_line)
|
||||
gint a = (first_line_was_comment) ? - co_len : co_len;
|
||||
|
||||
/* don't modify sel_start when the selection starts within indentation */
|
||||
read_indent(editor, sel_start);
|
||||
if ((sel_start - first_line_start) <= (gint) strlen(indent))
|
||||
a = 0;
|
||||
|
||||
if (sel_start < sel_end)
|
||||
{
|
||||
gint a = (first_line_was_comment) ? - co_len : co_len;
|
||||
|
||||
/* don't modify sel_start when the selection starts within indentation */
|
||||
read_indent(editor, sel_start);
|
||||
if ((sel_start - first_line_start) <= (gint) strlen(indent))
|
||||
a = 0;
|
||||
|
||||
sci_set_selection_start(editor->sci, sel_start + a);
|
||||
sci_set_selection_end(editor->sci, sel_end +
|
||||
(count_commented * co_len) - (count_uncommented * co_len));
|
||||
}
|
||||
else
|
||||
sci_set_current_position(editor->sci, sel_start + a, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
gint eol_len = editor_get_eol_char_len(editor);
|
||||
if (count_uncommented > 0)
|
||||
{
|
||||
gint eol_len = editor_get_eol_char_len(editor);
|
||||
if (count_uncommented > 0)
|
||||
{
|
||||
sci_set_selection_start(editor->sci, sel_start - co_len + eol_len);
|
||||
sci_set_selection_end(editor->sci, sel_end - co_len + eol_len);
|
||||
}
|
||||
else if (count_commented > 0)
|
||||
{
|
||||
sci_set_selection_start(editor->sci, sel_start + co_len - eol_len);
|
||||
sci_set_selection_end(editor->sci, sel_end + co_len - eol_len);
|
||||
}
|
||||
sci_set_selection_start(editor->sci, sel_start - co_len + eol_len);
|
||||
sci_set_selection_end(editor->sci, sel_end - co_len + eol_len);
|
||||
}
|
||||
}
|
||||
else if (count_uncommented > 0)
|
||||
{
|
||||
gint eol_len = single_line ? 0: editor_get_eol_char_len(editor);
|
||||
sci_set_current_position(editor->sci, sel_start - co_len + eol_len, TRUE);
|
||||
}
|
||||
else if (count_commented > 0)
|
||||
{
|
||||
gint eol_len = single_line ? 0: editor_get_eol_char_len(editor);
|
||||
sci_set_current_position(editor->sci, sel_start + co_len - eol_len, TRUE);
|
||||
else if (count_commented > 0)
|
||||
{
|
||||
sci_set_selection_start(editor->sci, sel_start + co_len - eol_len);
|
||||
sci_set_selection_end(editor->sci, sel_end + co_len - eol_len);
|
||||
}
|
||||
if (sel_start >= sel_end)
|
||||
sci_scroll_caret(editor->sci);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4372,6 +4390,10 @@ void editor_strip_line_trailing_spaces(GeanyEditor *editor, gint line)
|
||||
gint i = line_end - 1;
|
||||
gchar ch = sci_get_char_at(editor->sci, i);
|
||||
|
||||
/* Diff hunks should keep trailing spaces */
|
||||
if (sci_get_lexer(editor->sci) == SCLEX_DIFF)
|
||||
return;
|
||||
|
||||
while ((i >= line_start) && ((ch == ' ') || (ch == '\t')))
|
||||
{
|
||||
i--;
|
||||
@ -4669,8 +4691,46 @@ static void setup_sci_keys(ScintillaObject *sci)
|
||||
}
|
||||
|
||||
|
||||
#include "icons/16x16/classviewer-var.xpm"
|
||||
#include "icons/16x16/classviewer-method.xpm"
|
||||
/* registers a Scintilla image from a named icon from the theme */
|
||||
static gboolean register_named_icon(ScintillaObject *sci, guint id, const gchar *name)
|
||||
{
|
||||
GError *error = NULL;
|
||||
GdkPixbuf *pixbuf;
|
||||
gint n_channels, rowstride, width, height;
|
||||
gint size;
|
||||
|
||||
gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &size, NULL);
|
||||
pixbuf = gtk_icon_theme_load_icon(gtk_icon_theme_get_default(), name, size, 0, &error);
|
||||
if (! pixbuf)
|
||||
{
|
||||
g_warning("failed to load icon '%s': %s", name, error->message);
|
||||
g_error_free(error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
n_channels = gdk_pixbuf_get_n_channels(pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride(pixbuf);
|
||||
width = gdk_pixbuf_get_width(pixbuf);
|
||||
height = gdk_pixbuf_get_height(pixbuf);
|
||||
|
||||
if (gdk_pixbuf_get_bits_per_sample(pixbuf) != 8 ||
|
||||
! gdk_pixbuf_get_has_alpha(pixbuf) ||
|
||||
n_channels != 4 ||
|
||||
rowstride != width * n_channels)
|
||||
{
|
||||
g_warning("incompatible image data for icon '%s'", name);
|
||||
g_object_unref(pixbuf);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
SSM(sci, SCI_RGBAIMAGESETWIDTH, width, 0);
|
||||
SSM(sci, SCI_RGBAIMAGESETHEIGHT, height, 0);
|
||||
SSM(sci, SCI_REGISTERRGBAIMAGE, id, (sptr_t)gdk_pixbuf_get_pixels(pixbuf));
|
||||
|
||||
g_object_unref(pixbuf);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* Create new editor widget (scintilla).
|
||||
* @note The @c "sci-notify" signal is connected separately. */
|
||||
@ -4702,8 +4762,8 @@ static ScintillaObject *create_new_sci(GeanyEditor *editor)
|
||||
SSM(sci, SCI_SETSCROLLWIDTHTRACKING, 1, 0);
|
||||
|
||||
/* tag autocompletion images */
|
||||
SSM(sci, SCI_REGISTERIMAGE, 1, (sptr_t)classviewer_var);
|
||||
SSM(sci, SCI_REGISTERIMAGE, 2, (sptr_t)classviewer_method);
|
||||
register_named_icon(sci, 1, "classviewer-var");
|
||||
register_named_icon(sci, 2, "classviewer-method");
|
||||
|
||||
/* necessary for column mode editing, implemented in Scintilla since 2.0 */
|
||||
SSM(sci, SCI_SETADDITIONALSELECTIONTYPING, 1, 0);
|
||||
|
||||
@ -496,6 +496,14 @@ static void init_builtin_filetypes(void)
|
||||
ft->name = g_strdup("Forth");
|
||||
filetype_make_title(ft, TITLE_SOURCE_FILE);
|
||||
ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
|
||||
|
||||
#define ASCIIDOC
|
||||
ft = filetypes[GEANY_FILETYPES_ASCIIDOC];
|
||||
ft->lang = 43;
|
||||
ft->name = g_strdup("Asciidoc");
|
||||
filetype_make_title(ft, TITLE_SOURCE_FILE);
|
||||
ft->group = GEANY_FILETYPE_GROUP_MARKUP;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -90,6 +90,7 @@ typedef enum
|
||||
GEANY_FILETYPES_ERLANG,
|
||||
GEANY_FILETYPES_COBOL,
|
||||
GEANY_FILETYPES_OBJECTIVEC,
|
||||
GEANY_FILETYPES_ASCIIDOC,
|
||||
/* ^ append items here */
|
||||
GEANY_MAX_BUILT_IN_FILETYPES /* Don't use this, use filetypes_array->len instead */
|
||||
}
|
||||
|
||||
@ -1469,6 +1469,14 @@ gboolean highlighting_is_string_style(gint lexer, gint style)
|
||||
style == SCE_PL_XLAT
|
||||
/* we don't include any STRING_*_VAR for autocompletion */);
|
||||
|
||||
case SCLEX_PO:
|
||||
return (style == SCE_PO_MSGCTXT_TEXT ||
|
||||
style == SCE_PO_MSGCTXT_TEXT_EOL ||
|
||||
style == SCE_PO_MSGID_TEXT ||
|
||||
style == SCE_PO_MSGID_TEXT_EOL ||
|
||||
style == SCE_PO_MSGSTR_TEXT ||
|
||||
style == SCE_PO_MSGSTR_TEXT_EOL);
|
||||
|
||||
case SCLEX_R:
|
||||
return (style == SCE_R_STRING);
|
||||
|
||||
@ -1610,7 +1618,8 @@ gboolean highlighting_is_comment_style(gint lexer, gint style)
|
||||
return (style == SCE_PROPS_COMMENT);
|
||||
|
||||
case SCLEX_PO:
|
||||
return (style == SCE_PO_COMMENT);
|
||||
return (style == SCE_PO_COMMENT ||
|
||||
style == SCE_PO_PROGRAMMER_COMMENT);
|
||||
|
||||
case SCLEX_LATEX:
|
||||
return (style == SCE_L_COMMENT ||
|
||||
|
||||
@ -185,6 +185,7 @@ static const HLStyle highlighting_styles_C[] =
|
||||
{ SCE_C_WORD, "word", FALSE },
|
||||
{ SCE_C_WORD2, "word2", FALSE },
|
||||
{ SCE_C_STRING, "string", FALSE },
|
||||
{ SCE_C_STRINGRAW, "stringraw", FALSE },
|
||||
{ SCE_C_CHARACTER, "character", FALSE },
|
||||
{ SCE_C_UUID, "uuid", FALSE },
|
||||
{ SCE_C_PREPROCESSOR, "preprocessor", FALSE },
|
||||
@ -1079,15 +1080,22 @@ static const HLKeyword highlighting_keywords_PERL[] =
|
||||
#define highlighting_lexer_PO SCLEX_PO
|
||||
static const HLStyle highlighting_styles_PO[] =
|
||||
{
|
||||
{ SCE_PO_DEFAULT, "default", FALSE },
|
||||
{ SCE_PO_COMMENT, "comment", FALSE },
|
||||
{ SCE_PO_MSGID, "msgid", FALSE },
|
||||
{ SCE_PO_MSGID_TEXT, "msgid_text", FALSE },
|
||||
{ SCE_PO_MSGSTR, "msgstr", FALSE },
|
||||
{ SCE_PO_MSGSTR_TEXT, "msgstr_text", FALSE },
|
||||
{ SCE_PO_MSGCTXT, "msgctxt", FALSE },
|
||||
{ SCE_PO_MSGCTXT_TEXT, "msgctxt_text", FALSE },
|
||||
{ SCE_PO_FUZZY, "fuzzy", FALSE }
|
||||
{ SCE_PO_DEFAULT, "default", FALSE },
|
||||
{ SCE_PO_COMMENT, "comment", FALSE },
|
||||
{ SCE_PO_PROGRAMMER_COMMENT, "programmer_comment", FALSE },
|
||||
{ SCE_PO_REFERENCE, "reference", FALSE },
|
||||
{ SCE_PO_FLAGS, "flags", FALSE },
|
||||
{ SCE_PO_FUZZY, "fuzzy", FALSE },
|
||||
{ SCE_PO_MSGID, "msgid", FALSE },
|
||||
{ SCE_PO_MSGID_TEXT, "msgid_text", FALSE },
|
||||
{ SCE_PO_MSGID_TEXT_EOL, "msgid_text_eol", FALSE },
|
||||
{ SCE_PO_MSGSTR, "msgstr", FALSE },
|
||||
{ SCE_PO_MSGSTR_TEXT, "msgstr_text", FALSE },
|
||||
{ SCE_PO_MSGSTR_TEXT_EOL, "msgstr_text_eol", FALSE },
|
||||
{ SCE_PO_MSGCTXT, "msgctxt", FALSE },
|
||||
{ SCE_PO_MSGCTXT_TEXT, "msgctxt_text", FALSE },
|
||||
{ SCE_PO_MSGCTXT_TEXT_EOL, "msgctxt_text_eol", FALSE },
|
||||
{ SCE_PO_ERROR, "error", FALSE }
|
||||
};
|
||||
#define highlighting_keywords_PO EMPTY_KEYWORDS
|
||||
#define highlighting_properties_PO EMPTY_PROPERTIES
|
||||
|
||||
1690
src/images.c
@ -301,10 +301,9 @@ static void init_default_kb(void)
|
||||
add_kb(group, GEANY_KEYS_EDITOR_DELETELINETOEND, NULL,
|
||||
GDK_Delete, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "edit_deletelinetoend",
|
||||
_("Delete to line end"), NULL);
|
||||
/* transpose may fit better in format group */
|
||||
/* Note: transpose may fit better in format group, but that would break the API */
|
||||
add_kb(group, GEANY_KEYS_EDITOR_TRANSPOSELINE, NULL,
|
||||
0, 0, "edit_transposeline", _("_Transpose Current Line"),
|
||||
"transpose_current_line1");
|
||||
0, 0, "edit_transposeline", _("_Transpose Current Line"), NULL);
|
||||
add_kb(group, GEANY_KEYS_EDITOR_SCROLLTOLINE, NULL,
|
||||
GDK_l, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "edit_scrolltoline", _("Scroll to current line"), NULL);
|
||||
add_kb(group, GEANY_KEYS_EDITOR_SCROLLLINEUP, NULL,
|
||||
@ -328,9 +327,11 @@ static void init_default_kb(void)
|
||||
add_kb(group, GEANY_KEYS_EDITOR_WORDPARTCOMPLETION, NULL,
|
||||
GDK_Tab, 0, "edit_wordpartcompletion", _("Word part completion"), NULL);
|
||||
add_kb(group, GEANY_KEYS_EDITOR_MOVELINEUP, NULL,
|
||||
GDK_Page_Up, GDK_MOD1_MASK, "edit_movelineup", _("Move line(s) up"), NULL);
|
||||
GDK_Page_Up, GDK_MOD1_MASK, "edit_movelineup",
|
||||
_("Move line(s) up"), "move_lines_up1");
|
||||
add_kb(group, GEANY_KEYS_EDITOR_MOVELINEDOWN, NULL,
|
||||
GDK_Page_Down, GDK_MOD1_MASK, "edit_movelinedown", _("Move line(s) down"), NULL);
|
||||
GDK_Page_Down, GDK_MOD1_MASK, "edit_movelinedown",
|
||||
_("Move line(s) down"), "move_lines_down1");
|
||||
|
||||
group = keybindings_get_core_group(GEANY_KEY_GROUP_CLIPBOARD);
|
||||
|
||||
@ -561,6 +562,8 @@ static void init_default_kb(void)
|
||||
0, 0, "menu_linewrap", _("Toggle Line wrapping"), "menu_line_wrapping1");
|
||||
add_kb(group, GEANY_KEYS_DOCUMENT_LINEBREAK, NULL,
|
||||
0, 0, "menu_linebreak", _("Toggle Line breaking"), "line_breaking1");
|
||||
add_kb(group, GEANY_KEYS_DOCUMENT_CLONE, NULL,
|
||||
0, 0, "menu_clone", _("_Clone"), "clone1");
|
||||
add_kb(group, GEANY_KEYS_DOCUMENT_REPLACETABS, NULL,
|
||||
0, 0, "menu_replacetabs", _("Replace tabs by space"), "menu_replace_tabs");
|
||||
add_kb(group, GEANY_KEYS_DOCUMENT_REPLACESPACES, NULL,
|
||||
@ -1426,14 +1429,20 @@ static gboolean cb_func_search_action(guint key_id)
|
||||
case GEANY_KEYS_SEARCH_MARKALL:
|
||||
{
|
||||
gchar *text = get_current_word_or_sel(doc, TRUE);
|
||||
gint pos = sci_get_current_position(sci);
|
||||
|
||||
/* clear existing search indicators instead if next to cursor */
|
||||
if (scintilla_send_message(sci, SCI_INDICATORVALUEAT,
|
||||
GEANY_INDICATOR_SEARCH, pos) ||
|
||||
scintilla_send_message(sci, SCI_INDICATORVALUEAT,
|
||||
GEANY_INDICATOR_SEARCH, MAX(pos - 1, 0)))
|
||||
text = NULL;
|
||||
|
||||
if (sci_has_selection(sci))
|
||||
search_mark_all(doc, text, SCFIND_MATCHCASE);
|
||||
else
|
||||
{
|
||||
/* clears markers if text is null */
|
||||
search_mark_all(doc, text, SCFIND_MATCHCASE | SCFIND_WHOLEWORD);
|
||||
}
|
||||
|
||||
g_free(text);
|
||||
break;
|
||||
}
|
||||
@ -2354,6 +2363,9 @@ static gboolean cb_func_document_action(guint key_id)
|
||||
on_line_wrapping1_toggled(NULL, NULL);
|
||||
ui_document_show_hide(doc);
|
||||
break;
|
||||
case GEANY_KEYS_DOCUMENT_CLONE:
|
||||
document_clone(doc);
|
||||
break;
|
||||
case GEANY_KEYS_DOCUMENT_RELOADTAGLIST:
|
||||
document_update_tags(doc);
|
||||
break;
|
||||
|
||||
@ -246,6 +246,7 @@ enum GeanyKeyBindingID
|
||||
GEANY_KEYS_PROJECT_CLOSE, /**< Keybinding. */
|
||||
GEANY_KEYS_FORMAT_JOINLINES, /**< Keybinding. */
|
||||
GEANY_KEYS_GOTO_LINESTARTVISUAL, /**< Keybinding. */
|
||||
GEANY_KEYS_DOCUMENT_CLONE, /**< Keybinding. */
|
||||
GEANY_KEYS_COUNT /* must not be used by plugins */
|
||||
};
|
||||
|
||||
|
||||
@ -515,6 +515,7 @@ static void save_dialog_prefs(GKeyFile *config)
|
||||
g_key_file_set_boolean(config, "VTE", "cursor_blinks", vc->cursor_blinks);
|
||||
g_key_file_set_integer(config, "VTE", "scrollback_lines", vc->scrollback_lines);
|
||||
g_key_file_set_string(config, "VTE", "font", vc->font);
|
||||
g_key_file_set_string(config, "VTE", "image", vc->image);
|
||||
g_key_file_set_string(config, "VTE", "shell", vc->shell);
|
||||
tmp_string = utils_get_hex_from_color(vc->colour_fore);
|
||||
g_key_file_set_string(config, "VTE", "colour_fore", tmp_string);
|
||||
@ -839,6 +840,7 @@ static void load_dialog_prefs(GKeyFile *config)
|
||||
vc->emulation = utils_get_setting_string(config, "VTE", "emulation", "xterm");
|
||||
vc->send_selection_unsafe = utils_get_setting_boolean(config, "VTE",
|
||||
"send_selection_unsafe", FALSE);
|
||||
vc->image = utils_get_setting_string(config, "VTE", "image", "");
|
||||
vc->shell = utils_get_setting_string(config, "VTE", "shell", shell);
|
||||
vc->font = utils_get_setting_string(config, "VTE", "font", "Monospace 10");
|
||||
vc->scroll_on_key = utils_get_setting_boolean(config, "VTE", "scroll_on_key", TRUE);
|
||||
|
||||
20
src/main.c
@ -227,7 +227,18 @@ static void apply_settings(void)
|
||||
|
||||
static void main_init(void)
|
||||
{
|
||||
/* add our icon path in case we aren't installed in the system prefix */
|
||||
#ifndef G_OS_WIN32
|
||||
gchar *path = g_build_filename(GEANY_DATADIR, "icons", NULL);
|
||||
gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), path);
|
||||
g_free(path);
|
||||
#else
|
||||
gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), "share\\icons");
|
||||
#endif
|
||||
|
||||
/* inits */
|
||||
ui_init_stock_items();
|
||||
|
||||
ui_init_builder();
|
||||
|
||||
main_widgets.window = NULL;
|
||||
@ -245,8 +256,6 @@ static void main_init(void)
|
||||
ui_prefs.recent_projects_queue = g_queue_new();
|
||||
main_status.opening_session_files = FALSE;
|
||||
|
||||
ui_init_stock_items();
|
||||
|
||||
main_widgets.window = create_window1();
|
||||
|
||||
/* add recent projects to the Project menu */
|
||||
@ -1057,13 +1066,6 @@ gint main(gint argc, gchar **argv)
|
||||
symbols_init();
|
||||
editor_snippets_init();
|
||||
|
||||
/* set window icon */
|
||||
{
|
||||
GdkPixbuf *pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
|
||||
gtk_window_set_icon(GTK_WINDOW(main_widgets.window), pb);
|
||||
g_object_unref(pb); /* free our reference */
|
||||
}
|
||||
|
||||
/* registering some basic events */
|
||||
g_signal_connect(main_widgets.window, "delete-event", G_CALLBACK(on_exit_clicked), NULL);
|
||||
g_signal_connect(main_widgets.window, "window-state-event", G_CALLBACK(on_window_state_event), NULL);
|
||||
|
||||
11
src/prefs.c
@ -744,6 +744,9 @@ static void prefs_init_dialog(void)
|
||||
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "color_back");
|
||||
gtk_color_button_set_color(GTK_COLOR_BUTTON(widget), vc->colour_back);
|
||||
|
||||
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "entry_image");
|
||||
gtk_entry_set_text(GTK_ENTRY(widget), vc->image);
|
||||
|
||||
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "spin_scrollback");
|
||||
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), vc->scrollback_lines);
|
||||
|
||||
@ -1208,6 +1211,10 @@ on_prefs_dialog_response(GtkDialog *dialog, gint response, gpointer user_data)
|
||||
gtk_spin_button_update(GTK_SPIN_BUTTON(widget));
|
||||
vc->scrollback_lines = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
|
||||
|
||||
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "entry_image");
|
||||
g_free(vc->image);
|
||||
vc->image = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
|
||||
|
||||
widget = ui_lookup_widget(ui_widgets.prefs_dialog, "entry_shell");
|
||||
g_free(vc->shell);
|
||||
vc->shell = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget)));
|
||||
@ -1635,14 +1642,10 @@ void prefs_show_dialog(void)
|
||||
GtkWidget *label;
|
||||
guint i;
|
||||
gchar *encoding_string;
|
||||
GdkPixbuf *pb;
|
||||
|
||||
ui_widgets.prefs_dialog = create_prefs_dialog();
|
||||
gtk_widget_set_name(ui_widgets.prefs_dialog, "GeanyPrefsDialog");
|
||||
gtk_window_set_transient_for(GTK_WINDOW(ui_widgets.prefs_dialog), GTK_WINDOW(main_widgets.window));
|
||||
pb = ui_new_pixbuf_from_inline(GEANY_IMAGE_LOGO);
|
||||
gtk_window_set_icon(GTK_WINDOW(ui_widgets.prefs_dialog), pb);
|
||||
g_object_unref(pb); /* free our reference */
|
||||
|
||||
/* init the file encoding combo boxes */
|
||||
encoding_list = ui_builder_get_object("encoding_list");
|
||||
|
||||
@ -59,6 +59,7 @@ typedef struct
|
||||
* takes more than a second) */
|
||||
time_t print_time;
|
||||
PangoLayout *layout; /* commonly used layout object */
|
||||
gdouble sci_scale;
|
||||
|
||||
struct Sci_RangeToFormat fr;
|
||||
GArray *pages;
|
||||
@ -308,23 +309,21 @@ static void setup_range(DocInfo *dinfo, GtkPrintContext *ctx)
|
||||
dinfo->fr.rc.top = dinfo->fr.rcPage.top;
|
||||
dinfo->fr.rc.right = dinfo->fr.rcPage.right;
|
||||
dinfo->fr.rc.bottom = dinfo->fr.rcPage.bottom;
|
||||
#if GTK_CHECK_VERSION(2, 20, 0)
|
||||
{
|
||||
gdouble m_top, m_left, m_right, m_bottom;
|
||||
if (gtk_print_context_get_hard_margins(ctx, &m_top, &m_bottom, &m_left, &m_right))
|
||||
{
|
||||
dinfo->fr.rc.left += m_left;
|
||||
dinfo->fr.rc.top += m_top;
|
||||
dinfo->fr.rc.right -= m_right;
|
||||
dinfo->fr.rc.bottom -= m_bottom;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (printing_prefs.print_page_header)
|
||||
dinfo->fr.rc.top += dinfo->line_height * 3; /* header height */
|
||||
if (printing_prefs.print_page_numbers)
|
||||
dinfo->fr.rc.bottom -= dinfo->line_height * 1; /* footer height */
|
||||
|
||||
dinfo->fr.rcPage.left /= dinfo->sci_scale;
|
||||
dinfo->fr.rcPage.top /= dinfo->sci_scale;
|
||||
dinfo->fr.rcPage.right /= dinfo->sci_scale;
|
||||
dinfo->fr.rcPage.bottom /= dinfo->sci_scale;
|
||||
dinfo->fr.rc.left /= dinfo->sci_scale;
|
||||
dinfo->fr.rc.top /= dinfo->sci_scale;
|
||||
dinfo->fr.rc.right /= dinfo->sci_scale;
|
||||
dinfo->fr.rc.bottom /= dinfo->sci_scale;
|
||||
|
||||
dinfo->fr.chrg.cpMin = 0;
|
||||
dinfo->fr.chrg.cpMax = sci_get_length(dinfo->sci);
|
||||
}
|
||||
@ -333,6 +332,7 @@ static void setup_range(DocInfo *dinfo, GtkPrintContext *ctx)
|
||||
static void begin_print(GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
|
||||
{
|
||||
DocInfo *dinfo = user_data;
|
||||
PangoContext *pango_ctx, *widget_pango_ctx;
|
||||
PangoFontDescription *desc;
|
||||
|
||||
if (dinfo == NULL)
|
||||
@ -351,9 +351,17 @@ static void begin_print(GtkPrintOperation *operation, GtkPrintContext *context,
|
||||
scintilla_send_message(dinfo->sci, SCI_SETVIEWWS, SCWS_INVISIBLE, 0);
|
||||
scintilla_send_message(dinfo->sci, SCI_SETVIEWEOL, FALSE, 0);
|
||||
scintilla_send_message(dinfo->sci, SCI_SETEDGEMODE, EDGE_NONE, 0);
|
||||
scintilla_send_message(dinfo->sci, SCI_SETPRINTMAGNIFICATION, (uptr_t) -2, 0); /* WTF? */
|
||||
scintilla_send_message(dinfo->sci, SCI_SETPRINTCOLOURMODE, SC_PRINT_COLOURONWHITE, 0);
|
||||
|
||||
/* Scintilla doesn't respect the context resolution, so we'll scale ourselves.
|
||||
* Actually Scintilla simply doesn't know about the resolution since it creates its own
|
||||
* Pango context out of the Cairo target, and the resolution is in the GtkPrintOperation's
|
||||
* Pango context */
|
||||
pango_ctx = gtk_print_context_create_pango_context(context);
|
||||
widget_pango_ctx = gtk_widget_get_pango_context(GTK_WIDGET(dinfo->sci));
|
||||
dinfo->sci_scale = pango_cairo_context_get_resolution(pango_ctx) / pango_cairo_context_get_resolution(widget_pango_ctx);
|
||||
g_object_unref(pango_ctx);
|
||||
|
||||
dinfo->pages = g_array_new(FALSE, FALSE, sizeof(gint));
|
||||
|
||||
dinfo->print_time = time(NULL);
|
||||
@ -370,6 +378,19 @@ static void begin_print(GtkPrintOperation *operation, GtkPrintContext *context,
|
||||
}
|
||||
|
||||
|
||||
static gint format_range(DocInfo *dinfo, gboolean draw)
|
||||
{
|
||||
gint pos;
|
||||
|
||||
cairo_save(dinfo->fr.hdc);
|
||||
cairo_scale(dinfo->fr.hdc, dinfo->sci_scale, dinfo->sci_scale);
|
||||
pos = (gint) scintilla_send_message(dinfo->sci, SCI_FORMATRANGE, draw, (sptr_t) &dinfo->fr);
|
||||
cairo_restore(dinfo->fr.hdc);
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
|
||||
static gboolean paginate(GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
|
||||
{
|
||||
DocInfo *dinfo = user_data;
|
||||
@ -383,7 +404,7 @@ static gboolean paginate(GtkPrintOperation *operation, GtkPrintContext *context,
|
||||
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(main_widgets.progressbar), _("Paginating"));
|
||||
|
||||
g_array_append_val(dinfo->pages, dinfo->fr.chrg.cpMin);
|
||||
dinfo->fr.chrg.cpMin = (gint) scintilla_send_message(dinfo->sci, SCI_FORMATRANGE, FALSE, (sptr_t) &dinfo->fr);
|
||||
dinfo->fr.chrg.cpMin = format_range(dinfo, FALSE);
|
||||
|
||||
gtk_print_operation_set_n_pages(operation, dinfo->pages->len);
|
||||
|
||||
@ -399,7 +420,7 @@ static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context,
|
||||
gdouble width, height;
|
||||
|
||||
g_return_if_fail(dinfo != NULL);
|
||||
g_return_if_fail(page_nr < dinfo->pages->len);
|
||||
g_return_if_fail((guint)page_nr < dinfo->pages->len);
|
||||
|
||||
if (dinfo->pages->len > 0)
|
||||
{
|
||||
@ -418,30 +439,29 @@ static void draw_page(GtkPrintOperation *operation, GtkPrintContext *context,
|
||||
add_page_header(dinfo, cr, width, page_nr);
|
||||
|
||||
dinfo->fr.chrg.cpMin = g_array_index(dinfo->pages, gint, page_nr);
|
||||
if (page_nr + 1 < dinfo->pages->len)
|
||||
if ((guint)page_nr + 1 < dinfo->pages->len)
|
||||
dinfo->fr.chrg.cpMax = g_array_index(dinfo->pages, gint, page_nr + 1) - 1;
|
||||
else /* it's the last page, print 'til the end */
|
||||
dinfo->fr.chrg.cpMax = sci_get_length(dinfo->sci);
|
||||
|
||||
scintilla_send_message(dinfo->sci, SCI_FORMATRANGE, TRUE, (sptr_t) &dinfo->fr);
|
||||
format_range(dinfo, TRUE);
|
||||
|
||||
/* reset color */
|
||||
cairo_set_source_rgb(cr, 0, 0, 0);
|
||||
|
||||
if (printing_prefs.print_line_numbers)
|
||||
{ /* print a thin line between the line number margin and the data */
|
||||
gint y1 = 0, y2 = height;
|
||||
gdouble y1 = dinfo->fr.rc.top * dinfo->sci_scale;
|
||||
gdouble y2 = dinfo->fr.rc.bottom * dinfo->sci_scale;
|
||||
gdouble x = dinfo->fr.rc.left * dinfo->sci_scale + dinfo->margin_width;
|
||||
|
||||
if (printing_prefs.print_page_header)
|
||||
y1 += (dinfo->line_height * 3) - 2; /* "- 2": to connect the line number line to
|
||||
* the page header frame */
|
||||
|
||||
if (printing_prefs.print_page_numbers)
|
||||
y2 -= (dinfo->line_height * 2) - 2;
|
||||
y1 -= 2 - 0.3; /* to connect the line number line to the page header frame,
|
||||
* 2 is the border, and 0.3 the line width */
|
||||
|
||||
cairo_set_line_width(cr, 0.3);
|
||||
cairo_move_to(cr, dinfo->margin_width, y1);
|
||||
cairo_line_to(cr, dinfo->margin_width, y2);
|
||||
cairo_move_to(cr, x, y1);
|
||||
cairo_line_to(cr, x, y2);
|
||||
cairo_stroke(cr);
|
||||
}
|
||||
|
||||
@ -472,7 +492,8 @@ static void printing_print_gtk(GeanyDocument *doc)
|
||||
GtkPrintOperation *op;
|
||||
GtkPrintOperationResult res = GTK_PRINT_OPERATION_RESULT_ERROR;
|
||||
GError *error = NULL;
|
||||
DocInfo dinfo = { 0 };
|
||||
static const DocInfo dinfo0;
|
||||
DocInfo dinfo = dinfo0;
|
||||
PrintWidgets *widgets;
|
||||
|
||||
/** TODO check for monospace font, detect the widest character in the font and
|
||||
|
||||