[Tracker] Thunderbird support - patches



Hello Tracker community,

I am sending few patches to add support for Thunderbird Emails through extension, which was originally written by Pierre Östlund[0].

I have made each patch for each file, because it is easier for me to describe what actually the patches are doing.

After applying those patches, you can see README, which describes process of building and installing Tracker with Thunderbird support.

I have tried this on my e-mail account which contains *lots* of e-mails, and it worked fine :-)

Comments welcome :-)

So, a little explanation of each patch:
1. tracker-email-evolution.diff
There was a little bug, which basically make iteration, but the values were not taken from the interation itself. Also I have changed the function a little bit, and now if the name from the e-mail is not found it is e-mail itself (which caused seg fault on Solaris).

2. thunderbird-extension.diff
Patch that need to be applied for the thunderbird-extension taken from beagle svn. This patch should be placed in the tracker source code as described in the patched README file. The extension in the Thunderbird will tell that it is Beagle one. In the future it will change, I need to discuss this.

3. tracker-01-thunderbird-support.diff
Adds to trackerd.c routines for ThunderbirdEmails service, enables index_thunderbird_emails.

4. tracker-02-thunderbird-support.diff
   Adds description to docs/tracker.cfg.5 for the IndexEvolutionEmails

5. tracker-03-thunderbird-support.diff
Adds to data/services/default.service [ThunderbirdEmails] servuce description

6. tracker-04-thunderbird-support.diff
Changes the glade file to allow "Enable Thunderbird email indexing" in tracker-preferences. The glade file was generated using glade-3.

7. tracker-05-thunderbird-support.diff
Adds keys for configuration to tracker-preferences.c for Thunderbird (/Emails/IndexThunderbirdEmails)

8. tracker-06-thunderbird-support.diff
   Adds the "IndexThunderbirdEmails=true\n" to the configuration file.

9. tracker-07-thunderbird-support.diff
Changes the function thunderbird_watch_emails to have argument "(DBConnection *db_con)". I made this change, since all other e-mail headers have this argument, so why to have different one?

10. tracker-08-thunderbird-support.diff
   * Adds the "IndexThunderbirdEmails=true\n" to the configuration file.
* Adds the tracker_parse_log_message_and_add_missing_formatting function. This function replaces "%" with the "%%". This was written, because some of the log messages contained characters with the "%" for example "mail-message://test test%20Sample" in that case printf and other functions that used formatting on Solaris caused seg fault, because of wrong string. The correct string should look like "mail-message://test test%%20Sample".

11. tracker-09-thunderbird-support.diff
Changes argument passed to the thunderbird_watch_emails function (change followed by patch: tracker-07-thunderbird-support.diff).

12. tracker-10-thunderbird-support.diff
Adds tracker_parse_log_message_and_add_missing_formatting to the header file (change followed by patch: tracker-08-thunderbird-support.diff).

13. tracker-11-thunderbird-support.diff
Parses output of the log message (change followed by patch: tracker-08-thunderbird-support.diff).

14. tracker-12-thunderbird-support.diff
Adds MAIL_APP_THUNDERBIRD_FEED as an application to the MailApplication enumeration. This might be in other place, but since feeds and mails generated by extension doesn't differ almost at all, this was the simplest way to go.

15. tracker-13-thunderbird-support.diff
Change followed by previous patch. This will add MAIL_APP_THUNDERBIRD_FEED to the tracker-db-email.c and simple return correct mime. Also fixes the email subject, when the subject is null.

16. tracker-14-thunderbird-support.diff
In the tracker-search-tool-callbacks.c adds opening e-mail by Thunderbird functionality.

17. tracker-15-thunderbird-support.diff
Lot's of changes in tracker-email-thunderbird.c to support generated messages. The old functions were not deleted, just new ones added above those.

18. tracker-16-thunderbird-support.diff
   Adds my name to the AUTHORS file ;-) :-)

19. tracker-17-thunderbird-support.diff
Changes Makefile.am to build thunderbird-extension if this extension was found and the configure was run --with-thunderbird-extension option

20. tracker-18-thunderbird-support.diff
Changes configure.ac to get --with-thunderbird-extension as an argument. Also checks if the thunderbird-extension was patched with the thunderbird-extension.diff

21. tracker-19-thunderbird-support.diff
   Changes in the README.


TODO;
- Dealing with deletion of folders and messages
- Feeds. To enable feeds, only few lines of code needs to be uncommented, but I need to discuss this, since the feed is going to be another service, so I don't want to index them as an Email service, that is why I have commented this out.


[0] http://postlund.org/
--
all the best
Michal Pryc
http://blogs.sun.com/migi
Index: content/beagleIndexer.js
===================================================================
--- content/beagleIndexer.js    (revision 3879)
+++ content/beagleIndexer.js    (working copy)
@@ -75,7 +75,7 @@
                        if (!file || !file.isFile ())
                                continue;
                        
-                       var number = parseInt (file.leafName);
+                       var number = parseInt (file.leafName.substring(0,file.leafName.length-4));
                        if (object_count == -1 || object_count > number)
                                object_count = number;
                }
@@ -102,7 +102,7 @@
        
        do {
                file.initWithPath (settings.getCharPref ('DestinationDirectory') +
-                       "/ToIndex/" + object_count++);  
+                       "/ToIndex/" + object_count++ +".tms");  
        } while (file.exists ());
 
        return file.path;
Index: content/beagleService.js
===================================================================
--- content/beagleService.js    (revision 3879)
+++ content/beagleService.js    (working copy)
@@ -199,6 +199,7 @@
                                        stop (true);
                                        return;
                                }
+                        }
                                
                                // We need to create the ToIndex directory in case it doesn't exist
                                dir.initWithPath (gBeagleSettings.getCharPref ('DestinationDirectory') + 
'/ToIndex');
@@ -217,12 +218,13 @@
                                        stop (true);
                                        return;
                                }
