Commit Graph

416 Commits

Author SHA1 Message Date
756c8abcb8 Bug #646109 - Fix use of include <config.h> to make sure translations work 2011-05-27 15:23:07 +02:00
0a0fe0a2f5 Bug 649993 - Change behavior of --component option
This is primarily for the GNOME Shell calendar.

If, for example, "evolution --component calendar" is invoked and there
is already an Evolution window opened to the calendar view, present that
window.  Otherwise open a new Evolution window to the requested view.

Same behavior applies to all requested views.
2011-05-23 21:59:58 -04:00
cec324e80a Bug 650491 - Shell handles forwarding uris to existing process wrong
This adds a "handle-uris" GAction which takes a string array argument,
so the URIs can be passed to the primary process verbatim.
2011-05-22 12:40:31 -04:00
ba6a234386 Restore lockdown integration.
With lockdown settings available through GSettings, widgets can handle
lockdown integration themselves without having to use EShellSettings.

Also fixed a few places where printing or save-to-disk actions were
either not properly wired up or not responding to lockdown settings,
but much more work needs done.  Attachments, for example, are not
honoring the disable-save-to-disk setting at all.

This too requires the recently-added gsettings-desktop-schemas
dependency.
2011-03-27 18:38:39 -04:00
c8be2c5fe1 Fix an EShell reference leak.
GApplication calls g_main_loop_quit() immediately when the last window
is destroyed, whereas we do it from an idle callback with an extra ref
on EShell to keep it alive until the idle callback runs.  But because
GApplication beats us to the punch, our idle callback never runs and
the EShell reference leaks.

For now, we'll just disable the quit_mainloop() method of GApplication.
If GtkApplication grows a signal equivalent to EShell::window-destroyed,
EShell could drop its window_destroyed() method and let G[tk]Application
handle things normally.
2011-03-25 11:11:44 -04:00
5399f35bbc Port EShell to GtkApplication. 2011-03-24 14:55:24 -04:00
c6fd77460f Coding style and whitespace cleanup. 2011-03-05 12:34:28 -05:00
1301cf02ef Bug #614480 - Avoid using G_TYPE_INSTANCE_GET_PRIVATE repeatedly 2011-02-25 16:20:41 +01:00
1afbba4a8b Bug 642171 - Implicit libgnome dependency for lockdown GConf keys
Lockdown keys have moved to gsettings-desktop-schemas, so disable
lockdown integration until we're ready for GSettings.
2011-02-12 13:40:33 -05:00
7a1677520d Remove NULL checks for GObject methods.
As of GLib 2.28 all GObject virtual methods, including constructed(),
are safe to chain up to unconditionally.  Remove unnecessary checks.
2011-02-12 12:54:08 -05:00
28c3b67bb1 Bug #638808 - camel_shutdown() called too early 2011-01-11 10:33:03 +01:00
59928e69ed Add e_shell_submit_alert().
An easy way to broadcast application-wide alerts to shell windows.
These alerts will persist in all current and future shell windows
until responded to (either programmatically or by the user).
2010-12-26 23:31:55 -05:00
22b2d26d04 Free/busy meeting view doesn't work due to non-working extension 2010-12-06 14:23:20 +01:00
e39dd931bc Bug #207580 - Allow new mail check on individual accounts 2010-11-25 18:10:14 +01:00
c881b5bc5e Simplify EActivity.
With unintrusive error dialogs gone, we can cut some unnecessary bits
out of EActivity.

I'm also adding a new enum property called "state", which is one of:

    E_ACTIVITY_RUNNING
    E_ACTIVITY_WAITING
    E_ACTIVITY_CANCELLED
    E_ACTIVITY_COMPLETED

The state of an activity must be explicitly changed.  In particular,
when the user cancels an activity the state should be set only after
confirming the operation has been cancelled and not when cancellation
is requested (e.g. after receiving a G_IO_ERROR_CANCELLED, not when
the GCancellable emits "cancelled").  EActivityBar and EActivityProxy
widgets have been updated to make this distinction clearer in the UI.

