360 Commits

Author SHA1 Message Date
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
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
Colomban Wendling
888d3dc9dc Use the short name for EOL mode in the statusbar
See discussion in https://github.com/geany/geany/pull/418
2015-03-04 15:57:26 +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
Dimitar Zhekov
a5b99dc96d Add virtual column and selected chars to the statusbar
Closes https://sourceforge.net/p/geany/patches/10/
2015-03-03 20:07:11 +01:00
Colomban Wendling
1a6adc0d63 Fix build with GLib < 2.30 (oops) 2015-03-03 15:12:52 +01:00
Colomban Wendling
1c1d76721d Fix several tooltips to properly use plain text instead of markup
Most of our tree view tooltips were set from plain text values but
parsed as markup by GTK, which sometimes lead to markup errors, when
the tooltip value contained markup control characters.

This also adds ui_tree_view_set_tooltip_text_column() to the plugin
API so plugins can easily set plain text tooltips from tree views
columns.

Fixes https://sourceforge.net/p/geany/bugs/1091/
2015-02-28 19:15:00 +01:00
Jiří Techet
9767f79e50 Improve ui_get_mime_icon()
It may happen that even though we get GIcon, the actual icon
dosen't exist (typically on Windows and OS X). Check if we
can find the actual icon.

In addition, use "icon name" instead of "stock id" - the latter
doesn't work on OS X / Windows for some reason.
2015-01-20 19:33:06 +01:00
Colomban Wendling
8da955ec94 Make the currently open project insensitive in the recent menu 2014-11-11 17:46:31 +01:00
Colomban Wendling
3fa41cc0da Cleanup code for updating recent file menus 2014-11-11 17:14:21 +01:00
Nick Treleaven
e1988964c1 Fix Windows build 2014-08-01 12:05:30 +01:00
Colomban Wendling
35a212dffc Merge branch 'callbacks-cleanup' 2014-06-27 22:32:38 +02:00
Colomban Wendling
3ce25db632 Remove line number zoom hack as it is no longer necessary
Since cbf9813632d7ee921ffa1fda0d1f69128b2bc755 we have a proper
solution for maintaining line number consistent with the editor zoom,
so drop the old hack.

This also allows to remove the now useless third argument of
sci_set_line_numbers().
2014-06-27 22:23:48 +02:00
Colomban Wendling
0d03fad7bf Move date insert callbacks to the UI code where they belong 2014-06-26 18:36:51 +02:00
Colomban Wendling
a51bc3d654 Move include insert callbacks to the UI code where they belong 2014-06-26 18:36:49 +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
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
1abee90434 Plug a memory leak 2014-04-14 20:27:35 +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
4a8910fc4a Fix GTK 2.16 support (oops) 2014-03-12 14:26:04 +01:00
Colomban Wendling
77b82845ed Fix color chooser button order 2014-03-07 22:09:40 +01:00
Colomban Wendling
2f120d73c9 Fix typo in "deque" include name
Fixes bug #1027.
2014-02-27 14:33:45 +01:00
Colomban Wendling
7473e4b1d9 Add defensive checks for function receiving a GeanyDocument argument
Always check the passed-in GeanyDocument argument is a valid one, not
to possibly work on an invalid document.
2014-01-22 17:38:29 +01:00
Colomban Wendling
1a5554c41c Add our stock icons manually
Although GtkIconFactory implements GtkBuildable properly and works just
fine, Glade can't handle it and keeps removing it upon save.  So, drop
the automatic setup to a manual one so the UI description is editable
with Glade again, and which also has the small advantage of not
repeating the stock ID strings.
2014-01-10 18:33:04 +01:00
Colomban Wendling
17a7469b68 Avoid a few unnecessary widget lookups 2014-01-09 17:50:30 +01:00
Colomban Wendling
1dfc1077c7 Fix crash in fallback mime icon loading code under GTK3 2013-11-18 22:22:57 +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
Colomban Wendling
d29b5912ff Read filetype's mime type from the configuration files
This allows custom filetypes to define a mime type, hence the icon
displayed for this filetype;  as well as moving ones for built-in
filetypes out of the code to the configuration files.
2013-10-15 03:06:01 +02:00
Nick Treleaven
0998f1c19c Make code more readable by renaming poorly named macros NZV and NVL
Closes #159
2013-08-14 21:54:20 -07:00
Matthew Brush
d9ead8591a Make editor-related View menu items document-sensitive again
They used to be because their parent menu item (Editor) was
document-sensitive but now they are in the top of the View
menu they need to be invdividually made so.