-                       } else {
-                               dump ("Destination directory does not exist!\n");
-                               addWarning ('destinationDirectoryNoExist', null, 0);
-                               stop (true);
-                               return;
-                       }
+               // Commented, if the directory does not exists it will be created by plugin
+               //      } else {
+               //              dump ("Destination directory does not exist!\n");
+               //              addWarning ('destinationDirectoryNoExist', null, 0);
+               //              stop (true);
+               //              return;
+               //      }
                } catch (ex) {
                        dump ("Failed to create ToIndex directory! Bailing out! (" + ex + ")\n");
                        addWarning ('failedCreateToIndexDir', [ex], 1);
Index: content/beagleSettings.js
===================================================================
--- content/beagleSettings.js   (revision 3879)
+++ content/beagleSettings.js   (working copy)
@@ -51,7 +51,7 @@
 // $BEAGLE_STORAGE environment variable. $HOME can also be overriden by $BEAGLE_HOME.
 function getDestinationDirectory ()
 {
-       var directory = '/Indexes/ThunderbirdIndex';
+       var directory = '/ThunderbirdEmails';
        var beagleStorage = environment.get ('BEAGLE_STORAGE');
        
        if (beagleStorage)
@@ -61,7 +61,7 @@
                if (beagleHome)
                        directory = beagleHome + '/.beagle/' + directory;
                else
-                       directory = environment.get ('HOME') + '/.beagle/' + directory;
+                       directory = environment.get ('HOME') + '/.xesam/' + directory;
        }
        
        return directory;
Index: patched.tmp
===================================================================
diff -N patched.tmp
--- /dev/null   (revision 3879)
+++ patched.tmp    (working copy)
@@ -0,0 +1,1 @@
+
Index: src/trackerd/trackerd.c
===================================================================
--- src/trackerd/trackerd.c     (revision 807)
+++ src/trackerd/trackerd.c     (working copy)
@@ -1103,7 +1103,8 @@
                                                case INDEX_EMAILS:  {
                                                                tracker_cache_flush_all (db_con);
 
-                                                               if (tracker->index_evolution_emails || 
tracker->index_kmail_emails) {
+                                                               if (tracker->index_evolution_emails || 
tracker->index_kmail_emails
+                                                                        || 
tracker->index_thunderbird_emails) {
 
                                                                        tracker_email_add_service_directories 
(db_con->emails);
                                                                        tracker_log ("Starting email 
indexing...");
@@ -1121,6 +1122,13 @@
                                                                                process_directory_list 
(db_con, list, TRUE);
                                                                                g_slist_free (list);
                                                                        }
+                                                                        
+                                                                        if 
(tracker->index_thunderbird_emails) {
+                                                                               GSList *list = 
tracker_get_service_dirs ("ThunderbirdEmails");
+                                                                               tracker_add_root_directories 
(list);
+                                                                               process_directory_list 
(db_con, list, TRUE);
+                                                                               g_slist_free (list);
+                                                                       }
                                                        
                                                                }
 
@@ -1831,7 +1839,7 @@
        tracker->flush_count = 0;
 
        tracker->index_evolution_emails = TRUE;
-       tracker->index_thunderbird_emails = FALSE;
+       tracker->index_thunderbird_emails = TRUE;
        tracker->index_kmail_emails = TRUE;
 
        tracker->use_extra_memory = TRUE;
@@ -1881,7 +1889,6 @@
 static void
 sanity_check_option_values (void)
 {
-       tracker->index_thunderbird_emails = FALSE;
 
        if (tracker->max_index_text_length < 0) tracker->max_index_text_length = 0;
        if (tracker->max_words_to_index < 0) tracker->max_words_to_index = 0;
Index: docs/tracker.cfg.5
===================================================================
--- docs/tracker.cfg.5  (revision 807)
+++ docs/tracker.cfg.5  (working copy)
@@ -151,7 +151,10 @@
 This section may contain Email specific options.
 .TP
 IndexEvolutionEmails=BOOLEAN
-Enable or disable indexing or Evolution emails.
+Enable or disable indexing for Evolution emails.
+.TP
+IndexThunderbirdEmails=BOOLEAN
+Enable or disable indexing for Thunderbird emails.
 
 .SS Performance
 Trackerd performance related options.
Index: data/services/default.service
===================================================================
--- data/services/default.service       (revision 807)
+++ data/services/default.service       (working copy)
@@ -154,6 +154,18 @@
 TileMetadata=Email:Sender;Email:Subject;Email:Date;Email:SentTo;Email:CC;Email:Attachments
 ContentMetadata=Email:Body
 
+[ThunderbirdEmails]
+DisplayName=Thunderbird Emails
+Description=Thunderbird based emails
+Parent=Emails
+ViewerExec=thunderbird -viewmetatracker "%1"
+KeyMetadata1=Email:Subject
+KeyMetadata2=Email:Sender
+KeyMetadata3=Email:Date
+TabularMetadata=Email:Sender;Email:Subject;Email:Date;
+TileMetadata=Email:Sender;Email:Subject;Email:Date;Email:SentTo;Email:CC;Email:Attachments
+ContentMetadata=Email:Body
+
 [KMailEmails]
 DisplayName=KMail Emails
 Description=KMail based emails
Index: src/tracker-preferences/tracker-preferences.glade
===================================================================
--- src/tracker-preferences/tracker-preferences.glade   (revision 807)
+++ src/tracker-preferences/tracker-preferences.glade   (working copy)
@@ -1,393 +1,197 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd";>
-
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
 <glade-interface>
-
-<widget class="GtkDialog" id="dlgPreferences">
-  <property name="border_width">5</property>
-  <property name="title" translatable="yes">Tracker Preferences</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="default_width">431</property>
-  <property name="default_height">462</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <property name="has_separator">False</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox1">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">2</property>
-
-      <child internal-child="action_area">
-       <widget class="GtkHButtonBox" id="dialog-action_area1">
-         <property name="visible">True</property>
-         <property name="layout_style">GTK_BUTTONBOX_EDGE</property>
-
-         <child>
-           <widget class="GtkButton" id="cmdHelp">
-             <property name="visible">True</property>
-             <property name="label">gtk-help</property>
-             <property name="use_stock">True</property>
-             <property name="relief">GTK_RELIEF_NORMAL</property>
-             <property name="focus_on_click">True</property>
-             <property name="response_id">0</property>
-           </widget>
-         </child>
-
-         <child>
-           <widget class="GtkButton" id="cmdClose">
-             <property name="visible">True</property>
-             <property name="label">gtk-close</property>
-             <property name="use_stock">True</property>
-             <property name="relief">GTK_RELIEF_NORMAL</property>
-             <property name="focus_on_click">True</property>
-             <property name="response_id">0</property>
-           </widget>
-         </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">False</property>
-         <property name="fill">True</property>
-         <property name="pack_type">GTK_PACK_END</property>
-       </packing>
-      </child>
-
-      <child>
-       <widget class="GtkNotebook" id="nbPreferences">
-         <property name="visible">True</property>
-         <property name="show_tabs">True</property>
-         <property name="show_border">True</property>
-         <property name="tab_pos">GTK_POS_TOP</property>
-         <property name="scrollable">False</property>
-         <property name="enable_popup">False</property>
-
-         <child>
-           <widget class="GtkAlignment" id="alignment1">
-             <property name="visible">True</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xscale">1</property>
-             <property name="yscale">1</property>
-             <property name="top_padding">10</property>
-             <property name="bottom_padding">5</property>
-             <property name="left_padding">5</property>
-             <property name="right_padding">5</property>
-
-             <child>
-               <widget class="GtkVBox" id="vbox1">
-                 <property name="visible">True</property>
-                 <property name="homogeneous">False</property>
-                 <property name="spacing">0</property>
-
-                 <child>
-                   <widget class="GtkFrame" id="fraStartup">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment2">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox2">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox8">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="lblInitialSleep">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">Index _delay: </property>
-                                     <property name="use_underline">True</property>
-                                     <property name="use_markup">False</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="mnemonic_widget">spnInitialSleep</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkSpinButton" id="spnInitialSleep">
-                                     <property name="visible">True</property>
-                                     <property name="can_focus">True</property>
-                                     <property name="climb_rate">1</property>
-                                     <property name="digits">0</property>
-                                     <property name="numeric">False</property>
-                                     <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                                     <property name="snap_to_ticks">False</property>
-                                     <property name="wrap">False</property>
-                                     <property name="adjustment">60 0 1000 1 300 300</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">5</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="lblInitialSleepSeconds">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">Seconds</property>
-                                     <property name="use_underline">False</property>
-                                     <property name="use_markup">False</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">3</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label5">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Startup&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">6</property>
-                     <property name="expand">False</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkFrame" id="frame5">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment9">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox11">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkCheckButton" id="chkEnableIndexing">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Enable _Indexing</property>
-                                 <property name="use_underline">True</property>
-                                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                                 <property name="focus_on_click">True</property>
-                                 <property name="active">True</property>
-                                 <property name="inconsistent">False</property>
-                                 <property name="draw_indicator">True</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">3</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkCheckButton" id="chkEnableWatching">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Enable _Watching</property>
-                                 <property name="use_underline">True</property>
-                                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                                 <property name="focus_on_click">True</property>
-                                 <property name="active">True</property>
-                                 <property name="inconsistent">False</property>
-                                 <property name="draw_indicator">True</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label12">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Indexing 
options&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">6</property>
-                     <property name="expand">False</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkFrame" id="frame11">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment17">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox17">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox11">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="label27">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">_Language:</property>
-                                     <property name="use_underline">True</property>
-                                     <property name="use_markup">False</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="mnemonic_widget">comLanguage</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">False</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkComboBox" id="comLanguage">
-                                     <property name="visible">True</property>
-                                     <property name="items" translatable="yes">danish
+  <widget class="GtkDialog" id="dlgPreferences">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Tracker Preferences</property>
+    <property name="default_width">431</property>
+    <property name="default_height">462</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkNotebook" id="nbPreferences">
+            <property name="visible">True</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="top_padding">10</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">5</property>
+                <property name="right_padding">5</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox1">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkFrame" id="fraStartup">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment2">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox2">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox8">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="lblInitialSleep">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Index _delay: </property>
+                                        <property name="use_underline">True</property>
+                                        <property name="mnemonic_widget">spnInitialSleep</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkSpinButton" id="spnInitialSleep">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">60 0 1000 1 300 300</property>
+                                        <property name="climb_rate">1</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="lblInitialSleepSeconds">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Seconds</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="padding">3</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label5">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Startup&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="padding">6</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="frame5">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment9">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox11">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkCheckButton" id="chkEnableIndexing">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Enable _Indexing</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">3</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkCheckButton" id="chkEnableWatching">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Enable _Watching</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label12">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Indexing 
options&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="padding">6</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="frame11">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment17">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox17">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox11">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label27">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">_Language:</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="mnemonic_widget">comLanguage</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkComboBox" id="comLanguage">
+                                        <property name="visible">True</property>
+                                        <property name="items" translatable="yes">danish
 dutch
 english
 finnish
@@ -399,1768 +203,1087 @@
 russian
 spanish
 swedish</property>
-                                     <property name="add_tearoffs">False</property>
-                                     <property name="focus_on_click">True</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">2</property>
-                                     <property name="expand">True</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">3</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">False</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label26">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Stemming&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">6</property>
-                     <property name="expand">True</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="tab_expand">False</property>
-             <property name="tab_fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkLabel" id="label1">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">_General</property>
-             <property name="use_underline">True</property>
-             <property name="use_markup">False</property>
-             <property name="justify">GTK_JUSTIFY_LEFT</property>
-             <property name="wrap">False</property>
-             <property name="selectable">False</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xpad">0</property>
-             <property name="ypad">0</property>
-             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-             <property name="width_chars">-1</property>
-             <property name="single_line_mode">False</property>
-             <property name="angle">0</property>
-           </widget>
-           <packing>
-             <property name="type">tab</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkAlignment" id="alignment5">
-             <property name="visible">True</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xscale">1</property>
-             <property name="yscale">1</property>
-             <property name="top_padding">10</property>
-             <property name="bottom_padding">5</property>
-             <property name="left_padding">5</property>
-             <property name="right_padding">5</property>
-
-             <child>
-               <widget class="GtkVBox" id="vbox5">
-                 <property name="visible">True</property>
-                 <property name="homogeneous">False</property>
-                 <property name="spacing">5</property>
-
-                 <child>
-                   <widget class="GtkFrame" id="fraThrottling">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment6">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox6">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox4">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="lblThrottlingLevel">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">_Indexing speed:</property>
-                                     <property name="use_underline">True</property>
-                                     <property name="use_markup">False</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">2</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">4</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox10">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="label24">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">Faster</property>
-                                     <property name="use_underline">False</property>
-                                     <property name="use_markup">False</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">7</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">False</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkHScale" id="scaThrottle">
-                                     <property name="visible">True</property>
-                                     <property name="draw_value">True</property>
-                                     <property name="value_pos">GTK_POS_TOP</property>
-                                     <property name="digits">0</property>
-                                     <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
-                                     <property name="inverted">False</property>
-                                     <property name="adjustment">0 0 20 1 1 0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">2</property>
-                                     <property name="expand">True</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="label23">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">Slower</property>
-                                     <property name="use_underline">False</property>
-                                     <property name="use_markup">False</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">3</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">False</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">2</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="lblThrottling">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Throttling&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">6</property>
-                     <property name="expand">False</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkFrame" id="frame8">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment12">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox13">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkRadioButton" id="optReducedMemory">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">_Minimize memory usage (slower 
indexing)</property>
-                                 <property name="use_underline">True</property>
-                                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                                 <property name="focus_on_click">True</property>
-                                 <property name="active">False</property>
-                                 <property name="inconsistent">False</property>
-                                 <property name="draw_indicator">True</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkRadioButton" id="optNormal">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">_Use additonal memory for faster 
indexing</property>
-                                 <property name="use_underline">True</property>
-                                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                                 <property name="focus_on_click">True</property>
-                                 <property name="active">True</property>
-                                 <property name="inconsistent">False</property>
-                                 <property name="draw_indicator">True</property>
-                                 <property name="group">optReducedMemory</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label18">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Resource 
Usage&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkFrame" id="frame12">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment18">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox18">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox14">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="label30">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">Maximum _amount of text to 
Index (KB)</property>
-                                     <property name="use_underline">True</property>
-                                     <property name="use_markup">False</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="mnemonic_widget">spnMaxText</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">1</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkSpinButton" id="spnMaxText">
-                                     <property name="visible">True</property>
-                                     <property name="can_focus">True</property>
-                                     <property name="climb_rate">1</property>
-                                     <property name="digits">0</property>
-                                     <property name="numeric">False</property>
-                                     <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                                     <property name="snap_to_ticks">False</property>
-                                     <property name="wrap">False</property>
-                                     <property name="adjustment">1024 1 1000000 1 300 300</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">5</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">3</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox15">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkLabel" id="label31">
-                                     <property name="visible">True</property>
-                                     <property name="label" translatable="yes">Maximum number of unique 
_words to index</property>
-                                     <property name="use_underline">True</property>
-                                     <property name="use_markup">True</property>
-                                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                     <property name="wrap">False</property>
-                                     <property name="selectable">False</property>
-                                     <property name="xalign">0.5</property>
-                                     <property name="yalign">0.5</property>
-                                     <property name="xpad">0</property>
-                                     <property name="ypad">0</property>
-                                     <property name="mnemonic_widget">spnMaxWords</property>
-                                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                     <property name="width_chars">-1</property>
-                                     <property name="single_line_mode">False</property>
-                                     <property name="angle">0</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkSpinButton" id="spnMaxWords">
-                                     <property name="visible">True</property>
-                                     <property name="can_focus">True</property>
-                                     <property name="climb_rate">1</property>
-                                     <property name="digits">0</property>
-                                     <property name="numeric">False</property>
-                                     <property name="update_policy">GTK_UPDATE_ALWAYS</property>
-                                     <property name="snap_to_ticks">False</property>
-                                     <property name="wrap">False</property>
-                                     <property name="adjustment">10000 1000 1000000 100 500 500</property>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">5</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label32">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Indexing Limits (per 
file)&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">6</property>
-                     <property name="expand">False</property>
-                     <property name="fill">False</property>
-                   </packing>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="tab_expand">False</property>
-             <property name="tab_fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkLabel" id="label4">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">P_erformance</property>
-             <property name="use_underline">True</property>
-             <property name="use_markup">False</property>
-             <property name="justify">GTK_JUSTIFY_LEFT</property>
-             <property name="wrap">False</property>
-             <property name="selectable">False</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xpad">0</property>
-             <property name="ypad">0</property>
-             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-             <property name="width_chars">-1</property>
-             <property name="single_line_mode">False</property>
-             <property name="angle">0</property>
-           </widget>
-           <packing>
-             <property name="type">tab</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkVBox" id="vbox14">
-             <property name="visible">True</property>
-             <property name="homogeneous">False</property>
-             <property name="spacing">0</property>
-
-             <child>
-               <widget class="GtkFrame" id="frame9">
-                 <property name="visible">True</property>
-                 <property name="label_xalign">0</property>
-                 <property name="label_yalign">0.5</property>
-                 <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                 <child>
-                   <widget class="GtkAlignment" id="alignment15">
-                     <property name="visible">True</property>
-                     <property name="xalign">0.5</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xscale">1</property>
-                     <property name="yscale">1</property>
-                     <property name="top_padding">0</property>
-                     <property name="bottom_padding">0</property>
-                     <property name="left_padding">12</property>
-                     <property name="right_padding">0</property>
-
-                     <child>
-                       <widget class="GtkVBox" id="vbox15">
-                         <property name="visible">True</property>
-                         <property name="homogeneous">False</property>
-                         <property name="spacing">0</property>
-
-                         <child>
-                           <widget class="GtkCheckButton" id="chkIndexContents">
-                             <property name="visible">True</property>
-                             <property name="label" translatable="yes">Index _file contents</property>
-                             <property name="use_underline">True</property>
-                             <property name="relief">GTK_RELIEF_NORMAL</property>
-                             <property name="focus_on_click">True</property>
-                             <property name="active">True</property>
-                             <property name="inconsistent">False</property>
-                             <property name="draw_indicator">True</property>
-                           </widget>
-                           <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">False</property>
-                             <property name="fill">False</property>
-                           </packing>
-                         </child>
-
-                         <child>
-                           <widget class="GtkCheckButton" id="chkGenerateThumbs">
-                             <property name="visible">True</property>
-                             <property name="label" translatable="yes">Generate _thumbnails</property>
-                             <property name="use_underline">True</property>
-                             <property name="relief">GTK_RELIEF_NORMAL</property>
-                             <property name="focus_on_click">True</property>
-                             <property name="active">False</property>
-                             <property name="inconsistent">False</property>
-                             <property name="draw_indicator">True</property>
-                           </widget>
-                           <packing>
-                             <property name="padding">1</property>
-                             <property name="expand">False</property>
-                             <property name="fill">True</property>
-                           </packing>
-                         </child>
-
-                         <child>
-                           <widget class="GtkCheckButton" id="chkSkipMountPoints">
-                             <property name="visible">True</property>
-                             <property name="label" translatable="yes">Index _mounted directories</property>
-                             <property name="use_underline">True</property>
-                             <property name="relief">GTK_RELIEF_NORMAL</property>
-                             <property name="focus_on_click">True</property>
-                             <property name="active">False</property>
-                             <property name="inconsistent">False</property>
-                             <property name="draw_indicator">True</property>
-                           </widget>
-                           <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">False</property>
-                             <property name="fill">False</property>
-                           </packing>
-                         </child>
-                       </widget>
-                     </child>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkLabel" id="label20">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">&lt;b&gt;Indexing&lt;/b&gt;</property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">True</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">False</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">0.5</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">0</property>
-                     <property name="ypad">0</property>
-                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                     <property name="width_chars">-1</property>
-                     <property name="single_line_mode">False</property>
-                     <property name="angle">0</property>
-                   </widget>
-                   <packing>
-                     <property name="type">label_item</property>
-                   </packing>
-                 </child>
-               </widget>
-               <packing>
-                 <property name="padding">6</property>
-                 <property name="expand">False</property>
-                 <property name="fill">False</property>
-               </packing>
-             </child>
-
-             <child>
-               <widget class="GtkFrame" id="fraGeneralIndexing">
-                 <property name="visible">True</property>
-                 <property name="label_xalign">0</property>
-                 <property name="label_yalign">0.5</property>
-                 <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                 <child>
-                   <widget class="GtkAlignment" id="alignment7">
-                     <property name="visible">True</property>
-                     <property name="xalign">0.5</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xscale">1</property>
-                     <property name="yscale">1</property>
-                     <property name="top_padding">0</property>
-                     <property name="bottom_padding">0</property>
-                     <property name="left_padding">12</property>
-                     <property name="right_padding">0</property>
-
-                     <child>
-                       <widget class="GtkVBox" id="vbox7">
-                         <property name="visible">True</property>
-                         <property name="homogeneous">False</property>
-                         <property name="spacing">0</property>
-
-                         <child>
-                           <widget class="GtkCheckButton" id="chkIndexHomeDirectory">
-                             <property name="visible">True</property>
-                             <property name="label" translatable="yes">Index and watch my home 
_directory</property>
-                             <property name="use_underline">True</property>
-                             <property name="relief">GTK_RELIEF_NORMAL</property>
-                             <property name="focus_on_click">True</property>
-                             <property name="active">True</property>
-                             <property name="inconsistent">False</property>
-                             <property name="draw_indicator">True</property>
-                           </widget>
-                           <packing>
-                             <property name="padding">3</property>
-                             <property name="expand">False</property>
-                             <property name="fill">True</property>
-                           </packing>
-                         </child>
-
-                         <child>
-                           <widget class="GtkLabel" id="label8">
-                             <property name="visible">True</property>
-                             <property name="label" translatable="yes">Additional paths to index and 
watch:</property>
-                             <property name="use_underline">False</property>
-                             <property name="use_markup">False</property>
-                             <property name="justify">GTK_JUSTIFY_LEFT</property>
-                             <property name="wrap">False</property>
-                             <property name="selectable">False</property>
-                             <property name="xalign">0</property>
-                             <property name="yalign">0.5</property>
-                             <property name="xpad">0</property>
-                             <property name="ypad">3</property>
-                             <property name="mnemonic_widget">lstAdditionalPathIndexes</property>
-                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                             <property name="width_chars">-1</property>
-                             <property name="single_line_mode">False</property>
-                             <property name="angle">0</property>
-                           </widget>
-                           <packing>
-                             <property name="padding">3</property>
-                             <property name="expand">False</property>
-                             <property name="fill">True</property>
-                           </packing>
-                         </child>
-
-                         <child>
-                           <widget class="GtkHBox" id="hbox1">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">3</property>
-
-                             <child>
-                               <widget class="GtkScrolledWindow" id="scrolledwindow1">
-                                 <property name="visible">True</property>
-                                 <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                 <property name="shadow_type">GTK_SHADOW_IN</property>
-                                 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-                                 <child>
-                                   <widget class="GtkTreeView" id="lstAdditionalPathIndexes">
-                                     <property name="visible">True</property>
-                                     <property name="headers_visible">False</property>
-                                     <property name="rules_hint">False</property>
-                                     <property name="reorderable">False</property>
-                                     <property name="enable_search">True</property>
-                                     <property name="fixed_height_mode">False</property>
-                                     <property name="hover_selection">False</property>
-                                     <property name="hover_expand">False</property>
-                                   </widget>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">1</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkVButtonBox" id="vbuttonbox1">
-                                 <property name="visible">True</property>
-                                 <property name="layout_style">GTK_BUTTONBOX_START</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkButton" id="cmdAddIndexPath">
-                                     <property name="visible">True</property>
-                                     <property name="label">gtk-add</property>
-                                     <property name="use_stock">True</property>
-                                     <property name="relief">GTK_RELIEF_NORMAL</property>
-                                     <property name="focus_on_click">True</property>
-                                   </widget>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkButton" id="cmdRemoveIndexPath">
-                                     <property name="visible">True</property>
-                                     <property name="label">gtk-remove</property>
-                                     <property name="use_stock">True</property>
-                                     <property name="relief">GTK_RELIEF_NORMAL</property>
-                                     <property name="focus_on_click">True</property>
-                                   </widget>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                           <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">True</property>
-                             <property name="fill">True</property>
-                           </packing>
-                         </child>
-                       </widget>
-                     </child>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkLabel" id="label7">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">&lt;b&gt;Watch 
Directories&lt;/b&gt;</property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">True</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">False</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">0.5</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">0</property>
-                     <property name="ypad">0</property>
-                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                     <property name="width_chars">-1</property>
-                     <property name="single_line_mode">False</property>
-                     <property name="angle">0</property>
-                   </widget>
-                   <packing>
-                     <property name="type">label_item</property>
-                   </packing>
-                 </child>
-               </widget>
-               <packing>
-                 <property name="padding">6</property>
-                 <property name="expand">False</property>
-                 <property name="fill">True</property>
-               </packing>
-             </child>
-
-             <child>
-               <widget class="GtkFrame" id="frame10">
-                 <property name="visible">True</property>
-                 <property name="label_xalign">0</property>
-                 <property name="label_yalign">0.5</property>
-                 <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                 <child>
-                   <widget class="GtkAlignment" id="alignment16">
-                     <property name="visible">True</property>
-                     <property name="xalign">0.5</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xscale">1</property>
-                     <property name="yscale">1</property>
-                     <property name="top_padding">0</property>
-                     <property name="bottom_padding">0</property>
-                     <property name="left_padding">12</property>
-                     <property name="right_padding">0</property>
-
-                     <child>
-                       <widget class="GtkVBox" id="vbox16">
-                         <property name="visible">True</property>
-                         <property name="homogeneous">False</property>
-                         <property name="spacing">0</property>
-
-                         <child>
-                           <widget class="GtkLabel" id="label21">
-                             <property name="visible">True</property>
-                             <property name="label" translatable="yes">Additional paths to index on startup 
(but not watch for updates)</property>
-                             <property name="use_underline">False</property>
-                             <property name="use_markup">False</property>
-                             <property name="justify">GTK_JUSTIFY_LEFT</property>
-                             <property name="wrap">False</property>
-                             <property name="selectable">False</property>
-                             <property name="xalign">0</property>
-                             <property name="yalign">0.5</property>
-                             <property name="xpad">0</property>
-                             <property name="ypad">3</property>
-                             <property name="mnemonic_widget">lstAdditionalPathIndexes</property>
-                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                             <property name="width_chars">-1</property>
-                             <property name="single_line_mode">False</property>
-                             <property name="angle">0</property>
-                           </widget>
-                           <packing>
-                             <property name="padding">3</property>
-                             <property name="expand">False</property>
-                             <property name="fill">True</property>
-                           </packing>
-                         </child>
-
-                         <child>
-                           <widget class="GtkHBox" id="hbox9">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">3</property>
-
-                             <child>
-                               <widget class="GtkScrolledWindow" id="scrolledwindow5">
-                                 <property name="visible">True</property>
-                                 <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                 <property name="shadow_type">GTK_SHADOW_IN</property>
-                                 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-                                 <child>
-                                   <widget class="GtkTreeView" id="lstCrawledPaths">
-                                     <property name="visible">True</property>
-                                     <property name="headers_visible">False</property>
-                                     <property name="rules_hint">False</property>
-                                     <property name="reorderable">False</property>
-                                     <property name="enable_search">True</property>
-                                     <property name="fixed_height_mode">False</property>
-                                     <property name="hover_selection">False</property>
-                                     <property name="hover_expand">False</property>
-                                   </widget>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">1</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkVButtonBox" id="vbuttonbox5">
-                                 <property name="visible">True</property>
-                                 <property name="layout_style">GTK_BUTTONBOX_START</property>
-                                 <property name="spacing">0</property>
-
-                                 <child>
-                                   <widget class="GtkButton" id="cmdAddCrawledPath">
-                                     <property name="visible">True</property>
-                                     <property name="label">gtk-add</property>
-                                     <property name="use_stock">True</property>
-                                     <property name="relief">GTK_RELIEF_NORMAL</property>
-                                     <property name="focus_on_click">True</property>
-                                   </widget>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkButton" id="cmdRemoveCrawledPath">
-                                     <property name="visible">True</property>
-                                     <property name="label">gtk-remove</property>
-                                     <property name="use_stock">True</property>
-                                     <property name="relief">GTK_RELIEF_NORMAL</property>
-                                     <property name="focus_on_click">True</property>
-                                   </widget>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                           <packing>
-                             <property name="padding">0</property>
-                             <property name="expand">True</property>
-                             <property name="fill">True</property>
-                           </packing>
-                         </child>
-                       </widget>
-                     </child>
-                   </widget>
-                 </child>
-
-                 <child>
-                   <widget class="GtkLabel" id="label22">
-                     <property name="visible">True</property>
-                     <property name="label" translatable="yes">&lt;b&gt;Crawled 
Directories&lt;/b&gt;</property>
-                     <property name="use_underline">False</property>
-                     <property name="use_markup">True</property>
-                     <property name="justify">GTK_JUSTIFY_LEFT</property>
-                     <property name="wrap">False</property>
-                     <property name="selectable">False</property>
-                     <property name="xalign">0.5</property>
-                     <property name="yalign">0.5</property>
-                     <property name="xpad">0</property>
-                     <property name="ypad">0</property>
-                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                     <property name="width_chars">-1</property>
-                     <property name="single_line_mode">False</property>
-                     <property name="angle">0</property>
-                   </widget>
-                   <packing>
-                     <property name="type">label_item</property>
-                   </packing>
-                 </child>
-               </widget>
-               <packing>
-                 <property name="padding">6</property>
-                 <property name="expand">True</property>
-                 <property name="fill">True</property>
-               </packing>
-             </child>
-           </widget>
-           <packing>
-             <property name="tab_expand">False</property>
-             <property name="tab_fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkLabel" id="label19">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">_Files</property>
-             <property name="use_underline">True</property>
-             <property name="use_markup">False</property>
-             <property name="justify">GTK_JUSTIFY_LEFT</property>
-             <property name="wrap">False</property>
-             <property name="selectable">False</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xpad">0</property>
-             <property name="ypad">0</property>
-             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-             <property name="width_chars">-1</property>
-             <property name="single_line_mode">False</property>
-             <property name="angle">0</property>
-           </widget>
-           <packing>
-             <property name="type">tab</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkAlignment" id="alignment4">
-             <property name="visible">True</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xscale">1</property>
-             <property name="yscale">1</property>
-             <property name="top_padding">10</property>
-             <property name="bottom_padding">5</property>
-             <property name="left_padding">5</property>
-             <property name="right_padding">5</property>
-
-             <child>
-               <widget class="GtkVBox" id="vbox4">
-                 <property name="visible">True</property>
-                 <property name="homogeneous">False</property>
-                 <property name="spacing">3</property>
-
-                 <child>
-                   <widget class="GtkFrame" id="fraIgnoredPaths">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment13">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbIgnorePaths">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkLabel" id="label10">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Path roots to be ignored during 
indexing:</property>
-                                 <property name="use_underline">False</property>
-                                 <property name="use_markup">False</property>
-                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                 <property name="wrap">False</property>
-                                 <property name="selectable">False</property>
-                                 <property name="xalign">0</property>
-                                 <property name="yalign">0.5</property>
-                                 <property name="xpad">0</property>
-                                 <property name="ypad">3</property>
-                                 <property name="mnemonic_widget">lstIgnorePaths</property>
-                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                 <property name="width_chars">-1</property>
-                                 <property name="single_line_mode">False</property>
-                                 <property name="angle">0</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox2">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">3</property>
-
-                                 <child>
-                                   <widget class="GtkScrolledWindow" id="scrolledwindow2">
-                                     <property name="visible">True</property>
-                                     <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                     <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                     <property name="shadow_type">GTK_SHADOW_IN</property>
-                                     <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-                                     <child>
-                                       <widget class="GtkTreeView" id="lstIgnorePaths">
-                                         <property name="visible">True</property>
-                                         <property name="headers_visible">True</property>
-                                         <property name="rules_hint">False</property>
-                                         <property name="reorderable">False</property>
-                                         <property name="enable_search">True</property>
-                                         <property name="fixed_height_mode">False</property>
-                                         <property name="hover_selection">False</property>
-                                         <property name="hover_expand">False</property>
-                                       </widget>
-                                     </child>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">True</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkVButtonBox" id="vbuttonbox2">
-                                     <property name="visible">True</property>
-                                     <property name="layout_style">GTK_BUTTONBOX_START</property>
-                                     <property name="spacing">0</property>
-
-                                     <child>
-                                       <widget class="GtkButton" id="cmdAddIgnorePath">
-                                         <property name="visible">True</property>
-                                         <property name="label">gtk-add</property>
-                                         <property name="use_stock">True</property>
-                                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                                         <property name="focus_on_click">True</property>
-                                       </widget>
-                                     </child>
-
-                                     <child>
-                                       <widget class="GtkButton" id="cmdRemoveIgnorePath">
-                                         <property name="visible">True</property>
-                                         <property name="label">gtk-remove</property>
-                                         <property name="use_stock">True</property>
-                                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                                         <property name="focus_on_click">True</property>
-                                       </widget>
-                                     </child>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label6">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Ignored 
Paths&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">True</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkFrame" id="fraIgnoredPatterns">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment14">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbIgnorePatterns">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkLabel" id="label11">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">File patterns to ignore during 
indexing:</property>
-                                 <property name="use_underline">False</property>
-                                 <property name="use_markup">False</property>
-                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                 <property name="wrap">False</property>
-                                 <property name="selectable">False</property>
-                                 <property name="xalign">0</property>
-                                 <property name="yalign">0.5</property>
-                                 <property name="xpad">0</property>
-                                 <property name="ypad">3</property>
-                                 <property name="mnemonic_widget">lstIgnoreFilePatterns</property>
-                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                 <property name="width_chars">-1</property>
-                                 <property name="single_line_mode">False</property>
-                                 <property name="angle">0</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox3">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">3</property>
-
-                                 <child>
-                                   <widget class="GtkScrolledWindow" id="scrolledwindow3">
-                                     <property name="visible">True</property>
-                                     <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                     <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                     <property name="shadow_type">GTK_SHADOW_IN</property>
-                                     <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-                                     <child>
-                                       <widget class="GtkTreeView" id="lstIgnoreFilePatterns">
-                                         <property name="visible">True</property>
-                                         <property name="headers_visible">True</property>
-                                         <property name="rules_hint">False</property>
-                                         <property name="reorderable">False</property>
-                                         <property name="enable_search">True</property>
-                                         <property name="fixed_height_mode">False</property>
-                                         <property name="hover_selection">False</property>
-                                         <property name="hover_expand">False</property>
-                                       </widget>
-                                     </child>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">True</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkVButtonBox" id="vbuttonbox3">
-                                     <property name="visible">True</property>
-                                     <property name="layout_style">GTK_BUTTONBOX_START</property>
-                                     <property name="spacing">0</property>
-
-                                     <child>
-                                       <widget class="GtkButton" id="cmdAddIgnorePattern">
-                                         <property name="visible">True</property>
-                                         <property name="label">gtk-add</property>
-                                         <property name="use_stock">True</property>
-                                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                                         <property name="focus_on_click">True</property>
-                                       </widget>
-                                     </child>
-
-                                     <child>
-                                       <widget class="GtkButton" id="cmdRemoveIgnorePattern">
-                                         <property name="visible">True</property>
-                                         <property name="label">gtk-remove</property>
-                                         <property name="use_stock">True</property>
-                                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                                         <property name="focus_on_click">True</property>
-                                       </widget>
-                                     </child>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label9">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Ignored File 
Patterns&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">True</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="tab_expand">False</property>
-             <property name="tab_fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkLabel" id="label3">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">_Ignored Files</property>
-             <property name="use_underline">True</property>
-             <property name="use_markup">False</property>
-             <property name="justify">GTK_JUSTIFY_LEFT</property>
-             <property name="wrap">False</property>
-             <property name="selectable">False</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xpad">0</property>
-             <property name="ypad">0</property>
-             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-             <property name="width_chars">-1</property>
-             <property name="single_line_mode">False</property>
-             <property name="angle">0</property>
-           </widget>
-           <packing>
-             <property name="type">tab</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkAlignment" id="alignment3">
-             <property name="visible">True</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xscale">1</property>
-             <property name="yscale">1</property>
-             <property name="top_padding">10</property>
-             <property name="bottom_padding">5</property>
-             <property name="left_padding">5</property>
-             <property name="right_padding">5</property>
-
-             <child>
-               <widget class="GtkVBox" id="vbox3">
-                 <property name="visible">True</property>
-                 <property name="homogeneous">False</property>
-                 <property name="spacing">5</property>
-
-                 <child>
-                   <widget class="GtkFrame" id="fraServices">
-                     <property name="visible">True</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment8">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox8">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkCheckButton" id="chkEnableEvolutionIndexing">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Enable Evolution email 
indexing</property>
-                                 <property name="use_underline">True</property>
-                                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                                 <property name="focus_on_click">True</property>
-                                 <property name="active">True</property>
-                                 <property name="inconsistent">False</property>
-                                 <property name="draw_indicator">True</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkCheckButton" id="chkEnableThunderbirdIndexing">
-                                 <property name="visible">True</property>
-                                 <property name="sensitive">False</property>
-                                 <property name="label" translatable="yes">Enable Thunderbird email 
indexing</property>
-                                 <property name="use_underline">True</property>
-                                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                                 <property name="focus_on_click">True</property>
-                                 <property name="active">False</property>
-                                 <property name="inconsistent">False</property>
-                                 <property name="draw_indicator">True</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkCheckButton" id="chkEnableKMailIndexing">
-                                 <property name="visible">True</property>
-                                 <property name="sensitive">False</property>
-                                 <property name="label" translatable="yes">Enable KMail email 
indexing</property>
-                                 <property name="use_underline">True</property>
-                                 <property name="relief">GTK_RELIEF_NORMAL</property>
-                                 <property name="focus_on_click">True</property>
-                                 <property name="active">False</property>
-                                 <property name="inconsistent">False</property>
-                                 <property name="draw_indicator">True</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="lblServices">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Services&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">False</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-
-                 <child>
-                   <widget class="GtkFrame" id="fraIndexableMBoxes">
-                     <property name="visible">True</property>
-                     <property name="sensitive">False</property>
-                     <property name="label_xalign">0</property>
-                     <property name="label_yalign">0.5</property>
-                     <property name="shadow_type">GTK_SHADOW_NONE</property>
-
-                     <child>
-                       <widget class="GtkAlignment" id="alignment10">
-                         <property name="visible">True</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xscale">1</property>
-                         <property name="yscale">1</property>
-                         <property name="top_padding">0</property>
-                         <property name="bottom_padding">0</property>
-                         <property name="left_padding">12</property>
-                         <property name="right_padding">0</property>
-
-                         <child>
-                           <widget class="GtkVBox" id="vbox12">
-                             <property name="visible">True</property>
-                             <property name="homogeneous">False</property>
-                             <property name="spacing">0</property>
-
-                             <child>
-                               <widget class="GtkLabel" id="label14">
-                                 <property name="visible">True</property>
-                                 <property name="label" translatable="yes">Additional mbox mailboxes to 
index:</property>
-                                 <property name="use_underline">False</property>
-                                 <property name="use_markup">False</property>
-                                 <property name="justify">GTK_JUSTIFY_LEFT</property>
-                                 <property name="wrap">False</property>
-                                 <property name="selectable">False</property>
-                                 <property name="xalign">0</property>
-                                 <property name="yalign">0.5</property>
-                                 <property name="xpad">0</property>
-                                 <property name="ypad">3</property>
-                                 <property name="mnemonic_widget">lstAdditionalMBoxIndexes</property>
-                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                                 <property name="width_chars">-1</property>
-                                 <property name="single_line_mode">False</property>
-                                 <property name="angle">0</property>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">False</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-
-                             <child>
-                               <widget class="GtkHBox" id="hbox5">
-                                 <property name="visible">True</property>
-                                 <property name="homogeneous">False</property>
-                                 <property name="spacing">3</property>
-
-                                 <child>
-                                   <widget class="GtkScrolledWindow" id="scrolledwindow4">
-                                     <property name="visible">True</property>
-                                     <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                     <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                     <property name="shadow_type">GTK_SHADOW_IN</property>
-                                     <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-                                     <child>
-                                       <widget class="GtkTreeView" id="lstAdditionalMBoxIndexes">
-                                         <property name="visible">True</property>
-                                         <property name="headers_visible">True</property>
-                                         <property name="rules_hint">False</property>
-                                         <property name="reorderable">False</property>
-                                         <property name="enable_search">True</property>
-                                         <property name="fixed_height_mode">False</property>
-                                         <property name="hover_selection">False</property>
-                                         <property name="hover_expand">False</property>
-                                       </widget>
-                                     </child>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">True</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-
-                                 <child>
-                                   <widget class="GtkVButtonBox" id="vbuttonbox4">
-                                     <property name="visible">True</property>
-                                     <property name="layout_style">GTK_BUTTONBOX_START</property>
-                                     <property name="spacing">0</property>
-
-                                     <child>
-                                       <widget class="GtkButton" id="cmdAddIndexMailbox">
-                                         <property name="visible">True</property>
-                                         <property name="label">gtk-add</property>
-                                         <property name="use_stock">True</property>
-                                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                                         <property name="focus_on_click">True</property>
-                                       </widget>
-                                     </child>
-
-                                     <child>
-                                       <widget class="GtkButton" id="cmdRemoveIndexMailbox">
-                                         <property name="visible">True</property>
-                                         <property name="label">gtk-remove</property>
-                                         <property name="use_stock">True</property>
-                                         <property name="relief">GTK_RELIEF_NORMAL</property>
-                                         <property name="focus_on_click">True</property>
-                                       </widget>
-                                     </child>
-                                   </widget>
-                                   <packing>
-                                     <property name="padding">0</property>
-                                     <property name="expand">False</property>
-                                     <property name="fill">True</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-                               <packing>
-                                 <property name="padding">0</property>
-                                 <property name="expand">True</property>
-                                 <property name="fill">True</property>
-                               </packing>
-                             </child>
-                           </widget>
-                         </child>
-                       </widget>
-                     </child>
-
-                     <child>
-                       <widget class="GtkLabel" id="label14">
-                         <property name="visible">True</property>
-                         <property name="label" translatable="yes">&lt;b&gt;Mailboxes&lt;/b&gt;</property>
-                         <property name="use_underline">False</property>
-                         <property name="use_markup">True</property>
-                         <property name="justify">GTK_JUSTIFY_LEFT</property>
-                         <property name="wrap">False</property>
-                         <property name="selectable">False</property>
-                         <property name="xalign">0.5</property>
-                         <property name="yalign">0.5</property>
-                         <property name="xpad">0</property>
-                         <property name="ypad">0</property>
-                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-                         <property name="width_chars">-1</property>
-                         <property name="single_line_mode">False</property>
-                         <property name="angle">0</property>
-                       </widget>
-                       <packing>
-                         <property name="type">label_item</property>
-                       </packing>
-                     </child>
-                   </widget>
-                   <packing>
-                     <property name="padding">0</property>
-                     <property name="expand">True</property>
-                     <property name="fill">True</property>
-                   </packing>
-                 </child>
-               </widget>
-             </child>
-           </widget>
-           <packing>
-             <property name="tab_expand">False</property>
-             <property name="tab_fill">True</property>
-           </packing>
-         </child>
-
-         <child>
-           <widget class="GtkLabel" id="label2">
-             <property name="visible">True</property>
-             <property name="label" translatable="yes">_Emails</property>
-             <property name="use_underline">True</property>
-             <property name="use_markup">False</property>
-             <property name="justify">GTK_JUSTIFY_LEFT</property>
-             <property name="wrap">False</property>
-             <property name="selectable">False</property>
-             <property name="xalign">0.5</property>
-             <property name="yalign">0.5</property>
-             <property name="xpad">0</property>
-             <property name="ypad">0</property>
-             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-             <property name="width_chars">-1</property>
-             <property name="single_line_mode">False</property>
-             <property name="angle">0</property>
-           </widget>
-           <packing>
-             <property name="type">tab</property>
-           </packing>
-         </child>
-       </widget>
-       <packing>
-         <property name="padding">0</property>
-         <property name="expand">True</property>
-         <property name="fill">True</property>
-       </packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
+                                      </widget>
+                                      <packing>
+                                        <property name="padding">2</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="padding">3</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label26">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Stemming&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="padding">6</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_General</property>
+                <property name="use_underline">True</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkAlignment" id="alignment5">
+                <property name="visible">True</property>
+                <property name="top_padding">10</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">5</property>
+                <property name="right_padding">5</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox5">
+                    <property name="visible">True</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <widget class="GtkFrame" id="fraThrottling">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment6">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox6">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox4">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="lblThrottlingLevel">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">_Indexing speed:</property>
+                                        <property name="use_underline">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="padding">2</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="padding">4</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox10">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label24">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Faster</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">7</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkHScale" id="scaThrottle">
+                                        <property name="visible">True</property>
+                                        <property name="adjustment">0 0 20 1 1 0</property>
+                                        <property name="digits">0</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="padding">2</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label23">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Slower</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">3</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="padding">2</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="lblThrottling">
+                            <property name="visible">True</property>
+                            <property name="label" 
translatable="yes">&lt;b&gt;Throttling&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="padding">6</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="frame8">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment12">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox13">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkRadioButton" id="optReducedMemory">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">_Minimize memory usage (slower 
indexing)</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkRadioButton" id="optNormal">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">_Use additonal memory for 
faster indexing</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">optReducedMemory</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label18">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Resource 
Usage&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="frame12">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment18">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox18">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox14">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label30">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Maximum _amount of text to 
Index (KB)</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="mnemonic_widget">spnMaxText</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="padding">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkSpinButton" id="spnMaxText">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">1024 1 1000000 1 300 300</property>
+                                        <property name="climb_rate">1</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="padding">3</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox15">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label31">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">Maximum number of unique 
_words to index</property>
+                                        <property name="use_markup">True</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="mnemonic_widget">spnMaxWords</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkSpinButton" id="spnMaxWords">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">10000 1000 1000000 100 500 500</property>
+                                        <property name="climb_rate">1</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label32">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Indexing Limits (per 
file)&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">6</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">P_erformance</property>
+                <property name="use_underline">True</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="position">1</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkVBox" id="vbox14">
+                <property name="visible">True</property>
+                <child>
+                  <widget class="GtkFrame" id="frame9">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment15">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox15">
+                            <property name="visible">True</property>
+                            <child>
+                              <widget class="GtkCheckButton" id="chkIndexContents">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Index _file contents</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="chkGenerateThumbs">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Generate _thumbnails</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="padding">1</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="chkSkipMountPoints">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Index _mounted 
directories</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label20">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Indexing&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">6</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkFrame" id="fraGeneralIndexing">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment7">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox7">
+                            <property name="visible">True</property>
+                            <child>
+                              <widget class="GtkCheckButton" id="chkIndexHomeDirectory">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">Index and watch my home 
_directory</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label8">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="ypad">3</property>
+                                <property name="label" translatable="yes">Additional paths to index and 
watch:</property>
+                                <property name="mnemonic_widget">lstAdditionalPathIndexes</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="padding">3</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox1">
+                                <property name="visible">True</property>
+                                <property name="spacing">3</property>
+                                <child>
+                                  <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                                    <property name="visible">True</property>
+                                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                    <property name="shadow_type">GTK_SHADOW_IN</property>
+                                    <child>
+                                      <widget class="GtkTreeView" id="lstAdditionalPathIndexes">
+                                        <property name="visible">True</property>
+                                        <property name="headers_visible">False</property>
+                                      </widget>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="padding">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkVButtonBox" id="vbuttonbox1">
+                                    <property name="visible">True</property>
+                                    <property name="layout_style">GTK_BUTTONBOX_START</property>
+                                    <child>
+                                      <widget class="GtkButton" id="cmdAddIndexPath">
+                                        <property name="visible">True</property>
+                                        <property name="label">gtk-add</property>
+                                        <property name="use_stock">True</property>
+                                      </widget>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkButton" id="cmdRemoveIndexPath">
+                                        <property name="visible">True</property>
+                                        <property name="label">gtk-remove</property>
+                                        <property name="use_stock">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label7">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Watch 
Directories&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="padding">6</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkFrame" id="frame10">
+                    <property name="visible">True</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment16">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox16">
+                            <property name="visible">True</property>
+                            <child>
+                              <widget class="GtkLabel" id="label21">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="ypad">3</property>
+                                <property name="label" translatable="yes">Additional paths to index on 
startup (but not watch for updates)</property>
+                                <property name="mnemonic_widget">lstAdditionalPathIndexes</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="padding">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox9">
+                                <property name="visible">True</property>
+                                <property name="spacing">3</property>
+                                <child>
+                                  <widget class="GtkScrolledWindow" id="scrolledwindow5">
+                                    <property name="visible">True</property>
+                                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                    <property name="shadow_type">GTK_SHADOW_IN</property>
+                                    <child>
+                                      <widget class="GtkTreeView" id="lstCrawledPaths">
+                                        <property name="visible">True</property>
+                                        <property name="headers_visible">False</property>
+                                      </widget>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="padding">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkVButtonBox" id="vbuttonbox5">
+                                    <property name="visible">True</property>
+                                    <property name="layout_style">GTK_BUTTONBOX_START</property>
+                                    <child>
+                                      <widget class="GtkButton" id="cmdAddCrawledPath">
+                                        <property name="visible">True</property>
+                                        <property name="label">gtk-add</property>
+                                        <property name="use_stock">True</property>
+                                      </widget>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkButton" id="cmdRemoveCrawledPath">
+                                        <property name="visible">True</property>
+                                        <property name="label">gtk-remove</property>
+                                        <property name="use_stock">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label22">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Crawled 
Directories&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="padding">6</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label19">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Files</property>
+                <property name="use_underline">True</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="position">2</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkAlignment" id="alignment4">
+                <property name="visible">True</property>
+                <property name="top_padding">10</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">5</property>
+                <property name="right_padding">5</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox4">
+                    <property name="visible">True</property>
+                    <property name="spacing">3</property>
+                    <child>
+                      <widget class="GtkFrame" id="fraIgnoredPaths">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment13">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbIgnorePaths">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label10">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="ypad">3</property>
+                                    <property name="label" translatable="yes">Path roots to be ignored 
during indexing:</property>
+                                    <property name="mnemonic_widget">lstIgnorePaths</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox2">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">3</property>
+                                    <child>
+                                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                                        <property name="visible">True</property>
+                                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                        <property name="shadow_type">GTK_SHADOW_IN</property>
+                                        <child>
+                                          <widget class="GtkTreeView" id="lstIgnorePaths">
+                                            <property name="visible">True</property>
+                                          </widget>
+                                        </child>
+                                      </widget>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkVButtonBox" id="vbuttonbox2">
+                                        <property name="visible">True</property>
+                                        <property name="layout_style">GTK_BUTTONBOX_START</property>
+                                        <child>
+                                          <widget class="GtkButton" id="cmdAddIgnorePath">
+                                            <property name="visible">True</property>
+                                            <property name="label">gtk-add</property>
+                                            <property name="use_stock">True</property>
+                                          </widget>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkButton" id="cmdRemoveIgnorePath">
+                                            <property name="visible">True</property>
+                                            <property name="label">gtk-remove</property>
+                                            <property name="use_stock">True</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label6">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Ignored 
Paths&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="fraIgnoredPatterns">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment14">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbIgnorePatterns">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label11">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="ypad">3</property>
+                                    <property name="label" translatable="yes">File patterns to ignore during 
indexing:</property>
+                                    <property name="mnemonic_widget">lstIgnoreFilePatterns</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox3">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">3</property>
+                                    <child>
+                                      <widget class="GtkScrolledWindow" id="scrolledwindow3">
+                                        <property name="visible">True</property>
+                                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                        <property name="shadow_type">GTK_SHADOW_IN</property>
+                                        <child>
+                                          <widget class="GtkTreeView" id="lstIgnoreFilePatterns">
+                                            <property name="visible">True</property>
+                                          </widget>
+                                        </child>
+                                      </widget>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkVButtonBox" id="vbuttonbox3">
+                                        <property name="visible">True</property>
+                                        <property name="layout_style">GTK_BUTTONBOX_START</property>
+                                        <child>
+                                          <widget class="GtkButton" id="cmdAddIgnorePattern">
+                                            <property name="visible">True</property>
+                                            <property name="label">gtk-add</property>
+                                            <property name="use_stock">True</property>
+                                          </widget>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkButton" id="cmdRemoveIgnorePattern">
+                                            <property name="visible">True</property>
+                                            <property name="label">gtk-remove</property>
+                                            <property name="use_stock">True</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label9">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Ignored File 
Patterns&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">3</property>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Ignored Files</property>
+                <property name="use_underline">True</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="position">3</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkAlignment" id="alignment3">
+                <property name="visible">True</property>
+                <property name="top_padding">10</property>
+                <property name="bottom_padding">5</property>
+                <property name="left_padding">5</property>
+                <property name="right_padding">5</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox3">
+                    <property name="visible">True</property>
+                    <property name="spacing">5</property>
+                    <child>
+                      <widget class="GtkFrame" id="fraServices">
+                        <property name="visible">True</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment8">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox8">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkCheckButton" id="chkEnableEvolutionIndexing">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Enable Evolution email 
indexing</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkCheckButton" id="chkEnableThunderbirdIndexing">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Enable Thunderbird email 
indexing</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkCheckButton" id="chkEnableKMailIndexing">
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="label" translatable="yes">Enable KMail email 
indexing</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="lblServices">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Services&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="fraIndexableMBoxes">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">GTK_SHADOW_NONE</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment10">
+                            <property name="visible">True</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox12">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label14">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="ypad">3</property>
+                                    <property name="label" translatable="yes">Additional mbox mailboxes to 
index:</property>
+                                    <property name="mnemonic_widget">lstAdditionalMBoxIndexes</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox5">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">3</property>
+                                    <child>
+                                      <widget class="GtkScrolledWindow" id="scrolledwindow4">
+                                        <property name="visible">True</property>
+                                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                        <property name="shadow_type">GTK_SHADOW_IN</property>
+                                        <child>
+                                          <widget class="GtkTreeView" id="lstAdditionalMBoxIndexes">
+                                            <property name="visible">True</property>
+                                          </widget>
+                                        </child>
+                                      </widget>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkVButtonBox" id="vbuttonbox4">
+                                        <property name="visible">True</property>
+                                        <property name="layout_style">GTK_BUTTONBOX_START</property>
+                                        <child>
+                                          <widget class="GtkButton" id="cmdAddIndexMailbox">
+                                            <property name="visible">True</property>
+                                            <property name="label">gtk-add</property>
+                                            <property name="use_stock">True</property>
+                                          </widget>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkButton" id="cmdRemoveIndexMailbox">
+                                            <property name="visible">True</property>
+                                            <property name="label">gtk-remove</property>
+                                            <property name="use_stock">True</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="position">1</property>
+                                          </packing>
+                                        </child>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label14">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Mailboxes&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">4</property>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Emails</property>
+                <property name="use_underline">True</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="position">4</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_EDGE</property>
+            <child>
+              <widget class="GtkButton" id="cmdHelp">
+                <property name="visible">True</property>
+                <property name="label">gtk-help</property>
+                <property name="use_stock">True</property>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="cmdClose">
+                <property name="visible">True</property>
+                <property name="label">gtk-close</property>
+                <property name="use_stock">True</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </glade-interface>
Index: src/tracker-preferences/tracker-preferences.c
===================================================================
--- src/tracker-preferences/tracker-preferences.c       (revision 807)
+++ src/tracker-preferences/tracker-preferences.c       (working copy)
@@ -388,6 +388,17 @@
        
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
                                      value);
+        
+        widget = glade_xml_get_widget (priv->gxml,
+                                        "chkEnableThunderbirdIndexing");
+        
+        value = tracker_configuration_get_bool (configuration,
+                                                "/Emails/IndexThunderbirdEmails",
+                                                NULL);
+        
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget),
+                                     value);
+                                     
 }
 
 
