127 Commits

Author SHA1 Message Date
Jiří Techet
10a28b4191 Protect private definitions by the GEANY_PRIVATE macro in headers
In addition, this patch defines the GEANY_PRIVATE macro for the tag
manager library where it wasn't defined before, removes 2 tag manager
headers from distribution as they are not needed by plugins and
in the tag manager changes the docstrings to ordinary comments for
private definitions.
2014-10-09 20:51:32 +02:00
Colomban Wendling
d6e9e40ccc Fix a few missing/extra includes 2014-05-27 20:25:04 +02: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
6f87aac118 Normalize use of header guards and extern "C" guards
* Always define GEANY_FOO_H to 1 in the header guards
* Always put a G_BEGIN_DECLS/G_END_DECLS guard in every header for
consistency, even private ones where it doesn't matter.
* Always include either <glib.h>, <gtk/gtk.h> or some other header
that will provide G_BEGIN_DECLS before using it. In a lot of headers
that use glib.h and gtk/gtk.h stuff anyway, this resolves an implicit
dependency they had on them being included before that header.
* Always put a comment at the #endif part of the guard so it's
easier to see what it applies to.
* Always use an underscore between the header guard identifier's words
even though the filename doesn't have one.
2014-05-21 12:18:26 -07:00
Matthew Brush
fec15c61c4 Move typedefs out of geany.h and into their own headers
This helps to avoid the requirement that geany.h be included before
using any of the changed headers.
2014-05-21 12:18:25 -07:00
Colomban Wendling
aeab183ef2 Merge branch 'unified-encoding-combo-boxes' 2014-04-15 15:57:13 +02:00
Colomban Wendling
8c5e198cf1 Unify encoding combo boxes
Make all encoding combo box display a list with encodings grouped by
categories into sub-menus, making it easier to find the appropriate
encoding than in a big single-level list.

This is what was used in the Open dialog, but not in the Preferences
dialog or the Find in Files dialog.  This also makes the encoding
combo boxes behave more like the encoding menus.
2014-04-15 15:51:49 +02:00
Colomban Wendling
3ec0369f47 Merge branch 'wip/configurable-mime-type--gicon' into wip/configurable-mime-type-gicon 2014-04-14 20:27:20 +02:00
Colomban Wendling
77b82845ed Fix color chooser button order 2014-03-07 22:09:40 +01:00
Colomban Wendling
01e7fe4b79 Use GIcon for the filetype icon rather than rendered pixbuf
This allows to re-use the icon more easily since it's not rendered at
a particular size but simply an icon description.  It also allows for
implicit icon updating when the theme changes if the display code
implements it (and GTK widgets does).
2013-10-15 15:56:44 +02:00
Matthew Brush
d452d0b737 Cleanup statusbar template code a bit
* Unhardcode "pos" and "style" statusbar messages which were only
enabled when GEANY_DEBUG is defined and make them real possible
format chars.

* Move needless global "statusbar_template" into UIPrefs structure
with the other UI preferences, removing (now) pointless ui_finalize()
function.

* Rename "add_statusbar_statistics" to "create_statusbar_statistics"
and make it return a gchar* instead of passing in a GString argument
to update. Fixes a one-time "leak" of the GString and makes the code a
little easier to follow.

* Move the default statusbar template string to the top of the file
and use it as the default for the various preferences so the user has
something to base their customizations off of. TODO: check that the
N_() translations stuff works OK.
2013-04-14 19:03:58 -07:00
Colomban Wendling
35cc441b74 Merge branch 'gtk3-support'
Conflicts:
	src/ui_utils.c
2013-03-10 17:20:25 +01:00
Dimitar Zhekov
99fbe0bd8c Fix plugin_add_toolbar_item insertion order 2013-02-22 17:14:53 +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
bd02c009a1 Use the Geany icon from the theme everywhere 2013-01-01 19:10:04 +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
64a47b9cb6 Allow to switch message window orientation to place it on the right 2012-10-01 21:38:56 +02:00
Colomban Wendling
1c2c455b1d Update copyright information 2012-06-18 01:15:04 +02:00
Colomban Wendling
c04fd65a8f Add support for user-defined labels for custom commands
This allows the user to define a label to be displayed in the menu in
place of the command to be run.  This can be very useful if e.g. a
custom command is too complex to be easily read in the menu, or if two
custom commands are so similar could be confounded.
2012-05-14 22:22:29 +02:00
Matthew Brush
51dc2e9baf Support plugins written in C++
Rename use of C++ `template` keyword in plugin API function argument
and add `G_BEGIN_DECLS` and `G_END_DECLS` to public header files to
make them easier to include in C++ code. TagManager and Scintilla
headers already have these `extern "C"` blocks so they shouldn't
require any modifications.

The Autotools build system already adds in a `dummy.cxx` to hint
Automake into C++ linking to support Scintilla, which is quite
convenient for dynamically loading of C++ plugins at run-time into
the otherwise C-only program. The other build systems seem to also
use the correct linking.
2012-03-30 23:35:10 -07:00
Colomban Wendling
9130b84d86 Add ui_builder_get_object()
This is used to get any object built from the UI file, not widgets only.
2012-01-20 19:14:31 +01:00
Nick Treleaven
eb04c514ba Add API function ui_lookup_stock_label()
Using this can avoid adding i18n strings unnecessarily.
2012-01-08 17:37:58 +00:00
Matthew Brush
0a16ec7520 Merge branch 'master' into gtkbuilder
Conflicts:
	src/interface.c
	src/vte.c
