Commit Graph

74 Commits

Author SHA1 Message Date
def98ce8d5 Gtk-Doc updates. 2011-08-10 00:14:32 -04:00
ad89623436 Remove e_get_subscribable_accounts().
Another EAccount utility function down...
2011-05-28 22:18:52 -04:00
0987f756cd Remove unused e_get_gnome2_user_dir(). 2011-05-16 10:18:12 -04:00
65f2472d6a Remove e_get_account_by_source_url().
Function is no longer used, or wanted.
2011-05-06 11:35:16 -04:00
18d8b5f73d Remove e_get_account_by_transport_url().
Function is no longer used, or wanted.
2011-05-02 16:09:12 -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
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
e298452a84 Update API docs. 2010-12-22 20:37:25 -05:00
0ab70ad33c Add GBinding transform funcs for enum types.
We'll want to store enum settings by their nicknames.
2010-11-04 14:18:34 -04:00
a36d95f93b Update API docs. 2010-11-04 14:18:34 -04:00
ccc2b3a14b EActivity: Add an "alert-sink" property.
This is just for convenience, EActivity does not use this property.

Especially useful in async function callbacks when the operation
failed and now you have to do something useful with the GError.
2010-10-31 22:54:30 -04:00
43814fe775 Bug 633172 - Folder->Subscriptions is always enabled 2010-10-29 19:54:45 -04: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
18447890ff ESignatureList cleanups. 2010-10-21 00:24:46 -04:00
ec170e47fd Move more account utilities to e-account-utils.c. 2010-10-18 12:32:38 -04:00
35e55a8d6e Send errors to an EAlertSink instead of the task bar.
This marks the end of unintrusive error dialogs, which were too
unintrusive.  We now show errors directly in the main window using
the EAlert / EAlertSink framework.
2010-10-18 12:32:37 -04:00
51ebf20237 EAlert: Allow arbitrary actions to be added.
You can now amend the predefined actions in an EAlert by calling
e_alert_add_action().  Useful for adding actions from an existing
GtkUIManager.

Call e_alert_peek_actions() to obtain a combined list of predefined
and custom actions.  These will typically serve as "related" actions
for GtkButtons (cf. gtk_activatable_set_related_action()).

Also, both EShellWindow and EShellView now implement EAlertSink.  Use
EShellWindow for application-wide alerts, EShellView for view-specific
alerts.
2010-10-18 12:32:36 -04:00
2197e6401e Implement EAlertSinkInterface in EShellContent.
Use the same alert handling policy as the composer.
2010-10-18 10:57:36 -04:00
1e663aa132 Replace EBinding with GBinding.
GObject now does property bindings itself.

Requires GLib >= 2.26.
2010-10-14 07:12:52 -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
3fbcc8ef80 EShellBackend: Respond to EShell::prepare-for-quit signals.
Listen for "prepare-for-quit" signals from the shell and inhibit
shutdown until all the activities we're tracking are finalized.

Also, add a couple supporting functions:

  gboolean  e_shell_backend_is_busy     (EShellBackend *shell_backend);
  void      e_shell_backend_cancel_all  (EShellBackend *shell_backend);

These will eventually replace mail_msg_active() and mail_cancel_all().
2010-10-13 16:00:03 -04:00
0e4c54eddc Messin around with EAlerts.
Trying out a new interface called EAlertSink.  The idea is to centralize
how errors are shown to the user.  A GtkWindow subclass would implement
the EAlertSink interface, which consists of a single method:

    void  (*submit_alert)  (EAlertSink *alert_sink, EAlert *alert);

The subclass has complete control over what to do with the EAlert,
although I imagine we'll wind up implementing various alert-handling
policies as standalone widgets such as EAlertDialog.  I'd like to try
an EAlertInfoBar.

Code that would otherwise display an error dialog itself would instead
pass the EAlert to an appropriate EAlertSink and be done with it.

Nothing is final yet.  Still hacking on EAlert trying to find an API
that feels right for these use cases.
2010-09-29 21:11:44 -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
a11439aeaf Update API documentation. 2010-07-18 13:28:10 -04:00
f92b45d7df Fix places where "~/.evolution" is hard-coded.
Also replace "$USER_DATA_DIR/cache" path constructions with
e_get_user_cache_dir().
2010-07-08 16:59:11 -04:00
aac92ccc52 Move EPoolv back to Evolution from libedataserver.
MessageList is the only thing still using it.
EMemPool is gone now, so it uses CamelMemPool instead (same thing).
2010-03-31 16:34:06 -04:00
0347770e99 Update API docs. 2010-03-29 19:18:05 -04:00
f7547cc6ac Simplify the search UI for express mode.
For express mode:

- Move the search bar up to the toolbar.

- Hide the "filter" combo box and lock down the first item.

- Hide the "scope" combo box and lock down the first item.
  (This is the combo box with "Current Folder" only in the mailer.)

- EShellView owns the search bar widget now instead of EShellContent.