@@ -548,8 +559,14 @@
        tracker_configuration_set_bool (configuration,
                                        "/Emails/IndexEvolutionEmails",
                                        value);
-
-
+        
+        widget = glade_xml_get_widget (priv->gxml,
+                                       "chkEnableThunderbirdIndexing");
+        value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
+        tracker_configuration_set_bool (configuration,
+                                        "/Emails/IndexThunderbirdEmails",
+                                        value);
+                                        
        tracker_configuration_write (configuration);
        gtk_main_quit ();
 }
Index: src/tracker-preferences/tracker-configuration.c
===================================================================
--- src/tracker-preferences/tracker-configuration.c     (revision 807)
+++ src/tracker-preferences/tracker-configuration.c     (working copy)
@@ -372,6 +372,7 @@
                                         "EnableStemmer=true\n",
                                         "[Emails]\n",
                                         "IndexEvolutionEmails=true\n",
+                                         "IndexThunderbirdEmails=true\n",
                                         "[Performance]\n",
                                         "# Maximum size of text in bytes to index from a file's text 
contents\n",
                                         "MaxTextToIndex=1048576\n",
Index: src/trackerd/tracker-email-thunderbird.h
===================================================================
--- src/trackerd/tracker-email-thunderbird.h    (revision 807)
+++ src/trackerd/tracker-email-thunderbird.h    (working copy)
@@ -39,7 +39,7 @@
 gboolean       thunderbird_init_module         (void);
 gboolean       thunderbird_module_is_running   (void);
 gboolean       thunderbird_finalize_module     (void);