TODO: should they really be/have been document-sensitive? They
can still change the pref without a document open and their
equivalent options in the Preferences dialog are not
document-sensitive? Same goes for existing "Change Font" item.
2013-04-27 11:42:04 -07:00
Matthew Brush
0f614dd885 Remove reference to removed "menu_view_editor1" (oops) 2013-04-26 23:56:16 -07:00
Colomban Wendling
659276730a Don't use deprecated gtk_icon_set_render_icon() on GTK3 2013-04-22 20:18:18 +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
232290aad4 Fix our custom styles under KDE and for people using gtk-chtheme
We have a custom RC file defining various styles we need, and we want
the user to be able to override them (e.g. if they want -- or need --
other colors).  Fair enough, one would simply call gtk_rc_parse() with
the appropriate filename.  However, the styling rules applies in the
order they are loaded, then if we load our styles after GTK has loaded
the user's ones we'd override them.

There are 2 solutions to fix this:
1) set our styles' priority to something with lower than "user"
   (actually "theme" priority because rules precedence are first
   calculated depending on the priority no matter of how precise the
   rules is, so we need to override the theme).
2) prepend our custom style to GTK's list while keeping priority to
   user (which is the default), so it gets loaded before real user's
   ones and so gets overridden by them.

One would normally go for 1 because it's ways simpler and requires less
code: you just have to add the priorities to your styles, which is a
matter of adding a few ":theme" in the RC file.  However, KDE being a
bitch it doesn't set the gtk-theme-name but rather directly includes
the style to use in a user gtkrc file, which makes the theme have
"user" priority, hence overriding our styles.  So, we cannot set
priorities in the RC file if we want to support running under KDE,
which pretty much leave us with no choice but to go with solution 2,
which unfortunately requires writing ugly code since GTK don't have a
gtk_rc_prepend_default_file() function.  Thank you very much KDE.

Though, as a side benefit it also makes the code work with people using
gtk-chtheme, which also found it funny to include the theme in the user
RC file.
2013-03-16 16:19:20 +01: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
a77ac1407a Merge branch 'master' into gtk3-support 2013-02-11 04:47:02 +01:00
Colomban Wendling
36581d6638 Move document status color definition to the gtkrc file
This allows for users to change the colors if needed (may be useful
with some themes or color blind persons).

On the sidebar, only the color is applied for now.  This is because
it is not possible to style cell renderers through RC files, all having
to be done in the code;  so currently only the color is applied.
2013-02-11 04:46:40 +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
d019741512 Properly register the statusbar context ID
Getting the statusbar context ID using the context registration API
allows for other (namely, plugins) to register their own context
without a risk of overriding Geany's one.
2012-12-02 18:03:14 +01:00
Colomban Wendling
f735e6800b Add GTK3 version of our custom styles
Although GTK3 still have gtk_rc_parse_string(), it doesn't work anymore
for our overrides, so register proper CSS for them.
2012-10-09 13:25:12 +02:00
Colomban Wendling
1839451363 Fix a packing issue on GTK3
GTK3 changed the default for expand and fill, so explicitly set them.
2012-10-09 13:25:12 +02: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
eeddd6f720 Move custom styles to a resource file 2012-10-08 17:51:19 +02:00
Colomban Wendling
8289e8f962 Report scope including classes, namespaces and alike
Don't only match the current function as the current scope, but also
classes, namespaces and others containers.

Closes #1996778.
2012-09-17 22:51:36 +02:00