[tracker: 1/2] Reimplementation of the tracker-preferences user interface



commit 3a2601dbce3da56e53c985f921fe50e9054439a4
Author: Philip Van Hoof <philip codeminded be>
Date:   Mon Sep 14 15:52:29 2009 +0200

    Reimplementation of the tracker-preferences user interface

 src/tracker-miner-fs/tracker-config.c              |    7 +
 src/tracker-miner-fs/tracker-config.h              |    2 +
 src/tracker-preferences/Makefile.am                |   33 +-
 src/tracker-preferences/config.vapi                |    2 +
 src/tracker-preferences/tracker-config.vapi        |   50 +
 .../tracker-preferences-dialogs.c                  |   85 -
 .../tracker-preferences-dialogs.h                  |   31 -
 src/tracker-preferences/tracker-preferences-main.c |   46 -
 .../tracker-preferences-utils.c                    |  137 --
 .../tracker-preferences-utils.h                    |   48 -
 src/tracker-preferences/tracker-preferences.c      | 1201 -----------
 src/tracker-preferences/tracker-preferences.h      |   50 -
 src/tracker-preferences/tracker-preferences.ui     | 2165 ++++++--------------
 src/tracker-preferences/tracker-preferences.vala   |  316 +++
 14 files changed, 977 insertions(+), 3196 deletions(-)
---
diff --git a/src/tracker-miner-fs/tracker-config.c b/src/tracker-miner-fs/tracker-config.c
index 2d786f1..b5e75ed 100644
--- a/src/tracker-miner-fs/tracker-config.c
+++ b/src/tracker-miner-fs/tracker-config.c
@@ -803,6 +803,13 @@ tracker_config_new (void)
 	return g_object_new (TRACKER_TYPE_CONFIG, NULL);
 }
 
