115 Commits

Author SHA1 Message Date
Colomban Wendling
b2ba6c84d5 autotools: Cleanup makefile a little 2015-04-10 16:16:19 +02:00
Colomban Wendling
4e02f58847 autotools: Remove useless declaration
There is no need for tricking Automake to use the C++ linker to link
the main executable anymore, this is done for libgeany now.
2015-04-10 16:16:19 +02:00
Colomban Wendling
e61948adbd Fix or remove incorrect comments 2015-04-10 16:16:19 +02:00
Colomban Wendling
56b9189a6c Fix generation of signallist.i with BSD sed
4.2BSD sed doesn't understand the `+` quantifier, so use `{1,}`.
2015-04-10 16:16:18 +02:00
Colomban Wendling
c85b846eeb Simplify automated signal connection
Instead of processing a template C source in the build system, generate
a list to be included by the preprocessor.

This simplifies the build system code as it now only generates the list
and doesn't take care of processing the template.  It incidentally
fixes build on systems with 4.2BSD sed (at least OSX and FreeBSD) as it
removes some offending sed code.
2015-04-10 16:16:18 +02:00
Thomas Martitz
11d4bcf7c2 Only use LIBGEANY_CFLAGS on libgeany.
It includes stuff like -fvisibility which isn't appropriate for the main binary.
2015-04-10 16:16:18 +02:00
Thomas Martitz
616cbe3da9 src: Makefile.am cleanup 2015-04-10 16:08:08 +02:00
Colomban Wendling
9644fb0ae2 Define GEANY_{EXPORT,API}_SYMBOL from the build system
This makes it easier to define it consistently to what the compiler
and platform supports, and avoids having to include a special header
everywhere, which is some kind of a problem for separate libraries
like TagManager and especially Scintilla.

As we only use these macros from the source and not the headers, it
is fine for it to be defined to a configure-time check from the build
system.

Warning: Although Waf and Windows makefiles are updated they are not
         tested an will probably required tuning.
2015-04-10 16:08:08 +02:00
Colomban Wendling
bc013ae9fe Rename LIBGEANY_LIBS to LIBGEANY_LDFLAGS and only use it on libgeany.la
The flags in this variables are used to tune the linker behavior on the
final libgeany (currently set the version information), so should only
used on really linked libraries, not Libtool helper libraries.
2015-03-10 23:16:49 +01:00
Colomban Wendling
361bf702e0 Explicitly cast string literals to non-constant pointers 2015-03-10 23:10:06 +01:00
Matthew Brush
1d64d5211f Replace dynamic exports with codegen for GtkBuilder callbacks
This prevents having to export those callbacks and put them in the
global namespace. Also, use inline shell script in Makefile.am instead
of a Python script which should be more portable (by default) and gets
rid of the helper script.
2015-03-10 23:10:06 +01:00
Matthew Brush
eb36500ac4 Improve Autotools build system for libgeany
Checks if the compiler supports -fvisibility and the linker supports
-dynamic-list arguments and use them instead of hardcoding. The new
geany-lib.m4 also accomodates future use of Libtool versioning.
2015-03-10 23:10:06 +01:00
Matthew Brush
d33758da92 Move Geany's core into a library (libgeany)
This will allow plugins to link against the core when accessing API
functions, now that the macro/struct/funcptr stuff is gone.

Also convert the helper libraries into Libtool helper libraries as
linking a shared library against static libraries is (apparently) not
portable.
2015-03-10 23:09:46 +01:00
Matthew Brush
860df27696 Remove struct/macro/funcptr linkage control for plugin API
Add rest of headers needed for declarations of all public API
functions. Add HAVE_PLUGINS define to geanyplugins.h since some headers
need this and it should always be valid for this header.
geanyfunctions.h left for source-level backwards compatibility for
plugins which might `#include` this header directly. I don't know why
they do it, but some Geany-Plugins do this.
2015-03-10 22:06:47 +01:00
Matthew Brush
2f08670763 Mark all plugin API functions to have "default" (public) visibility
Adds a new header `pluginexport.h` to put the macros in, could be
moved into an existing header (support.h?) by I didn't want to drag
a bunch of existing stuff into the source files for this one macro.