-void           thunderbird_watch_emails        ();
+void           thunderbird_watch_emails        (DBConnection *db_con);
 gboolean       thunderbird_file_is_interesting (FileInfo *info, const char *service);
 void           thunderbird_index_file          (DBConnection *db_con, FileInfo *info);
 
Index: src/trackerd/tracker-utils.c
===================================================================
--- src/trackerd/tracker-utils.c        (revision 807)
+++ src/trackerd/tracker-utils.c        (working copy)
@@ -1,5 +1,6 @@
 /* Tracker - indexer and metadata database engine
  * Copyright (C) 2006, Mr Jamie McCracken (jamiemcc gnome org)
+ * Copyright (C) 2007, Michal Pryc (Michal Pryc Sun Com)
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public
@@ -2486,6 +2487,7 @@
                                         "SkipMountPoints=false\n\n",
                                         "[Emails]\n",
                                         "IndexEvolutionEmails=true\n",
+                                         "IndexThunderbirdEmails=true\n",
                                         "[Performance]\n",
                                         "# Maximum size of text in bytes to index from a file's text 
contents\n",
                                         "MaxTextToIndex=1048576\n",
@@ -2664,6 +2666,11 @@
                tracker->index_kmail_emails = FALSE;
        }
 
+       if (g_key_file_has_key (key_file, "Emails", "IndexThunderbirdEmails", NULL)) {
+               tracker->index_thunderbird_emails = g_key_file_get_boolean (key_file, "Emails", 
"IndexThunderbirdEmails", NULL);
+       } else {
+               tracker->index_thunderbird_emails = TRUE;
+       }        
 
        /* Performance options */
 