E_ACTIVITY_WAITING will be used when activities have to be queued and
dispatched in sequence, which I haven't written yet.
2010-10-22 14:21:22 -04:00
b4f97aea9b Bug 461769 - Add a --force-online command line option
Use it to override network availability detection as reported by
NetworkManager or other network monitoring software.
2010-10-13 16:55:07 -04:00
a98c07a569 Add a GCancellable to EActivity.
EActivity now uses a GCancellable to manage cancellations, instead of
having its own redundant cancellation API.  API changes are as follows:

  + e_activity_get_cancellable()
  + e_activity_set_cancellable()

  - e_activity_cancel()
  - e_activity_is_cancelled()
  - e_activity_get_allow_cancel()
  - e_activity_set_allow_cancel()

EActivity's "cancelled" signal remains, but only as a repeater for
GCancellable::cancelled signals.  It should not be emitted directly.

The presence of a GCancellable implies that cancellation is allowed.
EActivity does not create its own default GCancellable, it has to be
given one.

If a CamelOperation (cast as a GCancellable) is given, EActivity will
configure itself to listen for status updates from the CamelOperation
and propagate the information to its own "primary-text" and "percent"
properties.

These changes allowed me to start cleaning up some of the incredibly
convoluted logic in mail-mt.c -- in particular, mail_operation_status()
is completely gone now.  mail-mt.c is still in a transitional state --
much more significant changes coming soon.
2010-09-18 16:40:19 -04:00
101305e1c7 Various memory leaks 2010-09-07 18:39:46 +02:00
429234ff21 Convert composer autosave to an EExtension.
Given the way the autosave feature was awkwardly bolted on to the
composer, an EExtension seemed like a natural fit.  And it helped
clean up some object lifecycle hacks (and bugs).

What we have now is a new module consisting of two EExtensions:

   EComposerAutosave extends EMsgComposer and determines when to
   kick off an asynchronous autosave operation.

   EComposerRegistry extends EShell and offers to restore orphaned
   autosave files on startup (which is also asynchronous now).

e-autosave-utils.c holds the actual asynchronous functions and a few
other miscellaneous utility functions.

Source code for the new module lives in /modules/composer-autosave.
2010-09-02 13:37:31 -04:00
ecf3434da0 GObject boilerplate cleanup.
Prefer thread-safe G_DEFINE_TYPE and G_DEFINE_INTERFACE macros over
manual GType registration.

This is just a start... lots more to do.
2010-08-24 14:37:02 -04:00
18813ccd8f Defer the load / creation of configuration UI with changes to
e_preferences_window to take factory callbacks and store a reference
to the shell. - This makes start-up substantially faster, particularly
on Atom (eg.).

Remove a number of idle handlers used to create these UIs in the
first instance, cleaning the code.
2010-08-10 21:17:40 +01:00
8dcdc60ccc Make EImportAssistant extensible. 2010-07-30 12:10:01 -04:00
9085a5a18c Remove unused 'preview' argument from e_import_assistant_new_simple().
We preview imported files by other means now.
2010-07-30 10:58:26 -04:00
62f9c59af9 Bug 621210 - Can't get the shell back after closing it 2010-06-20 14:36:34 -04:00
a456e6897f EShell cleanups. 2010-06-20 14:24:02 -04:00
51d0fc6863 Bug 603468 - Improve handling of --quit option 2010-06-12 14:28:07 -04:00
970662db34 More GTK3 preparation.
This uses the new gtk_assistant_commit() I had added to GTK+ for our
EImportAssistant progress page.
2010-06-04 08:34:15 -04:00
7959b11113 Convert "startup-wizard" to an EExtension.
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.
2010-06-02 16:36:11 -04:00
c9ec8c3f4d Merge branch 'express2' 2010-05-26 13:09:33 -04:00
9653887891 Coding style and whitespace cleanup. 2010-05-25 10:15:32 -04:00
b54c869e2f get window sizing logic right (again) 2010-04-23 16:45:59 +01:00
a650f15f00 Store the initial view request and use that to decide whether to show
startup wizard or not. Show only for mail and not calendar.
2010-04-22 17:27:20 +05:30
5825fb4eb1 revert snafu to full-screening ... 2010-04-19 10:06:59 +01:00
81e6232269 Re-work the over-complicated event editor as a tabbed notebook.
Thanks to Sashwaat.
2010-04-19 09:57:48 +01:00
2593383aec Detect MeeGo, and propagate settings variously.
Adapt widget naming on MeeGo for theming etc.
2010-04-12 14:50:44 +01:00
13fb16f279 Demonstrate extending the EExtension API.
Introduce e_extensible_list_extensions(), which provides extensible
objects access to their own extensions, or a subset of them.

