Branch: refs/heads/master
Author: WilliamFraser <william.fraser(a)virgin.net>
Committer: WilliamFraser <william.fraser(a)virgin.net>
Date: Sat, 11 Feb 2012 00:06:17
Commit: 382c2cff4e6e157cb142abd2736699960e3fe4e3
https://github.com/geany/geany-plugins/commit/382c2cff4e6e157cb142abd273669…
Log Message:
-----------
Fixed make error with static string definitions
Modified Paths:
--------------
geanymacro/src/geanymacro.c
Modified: geanymacro/src/geanymacro.c
172 files changed, 86 insertions(+), 86 deletions(-)
===================================================================
@@ -55,103 +55,103 @@
/* list of editor messages this plugin can handle & a description */
const MacroDetailEntry MacroDetails[]={
-{SCI_CUT,_("Cut to Clipboard")},
-{SCI_COPY,_("Copy to Clipboard")},
-{SCI_PASTE,_("Paste from Clipboard")},
-{SCI_LINECUT,_("Cut current line to Clipboard")},
-{SCI_LINECOPY,_("Copy current line to Clipboard")},
-
-{SCI_DELETEBACK,_("Delete character to the left")},
-{SCI_CLEAR,_("Delete character to the right")},
-{SCI_DELETEBACKNOTLINE,_("Delete character to the left (but not newline)")},
-{SCI_DELWORDLEFT,_("Delete up to start of word to the Left")},
-{SCI_DELWORDRIGHT,_("Delete up to start of word to the Right")},
-{SCI_DELWORDRIGHTEND,_("Delete up to end of word to the Right")},
-{SCI_DELLINELEFT,_("Delete to begining of line")},
-{SCI_DELLINERIGHT,_("Delete to end of line")},
-{SCI_LINEDELETE,_("Delete current line")},
-{SCI_BACKTAB,_("Backwards Tab (deletes tab if nothing after it)")},
-
-{SCI_LINESCROLLDOWN,_("Scroll Display down a line")},
-{SCI_LINESCROLLUP,_("Scroll Display up a line")},
-{SCI_ZOOMIN,_("Zoom view in")},
-{SCI_ZOOMOUT,_("Zoom view out")},
-
-{SCI_LINEDOWN,_("Move Cursor Down")},
-{SCI_LINEUP,_("Move Cursor Up")},
-{SCI_CHARLEFT,_("Move Cursor Left")},
-{SCI_CHARRIGHT,_("Move Cursor Right")},
-{SCI_WORDLEFT,_("Move Cursor to start of Word to the Left")},
-{SCI_WORDRIGHT,_("Move Cursor to start of Word to the Right")},
-{SCI_WORDPARTLEFT,_("Move Cursor to start of Part of Word to the Left")},
-{SCI_WORDPARTRIGHT,_("Move Cursor to start of Part of Word to the Right")},
-{SCI_HOME,_("Move Cursor to start of line")},
-{SCI_LINEEND,_("Move Cursor to end of line")},
-{SCI_DOCUMENTSTART,_("Move Cursor to 1st line of Document")},
-{SCI_DOCUMENTEND,_("Move Cursor to last line of document")},
-{SCI_PAGEUP,_("Move Cursor up one Page")},
-{SCI_PAGEDOWN,_("Move Cursor down one Page")},
-{SCI_HOMEDISPLAY,_("Move Cursor to fist visible character")},
-{SCI_LINEENDDISPLAY,_("Move Cursor to last visible character")},
-{SCI_VCHOME,_("Move Cursor to 1st non-whitespace character of line, or 1st character of line if\
+{SCI_CUT,N_("Cut to Clipboard")},
+{SCI_COPY,N_("Copy to Clipboard")},
+{SCI_PASTE,N_("Paste from Clipboard")},
+{SCI_LINECUT,N_("Cut current line to Clipboard")},
+{SCI_LINECOPY,N_("Copy current line to Clipboard")},
+
+{SCI_DELETEBACK,N_("Delete character to the left")},
+{SCI_CLEAR,N_("Delete character to the right")},
+{SCI_DELETEBACKNOTLINE,N_("Delete character to the left (but not newline)")},
+{SCI_DELWORDLEFT,N_("Delete up to start of word to the Left")},
+{SCI_DELWORDRIGHT,N_("Delete up to start of word to the Right")},
+{SCI_DELWORDRIGHTEND,N_("Delete up to end of word to the Right")},
+{SCI_DELLINELEFT,N_("Delete to begining of line")},
+{SCI_DELLINERIGHT,N_("Delete to end of line")},
+{SCI_LINEDELETE,N_("Delete current line")},
+{SCI_BACKTAB,N_("Backwards Tab (deletes tab if nothing after it)")},
+
+{SCI_LINESCROLLDOWN,N_("Scroll Display down a line")},
+{SCI_LINESCROLLUP,N_("Scroll Display up a line")},
+{SCI_ZOOMIN,N_("Zoom view in")},
+{SCI_ZOOMOUT,N_("Zoom view out")},
+
+{SCI_LINEDOWN,N_("Move Cursor Down")},
+{SCI_LINEUP,N_("Move Cursor Up")},
+{SCI_CHARLEFT,N_("Move Cursor Left")},
+{SCI_CHARRIGHT,N_("Move Cursor Right")},
+{SCI_WORDLEFT,N_("Move Cursor to start of Word to the Left")},
+{SCI_WORDRIGHT,N_("Move Cursor to start of Word to the Right")},
+{SCI_WORDPARTLEFT,N_("Move Cursor to start of Part of Word to the Left")},
+{SCI_WORDPARTRIGHT,N_("Move Cursor to start of Part of Word to the Right")},
+{SCI_HOME,N_("Move Cursor to start of line")},
+{SCI_LINEEND,N_("Move Cursor to end of line")},
+{SCI_DOCUMENTSTART,N_("Move Cursor to 1st line of Document")},
+{SCI_DOCUMENTEND,N_("Move Cursor to last line of document")},
+{SCI_PAGEUP,N_("Move Cursor up one Page")},
+{SCI_PAGEDOWN,N_("Move Cursor down one Page")},
+{SCI_HOMEDISPLAY,N_("Move Cursor to fist visible character")},
+{SCI_LINEENDDISPLAY,N_("Move Cursor to last visible character")},
+{SCI_VCHOME,N_("Move Cursor to 1st non-whitespace character of line, or 1st character of line if\
already at 1st non-whitespace character")},
-{SCI_PARADOWN,_("Move Cursor to begining of next paragraph")},
-{SCI_PARAUP,_("Move Cursor up to beginning of current/previous paragraph")},
-{SCI_WORDLEFTEND,_("Move Cursor to end of Word to the Left")},
-{SCI_WORDRIGHTEND,_("Move Cursor to end of Word to the Right")},
-
-{SCI_LINEDOWNEXTEND,_("Move Selection down a line")},
-{SCI_LINEUPEXTEND,_("Move Selection up a line")},
-{SCI_CHARLEFTEXTEND,_("Move Selection Left a line")},
-{SCI_CHARRIGHTEXTEND,_("Move Selection Right a line")},
-{SCI_WORDLEFTEXTEND,_("Move Selection to start of Word to the Left")},
-{SCI_WORDRIGHTEXTEND,_("Move Selection to start of Word to the Right")},
-{SCI_WORDPARTLEFTEXTEND,_("Move Selection to start of Part of Word to the Left")},
-{SCI_WORDPARTRIGHTEXTEND,_("Move Selection to start of Part of Word to the Right")},
-{SCI_HOMEEXTEND,_("Move Selection to start of line")},
-{SCI_LINEENDEXTEND,_("Move Selection to end of line")},
-{SCI_DOCUMENTSTARTEXTEND,_("Move Selection to start of document")},
-{SCI_DOCUMENTENDEXTEND,_("Move Selection to end of document")},
-{SCI_PAGEUPEXTEND,_("Move Selection up one Page")},
-{SCI_PAGEDOWNEXTEND,_("Move Selection down one Page")},
-{SCI_HOMEDISPLAYEXTEND,_("Move Selection to fist visible character")},
-{SCI_LINEENDDISPLAYEXTEND,_("Move Selection to last visible character")},
-{SCI_VCHOMEEXTEND,_("Move Selection to 1st non-whitespace character of line, or 1st character of\
+{SCI_PARADOWN,N_("Move Cursor to begining of next paragraph")},
+{SCI_PARAUP,N_("Move Cursor up to beginning of current/previous paragraph")},
+{SCI_WORDLEFTEND,N_("Move Cursor to end of Word to the Left")},
+{SCI_WORDRIGHTEND,N_("Move Cursor to end of Word to the Right")},
+
+{SCI_LINEDOWNEXTEND,N_("Move Selection down a line")},
+{SCI_LINEUPEXTEND,N_("Move Selection up a line")},
+{SCI_CHARLEFTEXTEND,N_("Move Selection Left a line")},
+{SCI_CHARRIGHTEXTEND,N_("Move Selection Right a line")},
+{SCI_WORDLEFTEXTEND,N_("Move Selection to start of Word to the Left")},
+{SCI_WORDRIGHTEXTEND,N_("Move Selection to start of Word to the Right")},
+{SCI_WORDPARTLEFTEXTEND,N_("Move Selection to start of Part of Word to the Left")},
+{SCI_WORDPARTRIGHTEXTEND,N_("Move Selection to start of Part of Word to the Right")},
+{SCI_HOMEEXTEND,N_("Move Selection to start of line")},
+{SCI_LINEENDEXTEND,N_("Move Selection to end of line")},
+{SCI_DOCUMENTSTARTEXTEND,N_("Move Selection to start of document")},
+{SCI_DOCUMENTENDEXTEND,N_("Move Selection to end of document")},
+{SCI_PAGEUPEXTEND,N_("Move Selection up one Page")},
+{SCI_PAGEDOWNEXTEND,N_("Move Selection down one Page")},
+{SCI_HOMEDISPLAYEXTEND,N_("Move Selection to fist visible character")},
+{SCI_LINEENDDISPLAYEXTEND,N_("Move Selection to last visible character")},
+{SCI_VCHOMEEXTEND,N_("Move Selection to 1st non-whitespace character of line, or 1st character of\
line if already at 1st non-whitespace character")},
-{SCI_PARADOWNEXTEND,_("Move Selection to begining of next paragraph")},
-{SCI_PARAUPEXTEND,_("Move Selection up to beginning of current/previous paragraph")},
-{SCI_WORDLEFTENDEXTEND,_("Move Selection to end of Word to the Left")},
-{SCI_WORDRIGHTENDEXTEND,_("Move Selection to end of Word to the Right")},
-
-{SCI_LINEDOWNRECTEXTEND,_("Move Rectangular Selection down a line")},
-{SCI_LINEUPRECTEXTEND,_("Move Rectangular Selection up a line")},
-{SCI_CHARLEFTRECTEXTEND,_("Move Rectangular Selection Left a line")},
-{SCI_CHARRIGHTRECTEXTEND,_("Move Rectangular Selection Right a line")},
-{SCI_HOMERECTEXTEND,_("Move Rectangular Selection to start of line")},
-{SCI_LINEENDRECTEXTEND,_("Move Rectangular Selection to end of line")},
-{SCI_PAGEUPRECTEXTEND,_("Move Rectangular Selection up one Page")},
-{SCI_PAGEDOWNRECTEXTEND,_("Move Rectangular Selection down one Page")},
-{SCI_VCHOMERECTEXTEND,_("Move Rectangular Selection to 1st non-whitespace character of line, or 1st\
+{SCI_PARADOWNEXTEND,N_("Move Selection to begining of next paragraph")},
+{SCI_PARAUPEXTEND,N_("Move Selection up to beginning of current/previous paragraph")},
+{SCI_WORDLEFTENDEXTEND,N_("Move Selection to end of Word to the Left")},
+{SCI_WORDRIGHTENDEXTEND,N_("Move Selection to end of Word to the Right")},
+
+{SCI_LINEDOWNRECTEXTEND,N_("Move Rectangular Selection down a line")},
+{SCI_LINEUPRECTEXTEND,N_("Move Rectangular Selection up a line")},
+{SCI_CHARLEFTRECTEXTEND,N_("Move Rectangular Selection Left a line")},
+{SCI_CHARRIGHTRECTEXTEND,N_("Move Rectangular Selection Right a line")},
+{SCI_HOMERECTEXTEND,N_("Move Rectangular Selection to start of line")},
+{SCI_LINEENDRECTEXTEND,N_("Move Rectangular Selection to end of line")},
+{SCI_PAGEUPRECTEXTEND,N_("Move Rectangular Selection up one Page")},
+{SCI_PAGEDOWNRECTEXTEND,N_("Move Rectangular Selection down one Page")},
+{SCI_VCHOMERECTEXTEND,N_("Move Rectangular Selection to 1st non-whitespace character of line, or 1st\
character of line if already at 1st non-whitespace character")},
-{SCI_CANCEL,_("Cancel Selection")},
+{SCI_CANCEL,N_("Cancel Selection")},
-{SCI_EDITTOGGLEOVERTYPE,_("Toggle Insert/Overwrite mode")},
-{SCI_TAB,_("Tab")},
-{SCI_NEWLINE,_("Newline")},
+{SCI_EDITTOGGLEOVERTYPE,N_("Toggle Insert/Overwrite mode")},
+{SCI_TAB,N_("Tab")},
+{SCI_NEWLINE,N_("Newline")},
-{SCI_REPLACESEL,_("Insert/replace with \"\"")},
+{SCI_REPLACESEL,N_("Insert/replace with \"\"")},
-{SCI_LINETRANSPOSE,_("Swap current line wih one above")},
-{SCI_LOWERCASE,_("Change selected text to lowercase")},
-{SCI_UPPERCASE,_("Change selected text to uppercase")},
+{SCI_LINETRANSPOSE,N_("Swap current line wih one above")},
+{SCI_LOWERCASE,N_("Change selected text to lowercase")},
+{SCI_UPPERCASE,N_("Change selected text to uppercase")},
-{SCI_LINEDUPLICATE,_("Insert duplicate of current line below")},
-{SCI_SELECTIONDUPLICATE,_("Insert duplicate of selected text after selection. If nothing selected,\
+{SCI_LINEDUPLICATE,N_("Insert duplicate of current line below")},
+{SCI_SELECTIONDUPLICATE,N_("Insert duplicate of selected text after selection. If nothing selected,\
duplicate line")},
/* editor commands that don't seem to work well in editing
- * {SCI_FORMFEED,_("FormFeed")},
+ * {SCI_FORMFEED,N_("FormFeed")},
*
* other commands ommited as they don't appear to do anything different to existing commands
*/
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
Branch: refs/heads/master
Author: Frank Lanitz <frank(a)frank.uvena.de>
Committer: Frank Lanitz <frank(a)frank.uvena.de>
Date: Tue, 07 Feb 2012 19:57:45
Commit: 50948683f6fddde8127ff5de0dd7592246a6bca6
https://github.com/geany/geany-plugins/commit/50948683f6fddde8127ff5de0dd75…
Log Message:
-----------
Added geanyminiscript
Modified Paths:
--------------
MAINTAINERS
Makefile.am
README
build/geanyminiscript.m4
configure.ac
geanyminiscript/AUTHORS
geanyminiscript/COPYING
geanyminiscript/ChangeLog
geanyminiscript/INSTALL
geanyminiscript/Makefile.am
geanyminiscript/NEWS
geanyminiscript/README
geanyminiscript/doc/Doxyfile_gms
geanyminiscript/doc/gms_help.pdf
geanyminiscript/src/Makefile.am
geanyminiscript/src/gms.c
geanyminiscript/src/gms.h
geanyminiscript/src/gms_debug.h
geanyminiscript/src/gms_gui.c
geanyminiscript/src/gms_gui.h
geanyminiscript/wscript_build
geanyminiscript/wscript_configure
po/POTFILES.in
Modified: MAINTAINERS
6 files changed, 6 insertions(+), 0 deletions(-)
===================================================================
@@ -89,6 +89,12 @@ M:
W:
S:
+geanyminiscript
+P: Eugene Arshinov <earshinov(a)gmail.com>
+M: Eugene Arshinov <earshinov(a)gmail.com>
+W:
+S: Maintained
+
geanynumberedbookmarks
P:
M:
Modified: Makefile.am
1 files changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -12,6 +12,7 @@ plugins = \
geanylipsum \
geanylua \
geanymacro \
+ geanyminiscript \
geanynumberedbookmarks \
geanypg \
geanyprj \
Modified: README
1 files changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -47,6 +47,7 @@ dependencies. --disable-<option> causes the feature to be forcefully disabled.
* geanylatex -- the GeanyLaTeX plugin
* geanylipsum -- the GeanyLipsum plugin
* geanylua -- the GeanyLua plugin
+* geanyminiscript -- the GeanyMiniScript plugin
* geanypg -- the geanypg plugin
* geanyprj -- the GeanyPrj plugin
* geanysendmail -- the GeanySendmail plugin
Modified: build/geanyminiscript.m4
9 files changed, 9 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,9 @@
+AC_DEFUN([GP_CHECK_GEANYMINISCRIPT],
+[
+ GP_ARG_DISABLE([GeanyMiniScript], [yes])
+ GP_STATUS_PLUGIN_ADD([GeanyMiniScript], [$enable_geanyminiscript])
+ AC_CONFIG_FILES([
+ geanyminiscript/Makefile
+ geanyminiscript/src/Makefile
+ ])
+])
Modified: configure.ac
1 files changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -37,6 +37,7 @@ GP_CHECK_GEANYLATEX
GP_CHECK_GEANYLIPSUM
GP_CHECK_GEANYLUA
GP_CHECK_GEANYMACRO
+GP_CHECK_GEANYMINISCRIPT
GP_CHECK_GEANYNUMBEREDBOOKMARKS
GP_CHECK_GEANYPRJ
GP_CHECK_GEANYSENDMAIL
Modified: geanyminiscript/AUTHORS
1 files changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1 @@
+Pascal Burlot <prublot(at)users(dot)sourceforge(dot)net>
Modified: geanyminiscript/COPYING
340 files changed, 340 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
Modified: geanyminiscript/ChangeLog
22 files changed, 22 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,22 @@
+2009-03-02 v0.4
+
+ * config_dir (compatibility with geany 0.16)
+
+
+2009-02-07 v0.3
+
+ * localization
+ * add Tips on each button
+
+
+2009-01-03 v0.2
+
+ * using autotools
+ * adding a help document (./doc/gms_help.pdf)
+ * add a break if a error is happened in the session mode
+ * svn
+
+
+2009-01-02 v0.1
+
+ * initial version
Modified: geanyminiscript/INSTALL
182 files changed, 182 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,182 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
Modified: geanyminiscript/Makefile.am
8 files changed, 8 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,8 @@
+if ENABLE_GEANYMINISCRIPT
+include $(top_srcdir)/build/vars.auxfiles.mk
+else
+include $(top_srcdir)/build/vars.docs.mk
+endif
+
+SUBDIRS = src
+plugin = geanyminiscript
Modified: geanyminiscript/NEWS
0 files changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online
Modified: geanyminiscript/README
100 files changed, 100 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,100 @@
+.. |(version)| replace:: 0.1
+
+====
+gms
+====
+
+.. contents::
+
+About
+=====
+
+gms is a Geany Mini-Script filter plugin
+
+In order to use it you need Geany 0.15.
+
+Features
+========
+This plugin is a tool to apply a script filter on ::
+ o the text selection,
+ o the current document,
+ o all documents of the current session.
+
+The filter type can be ::
+ o Unix shell script,
+ o perl script,
+ o python script,
+ o sed commands,
+ o awk script.
+
+The output can be ::
+ o the selection of the current document,
+ o all the current document,
+ o or a new document.
+
+Requirements
+============
+
+For compiling gms you need Geany,GTK2 includes, and GTK2 library.
+
+Furthermore you need, of course, a C compiler and the Make tool; The
+GNU versions of these tools are recommended.
+
+Usage
+=====
+
+After compiling and/or installing gms, start Geany and go to menu
+Tools->Plugin Manager and set checkbox at gms plugin.
+
+You can configure the following options::
+ o Shell path,
+ o Perl path,
+ o Python path,
+ o sed path,
+ o Awk path,
+ o user script .
+
+After configuring, go to menu Tools->Plugin Manager and click to "Mini-script".
+Geany opens a gms dialog box::
+ o With the combobox, you select the script type,
+ o In the text view, you write the filter script.
+ o In the input area, you select the filter input::
+ * current selection
+ * current document
+ * all the session documents
+ o In the output area, you select the filter output::
+ * current document
+ * new document
+ o and you click on the apply button.
+
+License
+=======
+
+gms is distributed under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version. A copy of this license
+can be found in the file COPYING included with the source code of this
+program.
+
+Ideas, questions, patches and bug reports
+=========================================
+
+If you add something, or fix a bug, please send a patch (in 'diff -u'
+format) to the author listed below.
+
+Coding
+======
+
+Use static functions where possible.
+Try to use GLib types and functions - e.g. g_free instead of free and
+try to use only GLib 2.6 and GTK 2.6 functions. At least for the moment,
+we want to keep the minimum requirement for GTK at 2.6.
+
+Download
+========
+
+The current version is |(version)|, download it here http://
+
+--
+2008-2009 by Pascal BURLOT
+prublot(at)users(dot)sourceforge(dot)net
Modified: geanyminiscript/doc/Doxyfile_gms
297 files changed, 297 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,297 @@
+# Doxyfile 1.5.5
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING = UTF-8
+PROJECT_NAME = gms
+PROJECT_NUMBER = 0.1
+OUTPUT_DIRECTORY = ./doc-doxygen/
+CREATE_SUBDIRS = NO
+OUTPUT_LANGUAGE = English
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = YES
+STRIP_FROM_PATH = ./
+STRIP_FROM_INC_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+QT_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = NO
+TAB_SIZE = 4
+ALIASES =
+OPTIMIZE_OUTPUT_FOR_C = YES
+OPTIMIZE_OUTPUT_JAVA = NO
+OPTIMIZE_FOR_FORTRAN = NO
+OPTIMIZE_OUTPUT_VHDL = NO
+BUILTIN_STL_SUPPORT = NO
+CPP_CLI_SUPPORT = NO
+SIP_SUPPORT = NO
+DISTRIBUTE_GROUP_DOC = NO
+SUBGROUPING = YES
+TYPEDEF_HIDES_STRUCT = NO
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_STATIC = YES
+EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_METHODS = NO
+EXTRACT_ANON_NSPACES = NO
+HIDE_UNDOC_MEMBERS = YES
+HIDE_UNDOC_CLASSES = YES
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = NO
+CASE_SENSE_NAMES = YES
+HIDE_SCOPE_NAMES = NO
+SHOW_INCLUDE_FILES = YES
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+SORT_BRIEF_DOCS = NO
+SORT_GROUP_NAMES = NO
+SORT_BY_SCOPE_NAME = NO
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = YES
+SHOW_DIRECTORIES = NO
+FILE_VERSION_FILTER =
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT = ../src
+INPUT_ENCODING = UTF-8
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.d \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.idl \
+ *.odl \
+ *.cs \
+ *.php \
+ *.php3 \
+ *.inc \
+ *.m \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.vhd \
+ *.vhdl \
+ *.C \
+ *.CC \
+ *.C++ \
+ *.II \
+ *.I++ \
+ *.H \
+ *.HH \
+ *.H++ \
+ *.CS \
+ *.PHP \
+ *.PHP3 \
+ *.M \
+ *.MM \
+ *.PY \
+ *.F90 \
+ *.F \
+ *.VHD \
+ *.VHDL
+RECURSIVE = NO
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS = *
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH =
+INPUT_FILTER =
+FILTER_PATTERNS =
+FILTER_SOURCE_FILES = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = YES
+INLINE_SOURCES = YES
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION = NO
+REFERENCES_LINK_SOURCE = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX = NO
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_ALIGN_MEMBERS = YES
+GENERATE_HTMLHELP = NO
+GENERATE_DOCSET = NO
+DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_BUNDLE_ID = org.doxygen.Project
+HTML_DYNAMIC_SECTIONS = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+BINARY_TOC = NO
+TOC_EXPAND = NO
+DISABLE_INDEX = NO
+ENUM_VALUES_PER_LINE = 4
+GENERATE_TREEVIEW = NO
+TREEVIEW_WIDTH = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4wide
+EXTRA_PACKAGES =
+LATEX_HEADER =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = YES
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_LINKS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML = NO
+XML_OUTPUT = xml
+XML_SCHEMA =
+XML_DTD =
+XML_PROGRAMLISTING = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = YES
+EXPAND_ONLY_PREDEF = YES
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED =
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = NO
+MSCGEN_PATH =
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = YES
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+GROUP_GRAPHS = YES
+UML_LOOK = NO
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = YES
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = png
+DOT_PATH =
+DOTFILE_DIRS =
+DOT_GRAPH_MAX_NODES = 50
+MAX_DOT_GRAPH_DEPTH = 1000
+DOT_TRANSPARENT = YES
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
Modified: geanyminiscript/doc/gms_help.pdf
0 files changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online
Modified: geanyminiscript/src/Makefile.am
12 files changed, 12 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,12 @@
+include $(top_srcdir)/build/vars.build.mk
+
+if ENABLE_GEANYMINISCRIPT
+geanyplugins_LTLIBRARIES = geanyminiscript.la
+else
+EXTRA_LTLIBRARIES = geanyminiscript.la
+endif
+
+geanyminiscript_la_SOURCES = gms.c gms_gui.c
+geanyminiscript_la_LIBADD = $(COMMONLIBS)
+
+include $(top_srcdir)/build/cppcheck.mk
Modified: geanyminiscript/src/gms.c
312 files changed, 312 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,312 @@
+/*
+ * gms.c: miniscript plugin for geany editor
+ * Geany, a fast and lightweight IDE
+ *
+ * Copyright 2008 Pascal BURLOT <prublot(at)users(dot)sourceforge(dot)net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ */
+
+/**
+ * gms is a tool to apply a script filter on a text selection, or on
+ * the whole document, or all opened documents.
+ *
+ * note: the script filter could be : Unix shell, perl , python , sed ,awk ...
+ */
+
+#include <geanyplugin.h>
+
+/* headers */
+#include <stdlib.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+/* user header */
+#include "gms.h"
+#include "gms_gui.h"
+#include "gms_debug.h"
+
+
+GeanyPlugin *geany_plugin;
+GeanyData *geany_data;
+GeanyFunctions *geany_functions;
+
+
+/* Check that the running Geany supports the plugin API used below, and check
+ * for binary compatibility. */
+PLUGIN_VERSION_CHECK(100)
+
+/* All plugins must set name, description, version and author. */
+PLUGIN_SET_INFO(_("Mini Script"), _("A tool to apply a script filter on a text selection or current document(s)"),
+ "0.1" , _("Pascal BURLOT, a Geany user"))
+
+static GtkWidget *gms_item = NULL ;
+static gms_handle_t gms_hnd = NULL ;
+static gchar *gms_command = NULL ;
+
+
+/**
+ * \brief the function creates from the current selection to the input file
+ */
+static void create_selection_2_input_file( ScintillaObject *sci )
+{
+ gchar *contents = NULL;
+ gint size_buf = sci_get_selected_text_length(sci);
+
+ contents = GMS_G_MALLOC( gchar, size_buf + 1 ) ;
+ GMS_PNULL(contents) ;
+
+ sci_get_selected_text( sci ,contents );
+
+ g_file_set_contents(gms_get_in_filename(gms_hnd), contents, -1 , NULL );
+ GMS_G_FREE(contents);
+}
+
+/**
+ * \brief the function reads the result file
+ */
+static gchar *read_result_file( gchar *filename )
+{
+ gchar *utf8 = NULL;
+ gchar *contents = NULL;
+ GError *error = NULL ;
+ if (g_file_get_contents(filename, &contents, NULL, &error ))
+ {
+ if ( contents )
+ {
+ utf8 = g_locale_to_utf8 (contents, -1, NULL, NULL, NULL);
+ GMS_G_FREE(contents);
+ }
+ }
+ return utf8 ;
+}
+/**
+ * \brief the function select entirely the document
+ */
+static void select_entirely_doc( ScintillaObject *sci )
+{
+ gint size_buf = sci_get_length(sci);
+
+ sci_set_selection_start( sci , 0 ) ;
+ sci_set_selection_end( sci , size_buf ) ;
+}
+
+/**
+ * \brief the function updates the current document
+ */
+static void update_doc( ScintillaObject *sci, gchar * contents )
+{
+ if (contents==NULL) return ;
+ sci_replace_sel( sci, contents );
+}
+/**
+ * \brief the function deletes the tempory files
+ */
+static void delete_tmp_files()
+{
+ if( g_file_test( gms_get_in_filename(gms_hnd),G_FILE_TEST_EXISTS) == TRUE )
+ g_unlink( gms_get_in_filename(gms_hnd) ) ;
+ if( g_file_test( gms_get_out_filename(gms_hnd),G_FILE_TEST_EXISTS) == TRUE )
+ g_unlink( gms_get_out_filename(gms_hnd) ) ;
+ if( g_file_test( gms_get_filter_filename(gms_hnd),G_FILE_TEST_EXISTS) == TRUE )
+ g_unlink( gms_get_filter_filename(gms_hnd) ) ;
+}
+
+/**
+ * \brief the function updates the current document
+ */
+static gint run_filter( ScintillaObject *sci )
+{
+ int r , ret = 0 ;
+ gchar *result = NULL ;
+
+ gms_command = gms_get_str_command(gms_hnd);
+ r = system( gms_command ) ;
+ if ( r != 0 )
+ {
+ GtkWidget *dlg ;
+ result = read_result_file( gms_get_error_filename(gms_hnd) ) ;
+
+ dlg = gtk_message_dialog_new( GTK_WINDOW(geany->main_widgets->window),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ result,NULL);
+
+ gtk_dialog_run(GTK_DIALOG(dlg));
+ gtk_widget_destroy(GTK_WIDGET(dlg)) ;
+ ret = -1 ;
+ }
+ else
+ {
+ result = read_result_file( gms_get_out_filename(gms_hnd) ) ;
+
+ if ( gms_get_output_mode( gms_hnd) == OUT_CURRENT_DOC )
+ {
+ if ( gms_get_input_mode( gms_hnd) != IN_SELECTION )
+ select_entirely_doc( sci ) ;
+
+ update_doc( sci, result ) ;
+ }
+ else
+ {
+ document_new_file( NULL, NULL, result ) ;
+ }
+ }
+ GMS_G_FREE( result ) ;
+
+ return ret ;
+}
+
+/**
+ * \brief Callback when the menu item is clicked.
+ */
+static void item_activate(GtkMenuItem *menuitem, gpointer gdata)
+{
+ GeanyDocument *doc = document_get_current();
+ ScintillaObject *sci = doc->editor->sci ;
+ if ( gms_hnd == NULL )
+ return ;
+
+ if ( gms_dlg( gms_hnd ) == 0 )
+ return ;
+
+ gms_create_filter_file( gms_hnd ) ;
+
+ switch ( gms_get_input_mode(gms_hnd) )
+ {
+ case IN_CURRENT_DOC :
+ select_entirely_doc( sci ) ;
+ create_selection_2_input_file(sci) ;
+ run_filter( sci ) ;
+ delete_tmp_files() ;
+ break;
+ case IN_SELECTION :
+ create_selection_2_input_file(sci) ;
+ run_filter( sci ) ;
+ delete_tmp_files() ;
+ break;
+ case IN_DOCS_SESSION :
+ {
+ guint nb_doc = 0 , i=0;
+
+ /* find the opened document in the geany session */
+ while ( (doc = document_get_from_page(nb_doc))!=NULL ) nb_doc++;
+
+ /* For each document */
+ for( i=0; i<nb_doc;i++)
+ {
+ doc = document_get_from_page(i) ;
+ sci = doc->editor->sci ;
+ select_entirely_doc( sci ) ;
+ create_selection_2_input_file(sci) ;
+ if ( run_filter( sci ) )
+ break ; // if error then stop the loop
+ }
+ }
+ delete_tmp_files() ;
+ break;
+ default:
+ delete_tmp_files() ;
+ return ;
+ }
+
+}
+
+ /**
+ * \brief the function initializes the localization for the gms plugin
+ */
+static void locale_init(void)
+{
+#ifdef ENABLE_NLS
+ gchar *locale_dir = NULL;
+
+#ifdef HAVE_LOCALE_H
+ setlocale(LC_ALL, "");
+#endif
+
+#ifdef G_OS_WIN32
+ gchar *install_dir = g_win32_get_package_installation_directory("geany", NULL);
+ /* e.g. C:\Program Files\geany\lib\locale */
+ locale_dir = g_strconcat(install_dir, "\\share\\locale", NULL);
+ g_free(install_dir);
+#else
+ locale_dir = g_strdup(LOCALEDIR);
+#endif
+
+ bindtextdomain(GETTEXT_PACKAGE, locale_dir);
+ bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+ textdomain(GETTEXT_PACKAGE);
+ g_free(locale_dir);
+#endif
+}
+
+
+/**
+ * \brief Called by Geany to initialize the plugin.
+ * \note data is the same as geany_data.
+ */
+void plugin_init(GeanyData *data)
+{
+ locale_init();
+
+ gms_hnd = gms_new(geany->main_widgets->window,
+ data->interface_prefs->editor_font ,
+ data->editor_prefs->indentation->width,
+ geany->app->configdir
+ ) ;
+
+ /* Add an item to the Tools menu */
+ gms_item = gtk_menu_item_new_with_mnemonic(_("_Mini-Script"));
+ gtk_widget_show(gms_item);
+ gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), gms_item);
+ g_signal_connect(gms_item, "activate", G_CALLBACK(item_activate), NULL);
+
+ /* make the menu item sensitive only when documents are open */
+ ui_add_document_sensitive(gms_item);
+
+}
+
+
+/* Called by Geany to show the plugin's configure dialog. This function is always called after
+ * plugin_init() was called.
+ * You can omit this function if the plugin doesn't need to be configured.
+ * Note: parent is the parent window which can be used as the transient window for the created
+ * dialog. */
+#if 1
+GtkWidget *plugin_configure(GtkDialog *dialog)
+{
+ g_signal_connect(dialog, "response", G_CALLBACK(on_gms_configure_response), gms_hnd );
+ return gms_configure_gui( gms_hnd ) ;
+}
+#endif
+
+/**
+ * \brief Called by Geany before unloading the plugin.
+ */
+void plugin_cleanup(void)
+{
+ if ( gms_hnd != NULL )
+ gms_delete( &gms_hnd ) ;
+
+ /* remove the menu item added in plugin_init() */
+ gtk_widget_destroy(gms_item);
+}
Modified: geanyminiscript/src/gms.h
33 files changed, 33 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,33 @@
+/*
+ * gms.h: miniscript plugin for geany editor
+ * Geany, a fast and lightweight IDE
+ *
+ * Copyright 2008 Pascal BURLOT <prublot(at)users(dot)sourceforge(dot)net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ */
+
+#ifndef GMS_H
+#define GMS_H
+
+
+extern GeanyPlugin *geany_plugin;
+extern GeanyData *geany_data;
+extern GeanyFunctions *geany_functions;
+
+
+#endif /* GMS_H */
Modified: geanyminiscript/src/gms_debug.h
137 files changed, 137 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,137 @@
+/*
+ * gms_debug.h: miniscript plugin for geany editor
+ * Geany, a fast and lightweight IDE
+ *
+ * Copyright 2008 Pascal BURLOT <prublot(at)users(dot)sourceforge(dot)net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ */
+
+/*******************************************************************************
+ * \file gms_debug.h
+ * \brief macros used for debugging
+ */
+
+#ifndef GMS_DEBUG_H
+#define GMS_DEBUG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//! \brief Macro to glib allocation (glib)
+#define GMS_G_MALLOC(t,n) ((t *) g_malloc(sizeof(t)*n))
+//! \brief Macro to glib allocation (glib) with zero filling
+#define GMS_G_MALLOC0(t,n) ((t *) g_malloc0(sizeof(t)*n))
+
+//! \brief Macro to free (glib)
+#define GMS_G_FREE(p) { g_free(p); p=NULL; }
+
+//! \brief Macro pour la liberation des PangoFontDescription
+#define GMS_FREE_FONTDESC(p) if ( p != NULL ) { pango_font_description_free (p); p=NULL; }
+
+//! \brief Macro for freeing a GtkWidget structure
+#define GMS_FREE_WIDGET(p) if ( p != NULL ) { gtk_widget_destroy(GTK_WIDGET(p)); p=NULL; }
+
+
+#ifdef GMS_DEBUG
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#define GMS_CALL(f) \
+ \
+ if (((int)(f)) == -1) \
+ { \
+ int err = errno; \
+ char *strerr = strerror(err); \
+ \
+ fprintf(stderr, \
+ "GMS_CALL(%s): Error at line %u, file %s: %s (errno=%d)\n", \
+ #f, __LINE__, __FILE__, \
+ strerr == NULL ? "Bad error number" : strerr, \
+ err); \
+ abort(); \
+ }
+
+#define GMS_PNULL(pp) \
+ \
+ if ( (pp) == NULL) \
+ { \
+ fprintf(stderr, \
+ "GMS_PNULL(%s): null pointer => %s at line %u, file %s: \n",\
+ #pp, __FUNCTION__, __LINE__, __FILE__ ); \
+ abort(); \
+ }
+
+#define GMS_FOPEN(pp,...) \
+ pp=fopen(__VA_ARGS__) ; \
+ if ( (pp) == NULL) \
+ { \
+ int err = errno; \
+ char *strerr = strerror(err); \
+ \
+ fprintf(stderr, \
+ "%s=fopen%s: \n\tError at line %u, file %s: %s (errno=%d)\n",\
+ #pp, #__VA_ARGS__, __LINE__, __FILE__ , \
+ strerr == NULL ? "Bad error number" : strerr, \
+ err); \
+ abort(); \
+ }
+
+#define GMS_ASSERT(cc) \
+ \
+ if (!(cc)) \
+ { \
+ fprintf(stderr, \
+ "GMS_ASSERT(%s): %s at line %u, file %s\n", \
+ #cc, __FUNCTION__, __LINE__, __FILE__); \
+ abort(); \
+ }
+
+#define GMS_WARNING(cc) \
+ \
+ if ((cc)) \
+ { \
+ fprintf(stderr, \
+ "GMS_WARNING(%s): %s at line %u, file %s\n", \
+ #cc, __FUNCTION__, __LINE__, __FILE__); \
+ }
+
+#define GMS_FINFO(fd,...) fprintf(fd, "INFO:"__VA_ARGS__)
+#define GMS_INFO(...) printf("INFO:"__VA_ARGS__)
+
+#else
+
+#define GMS_CALL(f) (f)
+#define GMS_ASSERT(cc)
+#define GMS_WARNING(cc)
+#define GMS_PNULL(pp)
+#define GMS_FOPEN(pp,...) pp=fopen(__VA_ARGS__)
+#define GMS_FINFO(fd,...)
+#define GMS_INFO(...)
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GMS_DEBUG_H */
Modified: geanyminiscript/src/gms_gui.c
784 files changed, 784 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,784 @@
+/*
+ * gms_gui.c: miniscript plugin for geany editor
+ * Geany, a fast and lightweight IDE
+ *
+ * Copyright 2008 Pascal BURLOT <prublot(at)users(dot)sourceforge(dot)net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ */
+
+/**
+ * \file gms_gui.c
+ * \brief it is the graphical user interface of the geany miniscript plugin
+ */
+#include "geany.h"
+
+#include <glib/gstdio.h>
+#include <glib/gprintf.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <pango/pango.h>
+
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+/* geany headers */
+#include "support.h"
+#include "plugindata.h"
+#include "editor.h"
+#include "document.h"
+#include "prefs.h"
+#include "utils.h"
+#include "ui_utils.h"
+
+/* user header */
+#include "gms_debug.h"
+#include "gms.h"
+#include "gms_gui.h"
+
+/*
+ * *****************************************************************************
+ * Local Macro and new local type definition
+ */
+
+//! \brief Number of script type
+#define GMS_NB_TYPE_SCRIPT 6
+//! \brief Number of char of the line buffer
+#define GMS_MAX_LINE 127
+
+//! \brief macro uset to cast a gms_handle_t to a gms_private_t pointer
+#define GMS_PRIVATE(p) ((gms_private_t *) p)
+
+//! \brief definition of gui data structure
+typedef struct {
+ GtkWidget *dlg ; //!< Dialog widget
+ GtkWidget *cb_st ; //!< Script type combobox
+ GtkWidget *t_script ; //!< script text
+ GtkWidget *rb_select ; //!< radio button : filtering the selection
+ GtkWidget *rb_doc ; //!< radio button : filtering the current document
+ GtkWidget *rb_session ; //!< radio button : filtering all documents of the current session
+ GtkWidget *rb_cdoc ; //!< radio button : the filter output is in the current document
+ GtkWidget *rb_ndoc ; //!< radio button : the filter output is in the current document
+
+ GtkWidget *e_script[GMS_NB_TYPE_SCRIPT] ; //!< entry for script configuration
+ GtkTooltips *tips ; //!< tips of button of the top bar
+ PangoFontDescription *fontdesc;
+} gms_gui_t ;
+
+//! \brief definition of mini-script data structure
+typedef struct {
+ int id ; //!< ID of the instance
+ gchar *config_dir ; //!< path of configuration files
+ GString *cmd ; //!< Command string of filtering
+ GtkWidget *mw ; //!< MainWindow of Geany
+ gms_gui_t w ; //!< Widgets of minis-script gui
+ GString *input_name ; //!< filename of the filter input
+ GString *filter_name ; //!< filter filename
+ GString *output_name ; //!< filename of the filter output
+ GString *error_name ; //!< errors filename
+ GString *script_cmd[GMS_NB_TYPE_SCRIPT]; //!< array of script command names
+} gms_private_t ;
+/*
+ * *****************************************************************************
+ * Global variables
+ */
+
+/*
+ * *****************************************************************************
+ * Local variables
+ */
+static unsigned char inst_cnt = 0 ; //!< counter of instance
+static gchar bufline[GMS_MAX_LINE+1]; //!< buffer used to read the configuration file
+
+static const gchar pref_filename[] = "gms.rc" ; //!< preferences filename
+static const gchar prefix_filename[] = "/tmp/gms" ; //!< prefix filename
+static const gchar in_ext[] = ".in" ; //!< filename extension for the input file
+static const gchar out_ext[] = ".out" ; //!< filename extension for the output file
+static const gchar filter_ext[] = ".filter" ; //!< filename extension for the filter file
+static const gchar error_ext[] = ".error" ; //!< filename extension for the error file
+
+///< \brief It's the default script command
+static const gchar *default_script_cmd[GMS_NB_TYPE_SCRIPT] = {
+ "${SHELL} ", "perl ", "python ", "sed -f ", "awk -f ", "cat - " };
+
+///< \brief It's the label for the script command combobox
+const gchar *label_script_cmd[GMS_NB_TYPE_SCRIPT] = {
+ "Shell", "Perl", "Python", "Sed", "Awk", "User" };
+
+///< \brief It's the information message about geany mini script
+const char *geany_info = "<b>GMS : Geany Mini-Script filter Plugin</b>\n"
+"This plugin is a tool to apply a script filter on :\n"
+" o the text selection,\n"
+" o the current document,\n"
+" o all documents of the current session.\n"
+"\n"
+"The filter type can be : \n"
+" o Unix shell script, \n"
+" o perl script, \n"
+" o python script, \n"
+" o sed commands,\n"
+" o awk script.\n"
+"\n"
+"<b>AUTHOR</b>\n"
+" Written by Pascal BURLOT (December,2008)\n"
+"\n"
+"<b>LICENSE:</b>\n"
+"This program is free software; you can redistribute\n"
+"it and/or modify it under the terms of the GNU \n"
+"General Public License as published by the Free\n"
+"Software Foundation; either version 2 of the License,\n"
+"or (at your option) any later version." ;
+
+/*
+ * *****************************************************************************
+ * Local functions
+ */
+
+/**
+ * \brief the function loads the preferences file
+ */
+static void load_prefs_file(
+ gms_private_t *this ///< pointer of mini-script data structure
+ )
+{
+ GString *gms_pref = g_string_new("") ;
+
+ g_string_printf(gms_pref , "%s/plugins/%s", this->config_dir,pref_filename );
+
+ if ( g_file_test( gms_pref->str, G_FILE_TEST_EXISTS ) == TRUE )
+ {
+ FILE *fd = g_fopen( gms_pref->str, "r" ) ;
+ if ( fd != NULL )
+ {
+ int ii ;
+ for ( ii = 0 ; ii <GMS_NB_TYPE_SCRIPT ;ii++ )
+ {
+ if ( fgets(bufline,GMS_MAX_LINE,fd) == NULL )
+ break ;
+ if ( fgets(bufline,GMS_MAX_LINE,fd) == NULL )
+ break ;
+ bufline[strlen(bufline)-1] = 0 ;
+ g_string_assign(this->script_cmd[ii] , bufline ) ;
+ }
+ fclose(fd) ;
+ }
+ }
+ g_string_free( gms_pref , TRUE) ;
+}
+
+/**
+ * \brief the function saves the preferences file
+ */
+static void save_prefs_file(
+ gms_private_t *this ///< pointer of mini-script data structure
+ )
+{
+ GString *gms_pref = g_string_new("");
+
+ g_string_printf(gms_pref , "%s/plugins", this->config_dir );
+
+ if ( g_file_test( this->config_dir, G_FILE_TEST_EXISTS ) != TRUE )
+ g_mkdir( this->config_dir, 0755 ) ;
+
+ if ( g_file_test( gms_pref->str, G_FILE_TEST_EXISTS ) != TRUE )
+ g_mkdir( gms_pref->str, 0755 ) ;
+
+ if ( g_file_test( gms_pref->str, G_FILE_TEST_IS_DIR ) == TRUE )
+ {
+ FILE *fd ;
+ g_string_append_c( gms_pref, '/' );
+ g_string_append( gms_pref, pref_filename );
+
+ fd = g_fopen( gms_pref->str, "w" ) ;
+ if ( fd != NULL )
+ {
+ int ii ;
+ for ( ii = 0 ; ii <GMS_NB_TYPE_SCRIPT ;ii++ )
+ fprintf(fd,"# %s\n%s\n",label_script_cmd[ii],this->script_cmd[ii]->str);
+
+ fclose(fd) ;
+ }
+ }
+ g_string_free( gms_pref , TRUE) ;
+}
+
+/**
+ * \brief Callback associated to a button "new"
+ */
+static void gms_cb_new(
+ GtkWidget *w ,
+ gpointer data
+ )
+{
+ gms_private_t *this = GMS_PRIVATE(data) ;
+ GtkTextIter start;
+ GtkTextIter end;
+ GtkTextBuffer* text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW( this->w.t_script ) );
+ gtk_text_buffer_get_start_iter(text_buffer,&start);
+ gtk_text_buffer_get_end_iter(text_buffer,&end);
+ gtk_text_buffer_delete( text_buffer ,&start , &end) ;
+}
+
+/**
+ * \brief Callback associated to a button "load"
+ */
+static void gms_cb_load(
+ GtkWidget *w ,
+ gpointer data
+ )
+{
+ gms_private_t *this = GMS_PRIVATE(data) ;
+ GtkWidget *p_dialog ;
+
+ p_dialog = gtk_file_chooser_dialog_new (_("Load Mini-Script File"),
+ GTK_WINDOW(this->mw) ,
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+ if ( p_dialog == NULL )
+ return ;
+
+ if (gtk_dialog_run (GTK_DIALOG (p_dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ gchar *filename = NULL;
+
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (p_dialog));
+
+ if(filename != NULL)
+ {
+ gchar *contents = NULL;
+ GError *error = NULL ;
+
+ if (g_file_get_contents(filename, &contents, NULL, &error ))
+ {
+ gchar *utf8 = NULL;
+ GtkTextIter start;
+ GtkTextIter end;
+ GtkTextBuffer *text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW( this->w.t_script ) );
+
+ /* destroy the old text of buffer */
+ gtk_text_buffer_get_start_iter(text_buffer,&start);
+ gtk_text_buffer_get_end_iter(text_buffer,&end);
+ gtk_text_buffer_delete( text_buffer ,&start , &end) ;
+
+ /* Copy file contents in GtkTextView */
+ gtk_text_buffer_get_start_iter(text_buffer,&start);
+ utf8 = g_locale_to_utf8 (contents, -1, NULL, NULL, NULL);
+ GMS_G_FREE(contents);
+ gtk_text_buffer_insert (text_buffer, &start, utf8, -1);
+ GMS_G_FREE(utf8);
+ }
+ GMS_G_FREE(filename);
+ }
+ }
+ gtk_widget_destroy (p_dialog);
+}
+
+
+/**
+ * \brief Callback associated to a button "load"
+ */
+static void gms_cb_save(
+ GtkWidget *w ,
+ gpointer data
+ )
+{
+ gms_private_t *this = GMS_PRIVATE(data) ;
+ GtkWidget *p_dialog ;
+
+ p_dialog = gtk_file_chooser_dialog_new (_("Save Mini-Script File"),
+ GTK_WINDOW(this->mw) ,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+ if ( p_dialog == NULL )
+ return ;
+
+ if (gtk_dialog_run (GTK_DIALOG (p_dialog)) == GTK_RESPONSE_ACCEPT)
+ {
+ gchar *filename = NULL;
+
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (p_dialog));
+
+ if(filename != NULL)
+ {
+ gchar *contents = NULL;
+ GtkTextIter start;
+ GtkTextIter end;
+ GtkTextBuffer *text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW( this->w.t_script ) );
+ gtk_text_buffer_get_start_iter(text_buffer,&start);
+ gtk_text_buffer_get_end_iter(text_buffer,&end);
+ contents=gtk_text_buffer_get_text(text_buffer,&start,&end,FALSE);
+ g_file_set_contents(filename, contents, -1 , NULL );
+ GMS_G_FREE(contents);
+ GMS_G_FREE(filename);
+ }
+ }
+ gtk_widget_destroy (p_dialog);
+}
+/**
+ * \brief Callback associated to a button "load"
+ */
+static void gms_cb_info(
+ GtkWidget *w ,
+ gpointer data
+ )
+{
+ gms_private_t *this = GMS_PRIVATE(data) ;
+
+ GtkWidget *dlg = gtk_message_dialog_new_with_markup( GTK_WINDOW(this->mw),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE,
+ _(geany_info),NULL );
+
+ gtk_dialog_run(GTK_DIALOG(dlg));
+ GMS_FREE_WIDGET(dlg);
+}
+
+/*
+ * *****************************************************************************
+ * Global functions
+ */
+
+static GtkWidget *new_button_from_stock( gboolean withtext, const gchar *stock_id )
+{
+ GtkWidget *button ;
+ if ( withtext )
+ button = gtk_button_new_from_stock( stock_id ) ;
+ else
+ {
+ button = gtk_button_new() ;
+ gtk_container_add( GTK_CONTAINER(button),gtk_image_new_from_stock(stock_id , GTK_ICON_SIZE_SMALL_TOOLBAR ) );
+ }
+ return button ;
+}
+
+/**
+ * \brief the function initializes the mini-script gui structure.
+ */
+gms_handle_t gms_new(
+ GtkWidget *mw , ///< Geany Main windows
+ gchar *font , ///< Geany editor font
+ gint tabs , ///< Geany editor tabstop
+ gchar *config_dir ///< Geany Configuration Path
+ )
+{
+ gms_private_t *this = GMS_G_MALLOC0(gms_private_t,1);
+
+ if ( this != NULL )
+ {
+ GtkBox *vb_dlg ; //!< vbox of dialog box
+ GtkWidget *hb_st ; //!< Hbox for script type
+ GtkWidget *b_open ; //!< button for loading a existing script
+ GtkWidget *b_save ; //!< button for saving the current script
+ GtkWidget *b_new ; //!< button for erasing the script text box
+ GtkWidget *b_info ; //!< button for info box
+ GtkWidget *sb_script ; //!< Scroll box for script text
+ GtkWidget *hb_rb ; //!< Hbox for radio buttons
+ GtkWidget *f_rbi ; //!< frame for radio buttons : input filter
+ GtkWidget *hb_rbi ; //!< Hbox for radio buttons
+ GtkWidget *f_rbo ; //!< frame for radio buttons : input filter
+ GtkWidget *hb_rbo ; //!< Hbox for radio buttons
+
+ PangoTabArray* tabsarray ;
+ GdkScreen *ecran = gdk_screen_get_default();
+ gint width = gdk_screen_get_width(ecran) ;
+ gint height = gdk_screen_get_height(ecran) ;
+ gint i , size_pid ;
+ gboolean mode_txt_icon = FALSE ;
+
+ this->mw = mw ;
+ this->cmd = g_string_new("");
+ this->config_dir =config_dir ;
+
+ this->w.dlg = gtk_dialog_new_with_buttons(
+ _("Mini-Script Filter"),
+ GTK_WINDOW( mw ),
+ GTK_DIALOG_DESTROY_WITH_PARENT|GTK_DIALOG_MODAL,
+ GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,
+ GTK_STOCK_EXECUTE,GTK_RESPONSE_APPLY,
+ NULL
+ ) ;
+ vb_dlg = GTK_BOX (GTK_DIALOG(this->w.dlg)->vbox) ;
+
+ if ( width > 800 )
+ width = 800 ;
+
+ if ( height > 600 )
+ height = 600 ;
+
+ gtk_window_set_default_size( GTK_WINDOW(this->w.dlg) , width/2 , height/2 ) ;
+
+
+ this->w.tips = gtk_tooltips_new ();
+
+ // Hbox : type de script
+ hb_st = gtk_hbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (hb_st), 0);
+ gtk_box_pack_start( vb_dlg , hb_st, FALSE, FALSE, 0);
+
+ b_new = new_button_from_stock( mode_txt_icon, GTK_STOCK_CLEAR ) ;
+ gtk_box_pack_start( GTK_BOX (hb_st), b_new, FALSE, FALSE, 0);
+ g_signal_connect (G_OBJECT (b_new), "clicked",G_CALLBACK (gms_cb_new), (gpointer) this );
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (this->w.tips), b_new, _("Clear the mini-script window") , "");
+
+ b_open = new_button_from_stock( mode_txt_icon, GTK_STOCK_OPEN ) ;
+ gtk_box_pack_start( GTK_BOX (hb_st), b_open, FALSE, FALSE, 0);
+ g_signal_connect (G_OBJECT (b_open), "clicked",G_CALLBACK (gms_cb_load), (gpointer) this );
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (this->w.tips), b_open, _("Load a mini-script into this window"), "");
+
+ b_save = new_button_from_stock( mode_txt_icon, GTK_STOCK_SAVE_AS ) ;
+ gtk_box_pack_start( GTK_BOX (hb_st),b_save, FALSE, FALSE, 0);
+ g_signal_connect (G_OBJECT (b_save), "clicked",G_CALLBACK (gms_cb_save), (gpointer) this );
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (this->w.tips), b_save, _("Save the mini-script into a file"), "");
+
+ b_info = new_button_from_stock( mode_txt_icon, GTK_STOCK_INFO ) ;
+ gtk_box_pack_end( GTK_BOX (hb_st), b_info, FALSE, FALSE, 0);
+ g_signal_connect (G_OBJECT (b_info), "clicked",G_CALLBACK (gms_cb_info), (gpointer) this );
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (this->w.tips), b_info, _("Display a information about the mini-script plugin"), "");
+
+ this->w.cb_st = gtk_combo_box_new_text() ;
+ for ( i=0;i<GMS_NB_TYPE_SCRIPT ; i++ )
+ gtk_combo_box_append_text( GTK_COMBO_BOX(this->w.cb_st), label_script_cmd[i] ) ;
+ gtk_combo_box_set_active(GTK_COMBO_BOX(this->w.cb_st), 0 );
+ gtk_box_pack_start(GTK_BOX(hb_st), this->w.cb_st, FALSE, FALSE, 0);
+ GTK_WIDGET_SET_FLAGS (this->w.cb_st, GTK_CAN_DEFAULT);
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (this->w.tips), this->w.cb_st, _("select the mini-script type"), "");
+
+ // Scroll Box : script
+ sb_script = gtk_scrolled_window_new (NULL,NULL);
+ gtk_container_set_border_width (GTK_CONTAINER (sb_script), 0);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sb_script),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+ gtk_box_pack_start(vb_dlg, sb_script, TRUE, TRUE, 0);
+
+ this->w.t_script = gtk_text_view_new();
+ this->w.fontdesc = pango_font_description_from_string(font);
+ gtk_widget_modify_font( this->w.t_script, this->w.fontdesc );
+ gtk_scrolled_window_add_with_viewport ( GTK_SCROLLED_WINDOW (sb_script), this->w.t_script);
+ { // find the width of the space character
+ gint largeur,hauteur ;
+ PangoLayout *layout = gtk_widget_create_pango_layout (this->w.t_script, " ");
+ pango_layout_set_font_description (layout, this->w.fontdesc);
+ pango_layout_get_pixel_size(layout, &largeur, &hauteur);
+ tabs = tabs*largeur ;
+ g_object_unref (layout);
+ }
+ tabsarray = pango_tab_array_new_with_positions ( 1, TRUE , PANGO_TAB_LEFT, tabs ) ;
+ gtk_text_view_set_tabs(GTK_TEXT_VIEW(this->w.t_script),tabsarray);
+
+ // Hbox : Radio bouttons for choosing the input/output:
+ hb_rb = gtk_hbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (hb_rb), 0);
+ gtk_box_pack_start( vb_dlg, hb_rb, FALSE, FALSE, 0);
+
+ // Hbox : Radio bouttons for choosing the input:
+ // selection/current document/all documents of the current session
+ f_rbi = gtk_frame_new (_("filter input") );
+ gtk_box_pack_start( GTK_BOX (hb_rb), f_rbi, FALSE, FALSE, 0);
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (this->w.tips), f_rbi, _("select the input of mini-script filter"), "");
+
+ hb_rbi = gtk_hbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER (hb_rbi), 0);
+ gtk_container_add (GTK_CONTAINER (f_rbi), hb_rbi );
+
+ this->w.rb_select = gtk_radio_button_new_with_label( NULL, _("selection") ) ;
+ this->w.rb_doc = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON( this->w.rb_select) ,_("document") ) ;
+ this->w.rb_session = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON( this->w.rb_select) ,_("session") ) ;
+ gtk_box_pack_start(GTK_BOX(hb_rbi), this->w.rb_select, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hb_rbi), this->w.rb_doc, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hb_rbi), this->w.rb_session, TRUE, TRUE, 0);
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(this->w.rb_doc) ,TRUE) ;
+
+
+ // Hbox : Radio bouttons for choosing the output:
+ // current document/ or new document
+ f_rbo = gtk_frame_new (_("filter output") );
+ gtk_box_pack_start( GTK_BOX(hb_rb), f_rbo, FALSE, FALSE, 0);
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (this->w.tips), f_rbo, _("select the output of mini-script filter"), "");
+
+ hb_rbo = gtk_hbox_new (FALSE, 0);
+ gtk_container_set_border_width (GTK_CONTAINER(hb_rbo), 0);
+ gtk_container_add (GTK_CONTAINER(f_rbo), hb_rbo );
+
+ this->w.rb_cdoc = gtk_radio_button_new_with_label( NULL, _("Current Doc.") ) ;
+ this->w.rb_ndoc = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON( this->w.rb_cdoc) ,_("New Doc.") ) ;
+ gtk_box_pack_start(GTK_BOX(hb_rbo), this->w.rb_cdoc, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hb_rbo), this->w.rb_ndoc, TRUE, TRUE, 0);
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(this->w.rb_ndoc) ,TRUE) ;
+
+ gtk_widget_show_all(GTK_WIDGET(vb_dlg));
+ this->id = ++inst_cnt ;
+
+ this->input_name = g_string_new(prefix_filename) ;
+ this->filter_name= g_string_new(prefix_filename) ;
+ this->output_name= g_string_new(prefix_filename) ;
+ this->error_name = g_string_new(prefix_filename) ;
+
+ size_pid = (gint)(2*sizeof(pid_t)) ;
+ g_string_append_printf( this->input_name,"%02x_%0*x%s",
+ this->id,size_pid, getpid(), in_ext ) ;
+
+ g_string_append_printf(this->filter_name,"%02x_%0*x%s",
+ this->id,size_pid, getpid(), filter_ext ) ;
+
+ g_string_append_printf(this->output_name,"%02x_%0*x%s",
+ this->id,size_pid, getpid(), out_ext ) ;
+
+ g_string_append_printf(this->error_name,"%02x_%0*x%s",
+ this->id,size_pid, getpid(), error_ext ) ;
+
+ for ( i=0;i<GMS_NB_TYPE_SCRIPT ; i++ )
+ {
+ this->script_cmd[i]=g_string_new(default_script_cmd[i] ) ;
+ this->w.e_script[i]=NULL;
+ }
+ load_prefs_file(this) ;
+
+ }
+
+ return GMS_HANDLE(this) ;
+}
+/**
+ * \brief the function destroys the mini-script gui structure.
+ */
+
+void gms_delete(
+ gms_handle_t *hnd ///< handle of mini-script data structure
+ )
+{
+ if ( hnd != NULL )
+ {
+ gms_private_t *this = GMS_PRIVATE( *hnd ) ;
+ gint i ;
+ gboolean flag = TRUE ;
+
+ GMS_FREE_FONTDESC(this->w.fontdesc );
+ GMS_FREE_WIDGET(this->w.dlg);
+
+ g_string_free( this->input_name ,flag) ;
+ g_string_free( this->output_name ,flag) ;
+ g_string_free( this->filter_name ,flag) ;
+ g_string_free( this->cmd ,flag) ;
+
+ for ( i=0;i<GMS_NB_TYPE_SCRIPT ; i++ )
+ g_string_free(this->script_cmd[i] ,flag) ;
+
+ GMS_G_FREE( this ) ;
+ }
+}
+
+/**
+ * \brief the function runs the mini-script dialog.
+ */
+int gms_dlg(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ gint ret = 0 ;
+
+ if ( this == NULL )
+ return 0 ;
+
+ gtk_widget_show(this->w.dlg);
+ ret = gtk_dialog_run(GTK_DIALOG(this->w.dlg));
+ gtk_widget_hide(this->w.dlg);
+
+ if ( ret == GTK_RESPONSE_APPLY )
+ return 1 ;
+ else
+ return 0 ;
+}
+
+/**
+ * \brief the function get the input mode.
+ */
+gms_input_t gms_get_input_mode(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ gms_input_t mode = IN_CURRENT_DOC ;
+
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(this->w.rb_select) ) == TRUE )
+ mode = IN_SELECTION ;
+ else if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(this->w.rb_session) ) == TRUE )
+ mode = IN_DOCS_SESSION ;
+
+ return mode ;
+}
+
+/**
+ * \brief the function get the output mode.
+ */
+gms_output_t gms_get_output_mode(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ gms_output_t mode = OUT_CURRENT_DOC ;
+
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(this->w.rb_ndoc) ) == TRUE )
+ mode = OUT_NEW_DOC ;
+
+ return mode ;
+}
+
+/**
+ * \brief the function get the input filename for filter input.
+ */
+gchar *gms_get_in_filename(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ return this->input_name->str ;
+}
+
+/**
+ * \brief the function get the output filename for filter result.
+ */
+gchar *gms_get_out_filename(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ return this->output_name->str ;
+}
+
+/**
+ * \brief the function get the output filename for filter script.
+ */
+gchar *gms_get_filter_filename( gms_handle_t hnd )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ return this->filter_name->str ;
+}
+
+/**
+ * \brief the function get the error filename for filter script.
+ */
+gchar *gms_get_error_filename(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ return this->error_name->str ;
+}
+
+/**
+ * \brief the function creates the filter file.
+ */
+void gms_create_filter_file(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ gchar *contents = NULL;
+ GtkTextIter start;
+ GtkTextIter end;
+ GtkTextBuffer *text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW( this->w.t_script ) );
+
+ gtk_text_buffer_get_start_iter(text_buffer,&start);
+ gtk_text_buffer_get_end_iter(text_buffer,&end);
+ contents=gtk_text_buffer_get_text(text_buffer,&start,&end,FALSE);
+ g_file_set_contents(this->filter_name->str, contents, -1 , NULL );
+ GMS_G_FREE(contents);
+}
+
+/**
+ * \brief the function creates the command string.
+ */
+gchar *gms_get_str_command(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+ gint ii_script = gtk_combo_box_get_active(GTK_COMBO_BOX(this->w.cb_st) ) ;
+
+ g_string_printf( this->cmd,"cat %s | %s %s > %s 2> %s",
+ this->input_name->str,
+ this->script_cmd[ii_script]->str,
+ this->filter_name->str,
+ this->output_name->str,
+ this->error_name->str );
+ return this->cmd->str ;
+}
+
+/**
+ * \brief the function creates the configuration gui.
+ */
+
+GtkWidget *gms_configure_gui(
+ gms_handle_t hnd ///< handle of mini-script data structure
+ )
+{
+ gms_private_t *this = GMS_PRIVATE( hnd ) ;
+
+ volatile gint ii ;
+ GtkWidget *vb_pref ; //!< vbox for mini-script configuration
+ GtkWidget *f_script ; //!< frame for configuration script
+ GtkWidget *t_script ; //!< table for configuration script
+ GtkWidget *w ;
+
+ vb_pref= gtk_vbox_new(FALSE, 6);
+ f_script = gtk_frame_new (_("script configuration") );
+ gtk_box_pack_start( GTK_BOX (vb_pref), f_script, FALSE, FALSE, 0);
+
+ t_script = gtk_table_new( GMS_NB_TYPE_SCRIPT ,3,FALSE) ;
+ gtk_container_add (GTK_CONTAINER (f_script), t_script );
+
+ for ( ii = 0 ; ii <GMS_NB_TYPE_SCRIPT ;ii++ )
+ {
+ w = gtk_label_new(label_script_cmd[ii]);
+ gtk_table_attach_defaults(GTK_TABLE(t_script),w, 0,1,ii,ii+1 );
+
+ this->w.e_script[ii] = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(this->w.e_script[ii]), this->script_cmd[ii]->str);
+ gtk_table_attach_defaults(GTK_TABLE(t_script),this->w.e_script[ii], 1,2,ii,ii+1 );
+ }
+
+ gtk_widget_show_all(vb_pref);
+ return vb_pref ;
+}
+
+/**
+ * \brief Callback associated to a button "new"
+ */
+void on_gms_configure_response(GtkDialog *dialog, gint response, gpointer user_data )
+{
+ if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY)
+ {
+ int ii ;
+ gms_private_t *this = GMS_PRIVATE(user_data) ;
+
+ for ( ii = 0 ; ii <GMS_NB_TYPE_SCRIPT ;ii++ )
+ if (this->w.e_script[ii]!=NULL )
+ g_string_assign( this->script_cmd[ii] , gtk_entry_get_text(GTK_ENTRY(this->w.e_script[ii])));
+ save_prefs_file(this);
+ }
+}
Modified: geanyminiscript/src/gms_gui.h
56 files changed, 56 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,56 @@
+/*
+ * gms_gui.h: miniscript plugin for geany editor
+ * Geany, a fast and lightweight IDE
+ *
+ * Copyright 2008 Pascal BURLOT <prublot(at)users(dot)sourceforge(dot)net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ */
+#ifndef GMS_GUI_H
+#define GMS_GUI_H
+
+#define GMS_HANDLE(p) ((gms_handle_t *) p)
+typedef void* gms_handle_t ;
+
+typedef enum {
+ IN_SELECTION =0,
+ IN_CURRENT_DOC =1,
+ IN_DOCS_SESSION =3
+} gms_input_t ;
+
+typedef enum {
+ OUT_CURRENT_DOC =0,
+ OUT_NEW_DOC =1
+} gms_output_t ;
+
+gms_handle_t gms_new( GtkWidget *mw, gchar *font, gint tabs, gchar *config_dir);
+void gms_delete( gms_handle_t *hnd );
+int gms_dlg( gms_handle_t hnd ) ;
+gchar *gms_get_in_filename( gms_handle_t hnd ) ;
+gchar *gms_get_out_filename( gms_handle_t hnd ) ;
+gchar *gms_get_filter_filename( gms_handle_t hnd ) ;
+gchar *gms_get_error_filename( gms_handle_t hnd ) ;
+void gms_create_filter_file( gms_handle_t hnd ) ;
+gchar *gms_get_str_command( gms_handle_t hnd ) ;
+gms_input_t gms_get_input_mode( gms_handle_t hnd );
+gms_output_t gms_get_output_mode( gms_handle_t hnd );
+
+GtkWidget *gms_configure_gui( gms_handle_t hnd );
+void on_gms_configure_response( GtkDialog *dialog, gint response, gpointer user_data) ;
+
+#endif /* GMS_GUI_H */
+
Modified: geanyminiscript/wscript_build
29 files changed, 29 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+#
+# WAF build script for geany-plugins - Addons
+#
+# Copyright 2010-2011 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# $Id$
+
+from build.wafutils import build_plugin
+
+
+name = 'GeanyMiniScript'
+includes = ['geanyminiscript/src']
+
+build_plugin(bld, name, includes=includes)
Modified: geanyminiscript/wscript_configure
0 files changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online
Modified: po/POTFILES.in
7 files changed, 6 insertions(+), 1 deletions(-)
===================================================================
@@ -127,6 +127,12 @@ geanylua/glspi_app.c
# GeanyMacro
geanymacro/src/geanymacro.c
+# GeanyMiniScript
+geanyminiscript/src/gms_gui.c
+geanyminiscript/src/gms_gui.h
+geanyminiscript/src/gms.c
+geanyminiscript/src/gms.h
+
# GeanyNumberedBookmarks
geanynumberedbookmarks/src/geanynumberedbookmarks.c
@@ -205,4 +211,3 @@ xmlsnippets/src/plugin.c
xmlsnippets/src/xmlsnippets.c
xmlsnippets/src/tests.c
xmlsnippets/src/test-stubs.c
-
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).