@@ -3636,3 +3643,43 @@
 
        return TRUE;
 }
+
+char *
+tracker_parse_log_message_and_add_missing_formatting (const char *log_message)
+{
+    char                *tmp_msg;
+    int message_size=0;
+    int string_size=0;
+    int j=0;
+    
+    message_size = strlen(log_message);
+
+    for(int i=0;i<message_size;i++){
+        if(log_message[i]){    
+            if(log_message[i]=='%'){
+                string_size++;
+            }
+            string_size++;
+        }
+    }
+    
+    if(0 == string_size)
+            return g_strdup(log_message);
+      
+    tmp_msg = g_strnfill(string_size,NULL);
+    
+    
+    for(int i=0;i<message_size;i++)
+    {
+        if(log_message[i]!='%')
+            tmp_msg[j] = log_message[i];
+        else{
+            tmp_msg[j] = log_message[i];
+            j=j+sizeof(char);
+            tmp_msg[j] = log_message[i];
+        }
+        j=j+sizeof(char);
+    }
+    
+    return tmp_msg;
+}
Index: src/trackerd/tracker-email.c
===================================================================
--- src/trackerd/tracker-email.c        (revision 807)
+++ src/trackerd/tracker-email.c        (working copy)
@@ -52,7 +52,7 @@
 
        if (tracker->index_thunderbird_emails) {
                if (thunderbird_init_module ()) {
-                       thunderbird_watch_emails ();
+                       thunderbird_watch_emails (db_con);
                }
        }
 }
