Add e_config_add_skip_check() to install a callback function to
decide whether to skip a particular page in a GtkAssistant, useful
if a page may be blank in certain conditions.
This feature is not used in Evolution 3.4, but will be used in 3.5.
The GTK+ patch in bug 653705 is also required for the Account Assistant
to work properly under the new GtkAssistant design in GTK+ 3.1.
This commit only deals with sidebar ordering issues.
Change the OK button to Apply, and fix the padding around the window
edges. People already bitching about the window being too tall are just
gonna bitch louder now, but it does look better on normal size screens.
The issue was EConfig's GtkAssistantPageFunc callback assumed the pages
in the GtkAssistant were sorted, but that assumption breaks as EPlugins
with custom EConfigItemFactoryFunc callbacks are introduced and EConfig
has to rebuild its assistant pages.
It's an unnecessary requirement anyway, since EConfig already keeps a
sorted list of widgets internally. After correcting that assumption a
number of hacks addressing previous page ordering bugs fell out.
Convert the "startup-wizard" EPlugin to an EExtension, and fix up the
importing UI a bit (but it still needs a lot more love). Importing
progress is now shown directly in the GtkAssistant window.
Define a new EConfigItem type (E_CONFIG_PAGE_PROGRESS) for creating
progress pages in a GtkAssistant.
Also, change EMAccountEditor semantics slightly: you now have to call
e_config_create_window() manually after creating a new EMAccountEditor
instance. This allows extra EConfigItems (specifications for the window
content) to be added manually before the window is created.
The EConfig code that creates widgets based on .eplug descriptions will
already hide sections that end up containing no child widgets.
Here we also make that code hide sections that end up containing
only invisible child widgets. We will use this from the actual
plugins, so that if they decide not to show any widgets in Express
mode, then the corresponding configuration sections will not
show up in the preferences dialog.
EConfig types 'section' and 'section-table' have an internal factory function,
which doesn't return the actual GtkFrame that they create. Instead, they return
a GtkContainer which is the actual vbox or table used to insert child widgets.
Here we modify the internal factory function to also return the actual GtkFrame
that it creates, so that the calling code can hide *that* frame properly.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
Requires eplug files to supply <item type="section"> or
<item type="section_table"> for this to work. The container widget's
"visible" property gets bound to the plugin's "enabled" property.
There were a number of problems:
- Walk the GType tree to find EPluginHook subclasses, instead of
just registering the immediate children.
- Some EConfig and EEvent subclasses were not being configured
properly (particularly the mail and calendar subclasses).
- Add preference window pages after the main loop starts to make
sure all plugins and plugin hooks are installed first.
2009-01-01 Matthew Barnes <mbarnes@redhat.com>
* e-util/e-config.c (ec_rebuild):
Use the translated the EConfigItem label when building the UI.
svn path=/trunk/; revision=36961
2008-11-27 Milan Crha <mcrha@redhat.com>
** Fix for bug #332729
* e-config.c: (ep_finalise): Disconnect handlers on the widget before
freeing the structure it is using.
svn path=/trunk/; revision=36816
2008-06-06 Matthew Barnes <mbarnes@redhat.com>
** Allow evolution to build with G_DISABLE_SINGLE_INCLUDES and
GTK_DISABLE_SINGLE_INCLUDES defined. (#536637)
svn path=/trunk/; revision=35606