- Insert several nasty hacks that will likely come back to bite me.
2010-03-26 20:29:30 -04:00
aba12c7f78 Bug 613639 - Evolution hard codes .gnome2 2010-03-23 10:22:44 -04:00
5c3c117a73 More API documentation tweaking. 2010-03-21 23:30:44 -04: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
ecdb79111c Document EExtensible and EExtension.
The mechanism here is simple but hard to explain without leaning heavily
on object-oriented jargon.  Consider this a rough draft.  Illustrations
would certainly help clarify.
2010-03-21 15:49:30 -04: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
1040078ce6 Update API documentation.
Also, start fixing some Gtk-Doc warnings.  There's a lot.
2010-02-09 18:02:51 -05:00
48462592cb Add a EShellWindow::shell-view-created signal.
The signal uses the name of the newly created shell view as the detail,
so for example "shell-view-created::mail" is emitted when the "mail"
view is created.

Also, add e_shell_window_peek_shell_view() to obtain a shell view if it
exists but without instantiating it.

Using these new tools, teach the templates plugin to wait for the user
to switch to the "mail" view before connecting to its "update-actions"
signal.  Previously is was instantiating the "mail" view itself.
2010-01-22 11:46:34 -05:00
4cbbdedf52 Refactor the EShell search API.
Move the search interface to a new widget: EShellSearchbar

The current search rule is now stored in EShellView, and the search
context in EShellViewClass similar to GalViewCollection (since it's
class-specific, not instance-specific).

Also add a couple new signals to EShellView: "clear-search" and
"custom-search" ("custom" refers to an advanced search or a saved
search -- something more complex than a quick search).

Still working out a few kinks.  The search entry is clearly trying to
be too many things.  We need a different way of indicating that you're
looking at search results.  Perhaps a search results banner similar to
Nautilus.
2009-12-18 22:38:00 -05:00
38a616e8b7 Add an EShell:module-directory constructor property.
This tells EShell where to look for EModules.  Best practice is to
define the directory in your CPPFLAGS and then pass it to EShell at
instantiation time, like so:

Makefile.am:

    evolution_CPPFLAGS = \
            -DMODULEDIR=\""$(moduledir)"\"
            ...

main.c:

    shell = g_object_new (
            E_TYPE_SHELL, "module-directory", MODULEDIR, ...);
2009-12-02 00:57:44 -05:00
793e57e24c Add private virtual methods to EShellWindowClass.
So Anjal can override what it needs to for its own purpose.
Also makes the EShellWindow design a little cleaner.

Methods added:

  GtkWidget *    (*construct_menubar)   (EShellWindow *shell_window);
  GtkWidget *    (*construct_toolbar)   (EShellWindow *shell_window);
  GtkWidget *    (*construct_sidebar)   (EShellWindow *shell_window);
  GtkWidget *    (*construct_content)   (EShellWindow *shell_window);
  GtkWidget *    (*construct_taskbar)   (EShellWindow *shell_window);
  EShellView *   (*create_shell_view)   (EShellWindow *shell_window,
                                         const gchar *view_name);

Also added some new GObject properties to help decouple actions from
internal EShellWindow widgets created by these methods:

  EShellWindow:sidebar-visible
  EShellWindow:switcher-visible
  EShellWindow:taskbar-visible
  EShellWindow:toolbar-visible
2009-12-01 22:27:11 -05:00
b9f0119ef5 Update API documentation. 2009-11-28 18:02:49 -05:00
6b34da9aed Update API documentation. 2009-11-14 12:14:48 -05:00
5beeca1f80 Kill e-cursor(s) (both of them). 2009-11-09 21:19:20 -05:00
86ecfc5053 Convert some "Save As" actions to run asynchronously.
This introduces e-shell-utils for miscellaneous utility functions
that integrate with the shell or shell settings.  First function
is e_shell_run_save_dialog(), which automatically remembers the
selected folder in the file chooser dialog.

Also, kill some redundant save dialog functions, as well as some
write-this-string-to-disk functions that block.
2009-11-07 14:01:46 -05:00
23c781c247 Remove redundant URI/filename conversion functions.
Use g_filename_to_uri() instead of e_util_filename_to_uri().
Use g_filename_from_uri() instead of e_util_uri_to_filename().
2009-11-05 23:26:32 -05:00
43a1145226 Rename EShellImporter to EImportAssistant and move it to widgets. 2009-09-26 10:28:24 -04:00
c30e55b2d5 Convert the shell importer to a widget class. 2009-09-26 10:28:18 -04:00
5b771a7500 Developer documentation improvements. 2009-09-22 21:26:54 -04:00
40a6ccc269 Fix some mistakes in the EShell documentation. 2009-09-02 22:18:41 -04:00
53268d5516 Introduce an EShellView::execute-search signal.
This addresses bug #593896 but is also a cleaner design than before.
It introduces an EShellView::execute-search signal and renames the
"search-execute" action to "search-quick" to clarify that it's only
meant for the "quick" search bar in the main window.

Shell view subclasses should implement the execute_search() method to
actually execute a search.

e_shell_view_execute_search() emits the new signal.
2009-09-02 15:26:49 -04:00
fac731e735 Simplify binding EShellSettings properties to GConf keys. 2009-07-31 14:02:14 -04:00
009afeb0d1 Update EShell API docs. 2009-07-14 14:07:33 -04:00