Index: src/trackerd/tracker-utils.h
===================================================================
--- src/trackerd/tracker-utils.h        (revision 807)
+++ src/trackerd/tracker-utils.h        (working copy)
@@ -567,4 +567,6 @@
 
 gboolean       tracker_unlink                  (const char *uri);
 
+char*           tracker_parse_log_message_and_add_missing_formatting    (const char *log_message);
+
 #endif
Index: src/trackerd/tracker-db-sqlite.c
===================================================================
--- src/trackerd/tracker-db-sqlite.c    (revision 807)
+++ src/trackerd/tracker-db-sqlite.c    (working copy)
@@ -35,6 +35,7 @@
 #include "tracker-indexer.h"
 #include "tracker-cache.h"
 #include "tracker-metadata.h"
+#include "tracker-utils.h"
 
 #include "config.h"
 
@@ -342,7 +343,7 @@
                for (row = *rows; *row; row++) {
                        char *value;
 
-                       value = *row;
+                        value = tracker_parse_log_message_and_add_missing_formatting(g_strdup(*row));
 
                        if (!value) {
                                value = "NULL";
Index: src/trackerd/tracker-email-utils.h
===================================================================
--- src/trackerd/tracker-email-utils.h  (revision 807)
+++ src/trackerd/tracker-email-utils.h  (working copy)
@@ -30,6 +30,7 @@
        MAIL_APP_EVOLUTION,
        MAIL_APP_KMAIL,
        MAIL_APP_THUNDERBIRD,
+        MAIL_APP_THUNDERBIRD_FEED,
        MAIL_APP_UNKNOWN
 } MailApplication;
 
Index: src/trackerd/tracker-db-email.c
===================================================================
--- src/trackerd/tracker-db-email.c     (revision 807)
+++ src/trackerd/tracker-db-email.c     (working copy)
@@ -390,6 +390,8 @@
                return g_strdup ("KMailEmails");
        } else if (app == MAIL_APP_THUNDERBIRD) {
                return g_strdup ("ThunderbirdEmails");
+       } else if (app == MAIL_APP_THUNDERBIRD_FEED) {
+               return g_strdup ("ThunderbirdEmails");
        } else {
                return g_strdup ("OtherEmails");
        }
@@ -405,6 +407,8 @@
                return g_strdup ("KMail/Email");
        } else if (app == MAIL_APP_THUNDERBIRD) {
                return g_strdup ("Thunderbird/Email");
+       } else if (app == MAIL_APP_THUNDERBIRD_FEED) {
+               return g_strdup ("Thunderbird/Feed");
        } else {
                return g_strdup ("Other/Email");
        }
@@ -444,6 +448,11 @@
                return FALSE;
        }
 
+       if (!mm->subject) {
+               tracker_log ("WARNING: email with uri: %s has no subject",mm->uri);
+               mm->subject = g_strdup("");
+       }
+        
        if (mm->parent_mail_file && !mm->parent_mail_file->path) {
                tracker_error ("ERROR: badly formatted email - abandoning index");
                return FALSE;
Index: src/tracker-search-tool/tracker-search-tool-callbacks.c
===================================================================
--- src/tracker-search-tool/tracker-search-tool-callbacks.c     (revision 807)
+++ src/tracker-search-tool/tracker-search-tool-callbacks.c     (working copy)
@@ -605,6 +605,8 @@
                                exec = g_strdup_printf ("evolution \"%s\"", uri);
                        } else if (strstr (mime, "KMail")) {
                                exec = g_strdup_printf ("kmail --view \"%s\"", uri);
+                       } else if (strstr (mime, "Thunderbird")) {
+                               exec = g_strdup_printf ("thunderbird -viewbeagle \"%s\"", uri);
                        } else {
                                exec = NULL;
                        }