TagManager has relative include, this could be fixed by changing the
include directories for it if it's a problem. Mark the Scintilla
functions exported by re-declaring them in sciwrappers.c with the
attribute to avoid changing upstream Scintilla code.
2015-03-10 22:06:47 +01:00
Matthew Brush
a40ab0a4d9 Explicitly list symbols to dynamically export
Uses a Python script to generate a listing used by the linker to
determine which symbols to dynamically export. This provides finer
grained control of which symbols are dynamically exported, limiting
only to the ones needed for GtkBuilder signal connections.

The build system integration could probably be done a little cleaner.
2015-03-10 22:06:18 +01:00
Jiří Techet
ada4595264 Use global menubar on OS X
We have to disable quartz accelerator handling because otherwise
accelerators are performed also from other windows than the main
Geany editor (e.g. Ctrl+V with find dialog open performs the keybinding
Ctrl+V and inserts the text to the editor).

OS X applications have an extra menu entry to the left of the File menu -
an "application menu". This menu usually contains About, Preferences,
Quit. Many users, however, may be used to Geany from other platforms
and expect Preferences to be under the Edit menu so leave them there.
Quit and About are rarely used and the application menu is the place where
they are supposed to be - move these entries from other Geany menus there
and hide them in the affected menus (the quit entry is inserted automatically,
we just need to hide it from File).

Also tell OS X the Help menu is dedicated to help (we get search in
menu entries by name for free thanks to this).

The global menu should refresh automatically based on user actions.
Unfortunately this is not the case when gtk_menu_reorder_child()
is used because it does not emit any signals so the gtk-mac-integration
library doesn't see this call. Refresh the menu manually after calling
this function.
2015-03-04 12:40:36 +01:00
Jiří Techet
18d517bd95 Use gtk-mac-integration so app bundle can be created on OS X
This patch adds the gtk-mac-integration library and uses it to
adjust various paths in Geany to point it inside the app bundle
if Geany runs from inside the bundle.

It adds the utils_resource_dir() utility function to return
correct directories for various kinds of resources for all supported
operating systems. Using this function the patch adjusts all Geany
resource, plugin, icon, doc, and locale paths.
2015-03-04 12:40:27 +01:00
Colomban Wendling
e6fa2c2ac7 Autotools: Improve the rule to compile Windows resource file 2015-01-20 16:04:55 +01:00
Colomban Wendling
4cc943666f Autotools: MinGW: Fix building .res file in VPATH builds
From a patch by Valentin Kunz, thanks!
Part of https://sourceforge.net/p/geany/patches/17/
2014-11-09 17:40:31 +01:00
Colomban Wendling
1dc09597b2 Fix check for fnmatch and remove strict dependency on it for Windows
Strict dependency on fnmatch was removed in 52076d19e8fe7ab41ebc92928e.

We still have an optional dependency on it from CTags, but I don't
think we use this code, and anyways the checks we had for the optional
path to be taken were incorrect, so it was never actually used.

So, drop the dependency on libibrety for Windows builds, and fix the
remaining checks for an optional fnmatch so if it is found it can
actually be used.
2014-11-09 17:40:03 +01:00
Matthew Brush
4efcbab332 Include what you use
This is a mega-commit - because most of it had to be done in one go
otherwise some commits would fail to compile - that attempts to fix a
few problems with Geany's includes as well as various other related
cleanups. After this change it's easier to use includes and there's
little worry about which order things are included in or who includes
what.

Overview of changes:

* Include config.h at the start of each source file if HAVE_CONFIG_H
  is defined (and never in headers).
* Go through each source file and make the includes section generally
  like this:
  - Always config.h first as above
  - Then if the file has a header with the same name, include that
  - Then include in alphabetical order each other internal/geany header.
  - Then include standard headers
  - Then include non-standard system headers
  - Then include GLib/GTK+ related stuff
* Doing as above makes it easier to find implicit header include
  dependencies and it exposed quite a few weird problems with includes
  or forward declarations, fix those.