Convert EShellBackend to an abstract EExtension subtype.  EShell will
load its extensions with e_extensible_load_extensions(), and then obtain
a list of EShellBackend extensions as follows:

    shell_backends = e_extensible_list_extensions (
            E_EXTENSIBLE (shell), E_TYPE_SHELL_BACKEND);

Because EShellBackend is abstract, its GType is skipped while traversing
the GType hierarchy to find EShell extensions.
2010-04-07 12:13:36 +01:00
84ba2f958f Move "section" documentation out of header files. 2010-04-07 12:13:28 +01:00
b674497bcc Convert NetworkManager integration to an EShell extension.
This demonstrates how to extend EShell without having to modify and
recompile e-shell.c.  If NetworkManager integration is enabled, the
extension is loaded automatically when the EShell is created.

The same pattern can be applied to integrate other network monitoring
software like ConnMan or Microsoft's Wireless Zero Configuration.
2010-04-07 12:13:02 +01:00
a718e57b25 Make EShell and related classes extensible. 2010-04-07 12:12:57 +01:00
b2e7e4fedd Bug #325121 - Do not translate developer strings in g_param_spec_* 2010-04-01 21:40:19 +02:00
906f93a130 Demonstrate extending the EExtension API.
Introduce e_extensible_list_extensions(), which provides extensible
objects access to their own extensions, or a subset of them.

Convert EShellBackend to an abstract EExtension subtype.  EShell will
load its extensions with e_extensible_load_extensions(), and then obtain
a list of EShellBackend extensions as follows:

    shell_backends = e_extensible_list_extensions (
            E_EXTENSIBLE (shell), E_TYPE_SHELL_BACKEND);

Because EShellBackend is abstract, its GType is skipped while traversing
the GType hierarchy to find EShell extensions.
2010-03-21 23:30:44 -04:00
f9dd2dd10b Move "section" documentation out of header files. 2010-03-21 17:24:42 -04:00
6c569e64af Convert NetworkManager integration to an EShell extension.
This demonstrates how to extend EShell without having to modify and
recompile e-shell.c.  If NetworkManager integration is enabled, the
extension is loaded automatically when the EShell is created.

The same pattern can be applied to integrate other network monitoring
software like ConnMan or Microsoft's Wireless Zero Configuration.
2010-03-20 11:49:46 -04:00
185b7b2a0b Make EShell and related classes extensible. 2010-03-20 11:49:46 -04:00
7472c99b19 Disabling Gnome schemas for windows 2010-03-15 14:41:56 +01:00
d7494c8f16 Shell and UI manager cleanups.
Replace the EVO_EXPRESS environment variable with an --express command
line option.  (Note, this adds a new translatable string for --help.)

Add an EUIManager class with an "express-mode" property and custom load
functions that use our new "express" preprocessor.  This replaces the UI
manager functions in e-utils.c.

(Also going to see if I can get GTK+ to add an "add_ui_from_string"
method to GtkUIManagerClass that we can override.  Then we could just
call gtk_ui_manager_add_ui_from_string() and the preprocessor would
automatically do its thing and chain up.)

Add an "express-mode" read-only GObject property to EShell.

Add e_shell_configure_ui_manager() to e-shell-utils.c.  For now this
just creates a one-way property binding:

    EShell:express-mode -> EUIManager:express-mode

Call this immediately after e_ui_manager_new().  (EUIManager can't do
this itself because it lives too low in the dependency hierarchy and
doesn't know about EShell.)
2010-03-13 20:53:17 -05:00
d9be66b527 Removed obsolete method signatures in em-account-editor.h
Added em_account_editor_get_widget, and cleaned up the widget listing.
Cleaned the startup wizard code to find it's label by name
Added disabling of power-user 'indentity' frame in the first page express capplet.
2010-03-13 20:52:51 -05:00
78224aff38 Fix a typo 2010-03-13 20:49:50 -05:00
2166e7f4c7 Add 'express mode' gconf setting 2010-03-13 20:49:49 -05:00
c69e242109 More relocation cleanup EVOLUTION_ICONSDIR -> EVOLUTION_ICONDIR 2010-03-11 15:57:20 +01:00