Index: src/trackerd/tracker-email-thunderbird.c
===================================================================
--- src/trackerd/tracker-email-thunderbird.c    (revision 807)
+++ src/trackerd/tracker-email-thunderbird.c    (working copy)
@@ -1,6 +1,7 @@
 /* Tracker
  * routines for emails with Thunderbird
  * Copyright (C) 2006, Laurent Aguerreche (laurent aguerreche free fr)
+ * Copyright (C) 2007, Michal Pryc (Michal Pryc Sun Com)
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public
@@ -20,8 +21,10 @@
 
 #include <string.h>
 #include <glib/gstdio.h>
+#include <stdlib.h>
 
 #include "tracker-email-thunderbird.h"
+#include "tracker-db-email.h"
 
 #ifdef HAVE_INOTIFY
 #   include "tracker-inotify.h"
@@ -31,11 +34,36 @@
 #   endif
 #endif
 
+typedef enum
+{
+    TAG_NONE = 0,
+    TAG_FOLDER_FILE,
+    TAG_FEED_URL,
+    TAG_AUTHOR,
+    TAG_DATE,
+    TAG_FOLDER,
+    TAG_HAS_OFFLINE,
+    TAG_MESSAGE_ID,
+    TAG_MESSAGE_SIZE,
+    TAG_MESSAGE_OFFSET,
+    TAG_OFFLINE_SIZE,
+    TAG_RECIPIENTS,
+    TAG_SUBJECT,
+    TAG_MESSAGE_KEY,
+    TAG_URI,
+} TmsParserTag;
 
+typedef struct
+{
+    TmsParserTag tag;
+    GString *buffer;
+    MailMessage *mail_message;
+ } TmsParserData;
+
 extern Tracker *tracker;
 
 
-#define THUNDERBIRD_MAIL_DIR_S ".mozilla-thunderbird"
+#define THUNDERBIRD_MAIL_DIR_S ".xesam/ThunderbirdEmails/ToIndex"
 
 
 typedef struct {
@@ -50,10 +78,24 @@
 static void                    free_thunderbirdprefs_struct    (ThunderbirdPrefs *prefs);
 static GSList *                        find_thunderbird_mboxes         (GSList *list_of_mboxes, const char 
*profile_dir);
 static GSList *                        add_inbox_mbox_of_dir           (GSList *list_of_mboxes, const char 
*dir);
+static GSList *        add_persons_from_internet_address_list_string_parsing   (GSList *list, const gchar 
*s);
+static gboolean email_parse_mail_tms_file_and_save_new_emails   (DBConnection *db_con, MailApplication 
mail_app,
+                                                                    const char *path);
+static MailMessage *  email_parse_mail_tms_file_by_path         (MailApplication mail_app, const char *path);
+static void     text_handler                    (GMarkupParseContext *context, const gchar *text,
+                                                  gsize text_len, gpointer user_data, GError **error);
+static void     start_element_handler           (GMarkupParseContext *context, const gchar *element_name,
+                                                 const gchar **attribute_names, const gchar 
**attribute_values,
+                                                 gpointer user_data, GError **error);
+static void     end_element_handler             (GMarkupParseContext *context, const gchar *element_name,
+                                                 gpointer user_data,  GError **error);
+static glong    get_date_from_string            (const gchar *date_string);
+static gboolean get_boolean_from_string         (const gchar *boolean_string);
+static void     free_parser_data                (gpointer user_data);
+static          GMarkupParser                   tms_file_parser;
 
 
 
-
 /********************************************************************************************
  Public functions
 *********************************************************************************************/
@@ -65,7 +107,7 @@
                thunderbird_mail_dir = g_build_filename (g_get_home_dir (), THUNDERBIRD_MAIL_DIR_S, NULL);
        }
 
-       return TRUE;
+       return thunderbird_module_is_running();
 }
 
 
@@ -84,156 +126,330 @@
                thunderbird_mail_dir = NULL;
        }
 
-       return TRUE;
+       return !thunderbird_module_is_running();
 }
 
 
 void
-thunderbird_watch_emails ()
+thunderbird_watch_emails (DBConnection *db_con)
 {
-       char         *thunderbird_dir, *thunderbird_profile_file;
-       GKeyFile     *key_file;
-       int          i;
-       GSList       *profile_dirs, *list_of_mboxes;
-       const GSList *tmp;
+        if( thunderbird_mail_dir != NULL ) {
+            tracker_log("Thunderbird directory lookup: \"%s\"", thunderbird_mail_dir);
+            email_watch_directory(thunderbird_mail_dir, "ThunderbirdEmails");
+        }
+}
 
 
-       thunderbird_dir = g_build_filename (g_get_home_dir (), THUNDERBIRD_MAIL_DIR_S, NULL);
+gboolean
+thunderbird_file_is_interesting (FileInfo *info, const char *service)
+{
+        //Filename should be objectX.tms (Thunderbird Message Summary)
+        if (g_str_has_suffix(info->uri, ".tms")) {
+            return TRUE;
+        } else {
+            return FALSE;
+        }
+}
 
-       thunderbird_profile_file = g_build_filename (thunderbird_dir, "profiles.ini", NULL);
 
-       if (!g_file_test (thunderbird_profile_file, G_FILE_TEST_EXISTS)) {
-               g_free (thunderbird_profile_file);
-               g_free (thunderbird_dir);
-               return;
-       }
+void
+thunderbird_index_file (DBConnection *db_con, FileInfo *info)
+{
+       g_return_if_fail (db_con && info);
 
+        tracker_log ("Thunderbird file index: \"%s\"\n",info->uri);
+        if(email_parse_mail_tms_file_and_save_new_emails (db_con, MAIL_APP_THUNDERBIRD, info->uri))
+            unlink(info->uri);
+}
 
-       key_file = g_key_file_new ();
 
-       g_key_file_load_from_file (key_file, thunderbird_profile_file, G_KEY_FILE_NONE, NULL);
 
-       g_free (thunderbird_profile_file);
 
+/********************************************************************************************
+ Private functions
+*********************************************************************************************/
 