+
+TrackerConfig *
+tracker_config_new_with_domain (const gchar *domain)
+{
+	return g_object_new (TRACKER_TYPE_CONFIG,  "domain", domain, NULL);
+}
+
 gboolean
 tracker_config_save (TrackerConfig *config)
 {
diff --git a/src/tracker-miner-fs/tracker-config.h b/src/tracker-miner-fs/tracker-config.h
index 551a018..553d198 100644
--- a/src/tracker-miner-fs/tracker-config.h
+++ b/src/tracker-miner-fs/tracker-config.h
@@ -48,6 +48,8 @@ struct TrackerConfigClass {
 GType	       tracker_config_get_type				   (void) G_GNUC_CONST;
 
 TrackerConfig *tracker_config_new                                  (void);
+TrackerConfig *tracker_config_new_with_domain                      (const gchar *domain);
+
 gboolean       tracker_config_save                                 (TrackerConfig *config);
 
 gint           tracker_config_get_verbosity                        (TrackerConfig *config);
diff --git a/src/tracker-preferences/Makefile.am b/src/tracker-preferences/Makefile.am
index a295abb..f6ab15e 100644
--- a/src/tracker-preferences/Makefile.am
+++ b/src/tracker-preferences/Makefile.am
@@ -15,21 +15,26 @@ INCLUDES = 								\
 	-DTRACKER_BINDIR=\""$(bindir)"\" 				\
 	-DTRACKER_LIBEXECDIR=\""$(libexecdir)"\" 			\
 	-DTRACKER_COMPILATION 						\
+	-DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\"			\
 	-I$(top_srcdir)/src						\
 	$(WARN_CFLAGS)							\
 	$(GLIB_CFLAGS) 							\
 	$(GCOV_CFLAGS) 							\
 	$(GTK2_CFLAGS) 							\
-	$(DBUS_CFLAGS)
+	$(DBUS_CFLAGS)							\
+	$(GMODULE_CFLAGS)
+
+BUILT_SOURCES = tracker-preferences.vala.stamp
+
+config_class_sources = \
+	$(top_srcdir)/src/tracker-miner-fs/tracker-config.h		\
+	$(top_srcdir)/src/tracker-miner-fs/tracker-config.c
+
+tracker_preferences_VALASOURCES = tracker-preferences.vala
 
 tracker_preferences_SOURCES = 						\
-	tracker-preferences.c 						\
-	tracker-preferences.h 						\
-	tracker-preferences-dialogs.c 					\
-	tracker-preferences-dialogs.h 					\
-	tracker-preferences-main.c 					\
-	tracker-preferences-utils.c 					\
-	tracker-preferences-utils.h
+	$(config_class_sources)						\
+	$(tracker_preferences_VALASOURCES:.vala=.c)
 
 tracker_preferences_LDADD = 						\
 	$(top_builddir)/src/libtracker-client/libtracker-client- TRACKER_API_VERSION@.la	\
@@ -37,8 +42,14 @@ tracker_preferences_LDADD = 						\
 	$(GTK2_LIBS) 							\
 	$(DBUS_LIBS) 							\
 	$(GCOV_LIBS) 							\
-	$(GLIB_LIBS)
+	$(GLIB_LIBS)							\
+	$(GMODULE_LIBS)
+
+EXTRA_DIST = $(pkgdata_DATA) tracker-config.vapi \
+	$(tracker_preferences_VALASOURCES)
 
-EXTRA_DIST = $(pkgdata_DATA)
+tracker-preferences.vala.stamp: $(tracker_preferences_VALASOURCES)
+	$(VALAC) --pkg gtk+-2.0 --pkg gmodule-2.0 -C $(VALAFLAGS) -H tracker-preferences.h tracker-config.vapi config.vapi $^
+	touch $@
 
-CLEANFILES = $(desktop_DATA)
+CLEANFILES = $(desktop_DATA) tracker-preferences.h tracker-preferences.c tracker-preferences.vala.stamp
diff --git a/src/tracker-preferences/config.vapi b/src/tracker-preferences/config.vapi
new file mode 100644
index 0000000..f46e084
--- /dev/null
+++ b/src/tracker-preferences/config.vapi
@@ -0,0 +1,2 @@
+[CCode (cheader_filename = "config.h")]
+public const string TRACKER_DATADIR;
diff --git a/src/tracker-preferences/tracker-config.vapi b/src/tracker-preferences/tracker-config.vapi
new file mode 100644
index 0000000..38cef39
--- /dev/null
+++ b/src/tracker-preferences/tracker-config.vapi
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008-2009, Nokia
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ *
+ * Author: Philip Van Hoof <philip codeminded be>
+ */
+
+namespace Tracker {
+	[CCode (cheader_filename = "tracker-miner-fs/tracker-config.h")]
+	public class Config : GLib.Object {
+		public Config.with_domain (string domain);
+
+		public int verbosity { get; set; }
+		public int initial_sleep { get; set; }
+		public bool enable_monitors { get; set; }
+		public int scan_timeout { get; set; }
+		public int cache_timeout { get; set; }
+		public int throttle { get; set; }
+		public bool enable_thumbnails { get; set; }
+		public bool index_on_battery { get; set; }
+		public bool index_on_battery_first_time { get; set; }
+		public bool index_removable_devices { get; set; }
+		public bool index_mounted_directories { get; set; }
+		public int low_disk_space_limit { get; set; }
+		public GLib.SList<string> index_recursive_directories { get; set; }
+		public GLib.SList<string> index_single_directories { get; set; }
+		public GLib.SList<string> ignored_directories { get; set; }
+		public GLib.SList<string> ignored_directories_with_content { get; set; }
+		public GLib.SList<string> ignored_files { get; set; }
+		public GLib.SList<string> ignored_directory_patterns { get; }
+		public GLib.SList<string> ignored_file_patterns { get ; }
+
+		public bool save ();
+	}
+}
+
diff --git a/src/tracker-preferences/tracker-preferences.ui b/src/tracker-preferences/tracker-preferences.ui
index 2a8d11a..7c4e105 100644
--- a/src/tracker-preferences/tracker-preferences.ui
+++ b/src/tracker-preferences/tracker-preferences.ui
@@ -1,245 +1,126 @@
 <?xml version="1.0"?>
-<!--*- mode: xml -*-->
 <interface>
-  <object class="GtkAdjustment" id="adjustment1">
-    <property name="upper">1000</property>
-    <property name="lower">0</property>
-    <property name="page_increment">300</property>
-    <property name="step_increment">1</property>
-    <property name="page_size">0</property>
-    <property name="value">0</property>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkListStore" id="liststore_index_recursively">
+    <columns>
+      <!-- column-name Directory -->
+      <column type="gchararray"/>
+    </columns>
   </object>
-  <object class="GtkAdjustment" id="adjustment2">
-    <property name="upper">20</property>
-    <property name="lower">0</property>
-    <property name="page_increment">5</property>
-    <property name="step_increment">1</property>
-    <property name="page_size">0</property>
-    <property name="value">0</property>
+  <object class="GtkListStore" id="liststore_index_single">
+    <columns>
+      <!-- column-name Directory -->
+      <column type="gchararray"/>
+    </columns>
   </object>
-  <object class="GtkAdjustment" id="adjustment3">
-    <property name="upper">1000000</property>
-    <property name="lower">1000</property>
-    <property name="page_increment">500</property>
-    <property name="step_increment">100</property>
-    <property name="page_size">0</property>
-    <property name="value">10000</property>
+  <object class="GtkListStore" id="liststore_ignored_directories">
+    <columns>
+      <!-- column-name Directory -->
+      <column type="gchararray"/>
+    </columns>
   </object>
-  <object class="GtkAdjustment" id="adjustment4">
-    <property name="upper">1000000</property>
-    <property name="lower">1</property>
-    <property name="page_increment">1024</property>
-    <property name="step_increment">1</property>
-    <property name="page_size">0</property>
-    <property name="value">1000000</property>
+  <object class="GtkListStore" id="liststore_ignored_files">
+    <columns>
+      <!-- column-name Filename -->
+      <column type="gchararray"/>
+    </columns>
   </object>
-  <object class="GtkDialog" id="dlgPreferences">
+  <object class="GtkListStore" id="liststore_gnored_directories_with_content">
+    <columns>
+      <!-- column-name Directory -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
+  <object class="GtkDialog" id="tracker-preferences">
+    <property name="width_request">500</property>
     <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">False</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="type_hint">normal</property>
     <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
-        <property name="homogeneous">False</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
-            <child>
-              <object 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>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton" id="cmdApply">
-                <property name="visible">True</property>
-                <property name="label">gtk-apply</property>
-                <property name="use_stock">True</property>
-                <property name="relief">GTK_RELIEF_NORMAL</property>
-                <property name="focus_on_click">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton" id="cmdCancel">
-                <property name="visible">True</property>
-                <property name="label">gtk-cancel</property>
-                <property name="use_stock">True</property>
-                <property name="relief">GTK_RELIEF_NORMAL</property>
-                <property name="focus_on_click">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton" id="cmdOK">
-                <property name="visible">True</property>
-                <property name="label">gtk-ok</property>
-                <property name="use_stock">True</property>
-                <property name="relief">GTK_RELIEF_NORMAL</property>
-                <property name="focus_on_click">True</property>
-              </object>
-            </child>
-          </object>
-          <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>
-          <object class="GtkNotebook" id="nbPreferences">
-            <property name="border_width">5</property>
+          <object class="GtkNotebook" id="notebook">
             <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>
+            <property name="can_focus">True</property>
+            <property name="border_width">6</property>
             <child>
               <object class="GtkVBox" id="vbox1">
-                <property name="border_width">12</property>
                 <property name="visible">True</property>
-                <property name="homogeneous">False</property>
+                <property name="border_width">12</property>
+                <property name="orientation">vertical</property>
                 <property name="spacing">18</property>
                 <child>
-                  <object class="GtkFrame" id="fraStartup">
+                  <object class="GtkFrame" id="frame_general">
                     <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>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment2">
+                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
-                          <object class="GtkVBox" id="vbox20">
+                          <object class="GtkVBox" id="vbox_general">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">6</property>
+                            <property name="orientation">vertical</property>
                             <child>
-                              <object class="GtkHBox" id="hbox8">
+                              <object class="GtkHBox" id="hbox_delay">
                                 <property name="visible">True</property>
-                                <property name="homogeneous">False</property>
                                 <property name="spacing">12</property>
                                 <child>
-                                  <object class="GtkLabel" id="lblInitialSleep">
+                                  <object class="GtkLabel" id="label_delay">
                                     <property name="visible">True</property>
-                                    <property name="label" translatable="yes">Index _delay:</property>
+                                    <property name="label" translatable="yes">_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>
-                                    <accessibility>
-                                      <relation target="spnInitialSleep" type="label-for"/>
-                                    </accessibility>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
                                 <child>
                                   <object class="GtkHBox" id="hbox16">
                                     <property name="visible">True</property>
-                                    <property name="homogeneous">False</property>
                                     <property name="spacing">6</property>
                                     <child>
-                                      <object class="GtkSpinButton" id="spnInitialSleep">
+                                      <object class="GtkSpinButton" id="spinbutton_delay">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
+                                        <property name="invisible_char">&#x25CF;</property>
+                                        <property name="adjustment">adjustment_delay</property>
                                         <property name="climb_rate">1</property>
-                                        <property name="digits">0</property>
-                                        <property name="numeric">True</property>
-                                        <property name="update_policy">GTK_UPDATE_ALWAYS</property>
                                         <property name="snap_to_ticks">True</property>
-                                        <property name="wrap">False</property>
-                                        <property name="adjustment">adjustment1</property>
-                                        <accessibility>
-                                          <relation target="lblInitialSleep" type="labelled-by"/>
-                                          <relation target="lblInitialSleepSeconds" type="labelled-by"/>
-                                        </accessibility>
+                                        <property name="numeric">True</property>
+                                        <signal name="value_changed" handler="spinbutton_delay_value_changed_cb"/>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
-                                        <property name="expand">True</property>
-                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkLabel" id="lblInitialSleepSeconds">
+                                      <object class="GtkLabel" id="label_delay_seconds">
                                         <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>
-                                        <accessibility>
-                                          <relation target="spnInitialSleep" type="label-for"/>
-                                        </accessibility>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
+                                        <property name="position">1</property>
                                       </packing>
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
                                   </packing>
                                 </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                           </object>
@@ -247,68 +128,45 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="label5">
+                      <object class="GtkLabel" id="label_general">
                         <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="label" translatable="yes">&lt;b&gt;Start up&lt;/b&gt;</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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
                     <property name="expand">False</property>
-                    <property name="fill">True</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkFrame" id="frame5">
+                  <object class="GtkFrame" id="frame_monitoring">
                     <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>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment9">
+                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
-                          <object class="GtkVBox" id="vbox11">
+                          <object class="GtkVBox" id="vbox_monitoring">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">6</property>
+                            <property name="orientation">vertical</property>
                             <child>
-                              <object class="GtkCheckButton" id="chkEnableIndexing">
+                              <object class="GtkCheckButton" id="checkbutton_enable_monitoring">
+                                <property name="label" translatable="yes">E_nable</property>
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">Enable i_ndexing</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</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>
+                                <signal name="toggled" handler="checkbutton_enable_monitoring_toggled_cb"/>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                           </object>
@@ -316,322 +174,234 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="label12">
+                      <object class="GtkLabel" id="label_monitoring">
                         <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="label" translatable="yes">&lt;b&gt;Monitoring&lt;/b&gt;</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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
                     <property name="expand">False</property>
-                    <property name="fill">True</property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkFrame" id="frame11">
+                  <object class="GtkFrame" id="frame_indexing">
                     <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>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment17">
+                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
-                          <object class="GtkVBox" id="vbox17">
+                          <object class="GtkVBox" id="vbox_indexing">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
-                              <object class="GtkHBox" id="hbox11">
+                              <object class="GtkCheckButton" id="checkbutton_enable_thumbnails">
+                                <property name="label" translatable="yes">Enable _thumbnails</property>
                                 <property name="visible">True</property>
-                                <property name="homogeneous">False</property>
-                                <property name="spacing">12</property>
-                                <child>
-                                  <object 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>
-                                  </object>
-                                  <packing>
-                                    <property name="padding">0</property>
-                                    <property name="expand">False</property>
-                                    <property name="fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkComboBox" id="comLanguage">
-                                    <property name="visible">True</property>
-                                    <property name="add_tearoffs">False</property>
-                                    <property name="focus_on_click">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="padding">0</property>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
-                                  </packing>
-                                </child>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="checkbutton_enable_thumbnails_toggled_cb"/>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">False</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object 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>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frame13">
-                    <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>
-                      <object class="GtkAlignment" id="alignment19">
-                        <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">6</property>
-                        <property name="bottom_padding">0</property>
-                        <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox21">
-                            <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">6</property>
                             <child>
-                              <object class="GtkCheckButton" id="chkDisableBatteryIndex">
+                              <object class="GtkCheckButton" id="checkbutton_enable_index_on_battery">
+                                <property name="label" translatable="yes">Enable when running on _battery</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Disable all Indexing when on battery</property>
+                                <property name="receives_default">False</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="active">True</property>
                                 <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="checkbutton_enable_index_on_battery_toggled_cb"/>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkAlignment" id="alignment4">
+                                <property name="visible">True</property>
+                                <property name="left_padding">12</property>
+                                <child>
+                                  <object class="GtkCheckButton" id="checkbutton_enable_index_on_battery_first_time">
+                                    <property name="label" translatable="yes">Enable for _first time</property>
+                                    <property name="visible">True</property>
+                                    <property name="sensitive">False</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="active">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="checkbutton_enable_index_on_battery_first_time_toggled_cb"/>
+                                  </object>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">2</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkCheckButton" id="chkDisableBatteryInitialIndex">
+                              <object class="GtkCheckButton" id="checkbutton_index_mounted_directories">
+                                <property name="label" translatable="yes">Include _mounted directories</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Disable initial index sweep when on battery</property>
+                                <property name="receives_default">False</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="active">True</property>
                                 <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="checkbutton_index_mounted_directories_toggled_cb"/>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
+                                <property name="position">3</property>
                               </packing>
                             </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label37">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">&lt;b&gt;Power management&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>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="tab_expand">False</property>
-                <property name="tab_fill">True</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label1">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">General</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>
-              </object>
-            </child>
-            <child>
-              <object class="GtkVBox" id="vbox14">
-                <property name="border_width">12</property>
-                <property name="visible">True</property>
-                <property name="homogeneous">False</property>
-                <property name="spacing">18</property>
-                <child>
-                  <object 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>
-                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
-                        <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox15">
-                            <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">6</property>
                             <child>
-                              <object class="GtkCheckButton" id="chkIndexContents">
+                              <object class="GtkCheckButton" id="checkbutton_index_removable_media">
+                                <property name="label" translatable="yes">Include _removable media</property>
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">Index _file contents</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</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>
+                                <signal name="toggled" handler="checkbutton_index_removable_media_toggled_cb"/>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
+                                <property name="position">4</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkCheckButton" id="chkGenerateThumbs">
+                              <object class="GtkHBox" id="hbox_disk_space_limit">
                                 <property name="visible">True</property>
-                                <property name="label" translatable="yes">Generate thum_bnails</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>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <object class="GtkLabel" id="label_disk_space_limit">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="label" translatable="yes">Disk space _limit:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="mnemonic_widget">hscale_disk_space_limit</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkHScale" id="hscale_disk_space_limit">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="adjustment">adjustment_disk_space_limit</property>
+                                    <property name="digits">0</property>
+                                    <signal name="format_value" handler="hscale_disk_space_limit_format_value_cb"/>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">True</property>
+                                <property name="padding">12</property>
+                                <property name="position">5</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkCheckButton" id="chkSkipMountPoints">
+                              <object class="GtkHBox" id="hbox_throttle">
                                 <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>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <object class="GtkLabel" id="label_throttle">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="yalign">0</property>
+                                    <property name="label" translatable="yes">Thr_ottle:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="mnemonic_widget">hscale_throttle</property>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkTable" id="table_throttle">
+                                    <property name="visible">True</property>
+                                    <property name="n_rows">2</property>
+                                    <property name="n_columns">2</property>
+                                    <property name="column_spacing">12</property>
+                                    <property name="row_spacing">6</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label_slower">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">1</property>
+                                        <property name="label" translatable="yes">Slower</property>
+                                        <property name="justify">right</property>
+                                      </object>
+                                      <packing>
+                                        <property name="left_attach">1</property>
+                                        <property name="right_attach">2</property>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkLabel" id="label_faster">
+                                        <property name="visible">True</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">Faster</property>
+                                      </object>
+                                      <packing>
+                                        <property name="top_attach">1</property>
+                                        <property name="bottom_attach">2</property>
+                                        <property name="y_options"></property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkHScale" id="hscale_throttle">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">adjustment_throttle</property>
+                                        <property name="digits">0</property>
+                                        <signal name="format_value" handler="hscale_throttle_format_value_cb"/>
+                                      </object>
+                                      <packing>
+                                        <property name="right_attach">2</property>
+                                      </packing>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">False</property>
+                                <property name="padding">6</property>
+                                <property name="position">6</property>
                               </packing>
                             </child>
                           </object>
@@ -639,200 +409,157 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="label20">
+                      <object class="GtkLabel" id="label_indexing">
                         <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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
+                    <property name="position">2</property>
                   </packing>
                 </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">General</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox2">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">18</property>
                 <child>
-                  <object class="GtkFrame" id="fraGeneralIndexing">
+                  <object class="GtkFrame" id="frame_index_recursive_directories">
                     <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>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment7">
+                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
                           <object class="GtkVBox" id="vbox7">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
-                              <object class="GtkCheckButton" id="chkIndexHomeDirectory">
+                              <object class="GtkLabel" id="label_index_recursively">
                                 <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>
-                              </object>
-                              <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object 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">0</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>
-                                <accessibility>
-                                  <relation target="lstAdditionalPathIndexes" type="label-for"/>
-                                </accessibility>
+                                <property name="label" translatable="yes">Directories:</property>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">True</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
                               <object class="GtkHBox" id="hbox1">
                                 <property name="visible">True</property>
-                                <property name="homogeneous">False</property>
                                 <property name="spacing">6</property>
                                 <child>
                                   <object 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>
+                                    <property name="can_focus">True</property>
+                                    <property name="hscrollbar_policy">automatic</property>
+                                    <property name="vscrollbar_policy">automatic</property>
+                                    <property name="shadow_type">in</property>
                                     <child>
-                                      <object class="GtkTreeView" id="lstAdditionalPathIndexes">
+                                      <object class="GtkTreeView" id="treeview_index_recursively">
                                         <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="model">liststore_index_recursively</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>
-                                        <accessibility>
-                                          <relation target="label8" type="labelled-by"/>
-                                        </accessibility>
+                                        <property name="headers_clickable">False</property>
+                                        <property name="rules_hint">True</property>
+                                        <property name="search_column">0</property>
                                       </object>
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
                                 <child>
                                   <object class="GtkVBox" id="vbox23">
                                     <property name="visible">True</property>
-                                    <property name="homogeneous">False</property>
+                                    <property name="orientation">vertical</property>
                                     <property name="spacing">6</property>
                                     <child>
-                                      <object class="GtkButton" id="cmdAddIndexPath">
+                                      <object class="GtkButton" id="button_index_recursively_add">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_index_recursively_add_clicked_cb"/>
                                         <child>
-                                          <object class="GtkImage" id="image2">
+                                          <object class="GtkImage" id="image3">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-add</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkButton" id="cmdRemoveIndexPath">
+                                      <object class="GtkButton" id="button_index_recursively_remove">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_index_recursively_remove_clicked_cb"/>
                                         <child>
-                                          <object class="GtkImage" id="image3">
+                                          <object class="GtkImage" id="image4">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-remove</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <placeholder/>
+                                      <object class="GtkToggleButton" id="togglebutton1">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">True</property>
+                                        <property name="tooltip_text" translatable="yes">When toggled, this makes sure your home directory is included in the list.</property>
+                                        <property name="active">True</property>
+                                        <child>
+                                          <object class="GtkImage" id="image11">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-home</property>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
                                     <property name="expand">False</property>
                                     <property name="fill">False</property>
+                                    <property name="position">1</property>
                                   </packing>
                                 </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </object>
@@ -840,166 +567,109 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="label7">
+                      <object class="GtkLabel" id="label1">
                         <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="label" translatable="yes">&lt;b&gt;Recursively Indexed&lt;/b&gt;</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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkFrame" id="frame10">
+                  <object class="GtkFrame" id="frame_index_single_directories">
                     <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>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment16">
+                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
-                          <object class="GtkVBox" id="vbox16">
+                          <object class="GtkVBox" id="vbox3">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
-                              <object class="GtkLabel" id="label21">
+                              <object class="GtkLabel" id="label_index_single">
                                 <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">0</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>
-                                <accessibility>
-                                  <relation target="lstCrawledPaths" type="label-for"/>
-                                </accessibility>
+                                <property name="label" translatable="yes">Directories (no sub-directories are indexed):</property>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">True</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkHBox" id="hbox9">
+                              <object class="GtkHBox" id="hbox4">
                                 <property name="visible">True</property>
-                                <property name="homogeneous">False</property>
                                 <property name="spacing">6</property>
                                 <child>
-                                  <object class="GtkScrolledWindow" id="scrolledwindow5">
+                                  <object 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>
+                                    <property name="can_focus">True</property>
+                                    <property name="hscrollbar_policy">automatic</property>
+                                    <property name="vscrollbar_policy">automatic</property>
+                                    <property name="shadow_type">in</property>
                                     <child>
-                                      <object class="GtkTreeView" id="lstCrawledPaths">
+                                      <object class="GtkTreeView" id="treeview_index_single">
                                         <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="model">liststore_index_single</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>
-                                        <accessibility>
-                                          <relation target="label21" type="labelled-by"/>
-                                        </accessibility>
+                                        <property name="headers_clickable">False</property>
+                                        <property name="rules_hint">True</property>
+                                        <property name="search_column">0</property>
                                       </object>
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkVBox" id="vbox24">
+                                  <object class="GtkVBox" id="vbox5">
                                     <property name="visible">True</property>
-                                    <property name="homogeneous">False</property>
+                                    <property name="orientation">vertical</property>
                                     <property name="spacing">6</property>
                                     <child>
-                                      <object class="GtkButton" id="cmdAddCrawledPath">
+                                      <object class="GtkButton" id="button_index_single_add">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_index_single_add_clicked_cb"/>
                                         <child>
-                                          <object class="GtkImage" id="image4">
+                                          <object class="GtkImage" id="image5">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-add</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkButton" id="cmdRemoveCrawledPath">
+                                      <object class="GtkButton" id="button_index_single_remove">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_index_single_remove_clicked_cb"/>
                                         <child>
-                                          <object class="GtkImage" id="image5">
+                                          <object class="GtkImage" id="image10">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-remove</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
                                       </packing>
                                     </child>
                                     <child>
@@ -1007,16 +677,14 @@
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">1</property>
                                   </packing>
                                 </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </object>
@@ -1024,191 +692,132 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="label22">
+                      <object class="GtkLabel" id="label7">
                         <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="label" translatable="yes">&lt;b&gt;Non-Recursively Indexed&lt;/b&gt;</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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
               </object>
               <packing>
-                <property name="tab_expand">False</property>
-                <property name="tab_fill">True</property>
+                <property name="position">1</property>
               </packing>
             </child>
             <child type="tab">
-              <object class="GtkLabel" id="label19">
+              <object class="GtkLabel" id="label2">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Files</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>
+                <property name="label" translatable="yes">Locations</property>
               </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
             </child>
             <child>
               <object class="GtkVBox" id="vbox4">
-                <property name="border_width">12</property>
                 <property name="visible">True</property>
-                <property name="homogeneous">False</property>
+                <property name="border_width">12</property>
+                <property name="orientation">vertical</property>
                 <property name="spacing">18</property>
                 <child>
-                  <object class="GtkFrame" id="fraIgnoredPaths">
+                  <object class="GtkFrame" id="frame_ignored_directories">
                     <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>
+                    <property name="shadow_type">none</property>
                     <child>
                       <object 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">6</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
-                          <object class="GtkVBox" id="vbIgnorePaths">
+                          <object class="GtkVBox" id="vbox_ignored_directories">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
                               <object 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">0</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>
+                                <property name="label" translatable="yes">Directoy glob patterns to ignore:</property>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">True</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
                               <object class="GtkHBox" id="hbox2">
                                 <property name="visible">True</property>
-                                <property name="homogeneous">False</property>
                                 <property name="spacing">6</property>
                                 <child>
                                   <object 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>
+                                    <property name="can_focus">True</property>
+                                    <property name="hscrollbar_policy">automatic</property>
+                                    <property name="vscrollbar_policy">automatic</property>
+                                    <property name="shadow_type">in</property>
                                     <child>
-                                      <object class="GtkTreeView" id="lstIgnorePaths">
+                                      <object class="GtkTreeView" id="treeview_ignored_directories">
                                         <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>
+                                        <property name="can_focus">True</property>
+                                        <property name="tooltip_text" translatable="yes">Globbing patterns can be used here, for example: "*foo*".
+Most commonly this is used to ignore directories like po, CVS, .svn, .git, etc</property>
+                                        <property name="model">liststore_ignored_directories</property>
+                                        <property name="headers_visible">False</property>
+                                        <property name="headers_clickable">False</property>
+                                        <property name="rules_hint">True</property>
+                                        <property name="search_column">0</property>
                                       </object>
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
                                 <child>
                                   <object class="GtkVBox" id="vbox25">
                                     <property name="visible">True</property>
-                                    <property name="homogeneous">False</property>
+                                    <property name="orientation">vertical</property>
                                     <property name="spacing">6</property>
                                     <child>
-                                      <object class="GtkButton" id="cmdAddIgnorePath">
+                                      <object class="GtkButton" id="button_ignored_directories_add">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_ignored_directories_add_clicked_cb"/>
                                         <child>
                                           <object class="GtkImage" id="image6">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-add</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkButton" id="cmdRemoveIgnorePath">
+                                      <object class="GtkButton" id="button_ignored_directories_remove">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_ignored_directories_remove_clicked_cb"/>
                                         <child>
                                           <object class="GtkImage" id="image7">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-remove</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
                                       </packing>
                                     </child>
                                     <child>
@@ -1216,16 +825,13 @@
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
                                   </packing>
                                 </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </object>
@@ -1235,158 +841,107 @@
                     <child type="label">
                       <object 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="label" translatable="yes">&lt;b&gt;Directories&lt;/b&gt;</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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkFrame" id="fraIgnoredPatterns">
+                  <object class="GtkFrame" id="frame_ignored_directories_with_content">
                     <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>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment14">
+                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
                         <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
                         <child>
-                          <object class="GtkVBox" id="vbIgnorePatterns">
+                          <object class="GtkVBox" id="vbox_ignored_directories_with_content">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
-                              <object class="GtkLabel" id="label11">
+                              <object class="GtkLabel" id="label5">
                                 <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">0</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>
+                                <property name="label" translatable="yes">Directories to ignore with specific files in them:</property>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">True</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkHBox" id="hbox3">
+                              <object class="GtkHBox" id="hbox5">
                                 <property name="visible">True</property>
-                                <property name="homogeneous">False</property>
                                 <property name="spacing">6</property>
                                 <child>
-                                  <object class="GtkScrolledWindow" id="scrolledwindow3">
+                                  <object 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>
+                                    <property name="can_focus">True</property>
+                                    <property name="hscrollbar_policy">automatic</property>
+                                    <property name="vscrollbar_policy">automatic</property>
+                                    <property name="shadow_type">in</property>
                                     <child>
-                                      <object class="GtkTreeView" id="lstIgnoreFilePatterns">
+                                      <object class="GtkTreeView" id="treeview_ignored_directories_with_content">
                                         <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>
+                                        <property name="can_focus">True</property>
+                                        <property name="model">liststore_gnored_directories_with_content</property>
+                                        <property name="headers_visible">False</property>
+                                        <property name="headers_clickable">False</property>
+                                        <property name="rules_hint">True</property>
+                                        <property name="search_column">0</property>
                                       </object>
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
-                                    <property name="expand">True</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkVBox" id="vbox26">
+                                  <object class="GtkVBox" id="vbox8">
                                     <property name="visible">True</property>
-                                    <property name="homogeneous">False</property>
+                                    <property name="orientation">vertical</property>
                                     <property name="spacing">6</property>
                                     <child>
-                                      <object class="GtkButton" id="cmdAddIgnorePattern">
+                                      <object class="GtkButton" id="button_ignored_directories_with_content_add">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_ignored_directories_with_content_add_clicked_cb"/>
                                         <child>
-                                          <object class="GtkImage" id="image8">
+                                          <object class="GtkImage" id="image12">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-add</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <object class="GtkButton" id="cmdRemoveIgnorePattern">
+                                      <object class="GtkButton" id="button_ignored_directories_with_content_remove">
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="relief">GTK_RELIEF_NORMAL</property>
-                                        <property name="focus_on_click">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_ignored_directories_with_content_remove_clicked_cb"/>
                                         <child>
-                                          <object class="GtkImage" id="image9">
+                                          <object class="GtkImage" id="image13">
                                             <property name="visible">True</property>
                                             <property name="stock">gtk-remove</property>
-                                            <property name="icon_size">4</property>
-                                            <property name="xalign">0.5</property>
-                                            <property name="yalign">0.5</property>
-                                            <property name="xpad">0</property>
-                                            <property name="ypad">0</property>
                                           </object>
                                         </child>
                                       </object>
                                       <packing>
-                                        <property name="padding">0</property>
                                         <property name="expand">False</property>
-                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
                                       </packing>
                                     </child>
                                     <child>
@@ -1394,16 +949,13 @@
                                     </child>
                                   </object>
                                   <packing>
-                                    <property name="padding">0</property>
                                     <property name="expand">False</property>
-                                    <property name="fill">True</property>
+                                    <property name="position">1</property>
                                   </packing>
                                 </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </object>
@@ -1411,393 +963,125 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object class="GtkLabel" id="label9">
+                      <object class="GtkLabel" id="label8">
                         <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="label" translatable="yes">&lt;b&gt;Directories With Content&lt;/b&gt;</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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="tab_expand">False</property>
-                <property name="tab_fill">True</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label3">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Ignored Files</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>
-              </object>
-            </child>
-            <child>
-              <object class="GtkVBox" id="vbox3">
-                <property name="border_width">12</property>
-                <property name="visible">True</property>
-                <property name="homogeneous">False</property>
-                <property name="spacing">18</property>
-                <child>
-                  <object class="GtkVBox" id="vbox8">
-                    <property name="visible">True</property>
-                    <property name="homogeneous">False</property>
-                    <property name="spacing">6</property>
-                    <child>
-                      <object 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>
-                      </object>
-                      <packing>
-                        <property name="padding">0</property>
-                        <property name="expand">False</property>
-                        <property name="fill">True</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkVBox" id="vbox12">
+                  <object class="GtkFrame" id="frame_ignored_files">
                     <property name="visible">True</property>
-                    <property name="sensitive">False</property>
-                    <property name="homogeneous">False</property>
-                    <property name="spacing">6</property>
-                    <child>
-                      <object class="GtkLabel" id="label14">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Additional mbox style 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">0</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>
-                      </object>
-                      <packing>
-                        <property name="padding">0</property>
-                        <property name="expand">False</property>
-                        <property name="fill">True</property>
-                      </packing>
-                    </child>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <object class="GtkHBox" id="hbox5">
+                      <object class="GtkAlignment" id="alignment14">
                         <property name="visible">True</property>
-                        <property name="homogeneous">False</property>
-                        <property name="spacing">6</property>
-                        <child>
-                          <object 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>
-                              <object 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>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="padding">0</property>
-                            <property name="expand">True</property>
-                            <property name="fill">True</property>
-                          </packing>
-                        </child>
+                        <property name="top_padding">6</property>
+                        <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkVBox" id="vbox27">
+                          <object class="GtkVBox" id="vbox_ignored_files">
                             <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">6</property>
                             <child>
-                              <object class="GtkButton" id="cmdAddIndexMailbox">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="relief">GTK_RELIEF_NORMAL</property>
-                                <property name="focus_on_click">True</property>
-                                <child>
-                                  <object class="GtkImage" id="image10">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-add</property>
-                                    <property name="icon_size">4</property>
-                                    <property name="xalign">0.5</property>
-                                    <property name="yalign">0.5</property>
-                                    <property name="xpad">0</property>
-                                    <property name="ypad">0</property>
-                                  </object>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="cmdRemoveIndexMailbox">
+                              <object class="GtkLabel" id="label11">
                                 <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="relief">GTK_RELIEF_NORMAL</property>
-                                <property name="focus_on_click">True</property>
-                                <child>
-                                  <object class="GtkImage" id="image11">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-remove</property>
-                                    <property name="icon_size">4</property>
-                                    <property name="xalign">0.5</property>
-                                    <property name="yalign">0.5</property>
-                                    <property name="xpad">0</property>
-                                    <property name="ypad">0</property>
-                                  </object>
-                                </child>
+                                <property name="xalign">0</property>
+                                <property name="label" translatable="yes">File glob patterns to ignore:</property>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
                                 <property name="expand">False</property>
-                                <property name="fill">False</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
-                              <placeholder/>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="padding">0</property>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="padding">0</property>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
-                      </packing>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="tab_expand">False</property>
-                <property name="tab_fill">True</property>
-              </packing>
-            </child>
-            <child type="tab">
-              <object class="GtkLabel" id="label2">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Email</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>
-              </object>
-            </child>
-            <child>
-              <object class="GtkVBox" id="vbox5">
-                <property name="border_width">12</property>
-                <property name="visible">True</property>
-                <property name="homogeneous">False</property>
-                <property name="spacing">18</property>
-                <child>
-                  <object 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>
-                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
-                        <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox6">
-                            <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">6</property>
-                            <child>
-                              <object class="GtkTable" id="table3">
+                              <object class="GtkHBox" id="hbox3">
                                 <property name="visible">True</property>
-                                <property name="n_rows">2</property>
-                                <property name="n_columns">3</property>
-                                <property name="homogeneous">False</property>
-                                <property name="row_spacing">6</property>
-                                <property name="column_spacing">12</property>
-                                <child>
-                                  <object class="GtkLabel" id="label24">
-                                    <property name="visible">True</property>
-                                    <property name="label" translatable="yes">Indexing Speed:</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</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>
-                                  </object>
-                                  <packing>
-                                    <property name="left_attach">0</property>
-                                    <property name="right_attach">1</property>
-                                    <property name="top_attach">0</property>
-                                    <property name="bottom_attach">1</property>
-                                    <property name="x_options"/>
-                                    <property name="y_options">fill</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object 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">adjustment2</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">3</property>
-                                    <property name="top_attach">0</property>
-                                    <property name="bottom_attach">1</property>
-                                    <property name="y_options"/>
-                                  </packing>
-                                </child>
+                                <property name="spacing">6</property>
                                 <child>
-                                  <object class="GtkLabel" id="label40">
+                                  <object class="GtkScrolledWindow" id="scrolledwindow3">
                                     <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_RIGHT</property>
-                                    <property name="wrap">False</property>
-                                    <property name="selectable">False</property>
-                                    <property name="xalign">1</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>
+                                    <property name="can_focus">True</property>
+                                    <property name="hscrollbar_policy">automatic</property>
+                                    <property name="vscrollbar_policy">automatic</property>
+                                    <property name="shadow_type">in</property>
+                                    <child>
+                                      <object class="GtkTreeView" id="treeview_ignored_files">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="tooltip_text" translatable="yes">Globbing patterns can be used here, for example: "*bar*".
+Most commonly this is used to ignore directories like *~, *.o, *.la, etc</property>
+                                        <property name="model">liststore_ignored_files</property>
+                                        <property name="headers_visible">False</property>
+                                        <property name="headers_clickable">False</property>
+                                        <property name="rules_hint">True</property>
+                                        <property name="search_column">0</property>
+                                      </object>
+                                    </child>
                                   </object>
                                   <packing>
-                                    <property name="left_attach">2</property>
-                                    <property name="right_attach">3</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                    <property name="y_options"/>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkLabel" id="label39">
+                                  <object class="GtkVBox" id="vbox6">
                                     <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</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>
+                                    <property name="orientation">vertical</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <object class="GtkButton" id="button_ignored_files_add">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_ignored_files_add_clicked_cb"/>
+                                        <child>
+                                          <object class="GtkImage" id="image8">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-add</property>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" id="button_ignored_files_remove">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">True</property>
+                                        <signal name="clicked" handler="button_ignored_files_remove_clicked_cb"/>
+                                        <child>
+                                          <object class="GtkImage" id="image9">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-remove</property>
+                                          </object>
+                                        </child>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
                                   </object>
                                   <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                    <property name="y_options"/>
+                                    <property name="expand">False</property>
+                                    <property name="position">1</property>
                                   </packing>
                                 </child>
                               </object>
                               <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
+                                <property name="position">1</property>
                               </packing>
                             </child>
                           </object>
@@ -1805,406 +1089,113 @@
                       </object>
                     </child>
                     <child type="label">
-                      <object 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>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                  </packing>
-                </child>
-                <child>
-                  <object 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>
-                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
-                        <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox13">
-                            <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">6</property>
-                            <child>
-                              <object 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>
-                              </object>
-                              <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkRadioButton" id="optNormal">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">_Use additional 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>
-                              </object>
-                              <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object 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>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkFrame" id="frame14">
-                    <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>
-                      <object class="GtkAlignment" id="alignment20">
-                        <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">6</property>
-                        <property name="bottom_padding">0</property>
-                        <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox22">
-                            <property name="visible">True</property>
-                            <property name="homogeneous">False</property>
-                            <property name="spacing">6</property>
-                            <child>
-                              <object class="GtkCheckButton" id="chkFastMerges">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Perform fast index merges (may affect system performance)</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>
-                              </object>
-                              <packing>
-                                <property name="padding">0</property>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label38">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">&lt;b&gt;Index Merging&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>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                  </packing>
-                </child>
-                <child>
-                  <object 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>
-                      <object 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">6</property>
-                        <property name="bottom_padding">0</property>
-                        <property name="left_padding">12</property>
-                        <property name="right_padding">0</property>
-                        <child>
-                          <object class="GtkTable" id="table2">
-                            <property name="visible">True</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">3</property>
-                            <property name="homogeneous">False</property>
-                            <property name="row_spacing">6</property>
-                            <property name="column_spacing">12</property>
-                            <child>
-                              <object class="GtkLabel" id="label33">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">kB</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">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>
-                              </object>
-                              <packing>
-                                <property name="left_attach">2</property>
-                                <property name="right_attach">3</property>
-                                <property name="top_attach">0</property>
-                                <property name="bottom_attach">1</property>
-                                <property name="x_options"/>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <object 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">adjustment3</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options"/>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <object 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">adjustment4</property>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">0</property>
-                                <property name="bottom_attach">1</property>
-                                <property name="x_options"/>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <object 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</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>
-                              </object>
-                              <packing>
-                                <property name="left_attach">0</property>
-                                <property name="right_attach">1</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options">fill</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label30">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Maximum _amount of text to index:</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</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>
-                              </object>
-                              <packing>
-                                <property name="left_attach">0</property>
-                                <property name="right_attach">1</property>
-                                <property name="top_attach">0</property>
-                                <property name="bottom_attach">1</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label32">
+                      <object class="GtkLabel" id="label9">
                         <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="label" translatable="yes">&lt;b&gt;Files&lt;/b&gt;</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>
                       </object>
                     </child>
                   </object>
                   <packing>
-                    <property name="padding">0</property>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
+                    <property name="position">2</property>
                   </packing>
                 </child>
               </object>
               <packing>
-                <property name="tab_expand">False</property>
-                <property name="tab_fill">True</property>
+                <property name="position">2</property>
               </packing>
             </child>
             <child type="tab">
               <object class="GtkLabel" id="label4">
                 <property name="visible">True</property>
-                <property name="label" translatable="yes">Performance</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>
+                <property name="label" translatable="yes">Ignored Content</property>
               </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
             </child>
           </object>
           <packing>
-            <property name="padding">0</property>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button_save">
+                <property name="label">gtk-save</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="button_save_clicked_cb"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button_close">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="button_close_clicked_cb"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
       </object>
     </child>
     <action-widgets>
-      <action-widget response="0">cmdHelp</action-widget>
-      <action-widget response="0">cmdApply</action-widget>
-      <action-widget response="0">cmdCancel</action-widget>
-      <action-widget response="0">cmdOK</action-widget>
+      <action-widget response="0">button_save</action-widget>
+      <action-widget response="0">button_close</action-widget>
     </action-widgets>
   </object>
+  <object class="GtkAdjustment" id="adjustment_throttle">
+    <property name="upper">20</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">2</property>
+    <property name="page_size">5</property>
+  </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="stock">gtk-missing-image</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment_disk_space_limit">
+    <property name="lower">-1</property>
+    <property name="upper">100</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment_delay">
+    <property name="value">10</property>
+    <property name="upper">1000</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+    <property name="page_size">10</property>
+  </object>
+  <object class="GtkSizeGroup" id="sizegroup_indexing">
+    <widgets>
+      <widget name="label_disk_space_limit"/>
+      <widget name="label_throttle"/>
+    </widgets>
+  </object>
 </interface>
diff --git a/src/tracker-preferences/tracker-preferences.vala b/src/tracker-preferences/tracker-preferences.vala
new file mode 100644
index 0000000..eaf12eb
--- /dev/null
+++ b/src/tracker-preferences/tracker-preferences.vala
@@ -0,0 +1,316 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009, Nokia
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA.
+ *
+ * Author: Philip Van Hoof <philip codeminded be>
+ */
+
+using Gtk;
+using GLib;
+using Tracker;
+
+public static Config config = null;
+
+public static Window window;
+public static CheckButton checkbutton_enable_index_on_battery_first_time;
+public static CheckButton checkbutton_enable_index_on_battery;
+public static SpinButton spinbutton_delay;
+public static CheckButton checkbutton_enable_monitoring;
+public static CheckButton checkbutton_enable_thumbnails;
+public static CheckButton checkbutton_index_mounted_directories;
+public static CheckButton checkbutton_index_removable_media;
+public static Scale hscale_disk_space_limit;
+public static Scale hscale_throttle;
+public static ListStore liststore_index_recursively;
+public static ListStore liststore_index_single;
+public static ListStore liststore_ignored_directories;
+public static ListStore liststore_ignored_files;
+public static ListStore liststore_gnored_directories_with_content;
+public static TreeView treeview_index_recursively;
+public static TreeView treeview_index_single;
+public static TreeView treeview_ignored_directories;
+public static TreeView treeview_ignored_directories_with_content;
+public static TreeView treeview_ignored_files;
+
+public static void spinbutton_delay_value_changed_cb (SpinButton source) {
+	config.initial_sleep = source.get_value_as_int ();
+}
+
+public static void checkbutton_enable_monitoring_toggled_cb (CheckButton source) {
+	config.enable_monitors = source.active;
+}
+
+public static void checkbutton_enable_thumbnails_toggled_cb (CheckButton source) {
+	config.enable_thumbnails = source.active;
+}
+
+public static void checkbutton_enable_index_on_battery_toggled_cb (CheckButton source) {
+	config.index_on_battery = source.active;
+	checkbutton_enable_index_on_battery_first_time.set_sensitive (source.active);
+}
+
+public static void checkbutton_enable_index_on_battery_first_time_toggled_cb (CheckButton source) {
+	config.index_on_battery_first_time = source.active;
+}
+
+public static void checkbutton_index_mounted_directories_toggled_cb (CheckButton source) {
+	config.index_mounted_directories = source.active;
+}
+
+public static void checkbutton_index_removable_media_toggled_cb (CheckButton source) {
+	config.index_removable_devices = source.active;
+}
+
+public static string hscale_disk_space_limit_format_value_cb (Scale source, double value) {
+	config.low_disk_space_limit = (int) value;
+	return "%d%%".printf ((int) value);
+}
+
+public static string hscale_throttle_format_value_cb (Scale source, double value) {
+	config.throttle = (int) value;
+	return "%d/20".printf ((int) value);
+}
+
+public static void add_freevalue (ListStore model) {
+	Dialog dialog;
+	Entry entry;
+	Container content_area;
+
+	dialog = new Dialog.with_buttons (_("Enter value"),
+	                                  window,
+	                                  DialogFlags.DESTROY_WITH_PARENT,
+	                                  STOCK_CANCEL, ResponseType.CANCEL,
+	                                  STOCK_OK, ResponseType.ACCEPT);
+
+	content_area = (Container) dialog.get_content_area ();
+	entry = new Entry ();
+	entry.show ();
+	content_area.add (entry);
+
+	if (dialog.run () == ResponseType.ACCEPT) {
+		TreeIter iter;
+
+		model.append (out iter);
+		var v = Value (typeof (string));
+		v.set_string (entry.get_text ());
+		model.set_value (iter, 0, v);
+	}
+
+	dialog.destroy ();
+}
+
+
+public static void add_dir (ListStore model)
+{
+	FileChooserDialog dialog = new FileChooserDialog (_("Select directory"), window, 
+	                                              FileChooserAction.SELECT_FOLDER,
+	                                              STOCK_CANCEL, ResponseType.CANCEL,
+	                                              STOCK_OK, ResponseType.ACCEPT);
+
+	if (dialog.run () == ResponseType.ACCEPT) {
+		TreeIter iter;
+		File dir;
+
+		dir = dialog.get_file ();
+
+		model.append (out iter);
+		var v = Value (typeof (string));
+		v.set_string (dir.get_path());
+		model.set_value (iter, 0, v);
+	}
+
+	dialog.destroy ();
+}
+
+public static void del_dir (TreeView view)
+{
+	List<TreePath> list;
+	ListStore store;
+	TreeModel model;
+
+	TreeSelection selection = view.get_selection ();
+	list= selection.get_selected_rows (out model);
+
+	store = (ListStore) model;
+
+	foreach (TreePath path in list) {
+		TreeIter iter;
+		if (model.get_iter (out iter, path)) {
+			store.remove (iter);
+		}
+	}
+}
+
+public static void button_index_recursively_add_clicked_cb (Button source) {
+	add_dir (liststore_index_recursively);
+}
+
+public static void button_index_recursively_remove_clicked_cb (Button source) {
+	del_dir (treeview_index_recursively);
+}
+
+public static void button_index_single_remove_clicked_cb (Button source) {
+	del_dir (treeview_index_single);
+}
+
+public static void button_index_single_add_clicked_cb (Button source) {
+	add_dir (liststore_index_single);
+}
+
+public static void button_ignored_directories_add_clicked_cb (Button source) {
+	add_freevalue (liststore_ignored_directories);
+}
+
+public static void button_ignored_directories_remove_clicked_cb (Button source) {
+	del_dir (treeview_ignored_directories);
+}
+
+public static void button_ignored_directories_with_content_add_clicked_cb (Button source) {
+	add_freevalue (liststore_gnored_directories_with_content);
+}
+
+public static void button_ignored_directories_with_content_remove_clicked_cb (Button source) {
+	del_dir (treeview_ignored_directories_with_content);
+}
+
+public static void button_ignored_files_add_clicked_cb (Button source) {
+	add_freevalue (liststore_ignored_files);
+}
+
+public static void button_ignored_files_remove_clicked_cb (Button source) {
+	del_dir (treeview_ignored_files);
+}
+
+public static SList<string> model_to_slist (ListStore model)
+{
+	bool valid;
+	SList<string> list = new SList<string>();
+	TreeIter iter;
+
+	valid = model.get_iter_first (out iter);
+	while (valid) {
+		Value value;
+		model.get_value (iter, 0, out value);
+		list.append (value.get_string ());
+		valid = model.iter_next (ref iter);
+	}
+
+	return list;
+}
+
+public static void button_save_clicked_cb (Button source) {
+
+	config.index_single_directories = model_to_slist (liststore_index_single);
+	config.ignored_directories = model_to_slist (liststore_ignored_directories);
+	config.ignored_files = model_to_slist (liststore_ignored_files);
+	config.ignored_directories_with_content = model_to_slist (liststore_gnored_directories_with_content);
+	config.index_recursive_directories = model_to_slist (liststore_index_recursively);
+
+	config.save ();
+}
+
+public static void button_close_clicked_cb  (Button source) {
+	Gtk.main_quit ();
+}
+
+static void
+fill_in_model (ListStore model, SList<string> list)
+{
+	int position = 0;
+	foreach (string str in list) {
+		model.insert_with_values (null, position++, 0, str);
+	}
+}
+
+static void
+setup_standard_treeview (TreeView view, string title)
+{
+	TreeViewColumn column = new TreeViewColumn.with_attributes (title, 
+	                                                            new CellRendererText (), 
+	                                                            "text", 0);
+	view.append_column (column);
+}
+
+static int main (string[] args) {
+	Gtk.init (ref args);
+
+	try {
+		config = new Config.with_domain ("tracker-miner-fs");
+		var builder = new Builder ();
+		builder.add_from_file (TRACKER_DATADIR + Path.DIR_SEPARATOR_S + "tracker-preferences.ui");
+
+		window = builder.get_object ("tracker-preferences") as Window;
+		checkbutton_enable_index_on_battery = builder.get_object ("checkbutton_enable_index_on_battery") as CheckButton;
+		checkbutton_enable_index_on_battery_first_time = builder.get_object ("checkbutton_enable_index_on_battery_first_time") as CheckButton;
+		checkbutton_enable_index_on_battery.active = config.index_on_battery;
+		checkbutton_enable_index_on_battery_first_time.set_sensitive (checkbutton_enable_index_on_battery.active);
+		checkbutton_enable_index_on_battery_first_time.active = config.index_on_battery_first_time;
+		spinbutton_delay = builder.get_object ("spinbutton_delay") as SpinButton;
+		spinbutton_delay.set_increments (1, 1);
+		spinbutton_delay.value = (double) config.initial_sleep;
+		checkbutton_enable_monitoring = builder.get_object ("checkbutton_enable_monitoring") as CheckButton;
+		checkbutton_enable_monitoring.active = config.enable_monitors;
+		checkbutton_enable_thumbnails = builder.get_object ("checkbutton_enable_thumbnails") as CheckButton;
+		checkbutton_enable_thumbnails.active = config.enable_thumbnails;
+		checkbutton_index_mounted_directories = builder.get_object ("checkbutton_index_mounted_directories") as CheckButton;
+		checkbutton_index_mounted_directories.active = config.index_mounted_directories;
+		checkbutton_index_removable_media = builder.get_object ("checkbutton_index_removable_media") as CheckButton;
+		checkbutton_index_removable_media.active = config.index_removable_devices;
+		hscale_disk_space_limit = builder.get_object ("hscale_disk_space_limit") as Scale;
+		hscale_disk_space_limit.set_value ((double) config.low_disk_space_limit);
+		hscale_throttle = builder.get_object ("hscale_throttle") as Scale;
+		hscale_throttle.set_value ((double) config.throttle);
+
+		treeview_index_recursively = builder.get_object ("treeview_index_recursively") as TreeView;
+		treeview_index_single = builder.get_object ("treeview_index_single") as TreeView;
+		treeview_ignored_directories = builder.get_object ("treeview_ignored_directories") as TreeView;
+		treeview_ignored_directories_with_content = builder.get_object ("treeview_ignored_directories_with_content") as TreeView;
+		treeview_ignored_files = builder.get_object ("treeview_ignored_files") as TreeView;
+
+		setup_standard_treeview (treeview_index_recursively, _("Directory"));
+		setup_standard_treeview (treeview_index_single, _("Directory"));
+		setup_standard_treeview (treeview_ignored_directories, _("Directory"));
+		setup_standard_treeview (treeview_ignored_directories_with_content, _("Directory"));
+		setup_standard_treeview (treeview_ignored_files, _("File"));
+
+		liststore_index_recursively = builder.get_object ("liststore_index_recursively") as ListStore;
+		fill_in_model (liststore_index_recursively, config.index_recursive_directories);
+
+		liststore_index_single = builder.get_object ("liststore_index_single") as ListStore;
+		fill_in_model (liststore_index_single, config.index_single_directories);
+
+		liststore_ignored_directories = builder.get_object ("liststore_ignored_directories") as ListStore;
+		fill_in_model (liststore_ignored_directories, config.ignored_directories);
+
+		liststore_ignored_files = builder.get_object ("liststore_ignored_files") as ListStore;
+		fill_in_model (liststore_ignored_files, config.ignored_files);
+
+		liststore_gnored_directories_with_content = builder.get_object ("liststore_gnored_directories_with_content") as ListStore;
+		fill_in_model (liststore_gnored_directories_with_content, config.ignored_directories_with_content);
+
+		builder.connect_signals (null);
+
+		window.show_all ();
+		Gtk.main ();
+	} catch (Error e) {
+		stderr.printf ("Could not load UI: %s\n", e.message);
+		return 1;
+	} 
+
+	return 0;
+}



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