| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
This plugin was for developers, but no one uses it anymore. Plus the
only profiling hooks left in Evolution were in the MessageList widget,
which performs fine. There's better ways to collect profiling data
these days anyway (sysprof, systemtap, etc.).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
| |
Requires GTK+ >= 3.0.2 since GTK_STYLE_CLASS_PRIMARY_TOOLBAR is a very
recent addition.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Lockdown keys have moved to gsettings-desktop-schemas, so disable
lockdown integration until we're ready for GSettings.
|
|
|
|
|
| |
As of GLib 2.28 all GObject virtual methods, including constructed(),
are safe to chain up to unconditionally. Remove unnecessary checks.
|
| |
|
|
|
|
| |
GCC learned how to find dead assignments.
|
|
|
|
| |
Opens the Preferences window to the Composer Preferences section.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Easy enough to fake gtk_widget_get_preferred_size() in gtk2 using
gtk_widget_size_request(). Reduces diff noise with gtk3 branch.
|
| |
|
|
|
|
|
|
| |
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).
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
directories
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Fix works only when compiled with libical 0.46 or later
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Use the same alert handling policy as the composer.
|
| |
|
|
|
|
|
|
| |
GObject now does property bindings itself.
Requires GLib >= 2.26.
|
|
|
|
|
| |
Use it to override network availability detection as reported by
NetworkManager or other network monitoring software.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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().
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
EShellBackend now keeps an internal queue of live EActivity objects
passed to it via e_shell_backend_add_activity(). This will eventually
replace "mail_msg_active_table" in mail-mt.c and be used to coordinate
shutdown for all shell backends.
But first I have to eliminate mail_msg_wait().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
In GTK+ 2.21.8, the keysym names were renamed from GDK_* to GDK_KEY_*.
I've added backward-compatibility macors to gtk-compat.h, which can be
dumped as soon as we require GTK+ >= 2.22.0.
|
|
|
|
| |
Call SetDllDirectory() to reduce risk of DLL hijacking, and call SetProcessDEPPolicy() to reduce risk of rogue code execution.
|
| |
|
|
|
|
|
|
|
| |
If we're using GTK+ 2.21.8 (where gtk_dialog_set_has_separator() is
deprecated but the property is still present and defaults to TRUE), we
still need to set the property to FALSE. So instead use g_object_set()
up through GTK+ 2.90.6, after which the property itself is gone.
|
|
|
|
|
|
| |
Unfortunately the default value for this property is TRUE (bzzt, WRONG!)
so we can't just remove the function outright until we require GTK+ 2.22.
It was deprecated in GTK+ 2.21.8.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Prefer thread-safe G_DEFINE_TYPE and G_DEFINE_INTERFACE macros over
manual GType registration.
This is just a start... lots more to do.
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
We preview imported files by other means now.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
GIO had a bug for awhile where it would leave behind an empty
temp file with the pattern .goutputstream-XXXXXX if an output
stream operation was cancelled. We've had several reports of
these files in config directories, so remove any we find.
|
|
|
|
|
| |
If directory removal fails because the directory is not empty,
list the file names in that directory.
|
|
|
|
|
| |
Migration runs just before the main loop starts.
It's just a sequence of local directory and file renames.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Also replace "$USER_DATA_DIR/cache" path constructions with
e_get_user_cache_dir().
|
|
|
|
|
| |
This gives EShellSearchbar something concrete to call to direct focus
away from itself instead of tabbing forward and hoping for the best.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
and don't tamper with registry unless asked for it explicitely.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It just doesn't belong in Evolution anymore. We don't support syncing
with more modern devices -- see Conduits or SyncEvolution for that -- so
it does not make sense for older model Palm Pilot PDAs to be the lone
exception.
I have repackaged the Evolution-Data-Server conduit modules to be
provided by gnome-pilot itself in bug #619315. This should provide
eqivalent Palm Pilot syncing functionality; it's just being moved to
gnome-pilot.
This completely severs our dependency on deprecated GNOME 2.x libraries
which were still being dragged in by way of gnome-pilot dependencies.
It was also interfereing with our bundling of libgnomecanvas.
|
| |
|
|
|
|
|
| |
This uses the new gtk_assistant_commit() I had added to GTK+ for our
EImportAssistant progress page.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
This reverts commit 0cdd9484fec0b1fec0801df7d7e0b05c6544ba9b.
Causes the Mail window to erroneously switch to Contacts when opening
the Contacts window in express mode.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This reverts commit 2d68130cad1642c1995f3d4e8c3bc18b77977213.
Need to fix GConfBridge instead.
|
| |
|
| |
|
|\ |
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
to be used by windows default application setting dialogue
|
| | |
| | |
| | |
| | | |
register evolution as capable to handle mailto: protocol on startup
|
| |\| |
|
| | |
| | |
| | |
| | | |
need it in some situations.
|
| | |
| | |
| | |
| | | |
for adding in calendar since it doesn't have a toolbar.
|
| | | |
|
| | |
| | |
| | |
| | | |
preferences for calendar. Bit of a hack, but proves very useful.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
That was just for development. Now we hardcode the lists of widgets.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | | |
|
| | |
| | |
| | |
| | | |
startup wizard or not. Show only for mail and not calendar.
|
| |\| |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Thanks to Sashwaat.
|
| | |
| | |
| | |
| | | |
Bin the menu bar, disable the print icon, add a close button at top right.
|
| | |
| | |
| | |
| | | |
Use this in meego / full-screen mode
|
| | | |
|
| | |
| | |
| | |
| | | |
export EVO_MEEGO="session-type=small-screen" for the most fun.
|
| | |
| | |
| | |
| | | |
Adapt widget naming on MeeGo for theming etc.
|
| |\ \ |
|
| | |\|
| | | |
| | | |
| | | |
| | | |
| | | | |
Note that express2 got some documentation for EExtensible and friends,
and that documentation is not in gnome-2-30 yet. We need to cherry-pick
those commits into gnome-2-30 and elsewhere.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | | |
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Express mode requires a reduced preferences dialog. Many options in the
current preferences dialog are pure, unadulterated crack. So we need
an easy way to hide them, to simplify the dialog and reduce its size.
Here we add a function that takes a GConf key, reads a list of strings
from that key, and hides the widgets whose names are those strings.
This gives us an easy way to experiment with what widgets should
be hidden in the preferences dialog, without needing to recompile
all the time.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
configure the shell, to name widgets differently, and re-order
some menu/toolbar bits.
|
| | |
| | |
| | |
| | |
| | | |
Not implemented prettily, but cf. mail_shell_backend_window_created_cb
getting invoked even for addressbok windows ...
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
Conflicts:
doc/reference/shell/eshell-sections.txt
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| |/ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
to be used by windows default application setting dialogue
|
| |
| |
| |
| | |
register evolution as capable to handle mailto: protocol on startup
|
| | |
|
| |
| |
| |
| | |
need it in some situations.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Still remaining:
GtkAccessible::widget
GtkAssistant::forward
GtkAssistant::back
GtkObject::flags
GtkTreeStore::stamp
The GtkAssistant fields are related to bug #596428. We don't
need accessor functions so much as the enhancement described
there implemented.
https://bugzilla.gnome.org/show_bug.cgi?id=615613
|
| | |
|
| | |
|
| |
| |
| |
| | |
Remove old ChangeLog files that predate our switch to git.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
configure the shell, to name widgets differently, and re-order
some menu/toolbar bits.
|
| | |
|
| |
| |
| |
| |
| | |
Not implemented prettily, but cf. mail_shell_backend_window_created_cb
getting invoked even for addressbok windows ...
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
There's too much ancient, crufty code there that we can't realistically
support anymore. A workaround for those poor users still on 1.x is to
upgrade to some 2.x release first, then upgrade again to 3.x. An error
dialog explaining this will be shown at startup.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/ |
|
|
|
|
|
| |
This avoids closing the mail, then addressbook, and getting only an
addressbook when re-run (with no switchers in express mode).
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
We can't require the use of EUIManager everywhere because we don't
control all the UI manager instances -- the most compelling example
being the composer, whose UI manager comes from GtkhtmlEditor.
Instead, EPluginUI will check the instance type and pick an appropriate
"load_from_string" function.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
extend them to plugins - use a simple one-off boolean on the UI Manager
instead of exhaustively trying to propagate this information everywhere.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Adds a GalViewInstance::loaded signal so EShellView gets notified when
the initial view is loaded.
|
|
|
|
|
| |
Don't need to see status messages on the terminal when going online,
offline or quitting.
|
| |
|
|
|
|
| |
Apparently intltool disregards preprocessor directives...
|
|
|
|
|
|
|
|
| |
Avoids blocking the UI in case the save triggers an fsync() which, on
ext3, synchronizes the entire filesystem. The logic is a bit tricky
because we want to limit the frequency of saves and only run one save
operation at a time, but we also want to do an immediate last-ditch
save before finalizing the shell view.
|
| |
|
| |
|
|
|
|
|
| |
This kind of violates the shell window being unaware of specific shell
views, but we need a sane fallback so users don't get an empty window.
|
|
|
|
| |
Also, start fixing some Gtk-Doc warnings. There's a lot.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Also, let EShellSearchbar handle search state persistence.
|
|
|
|
|
| |
Also, add unique-1.0 to GNOME_PLATFORM so it's included in CFLAGS and
LIBADD variables everywhere.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
folders
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Rename it "GNOME Pilot Synchronization" and only display the item if
gnome-pilot is installed.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
EFocusTracker tracks the input focus within a window and helps keep
the sensitivity of "selectable" actions in the main menu up-to-date.
Selectable actions include Cut, Copy, Paste, Select All and Delete.
EFocusTracker has built-in support for widgets that implement the
GtkEditable interface such as GtkEntry and GtkTextView. It also
supports custom widgets that implement the ESelectable interface,
which is a subset of GtkEditable and can apply to anything that
displays selectable content (esp. tree views and ETables).
This commit integrates EFocusTracker with EShellWindow, CompEditor,
EMsgComposer, and ESignatureManager.
It also bumps the GtkHTML requirement to 2.29.5 to utilize the new
GtkhtmlEditor:html constructor property.
|
| |
|
| |
|
| |
|
|
|
|
| |
before.
|
|
|
|
|
| |
Drop all alert titles to be found in *.error.xml. HIG suggests alerts
do not have a title.
|
| |
|
|
|
|
|
|
|
|
|
| |
/apps/evolution/mail/display/show_preview
/apps/evolution/mail/display/thread_list
These keys are no longer needed since we're storing the settings by
folder now in ~/.evolution/mail/config/state. To simplify things we use
hard-coded defaults: TRUE for PreviewVisible, FALSE for GroupByThreads.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
| |
This allows modules to specify their own data dir in a flexible way without
having them hard-coded to the backend class name. For example, the data dir for
the mail backend should be specified by the mail session (eventually as an eds
daemon) and the vfunc will allow the shell to query that in a generic way.
|
| |
|