-       profile_dirs = NULL;
+static gboolean
+email_parse_mail_tms_file_and_save_new_emails (DBConnection *db_con, MailApplication mail_app, const char 
*path)
+{
+       MailMessage *mail_msg;
 
-       for (i = 0; ; i++) {
-               char *str_id, *profile_id;
+        g_return_val_if_fail (db_con, FALSE);
+        g_return_val_if_fail (path, FALSE);
+       mail_msg = email_parse_mail_tms_file_by_path (mail_app, path);
 
-               str_id = g_strdup_printf ("%d", i);
+       if (!mail_msg) {
+                return FALSE;
+        }
+        //Check if it is valid mail message
+            
+        if(mail_msg->parent_mail_file->mail_app == MAIL_APP_THUNDERBIRD ) {
+//           || mail_msg->parent_mail_file->mail_app == MAIL_APP_THUNDERBIRD_FEED) {
+            tracker_db_email_save_email (db_con, mail_msg);
+            email_free_mail_file(mail_msg->parent_mail_file);
+            email_free_mail_message (mail_msg);
+            return TRUE;
+        }
+        
+        email_free_mail_file(mail_msg->parent_mail_file);
+       email_free_mail_message (mail_msg);
+       
+       return FALSE;
+}
 
-               profile_id = g_strconcat ("Profile", str_id, NULL);
+static MailMessage *
+email_parse_mail_tms_file_by_path (MailApplication mail_app, const char *path)
+{
+       MailMessage             *mail_msg;
+       gsize                   length;
+       gchar                   *contents = NULL;
+       GMarkupParseContext     *context;
+       GError                  *error = NULL;
+       TmsParserData           *parser_data;
+        
+        g_return_val_if_fail (path, NULL);
+        
+       parser_data                 = g_new0(TmsParserData,1);
+        parser_data->mail_message   = email_allocate_mail_message();
+       mail_msg                    = parser_data->mail_message;
+        mail_msg->parent_mail_file  = g_slice_new0 (MailFile);
+        
+        mail_msg->parent_mail_file->path = g_strdup(path);
 
-               g_free (str_id);
+       if (!g_file_get_contents(path, &contents, &length, &error)) {
+                tracker_log ("Error reading Thunderbird message summary %s\n", error->message);
+               g_error_free(error);
+               return mail_msg;
+       }
 
-               if (!g_key_file_has_group (key_file, profile_id)) {
-                       /* there isn't probably more profiles */
-                       g_free (profile_id);
-                       break;
-               }
+       context = g_markup_parse_context_new(&tms_file_parser, G_MARKUP_TREAT_CDATA_AS_TEXT,
+                                       parser_data, free_parser_data );
 
-               if (g_key_file_has_key (key_file, profile_id, "Path", NULL)) {
-                       gboolean path_is_relative;
-                       char     *path;
+        if (!g_markup_parse_context_parse(context, contents, length, NULL)) {
+               tracker_log ("Error parsing context with length \n");
+               g_markup_parse_context_free(context);
+               g_free(contents);
+               return mail_msg;
+       }
 
-                       path = g_key_file_get_string (key_file, profile_id, "Path", NULL);
-
-                       if (!path) {
-                               g_free (profile_id);
-                               continue;
-                       }
-
-                       if (g_key_file_has_key (key_file, profile_id, "IsRelative", NULL)) {
-                               path_is_relative = g_key_file_get_boolean (key_file, profile_id, 
"IsRelative", NULL);
-                       } else {
-                               path_is_relative = !g_path_is_absolute (path);
-                       }
-
-                       if (path_is_relative) {
-                               char *absolute_path;
-
-                               absolute_path = g_build_filename (thunderbird_dir, path, NULL);
-
-                               profile_dirs = g_slist_prepend (profile_dirs, absolute_path);
-                       } else {
-                               profile_dirs = g_slist_prepend (profile_dirs, g_strdup (path));
-                       }
-
-                       g_free (path);
-               }
-
-               g_free (profile_id);
+       if (!g_markup_parse_context_end_parse(context, NULL)) {
+                tracker_log ("Error parsing context \n");;
+               g_markup_parse_context_free(context);
+               g_free(contents);
+               return mail_msg;
        }
 
-       g_free (thunderbird_dir);
+       g_markup_parse_context_free(context);
+       g_free(contents);
+       return mail_msg;
+}
 
+static void
+text_handler(GMarkupParseContext *context, const gchar *text,
+                        gsize text_len, gpointer user_data, GError **error)
+{
+       TmsParserData   *data = user_data;
 
-       list_of_mboxes = NULL;
+       if (data->buffer == NULL)
+               data->buffer = g_string_new_len(text, text_len);
+       else
+               g_string_append_len(data->buffer, text, text_len);
+}
 
-       for (tmp = profile_dirs; tmp; tmp = tmp->next) {
-               const char *dir;
 
-               dir = tmp->data;
+static void
+start_element_handler(GMarkupParseContext *context,
+                                         const gchar *element_name,
+                                         const gchar **attribute_names,
+                                         const gchar **attribute_values,
+                                         gpointer user_data, GError **error)
+{
+       TmsParserData   *data = user_data;
 
-               list_of_mboxes = find_thunderbird_mboxes (list_of_mboxes, dir);
+       if (data->buffer != NULL) {
+               g_string_free(data->buffer, TRUE);
+               data->buffer = NULL;
        }
+        
+       if (!strcmp(element_name, "MailMessage")) {
+                 data->mail_message->parent_mail_file->mail_app = MAIL_APP_THUNDERBIRD;
+       } else if (!strcmp(element_name, "DeleteFolder")) {
+                 //data->mail_message->tms_type = TYPE_DELETE_FOLDER;
+        } else if (!strcmp(element_name, "FeedItem")) {
+                 data->mail_message->parent_mail_file->mail_app = MAIL_APP_THUNDERBIRD_FEED;
+        } else if (!strcmp(element_name, "FolderFile")) {
+                 data->tag =  TAG_FOLDER_FILE;
+        } else if (!strcmp(element_name, "Author")) {
+                data->tag =  TAG_AUTHOR;
+       } else if (!strcmp(element_name, "Date")) {
+                data->tag =  TAG_DATE;
+       } else if (!strcmp(element_name, "Folder")) {
+                 data->tag =  TAG_FOLDER;
+        } else if (!strcmp(element_name, "FolderFile")) {
+                 data->tag =  TAG_FOLDER_FILE;
+        } else if (!strcmp(element_name, "HasOffline")) {
+                 data->tag =  TAG_HAS_OFFLINE;
+        } else if (!strcmp(element_name, "MessageId")) {
+                 data->tag =  TAG_MESSAGE_ID;
+        } else if (!strcmp(element_name, "MessageSize")) {
+                 data->tag =  TAG_MESSAGE_SIZE;
+        } else if (!strcmp(element_name, "MessageOffset")) {
+                 data->tag =  TAG_MESSAGE_OFFSET;
+        } else if (!strcmp(element_name, "OfflineSize")) {
+                 data->tag =  TAG_OFFLINE_SIZE;
+        } else if (!strcmp(element_name, "Recipients")) {
+                 data->tag =  TAG_RECIPIENTS;
+        } else if (!strcmp(element_name, "Subject")) {
+                 data->tag =  TAG_SUBJECT;
+        } else if (!strcmp(element_name, "MessageKey")) {
+                 data->tag =  TAG_MESSAGE_KEY;
+        } else if (!strcmp(element_name, "Uri")) {
+                 data->tag =  TAG_URI;
+        } else if (!strcmp(element_name, "FeedURL")) {
+                 data->tag =  TAG_FEED_URL;
+        } 
+}
 
-       for (tmp = list_of_mboxes; tmp; tmp = tmp->next) {
-               const char *path;
-               char       *base_dir;
 
-               path = tmp->data;
+static void
+end_element_handler(GMarkupParseContext *context, const gchar *element_name,
+                                        gpointer user_data,  GError **error)
+{
+       TmsParserData   *data = user_data;
+       gchar *buffer;
+       MailMessage *msg;
+        msg = data->mail_message;
+        
+       if (data->buffer == NULL)
+               return;
+       buffer = g_string_free(data->buffer, FALSE);
+       data->buffer = NULL;
+       
+       if (*buffer != '\0') {
+               switch(data->tag) {
+                       case TAG_AUTHOR:
+                                msg->from = g_strdup(buffer);
+                               break;
+                       case TAG_DATE:
+                                 msg->date = get_date_from_string(g_strdup(buffer));
+                               break;
+                       case TAG_FOLDER:
+                                //msg->folder = g_strdup(buffer);
+                               break;
+                       case TAG_FOLDER_FILE:
+                                //msg->folder_file = g_strdup(buffer);
+                               break;
+                       case TAG_HAS_OFFLINE:
+                                //msg->has_offline = get_boolean_from_string(g_strdup(buffer));
+                               break;
+                       case TAG_MESSAGE_ID:
+                                msg->message_id = g_strdup(buffer);
+                                break;
+                        case TAG_MESSAGE_SIZE:
+                                //Value should be uint
+                                //msg->message_size = atoi(g_strdup(buffer));
+                                break;
+                        case TAG_MESSAGE_OFFSET:
+                                msg->offset = atoi(g_strdup(buffer));
+                                break;
+                        case TAG_OFFLINE_SIZE:
+                                //msg->offline_size = atoi(g_strdup(buffer));
+                                break;
+                        case TAG_RECIPIENTS:
+                                //Should be function to parse recipients
+                                //
+                                //g_slist_prepend(msg->to,g_strdup(buffer));
+                                msg->to = add_persons_from_internet_address_list_string_parsing (NULL, 
g_strdup(buffer));
+                                break;
+                        case TAG_SUBJECT:
+                                    msg->subject = g_strdup(buffer);
+                                break;
+                        case TAG_MESSAGE_KEY:
+                                //msg->message_key = g_strdup(buffer);
+                                break;
+                        case TAG_URI:
+                                msg->uri = g_strdup(buffer);
+                                break;
+                        case TAG_FEED_URL:
+                                //msg->url = g_strdup(buffer);
+                                break;                                
+               }       
+       }       
 
-               base_dir = g_path_get_dirname (path);
+       data->tag = TAG_NONE;   
+       
+       g_free(buffer); 
 
-               tracker_add_service_path ("ThunderbirdEmails", base_dir);
-               
-               g_free (base_dir);
-
-               
-       }
-
-       g_slist_foreach (list_of_mboxes, (GFunc) g_free, NULL);
-       g_slist_free (list_of_mboxes);
 }
 
+static GMarkupParser tms_file_parser =
+{
+        start_element_handler,
+        end_element_handler,
+        text_handler,
+        NULL,
+        NULL
+};
 
-gboolean
-thunderbird_file_is_interesting (FileInfo *info, const char *service)
+static glong
+get_date_from_string (const gchar *date_string)
 {
+    glong date;
+    gchar *char_date=NULL;
+    
+    date = strtol(date_string,&char_date,10);
+    if (*char_date)
+        return 0;
 
-       if (info->is_directory) {
-               return TRUE;
-       }
+    return date;
+}
 
-       return g_str_has_suffix (info->uri, ".msf");
+static gboolean
+get_boolean_from_string(const gchar *boolean_string)        
+{   
+    if(g_str_equal(boolean_string,"true"))
+        return TRUE;
+    return FALSE;
+    
+}
 
+static void 
+free_parser_data(gpointer user_data)
+{
+       TmsParserData *data = user_data;
+       if(data->buffer != NULL)
+               g_string_free(data->buffer,TRUE);
+       g_free(data);
 }
 
-
-void
-thunderbird_index_file (DBConnection *db_con, FileInfo *info)
+static GSList *
+add_persons_from_internet_address_list_string_parsing (GSList *list, const gchar *s)
 {
-       g_return_if_fail (db_con && info);
+       InternetAddressList *addrs_list, *tmp;
 
-       if (g_str_has_suffix (info->uri, ".msf")) {
-               char *uri = g_strndup (info->uri, strlen (info->uri) - 4);
-               email_parse_mail_file_and_save_new_emails (db_con, MAIL_APP_THUNDERBIRD, uri, NULL, NULL, 
NULL, NULL, NULL);
-               g_free (uri);
+       g_return_val_if_fail (s, NULL);
 
-       } else if (strcmp (info->mime, "message/rfc822") == 0) {
-          email_parse_and_save_mail_message (db_con, MAIL_APP_THUNDERBIRD, info->uri, NULL, NULL);
-       }
-}
+       addrs_list = internet_address_parse_string (s);
 
+       for (tmp = addrs_list; tmp; tmp = tmp->next) {
+               MailPerson *mp;
 
+               mp = email_allocate_mail_person ();
 
+               mp->addr = g_strdup (tmp->address->value.addr);
+                if(tmp->address->name)
+                    mp->name = g_strdup (tmp->address->name);
+                else
+                mp->name = g_strdup (tmp->address->value.addr);
+                
+               list = g_slist_prepend (list, mp);
+       }
 
-/********************************************************************************************
- Private functions
-*********************************************************************************************/
+       internet_address_list_destroy (addrs_list);
 
+       return list;
+}
+
 /*
  * Currently parser is only looking for server hostnames. Here it means that we
  * only want to know folders containing emails currently used by user.
Index: AUTHORS
===================================================================
--- AUTHORS     (revision 807)
+++ AUTHORS     (working copy)
@@ -28,3 +28,4 @@
 John Stowers <john stowers gmail com>
 Neil Patel <njpatel gmail com>
 Anders Rune Jensen <anders iola dk>
+Michal Pryc <Michal.Pryc at Sun.Com>
Index: Makefile.am
===================================================================
--- Makefile.am (revision 807)
+++ Makefile.am (working copy)
@@ -1,5 +1,9 @@
 SUBDIRS = data src filters thumbnailers docs po python
 
+if WITH_THUNDERBIRD_EXTENSION
+SUBDIRS += @THUNDERBIRD_EXTENSION_DIRECTORY@
+endif
+
 autostartdir = $(sysconfdir)/xdg/autostart
 autostart_in_files = trackerd.desktop.in
 autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
@@ -21,7 +25,8 @@
        rdf-query-examples/wallpapers.rdf \
        intltool-extract.in \
        intltool-merge.in \
-       intltool-update.in 
+       intltool-update.in \
+       thunderbird-extension.diff 
 
 CLEANFILES = $(autostart_DATA)
 
Index: configure.ac
===================================================================
--- configure.ac        (revision 807)
+++ configure.ac        (working copy)
@@ -594,9 +594,41 @@
 
 AM_CONDITIONAL(ENABLE_PREFERENCES, test "$enable_preferences" != "no")
 
+##################################################################
+# check for thunderbird extension 
+##################################################################
 
+AC_ARG_WITH(thunderbird-extension,
+            AC_HELP_STRING([--with-thunderbird-extension], [Build with thunderbird extension]),
+           [
+               enable_tbird=no
+               tbird_extension_directory=thunderbird-extension
+               AC_CHECK_FILES( $tbird_extension_directory/Makefile.am \
+                               $tbird_extension_directory/install.rdf \
+                               $tbird_extension_directory/components/BeagleIndexer.js,
+                               [
+               AC_CHECK_FILES($tbird_extension_directory/patched.tmp,                  
+                               [       
+                                enable_tbird=yes
+                                AC_SUBST(THUNDERBIRD_EXTENSION_DIRECTORY,[$tbird_extension_directory])
+                                thunderbird_extension_message="
+       *****INFO***** 
+       You have choosen to build with the Thunderbird extension.
+       Please refer to the README file, for notes about installing 
+       the extension in the Thunderbird application
+       "                       
+                               ],
+                               AC_MSG_ERROR([The Thunderbird extension was not patched. Please see README 
file])
+                       )
+                               ],
+                               AC_MSG_ERROR([Couldn't find Thunderbird extension source directory. Please 
see README file])
+               )       
+           ],
+            [
+               enable_tbird=no
+            ])
+AM_CONDITIONAL(WITH_THUNDERBIRD_EXTENSION, test "x$enable_tbird" = "xyes")
 
-
 ##################################################################
 # check for poppler's glib bingings
 ##################################################################
@@ -739,6 +771,7 @@
        po/Makefile.in
        python/Makefile
        python/deskbar-handler/Makefile
+       $thunderbird_makefile
 ])
 
 AC_CONFIG_HEADERS([config.h])
@@ -773,6 +806,12 @@
        xml/html formats:                       $have_libxml2
        embedded/sidecar xmp:                   $have_exempi
 
+Thunderbird extension:
+
+        Build Thunderbird extension:            $enable_tbird
+        The extension will be build to:         $tbird_extension_directory/beagle.xpi
+        $thunderbird_extension_message
+
 "
 
 echo "
Index: README
===================================================================
--- README      (revision 807)
+++ README      (working copy)
@@ -145,7 +145,15 @@
 * xdg-utils (provides some functionality needed by tracker-search-tool but falls
   back to gnome-open if not available)
 
+Optional packages for Thunderbird support:
 
+* thunderbird-extension from Beagle project
+  This extension can be obtained using SVN, by running following command:
+
+svn co http://svn.gnome.org/svn/beagle/trunk/beagle/thunderbird-extension \
+path_to_tracker_project/thunderbird-extension 
+
+
 COMPILATION
 
 To compile Tracker, use the following commands :
@@ -161,6 +169,24 @@
  directory and/or might need to update ld_conf if you install into non
  standard directories.)
 
+Notes to build with thunderbird-extension
+
+First you need to apply thunderbird-extension.diff patch, by running the command :
+patch -d thunderbird-extension -p0 < thunderbird-extension.diff
+ 
+on Solaris :
+gpatch -d thunderbird-extension -p0 < thunderbird-extension.diff
+
+To compile thunderbird extension us the following commands :
+./configure --with-thunderbird-extension
+make
+(login as root)
+make install
+
+Install extension from thunderbird-extension/beagle.xpi in your
+Thunderbird application by selecting option :
+Tools -> Extensions (Add-ons) -> Install
+
 Notes to build tracker on Solaris
 
 To compile Tracker with GCC on Solaris uses the following commands :
Index: src/trackerd/tracker-email-evolution.c
===================================================================
--- src/trackerd/tracker-email-evolution.c      (revision 807)
+++ src/trackerd/tracker-email-evolution.c      (working copy)
@@ -2404,8 +2404,11 @@
 
                mp = email_allocate_mail_person ();
 
-               mp->name = g_strdup (addrs_list->address->name);
-               mp->addr = g_strdup (addrs_list->address->value.addr);
+               mp->addr = g_strdup (tmp->address->value.addr);
+               if(tmp->address->name)
+                       mp->name = g_strdup (tmp->address->name);
+               else
+                       mp->name = g_strdup (tmp->address->value.addr);
 
                list = g_slist_prepend (list, mp);
        }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]