2011-11-06 23:44:24 -08:00
Colomban Wendling
b55a30c2bf Build recent data for GTK ourselves
This prevents GTK of trying to fetch the necessary information like
MIME-type itself, which leads to a significant speedup (> 30%), as
well as using the real MIME-type we use rather than the GIO-guessed
one.
2011-11-04 00:11:21 +01:00
Matthew Brush
72e856947e Rework GtkBuilder code to behave more like old Glade 2 code
* Put back ui_hookup_widget and ui_lookup_widget functions
* Put back lookup_widget code in stash.c
* Emulate old create_*() functions from interface.[ch].
* Hookup all the GtkBuilder widget's to their top widgets like Glade 2
  generated code would've done.
* Misc changes to accomodate the above.
2011-10-19 00:44:35 -07:00
Matthew Brush
b8c5be4d11 Add note to ui_hookup_widget() doc comments. 2011-10-10 15:21:05 -07: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
7c9430884f Cleanup code, comments and refactor a bit. 2011-10-10 13:17:55 -07:00
Matthew Brush
c39ad3e29d Update ui_lookup_widget() and ui_hookup_widget() to use new interface.c/h code. 2011-10-10 13:15:23 -07:00
Colomban Wendling
d06e9f4575 Remove $Id$ and $Date$ SVN keywords 2011-10-09 22:57:35 +02:00
Colomban Wendling
24583dc507 Focus the editor upon double click on the message and compiler windows
Also improve the code a bit by using a boolean to know whether to focus
the editor rather than always pass the key value and check it against
enter-or-return in the callee side.

Patch by Dimitar Zhekov, thanks!

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5887 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-08-13 20:44:39 +00:00
Colomban Wendling
c8a71b258e Add missing documentation for GeanyInterfacePrefs and GeanyToolPrefs
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5875 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-07-31 13:35:43 +00:00
Colomban Wendling
f856ac782d Always destroy open and save dialog after use
Create and destroy the file open/save dialogs on each call rather than
keeping the same dialog around.  This avoids letting GTK monitor the
displayed directory for changes, thus probably reducing overhead and
works around GTK monitoring bugs.

This refactors the code a bit now it works a little differently.

Also fixes a bug that made dialogs_show_save_as() wrongly return the
first user response rather than the one that is actually used to make
the decision.  It happened for example when the user first selected an
non-writable location, or was asked whether to override a file and
answered "no".

Closes/references:
https://sourceforge.net/tracker/?func=detail&aid=3311687&group_id=153444&atid=787793
https://sourceforge.net/tracker/?func=detail&aid=3311258&group_id=153444&atid=787791
https://sourceforge.net/tracker/?func=detail&aid=3304273&group_id=153444&atid=787791
https://sourceforge.net/tracker/?func=detail&aid=3201050&group_id=153444&atid=787791
https://sourceforge.net/tracker/?func=detail&aid=3163742&group_id=153444&atid=787791
https://sourceforge.net/tracker/?func=detail&aid=3153120&group_id=153444&atid=787791
https://sourceforge.net/tracker/?func=detail&aid=2985896&group_id=153444&atid=787791
https://bugs.launchpad.net/ubuntu/+source/geany/+bug/754577

Dialog state restoration based on a patch by Matthew Brush, thanks.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5837 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-10 22:13:29 +00:00
Enrico Tröger
5141f14007 Add ui_focus_current_document() and document_grab_focus().
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5828 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-06-02 21:15:37 +00:00
Enrico Tröger
66c8b7faee Add ui_menu_add_document_items_sorted() and document_sort_by_display_name() to the plugin API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5705 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-04-10 17:03:41 +00:00
Colomban Wendling
4ac3ccbd37 Make Shift-Enter in search dialog and toolbar search entries search backwards
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5621 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-03-24 16:51:02 +00:00
Enrico Tröger
6ac2623208 Update copyright information.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5528 ea778897-0a13-0410-b9d1-a72fbfd435f5
2011-01-19 19:39:09 +00:00
Nick Treleaven
e0702ea2b2 Add filetype mimetype field (patch by Colomban Wendling, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5329 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-10-26 16:02:30 +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
3fe15d0ebb Add hidden pref new_document_after_close for whether to open a new
document automatically, off by default.



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5257 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-23 16:24:43 +00:00
Nick Treleaven
cb44ff626c Explain owner parameter of ui_hookup_widget() better.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5251 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-22 15:25:37 +00:00
Nick Treleaven
8b6bcf6d68 Add main_widgets.project_menu to API (patch by Jiří Techet, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5236 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-16 15:18:56 +00:00
Nick Treleaven
4c3ab61c3f Use a separate socket per workspace on X (patch by Erik de Castro
Lopo, thanks).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5232 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-15 17:04:23 +00:00
Nick Treleaven
7e8c863298 Add GeanyMainWidgets::message_window_notebook for plugins to append
a new notebook page (#3061342).



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5204 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-09-08 12:36:01 +00:00
Nick Treleaven
4da9f9dbc4 Remove return value for ui_label_set_markup() as it probably shouldn't be used for macros.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5155 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-12 17:21:24 +00:00
Enrico Tröger
af8f5fc921 Make ui_label_new_bold() a function.
Escape the name of the current document for markup when using
document name for menu items (closes #3038844).

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5116 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-08-05 21:13:47 +00:00
Nick Treleaven
ae4d82b7f1 Use Stash to save statusbar_template setting, instead of the
load/save-settings signal.
Add ui_init_prefs().



git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5101 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-07-09 17:15:16 +00:00
Nick Treleaven
2b771854ae Add ui_finalize(), free string (patch by Dimitar Zhekov, thanks).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5097 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-07-08 16:59:11 +00:00
Nick Treleaven
c41b55d692 Add ui_combo_box_add_to_history() to API.
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@5048 ea778897-0a13-0410-b9d1-a72fbfd435f5
2010-06-18 12:20:15 +00:00