* Make geany.h contain not much besides some defines.
  - Add a little header file "app.h" for GeanyApp and move it there
  - Move "app" global to new "app.h" file
  - Move "ignore_callback" global to "callbacks.h"
  - Move "geany_object" global to "geanyobject.h"
* Add an include in "geany.h" for "app.h" since GeanyApp used to be
  defined there and some plugins included this header to access
  GeanyApp.
* Include "gtkcompat.h" everywhere instead of gtk/gtk.h so that
  everywhere sees the same definitions (not a problem in practice AFAIK
  so this could be changed back if better that way.
* Remove forward declarations from previous commits as some people
  apparently consider this bad style, despite that it reduces inter-
  header dependencies.

TODO:
* As always, to test on win32
* As always, to test with not Autotools
* Test plugins better, both builtin and geany-plugins, likely API/ABI bump
* Test with various defines/flags that may change what is included
* win32.[ch] not really touched since I couldn't test
2014-05-21 15:37:19 -07:00
Matthew Brush
23d9cad7dc Start to make it easier to compile the core in isolation
This is for work on making the files scannable by GObject-Introspection
but is still useful otherwise (even fixes a FIXME in the comments). I
made this by using a simple GNU Make file and trying to compile the
sources each on their own without all the build system infrastructure.

* Add keybindingsprivate.h file to hold private GeanyKeyGroup structure
and remove it from the GEANY_PRIVATE guard in keybindings.h.
* Move private members that were guarded by GEANY_PRIVATE from
GeanyFiletypes to GeanyFiletypesPrivate and remove guarded build.h
include.
* Move private members that were guarded by GEANY_PRIVATE from
GeanyProject to GeanyProjectPrivate.
2014-05-21 12:17:59 -07:00
Colomban Wendling
71093fec62 Autotools: replace use of deprecated INCLUDES in favor to AM_CPPFLAGS 2013-03-15 16:48:33 +01:00
Colomban Wendling
8ece89096d Merge branch 'master' into gtk3-support 2013-01-29 15:29:10 +01:00
Colomban Wendling
dabae1f94f Replace images embedded in the sources with proper themable icons
Additionally, provide SVG versions of the icons as well as them
rendered at the various icons sizes.
2013-01-01 19:10:48 +01:00
Colomban Wendling
6409840d4a Get rid of GtkComboBoxEntry API and use GtkComboBoxText API
Use the GtkComboBoxText API and the GtkComboBoxEntry replacement API
and map those to the old equivalents if not available.

This changes the type exposed by ui_combo_box_add_to_history() from
GtkComboBoxEntry to either GtkComboBox (under GTK2) or GtkComboBoxText
(under GTK3).  This should not be too much of an issue since
GtkComboBoxEntry and GtkComboBoxtext are subclasses of GtkComboBox,
but this will still emit warnings when when the calling code passes
a GtkComboBoxEntry pointer to ui_combo_box_add_to_history().

However, this requires the calling code to use the same mapping as we
do (GtkComboBoxText = GtkComboBox on GTK2, even on 2.24), or things
will blow and it'll be hard to understand why.  This wouldn't be an
issue if the calling code includes our gtkcompat.h header everywhere
it deals with combo boxes, which will be the case if it includes the
Geany headers everywhere but probably won't otherwise.  Oh dear.

A possible kind of workaround may be for ui_combo_box_add_to_history()
to do type-checking on its argument and use the actually correct API
for that type.
2012-10-08 20:08:06 +02:00
Colomban Wendling
a763e307f7 Don't access GtkWidget fields directly
Since many accessor are new in GTK versions we don't depend on, add
a header that defines them to the direct access if they aren't
available.
2012-10-08 20:08:06 +02:00
Colomban Wendling
d11f9a51b9 Rely on GModule for adding or not the --export-dynamic linker flag
We explicitly use GModule's .pc since 7b2f0fe, and it provides the
appropriate flag: we don't need to add it ourselves anymore.  Moreover,
since this flag is not needed (nor available) on all platforms (e.g.
Windows or MacOS X), it is safer to let GModule deal with adding it
anyway.
2012-07-17 23:09:00 +02:00
Colomban Wendling
d69a153bb4 Refactor tagmanager source files architecture
Split ctags and tagmanager sources, as follows:

tagmanager/ctags: the parsers, more or less upstream CTags;
tagmanager/mio: local MIO library copy;
tagmanager/src: actual tagmanager sources.
2012-05-08 23:01:23 +02:00
Lex Trotman
33d5378508 Add build.h to list of headers installed (autotools) 2012-02-17 09:26:03 +11:00
Matthew Brush
088b0bc362 Merge branch 'master' into gtkbuilder
Conflicts:
	geany.glade
	src/Makefile.am
	src/callbacks.c
2011-12-05 20:52:00 -08:00
Colomban Wendling
ab2663e9ae Refactor highlighting setup 2011-11-08 22:50:53 +01:00
Matthew Brush
af093c2ddf Remove interface.c/h files and put code into ui_utils.c/h. 2011-10-10 15:20:15 -07:00
Matthew Brush
6429f36d88 Remove -wl,--export-dynamic from Makefile.am for Win32 since it's not needed and might not even work. 2011-10-10 13:17:59 -07:00
Matthew Brush
0d3040bf86 Export symbols from Geany to allow GtkBuilder to find the callbacks.
Link with --export-dynamic and add G_MODULE_EXPORT to make the callback
symbols visible on Win32.
2011-10-10 13:14:22 -07:00
Colomban Wendling
d06e9f4575 Remove $Id$ and $Date$ SVN keywords 2011-10-09 22:57:35 +02:00
Nick Treleaven
d9b7ae92b8 Fix missing tagmanager/mio/makefile.win32 in EXTRA_DIST.
Include makefile.win32 in EXTRA_DIST recursively, not at top-level.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@6013 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-10-06 12:36:28 +00:00
Colomban Wendling
2f20305925 Dump dependencies to GTK >= 2.12, GLib >= 2.16 and GIO
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5839 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-13 18:41:15 +00:00
Enrico Tröger
5521c67983 Initialize GLib's Gthread system early at startup in case any plugins need it.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5637 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-27 15:04:58 +00:00
Colomban Wendling
569670b771 Move most of TagManager's I/O to MIO
Moved the parsers to MIO, which allows both in-memory and file parsing.


git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5555 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-05 22:40:50 +00:00
Nick Treleaven
2473ab6862 Revert X11 workspace socket support as it needs more work; moved
to workspace-sockets branch.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5292 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-10-07 14:10:32 +00:00
Nick Treleaven
95c4f6046e Link with X11 if found to fix linking with a recent GNU ld.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5264 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-30 14:14:54 +00:00
Nick Treleaven
fc7e82bec6 Add filetypesprivate.h.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5263 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-30 13:55:31 +00:00
Enrico Tröger
be5d891f0e Pass G_LOG_DOMAIN to source files for better logging.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4954 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-05-25 19:49:49 +00:00
Enrico Tröger
8c865b6813 Add new GTK define also for Mingw cross compilation and makefile.win32 based Windows builds (untested).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4924 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-05-16 17:44:40 +00:00
Enrico Tröger
10ad339994 Update Scintilla to version 2.11.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4923 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-05-16 17:44:24 +00:00
Nick Treleaven
90acc27a7a Add Stash setting functions to API.
Remove unnecessary argument to stash_group_load_from_file().



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4790 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-03-30 16:29:38 +00:00
Nick Treleaven
b7cc451a56 Don't install unnecessary headers: dialogs.h, main.h, plugins.h,
sciwrappers.h, build.h. (This helps to get compiler warnings for uses
of functions not in the API).
Warning: any plugins that include these headers should remove them.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4366 ea778897-0a13-0410-b9d1-a72fbfd435f5
2009-10-26 13:06:51 +00:00
Nick Treleaven
caec1ec7c3 Rename treeviews.[hc] -> sidebar.[hc].
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4252 ea778897-0a13-0410-b9d1-a72fbfd435f5
2009-09-28 11:16:59 +00:00