[Xfce4-commits] <squeeze:stephan/ui> Introduce ui-manager for generation of menu's

Stephan Arts noreply at xfce.org
Tue Oct 18 18:54:02 CEST 2011


Updating branch refs/heads/stephan/ui
         to 032635ca610a3cd0d8ed8e61bdc92e160ea6b224 (commit)
       from e0a63500cbd8a0feb33bfd5d55bd7a513fd39492 (commit)

commit 032635ca610a3cd0d8ed8e61bdc92e160ea6b224
Author: Stephan Arts <stephan at xfce.org>
Date:   Tue Oct 18 18:00:57 2011 +0200

    Introduce ui-manager for generation of menu's

 configure.in.in            |    2 +
 icons/16x16/Makefile.am    |    5 -
 icons/16x16/squeeze.png    |  Bin 658 -> 989 bytes
 icons/48x48/Makefile.am    |    5 -
 icons/48x48/squeeze.png    |  Bin 2191 -> 4759 bytes
 icons/Makefile.am          |    2 +-
 icons/scalable/Makefile.am |    9 -
 icons/scalable/squeeze.svg |  484 +++++++++++--
 src/Makefile.am            |    4 +-
 src/application.c          |    9 +-
 src/extract_dialog.c       |    1 -
 src/main.c                 |    4 +-
 src/main_window.c          | 1646 ++++++++------------------------------------
 src/main_window.h          |  120 +---
 src/message_dialog.c       |    1 -
 src/notebook.c             |  913 ------------------------
 src/notebook.h             |   90 ---
 src/widget_factory.c       | 1084 -----------------------------
 src/widget_factory.h       |   62 --
 19 files changed, 727 insertions(+), 3714 deletions(-)

diff --git a/configure.in.in b/configure.in.in
index daefe21..0803809 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -144,6 +144,8 @@ libsqueeze/Makefile
 squeeze-cli/Makefile
 icons/Makefile
 icons/16x16/Makefile
+icons/22x22/Makefile
+icons/32x32/Makefile
 icons/48x48/Makefile
 icons/scalable/Makefile
 pixmaps/Makefile
diff --git a/icons/16x16/Makefile.am b/icons/16x16/Makefile.am
index 1cfe93f..7ae211e 100644
--- a/icons/16x16/Makefile.am
+++ b/icons/16x16/Makefile.am
@@ -1,9 +1,4 @@
-
-# Inspired by Makefile.am from the Thunar file-manager
-
 iconsdir = $(datadir)/icons/hicolor/16x16/apps
 icons_DATA = squeeze.png
-	
 
 EXTRA_DIST = $(icons_DATA)
-
diff --git a/icons/16x16/squeeze.png b/icons/16x16/squeeze.png
index 1e2605c..b10607e 100644
Binary files a/icons/16x16/squeeze.png and b/icons/16x16/squeeze.png differ
diff --git a/icons/48x48/Makefile.am b/icons/48x48/Makefile.am
index 316e25f..2f91da6 100644
--- a/icons/48x48/Makefile.am
+++ b/icons/48x48/Makefile.am
@@ -1,9 +1,4 @@
-
-# Inspired by Makefile.am from the Thunar file-manager
-
 iconsdir = $(datadir)/icons/hicolor/48x48/apps
 icons_DATA = squeeze.png
-	
 
 EXTRA_DIST = $(icons_DATA)
-
diff --git a/icons/48x48/squeeze.png b/icons/48x48/squeeze.png
index 4de6b2a..22b6d49 100644
Binary files a/icons/48x48/squeeze.png and b/icons/48x48/squeeze.png differ
diff --git a/icons/Makefile.am b/icons/Makefile.am
index 4828f26..526caac 100644
--- a/icons/Makefile.am
+++ b/icons/Makefile.am
@@ -1,7 +1,7 @@
 
 # Inspired by Makefile.am from the Thunar file-manager
 
-SUBDIRS = 16x16 48x48 scalable
+SUBDIRS = 16x16 22x22 32x32 48x48 scalable
 
 gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
 
diff --git a/icons/scalable/Makefile.am b/icons/scalable/Makefile.am
index 4ffe1f8..4e52122 100644
--- a/icons/scalable/Makefile.am
+++ b/icons/scalable/Makefile.am
@@ -1,13 +1,4 @@
-
-# Inspired by Makefile.am from the Thunar file-manager
-
-# appiconsdir = $(datadir)/icons/hicolor/scalable/apps/squeeze
-# appicons_DATA = add-archive.svg extract-archive.svg
-
 iconsdir = $(datadir)/icons/hicolor/scalable/apps
 icons_DATA = squeeze.svg
 
 EXTRA_DIST = $(icons_DATA)
-	
-
-# EXTRA_DIST = $(appicons_DATA)
diff --git a/icons/scalable/squeeze.svg b/icons/scalable/squeeze.svg
index faa5353..ea99f85 100644
--- a/icons/scalable/squeeze.svg
+++ b/icons/scalable/squeeze.svg
@@ -6,21 +6,356 @@
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.45"
    width="48"
    height="48"
-   version="1.0"
-   inkscape:export-filename="/home/stephan/squeeze/trunk/icons/48x48/squeeze.png"
-   inkscape:export-xdpi="30"
-   inkscape:export-ydpi="30"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45+devel"
+   sodipodi:docbase="/home/needcoffee/Templates"
    sodipodi:docname="squeeze.svg"
-   sodipodi:docbase="/home/stephan/squeeze/trunk/icons/scalable"
+   version="1.0"
    inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   sodipodi:modified="TRUE">
+   inkscape:export-filename="/media/Backup/Projekte/Icons/Tango/squeeze/48/squeeze.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient2816"
+       inkscape:collect="always">
+      <stop
+         id="stop2818"
+         offset="0"
+         style="stop-color:#edd400;stop-opacity:1" />
+      <stop
+         id="stop2820"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient12999">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop13001" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop13003" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient12602">
+      <stop
+         style="stop-color:#edd400;stop-opacity:1"
+         offset="0"
+         id="stop12604" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="1"
+         id="stop12606" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient12213">
+      <stop
+         style="stop-color:#fce94f;stop-opacity:1;"
+         offset="0"
+         id="stop12215" />
+      <stop
+         style="stop-color:#fce94f;stop-opacity:0;"
+         offset="1"
+         id="stop12217" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11435">
+      <stop
+         id="stop11437"
+         offset="0"
+         style="stop-color:#fce94f;stop-opacity:1;" />
+      <stop
+         id="stop11439"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient9051">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop9053" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop9055" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient8660">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop8662" />
+      <stop
+         style="stop-color:#8ae234;stop-opacity:1"
+         offset="1"
+         id="stop8664" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient7890">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop7892" />
+      <stop
+         style="stop-color:#73d216;stop-opacity:1"
+         offset="1"
+         id="stop7894" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient7501">
+      <stop
+         style="stop-color:#4e9a06;stop-opacity:1;"
+         offset="0"
+         id="stop7503" />
+      <stop
+         style="stop-color:#73d216;stop-opacity:1"
+         offset="1"
+         id="stop7505" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7103"
+       inkscape:collect="always">
+      <stop
+         id="stop7105"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:0.6" />
+      <stop
+         id="stop7107"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5127">
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1"
+         offset="0"
+         id="stop5129" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop5131" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4738">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4740" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1"
+         offset="1"
+         id="stop4742" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3557">
+      <stop
+         style="stop-color:#fce94f;stop-opacity:1"
+         offset="0"
+         id="stop3559" />
+      <stop
+         style="stop-color:#73d216;stop-opacity:1"
+         offset="1"
+         id="stop3561" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3166">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1"
+         offset="0"
+         id="stop3168" />
+      <stop
+         style="stop-color:#4e9a06;stop-opacity:1"
+         offset="1"
+         id="stop3170" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3166"
+       id="radialGradient7114"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.323567,-0.6294416,0.3,0.6697538,-16.757446,26.868726)"
+       cx="20.934795"
+       cy="26.82947"
+       fx="20.934795"
+       fy="26.82947"
+       r="20" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3557"
+       id="radialGradient7116"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2999999,0,0,1.0000001,-8.4999999,-0.5000003)"
+       cx="25"
+       cy="19"
+       fx="25"
+       fy="19"
+       r="15.457922" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7501"
+       id="linearGradient7507"
+       x1="4"
+       y1="18"
+       x2="4"
+       y2="33"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,1.9999998)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7890"
+       id="linearGradient7896"
+       x1="10"
+       y1="2e-07"
+       x2="30"
+       y2="48"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,1.9999998)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8660"
+       id="linearGradient8666"
+       x1="-9"
+       y1="11"
+       x2="43"
+       y2="25"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.0157725,0,2.326502)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient9051"
+       id="radialGradient9057"
+       cx="25"
+       cy="38"
+       fx="25"
+       fy="38"
+       r="20"
+       gradientTransform="matrix(1,0,0,0.25,0,28.5)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11435"
+       id="linearGradient11433"
+       x1="30.303572"
+       y1="49.804153"
+       x2="11.953227"
+       y2="20.875582"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient9051"
+       id="radialGradient11830"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.25,0,28.5)"
+       cx="25"
+       cy="38"
+       fx="25"
+       fy="38"
+       r="20" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12213"
+       id="linearGradient12219"
+       x1="26"
+       y1="47.015636"
+       x2="24"
+       y2="25.643581"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9858906,0,0,0.9201532,0.4103068,3.4625008)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2816"
+       id="linearGradient12608"
+       x1="16"
+       y1="42"
+       x2="15"
+       y2="31"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9858906,0,0,0.9832782,0.4103068,0.5100139)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12213"
+       id="linearGradient12612"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9547115,0,0,0.9358015,1.887524,3.0026974)"
+       x1="26"
+       y1="47.015636"
+       x2="24"
+       y2="25.643581" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12602"
+       id="linearGradient12614"
+       gradientUnits="userSpaceOnUse"
+       x1="16"
+       y1="42"
+       x2="15"
+       y2="31"
+       gradientTransform="matrix(0.9547115,0,0,1,1.887524,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12999"
+       id="linearGradient13005"
+       x1="29"
+       y1="52"
+       x2="25"
+       y2="22"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7103"
+       id="radialGradient2237"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4727321,-0.3681829,0.1764706,0.7058823,-20.292204,12.940981)"
+       cx="27.657249"
+       cy="20.17609"
+       fx="27.657249"
+       fy="20.17609"
+       r="17" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="42.749997"
+     inkscape:cy="21.16015"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1280"
+     inkscape:window-height="932"
+     inkscape:window-x="0"
+     inkscape:window-y="42"
+     inkscape:showpageshadow="false"
+     width="48px"
+     height="48px"
+     borderlayer="true"
+     gridtolerance="10000">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2173" />
+  </sodipodi:namedview>
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -29,74 +364,81 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>squeeze</dc:title>
+        <dc:date>2007-06-03</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Sebastian Kraft</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>squeeze</rdf:li>
+            <rdf:li>xfce</rdf:li>
+            <rdf:li>archiver</rdf:li>
+            <rdf:li>application</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description></dc:description>
+        <cc:license
+           rdf:resource="GPL" />
       </cc:Work>
     </rdf:RDF>
   </metadata>
-  <defs
-     id="defs5" />
-  <sodipodi:namedview
-     inkscape:window-height="608"
-     inkscape:window-width="924"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     width="48px"
-     height="48px"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:zoom="7.9166667"
-     inkscape:cx="24"
-     inkscape:cy="23.561432"
-     inkscape:window-x="344"
-     inkscape:window-y="116"
-     inkscape:current-layer="svg2" />
   <g
-     id="g14823"
-     transform="matrix(1.2166758,0,0,1.2166758,-1.0254851,2.0669842)">
-    <g
-       transform="matrix(0.7988403,-0.6015431,-0.6015423,-0.7988393,16.52294,53.190378)"
-       id="g8951">
-      <path
-         sodipodi:type="arc"
-         style="fill:#afcf00;fill-opacity:0.94117647;stroke:#000000;stroke-width:0.65872216;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path2161"
-         sodipodi:cx="32.71579"
-         sodipodi:cy="27.28421"
-         sodipodi:rx="13.263158"
-         sodipodi:ry="11.873684"
-         d="M 45.978948,27.28421 A 13.263158,11.873684 0 1 1 19.452632,27.28421 L 32.71579,27.28421 z"
-         transform="matrix(1.4698621,0,0,1.5993372,-24.606256,-22.064132)"
-         sodipodi:start="0"
-         sodipodi:end="3.1415927" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.5973413;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path7980"
-         sodipodi:cx="7.9578948"
-         sodipodi:cy="28.610527"
-         sodipodi:rx="21.473684"
-         sodipodi:ry="5.1157894"
-         d="M 29.431579 28.610527 A 21.473684 5.1157894 0 1 1  -13.51579,28.610527 A 21.473684 5.1157894 0 1 1  29.431579 28.610527 z"
-         transform="matrix(0.9090817,0,0,0.3951169,16.247065,9.893001)" />
-    </g>
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       transform="matrix(0.875,0,0,0.7,5.625,17.9)"
+       d="M 45,38 A 20,5 0 1 1 5,38 A 20,5 0 1 1 45,38 z"
+       sodipodi:ry="5"
+       sodipodi:rx="20"
+       sodipodi:cy="38"
+       sodipodi:cx="25"
+       id="path11828"
+       style="opacity:0.3;color:#000000;fill:url(#radialGradient11830);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.6;color:#000000;fill:url(#radialGradient9057);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path8668"
+       sodipodi:cx="25"
+       sodipodi:cy="38"
+       sodipodi:rx="20"
+       sodipodi:ry="5"
+       d="M 45,38 A 20,5 0 1 1 5,38 A 20,5 0 1 1 45,38 z"
+       transform="matrix(1,0,0,1.1,0,-1.3000009)" />
+    <path
+       style="color:#000000;fill:url(#radialGradient7114);fill-opacity:1;fill-rule:evenodd;stroke:#4e9a06;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 23,13.499999 C 12.236001,13.499999 4.5,19.323064 4.5,19.323064 C 8.1284356,49.475728 39.428825,48.303082 43.5,19.323064 C 43.5,19.323064 33.764,13.499999 23,13.499999 z"
+       id="path2188"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8666);stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 23,13.499999 C 12.788,13.499999 5.4999999,19.411795 5.4999999,19.411795 C 8.9515336,48.085001 38.626665,46.968249 42.5,19.411795 C 42.5,19.411795 33.211999,13.499999 23,13.499999 z"
+       id="path2194"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="color:#000000;fill:url(#radialGradient7116);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7507);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 43.499998,18.500001 C 43.499998,26.780002 34.763998,33.500001 23.999999,33.500001 C 13.235999,33.500001 4.4999996,26.780002 4.4999996,18.500001 C 4.4999996,10.22 13.235999,3.5 23.999999,3.5 C 34.763998,3.5 43.499998,10.22 43.499998,18.500001 z"
+       id="path2174" />
+    <path
+       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7896);stroke-width:0.99999987999999995px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 42.499999,18.499998 C 42.499999,26.227998 34.211999,32.499999 23.999999,32.499999 C 13.787999,32.499999 5.4999996,26.227998 5.4999996,18.499998 C 5.4999996,10.772 13.787999,4.4999996 23.999999,4.4999996 C 34.211999,4.4999996 42.499999,10.772 42.499999,18.499998 z"
+       id="path3174" />
     <path
-       sodipodi:nodetypes="cccc"
-       id="path12859"
-       d="M 12.884211,6.8392732 C 26.438867,-1.905292 36.126316,9.7815462 36.126316,9.7815462 L 30.479584,12.505262 C 30.479584,12.505262 20.629728,4.2589096 12.884211,6.8392732 z "
-       style="fill:#ffffff;fill-opacity:0.39215686;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+       style="fill:url(#radialGradient2237);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 24,6 C 18.276944,5.9852568 12.114469,8.1251125 8.7622802,12.995764 C 6.6760227,15.787945 6.4884362,19.686989 8.0263152,22.768885 C 9.651021,26.246558 13.124009,28.401828 16.586981,29.738063 C 23.454129,32.242315 31.711893,31.083093 37.331175,26.309276 C 40.499138,23.448225 42.126397,18.494496 40.118116,14.525562 C 37.773194,9.6082414 32.414595,6.9300015 27.216054,6.2297912 C 26.151052,6.0791971 25.075608,6.0020492 24,6 z M 23.65625,8 C 25.375324,8.0254564 27.273763,7.890203 28.794619,8.8229065 C 29.975424,10.031556 27.886101,11.078377 27.589384,12.221656 C 26.989113,13.157606 25.342441,15.745902 24.383704,14.014992 C 24.132215,12.017077 24.013,9.9903166 23.65625,8 z M 22.5625,8.0625 C 22.697968,10.204761 23.621359,12.291946 23.343774,14.453962 C 22.799159,15.624604 21.111831,13.75633 20.223757,13.382448 C 18.748889,12.330739 17.422305,11.089669 16.13642,9.8184528 C 18.08067,8.6793899 20.351843,8.2942495 22.5625,8.0625 z M 30.71875,9.25 C 32.127205,9.8236904 33.69
 389,10.433972 34.604142,11.714101 C 34.749975,13.431248 32.116852,12.882325 31.123641,13.797728 C 29.801258,14.310496 28.496609,15.425647 27.013126,15.160691 C 26.868982,14.04353 28.303407,12.792699 28.971541,11.757319 C 29.600983,10.956289 30.230824,10.147709 30.71875,9.25 z M 14.78125,10.46875 C 16.702347,12.38666 19.491426,13.291353 21.139626,15.494475 C 21.9539,16.94624 19.162341,16.10887 18.333446,16.093881 C 16.304881,15.641017 14.261154,15.284531 12.193342,15.072424 C 10.385421,15.099224 11.076546,13.444294 12.051202,12.79188 C 12.829261,11.877704 13.764983,11.104427 14.78125,10.46875 z M 36.03125,12.9375 C 37.26268,14.289437 38.07487,16.158624 37.991551,18.004146 C 37.684586,19.963742 35.452061,18.752418 34.242368,18.599735 C 32.258982,18.24834 29.978567,18.603626 28.277416,17.327957 C 27.309561,16.040622 30.061451,15.236067 31.085044,14.879975 C 32.727769,14.51816 34.225247,13.781182 35.723653,13.062817 L 36.03125,12.9375 z M 10.375,15.75 C 13.494113,16.595568 16.83
 9225,16.359846 19.87984,17.512301 C 21.498245,18.211104 18.681074,18.788676 18.026768,19.213235 C 16.144308,19.915005 14.24855,20.599281 12.476059,21.551479 C 10.814646,22.211103 10.009654,20.12889 10.028583,18.821268 C 9.9602578,17.790375 10.031713,16.730886 10.375,15.75 z M 27.625,18.625 C 30.572613,19.484576 33.787348,19.097063 36.638752,20.316734 C 38.186272,20.989633 36.510239,22.962505 35.530858,23.479666 C 34.2125,24.234241 32.892668,23.171318 32.114817,22.170242 C 30.627943,20.978498 28.925579,20.036966 27.625,18.625 z M 21.5625,18.84375 C 22.398396,20.357446 20.953446,21.778886 20.012297,22.820881 C 18.700075,23.74363 18.70157,25.841284 17.074774,26.312423 C 15.146875,26.505305 13.618159,24.880724 12.527341,23.490053 C 11.287459,22.163352 14.249475,22.176444 15.027222,21.507812 C 17.205648,20.619792 19.384074,19.731771 21.5625,18.84375 z M 26.71875,19.4375 C 28.775171,21.387917 31.597535,22.442926 33.368321,24.699953 C 33.927912,25.879507 31.4216,26.160326 30.629142
 ,26.808502 C 29.29644,27.326255 27.714438,28.022324 26.314779,27.354862 C 26.469945,25.012265 24.827148,22.719966 25.651043,20.403098 C 25.861611,19.954585 26.264185,19.620573 26.71875,19.4375 z M 23.3125,19.84375 C 25.081296,20.967373 24.76893,23.310984 24.85833,25.11312 C 24.937482,26.360962 25.755623,27.963477 23.843406,28.016022 C 21.956575,28.263753 20.08204,27.618789 18.37793,26.867187 C 20.022787,24.526042 21.667643,22.184896 23.3125,19.84375 z"
+       id="path4345" />
     <path
-       id="path14803"
-       d="M 7.4526316,33.6 C 7.4526316,33.557895 7.4526316,33.515789 7.4526316,33.6 z "
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+       style="fill:url(#linearGradient12219);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient12608);stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 23.111438,30.732825 C 24.786522,31.780782 24.860977,33.922827 24.483223,35.591392 C 24.197667,36.874945 23.957181,38.230821 23.230696,39.365787 C 22.061694,40.524086 20.3003,40.840551 18.770523,41.411346 C 17.426977,41.875913 15.958174,42.625249 15.505949,43.985512 C 15.391106,45.281368 16.963954,45.873782 18.055415,46.205932 C 20.651512,46.88387 23.342431,46.219918 25.942986,45.90529 C 27.318492,45.636006 28.717393,45.724551 30.107037,45.753693 C 31.69534,45.713882 33.286589,45.837479 34.839349,46.135419 C 36.267023,46.269121 37.725581,46.439288 39.136844,46.110903 C 40.176,46.030626 41.955719,45.461264 41.392257,44.19815 C 40.434036,43.009369 38.705003,42.777051 37.377997,42.070899 C 34.912827,41.146213 32.253514,40.615893 30.01488,39.220118 C 28.591221,38.503496 27.242258,37.450822 26.822199,35.927538 C 26.56452,34.840273 25.993334,33.629137 26.520946,32.547249 C 27.311285,31.688581 27.166663,30.023848 25.58848,30.629811 C 24.768368,30.72992 23.938116,30.79615
 3 23.111438,30.732825 z"
+       id="path11822" />
     <path
-       id="path14805"
-       d="M 38.021053,10.231579 C 38.021053,10.189474 38.021053,10.147368 38.021053,10.231579 z "
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+       id="path12616"
+       d="M 24,39 C 22.920921,40.085906 21.412103,41.464881 20,42 C 18.759805,42.435533 17.417439,42.724753 17,44 C 16.893992,45.214865 17.851343,44.912923 18.858846,45.224313 C 21.255243,45.859881 23.739168,45.237425 26.139681,44.942461 C 27.409378,44.690008 28.700672,44.773019 29.983419,44.800339 C 31.449546,44.763016 32.918391,44.878889 34.351708,45.158207 C 35.669561,45.283553 37.015921,45.443085 38.318626,45.135224 C 39.277847,45.059964 40.520119,45.18417 40,44 C 38,43 36.224928,42.662018 35,42 C 32.724458,41.133107 25,41 25,32 C 25,32 24,39 24,39 z"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient13005);stroke-width:0.99999994000000003px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       sodipodi:nodetypes="cccccccccccc" />
   </g>
 </svg>
diff --git a/src/Makefile.am b/src/Makefile.am
index c41c273..077969b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -7,15 +7,13 @@ squeeze_SOURCES = \
 	application.c application.h \
 	main_window.c main_window.h \
 	navigation_bar.c navigation_bar.h \
-	notebook.c notebook.h \
 	settings.c settings.h \
 	archive_store.c archive_store.h \
 	message_dialog.c message_dialog.h \
 	throbber-fallback.c	throbber-fallback.h \
 	throbber.c	throbber.h \
 	new_dialog.c new_dialog.h \
-	extract_dialog.c extract_dialog.h \
-	widget_factory.c widget_factory.h 
+	extract_dialog.c extract_dialog.h
 
 squeeze_CFLAGS = \
 	-DDATADIR=\"$(datadir)\" \
diff --git a/src/application.c b/src/application.c
index 2e2688b..2b2e8d5 100644
--- a/src/application.c
+++ b/src/application.c
@@ -31,7 +31,6 @@
 #include "archive_store.h"
 #include "navigation_bar.h"
 #include "application.h"
-#include "widget_factory.h"
 #include "main_window.h"
 
 static void
@@ -141,7 +140,7 @@ sq_application_new(GtkIconTheme *icon_theme)
 GtkWidget *
 sq_application_new_window(SQApplication *app)
 {
-	GtkWidget *window = sq_main_window_new(app, app->icon_theme);
+	GtkWidget *window = sq_main_window_new ( app );
 	return window;
 }
 
@@ -285,12 +284,12 @@ sq_application_open_archive(SQApplication *app, GtkWidget *window, GFile *file)
 	}
 	if(app->props._tabs)
 	{
-		retval = sq_main_window_open_archive(SQ_MAIN_WINDOW(window), file, -1);
+		//retval = sq_main_window_open_archive(SQ_MAIN_WINDOW(window), file, -1);
 	}
 	else
 	{
-		retval = sq_main_window_open_archive(SQ_MAIN_WINDOW(window), file, 0);
+		//retval = sq_main_window_open_archive(SQ_MAIN_WINDOW(window), file, 0);
 	}
-	gtk_widget_show(window);
+	gtk_widget_show_all(window);
 	return retval;
 }
diff --git a/src/extract_dialog.c b/src/extract_dialog.c
index 630af18..c511252 100644
--- a/src/extract_dialog.c
+++ b/src/extract_dialog.c
@@ -25,7 +25,6 @@
 #include <libsqueeze/libsqueeze.h>
 
 #include "extract_dialog.h"
-#include "widget_factory.h"
 
 static void
 sq_extract_archive_dialog_class_init(SQExtractArchiveDialogClass *archive_class);
diff --git a/src/main.c b/src/main.c
index 6353075..ab6135f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -27,9 +27,7 @@
 #include "settings.h"
 #include "archive_store.h"
 #include "navigation_bar.h"
-#include "notebook.h"
 #include "application.h"
-#include "widget_factory.h"
 #include "main_window.h"
 
 #include "main.h"
@@ -197,7 +195,7 @@ int main(int argc, char **argv)
 		} else
 		{
 			main_window = sq_application_new_window(sq_app);
-			gtk_widget_show(GTK_WIDGET(main_window));
+			gtk_widget_show_all (GTK_WIDGET(main_window));
 		}
 	}
 
diff --git a/src/main_window.c b/src/main_window.c
index cc87962..f0d3222 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -1,5 +1,6 @@
 /*
- *  Copyright (c) 2006 Stephan Arts <stephan at xfce.org>
+ *  Copyright (c) 2006-2011 Stephan Arts <stephan at xfce.org>
+ *  Copyright (c) 2006-2011 Peter de Ridder <peter at xfce.org>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -18,16 +19,6 @@
 
 #include <config.h>
 
-#undef SQ_MAIN_ANY_BAR
-
-#ifdef ENABLE_PATHBAR
-#define SQ_MAIN_ANY_BAR 1
-#else
-#ifdef ENABLE_TOOLBAR
-#define SQ_MAIN_ANY_BAR 1
-#endif
-#endif
-
 #include <string.h>
 #include <glib.h>
 #include <gtk/gtk.h>
@@ -36,1412 +27,333 @@
 #include <libxfce4util/libxfce4util.h>
 #include <libsqueeze/libsqueeze.h>
 
-#ifdef HAVE_LIBXFCE4UTIL
-#include <libxfce4util/libxfce4util.h>
-#endif
-
 #include "settings.h"
-#include "archive_store.h"
-#include "navigation_bar.h"
-
-#include "path_bar.h"
-#include "tool_bar.h"
-
-#include "widget_factory.h"
-
-#include "notebook.h"
 #include "application.h"
 #include "main_window.h"
-#include "throbber.h"
+#include "main_window_ui.h"
 
-#include "new_dialog.h"
-#include "extract_dialog.h"
+struct _SQMainWindowPriv {
+    SQSettings      *settings;
+    SQApplication   *app;
 
-#include "main.h"
+    GtkUIManager    *ui_manager;
+    GtkActionGroup  *action_group;
 
-enum
-{
-	SQ_MAIN_WINDOW_NAVIGATION_STYLE = 1
+    GtkWidget       *menubar;
+    GtkWidget       *toolbar;
 };
 
 static void
-sq_main_window_init(SQMainWindow *);
-static void
-sq_main_window_class_init(SQMainWindowClass *);
+sq_main_window_init ( GObject * );
 static void
-sq_main_window_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
+sq_main_window_class_init ( GObjectClass *);
 static void
-sq_main_window_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-static void
-sq_main_window_dispose(GObject *object);
-
-static gboolean show_toolbar = TRUE;
-
-
-static void cb_sq_main_new_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_open_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_extract_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_add_files_to_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_add_folders_to_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_remove_from_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_close_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_stop_archive(GtkWidget *widget, gpointer userdata);
-static void cb_sq_main_refresh_archive(GtkWidget *widget, gpointer userdata);
+sq_main_window_set_property (
+        GObject *object,
+        guint prop_id,
+        const GValue *value,
+        GParamSpec *pspec );
 
-static void cb_sq_main_close_window(GtkWidget *widget, gpointer userdata);
-
-/*static void cb_sq_main_properties(GtkWidget *widget, gpointer userdata);*/
-/*static void cb_sq_main_preferences(GtkWidget *widget, gpointer userdata);*/
-
-static void cb_sq_main_about(GtkWidget *widget, gpointer userdata);
-
-static void
-cb_sq_main_window_notebook_page_switched(SQNotebook *, GtkNotebookPage *, guint, gpointer);
 static void
-cb_sq_main_window_notebook_page_removed(SQNotebook *, gpointer);
-static void
-cb_sq_main_window_notebook_file_activated(SQNotebook *, LSQArchiveIter *, gpointer);
- static void cb_sq_main_window_notebook_state_changed(SQNotebook *, LSQArchive *, gpointer);
+sq_main_window_get_property (
+        GObject *object,
+        guint prop_id,
+        GValue *value,
+        GParamSpec *pspec);
 
 static void
-sq_main_window_set_navigation(SQMainWindow *window);
+sq_main_window_dispose ( GObject *object );
 
 static GObjectClass *parent_class;
 
-GType
-sq_main_window_navigation_style_get_type(void)
+static GtkActionEntry action_entries[] =
 {
-	static GType nav_style_type = 0;
-	guint i = 0;
-
-	if(!nav_style_type)
-	{
-		static GEnumValue style_types[] = {
-			{SQ_MAIN_WINDOW_NAVIGATION_INTERNAL, "internal", NULL},
-#ifdef ENABLE_TOOLBAR
-			{SQ_MAIN_WINDOW_NAVIGATION_TOOL_BAR, "tool_bar", NULL},
-#endif
-#ifdef ENABLE_PATHBAR
-			{SQ_MAIN_WINDOW_NAVIGATION_PATH_BAR, "path_bar", NULL},
-#endif
-			{0, NULL, NULL}
-		};
-		style_types[0].value_nick = _("Internal Style");
-#ifdef ENABLE_TOOLBAR
-		style_types[++i].value_nick = _("Tool Bar Style");
-#endif
-#ifdef ENABLE_PATHBAR
-		style_types[++i].value_nick = _("Path Bar Style");
-#endif
-
-		nav_style_type = g_enum_register_static("SQMainWindowNavigationStyle", style_types);
-	}
-
-	return nav_style_type;
-}
+/* File menu */
+    {"file-menu",
+            NULL,
+            N_("_File"),
+            NULL,
+    },
+    {"new",                         /* Name                 */
+            "document-new",         /* Icon-name            */
+            N_("_New"),             /* Label                */
+            "<control>N",           /* Accelerator          */
+            N_( "New Archive"),     /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"open",                        /* Name                 */
+            "document-open",        /* Icon-name            */
+            N_("_Open"),            /* Label                */
+            "<control>O",           /* Accelerator          */
+            N_( "Open Archive"),    /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"properties",                  /* Name                 */
+            GTK_STOCK_PROPERTIES,   /* Icon-name            */
+            N_("_Properties"),      /* Label                */
+            NULL,                   /* Accelerator          */
+            N_( "Show file Properties"),   /* Tooltip       */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"close",                       /* Name                 */
+            GTK_STOCK_CLOSE,        /* Icon-name            */
+            N_("_Close"),           /* Label                */
+            "<control>W",           /* Accelerator          */
+            N_( "Close Archive"),   /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"quit",                        /* Name                 */
+            GTK_STOCK_QUIT,         /* Icon-name            */
+            N_("_Quit"),            /* Label                */
+            "<control>Q",           /* Accelerator          */
+            N_( "Quit Squeeze"),    /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+/* Edit menu */
+    {"edit-menu",
+            NULL,
+            N_("_Edit"),
+            NULL,
+    },
+    {"open-with-menu",
+            NULL,
+            N_("_Open with..."),
+            NULL,
+    },
+    {"clear-private-data",
+            GTK_STOCK_CLEAR,
+            N_ ("_Clear private data"),
+            "<control><shift>Delete",
+            NULL,
+            G_CALLBACK(NULL),
+    },
+    {"preferences",                 /* Name                 */
+            GTK_STOCK_PREFERENCES,  /* Icon-name            */
+            N_("_Preferences"),     /* Label                */
+            NULL,                   /* Accelerator          */
+            NULL,                   /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+/* View menu */
+    {"view-menu",
+            NULL,
+            N_("_View"),
+            NULL,
+    },
+/* Go menu */
+    {"go-menu",
+            NULL,
+            N_("_Go"),
+            NULL,
+    },
+    {"extract",                     /* Name                 */
+            NULL,                   /* Icon-name            */
+            N_("_Extract"),         /* Label                */
+            NULL,                   /* Accelerator          */
+            N_("Extract archive"),  /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"add-file",                    /* Name                 */
+            NULL,                   /* Icon-name            */
+            N_("_Add File"),        /* Label                */
+            NULL,                   /* Accelerator          */
+            N_("Add files"),        /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"add-folder",                  /* Name                 */
+            NULL,                   /* Icon-name            */
+            N_("_Add Folder"),      /* Label                */
+            NULL,                   /* Accelerator          */
+            N_("Add folders"),      /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"refresh",                     /* Name                 */
+            NULL,                   /* Icon-name            */
+            N_("_Refresh"),         /* Label                */
+            NULL,                   /* Accelerator          */
+            N_("Refresh archive"),  /* Tooltip              */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+    {"remove",                      /* Name                 */
+            NULL,                   /* Icon-name            */
+            N_("_Remove"),          /* Label                */
+            NULL,                   /* Accelerator          */
+            N_("Remove from archive"),  /* Tooltip          */
+            G_CALLBACK ( NULL),     /* Callback function    */
+    },
+/* Help menu */
+    {"help-menu",
+            NULL,
+            N_("_Help"),
+            NULL,
+    },
+    { "contents",
+            GTK_STOCK_HELP,
+            N_ ("_Contents"),
+            "F1",
+            N_ ("Display squeeze user manual"),
+            G_CALLBACK (NULL),
+    },
+    { "about", 
+            GTK_STOCK_ABOUT, 
+            N_ ("_About"),
+            NULL,
+            N_ ("Display information about squeeze"),
+            G_CALLBACK (NULL),
+    },
+/*************/
+    {"stop",                        /* Name                         */
+            GTK_STOCK_STOP,         /* Icon-name                    */
+            N_("_Stop"),            /* Label                        */
+            "Escape",               /* Accelerator                  */
+            N_( "Stop"),            /* Tooltip                      */
+            G_CALLBACK ( NULL),     /* Callback function            */
+    },
+};
 
 GType
 sq_main_window_get_type (void)
 {
-	static GType sq_main_window_type = 0;
-
-	if (!sq_main_window_type)
-	{
-		static const GTypeInfo sq_main_window_info = 
-		{
-			sizeof (SQMainWindowClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) sq_main_window_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL,
-			sizeof (SQMainWindow),
-			0,
-			(GInstanceInitFunc) sq_main_window_init,
-			NULL
-		};
-
-		sq_main_window_type = g_type_register_static (GTK_TYPE_WINDOW, "SQMainWindow", &sq_main_window_info, 0);
-	}
-	return sq_main_window_type;
+    static GType sq_main_window_type = 0;
+
+    if (!sq_main_window_type)
+    {
+        static const GTypeInfo sq_main_window_info = 
+        {
+            sizeof (SQMainWindowClass),
+            (GBaseInitFunc) NULL,
+            (GBaseFinalizeFunc) NULL,
+            (GClassInitFunc) sq_main_window_class_init,
+            (GClassFinalizeFunc) NULL,
+            NULL,
+            sizeof (SQMainWindow),
+            0,
+            (GInstanceInitFunc) sq_main_window_init,
+            NULL
+        };
+
+        sq_main_window_type = g_type_register_static (GTK_TYPE_WINDOW, "SQMainWindow", &sq_main_window_info, 0);
+    }
+    return sq_main_window_type;
 }
 
 static void
-sq_main_window_class_init(SQMainWindowClass *window_class)
+sq_main_window_class_init ( GObjectClass *object_class )
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (window_class);
-	GParamSpec *pspec = NULL;
-
-	parent_class = gtk_type_class (GTK_TYPE_WINDOW);
-
-	object_class->set_property = sq_main_window_set_property;
-	object_class->get_property = sq_main_window_get_property;
-	object_class->dispose	  = sq_main_window_dispose;
-
-	pspec = g_param_spec_enum("navigation-style",
-		_("Navigation Style"),
-		_("Style of navigation\nThe style to navigate trough the archive"),
-		SQ_TYPE_MAIN_WINDOW_NAVIGATION_STYLE,
-		SQ_MAIN_WINDOW_NAVIGATION_INTERNAL,
-		G_PARAM_READWRITE);
-	g_object_class_install_property(object_class, SQ_MAIN_WINDOW_NAVIGATION_STYLE, pspec);
-
-
+    parent_class = gtk_type_class (GTK_TYPE_WINDOW);
 
+    object_class->set_property = sq_main_window_set_property;
+    object_class->get_property = sq_main_window_get_property;
+    object_class->dispose      = sq_main_window_dispose;
 }
 
 static void
 sq_main_window_dispose(GObject *object)
 {
-	SQMainWindow *window = SQ_MAIN_WINDOW(object);
-	gint width, height;
-
-	if(window->main_vbox && window->notebook)
-	{
-		gtk_container_remove(GTK_CONTAINER(window->main_vbox), GTK_WIDGET(window->notebook));
-		window->notebook = NULL;
-	}
-
-	if(window->settings)
-	{
-		sq_settings_set_group(window->settings, "Global");
-		if(window->menu_bar)
-			sq_settings_write_bool_entry(window->settings, "MenuBar", TRUE);
-		else
-			sq_settings_write_bool_entry(window->settings, "MenuBar", FALSE);
-
-		if(window->tool_bar)
-			sq_settings_write_bool_entry(window->settings, "ToolBar", TRUE);
-		else
-			sq_settings_write_bool_entry(window->settings, "ToolBar", FALSE);
-
-		if(!window->navigationbar)
-		{
-			sq_settings_write_entry(window->settings, "NavigationBar", "None");
-		}
-	#ifdef ENABLE_TOOLBAR
-		else if(SQ_IS_TOOL_BAR(window->navigationbar))
-		{
-			sq_settings_write_entry(window->settings, "NavigationBar", "ToolBar");
-		}	
-	#endif
-	#ifdef ENABLE_PATHBAR
-		else if(SQ_IS_PATH_BAR(window->navigationbar))
-		{
-			sq_settings_write_entry(window->settings, "NavigationBar", "PathBar");
-		}
-	#endif
-		else
-		{
-			sq_settings_write_entry(window->settings, "NavigationBar", "None");
-		}
-
-		if(&window->parent != NULL)
-		{
-			gtk_window_get_size(&window->parent, &width, &height);
-			sq_settings_write_int_entry(window->settings, "LastWindowWidth", width);
-			sq_settings_write_int_entry(window->settings, "LastWindowHeight", height);
-		}
-
-		sq_settings_save(window->settings);
-
-		g_object_unref(G_OBJECT(window->settings));
-		window->settings = NULL;
-	}
-
-	if(window->app)
-	{
-		g_object_unref(G_OBJECT(window->app));
-		window->app = NULL;
-	}
-	
-	parent_class->dispose(object);
-}
-
-static void
-sq_main_window_init(SQMainWindow *window)
-{
-	GtkToolItem   *tool_separator;
-	GtkWidget	 *menu_separator;
-	GtkWidget	 *tmp_image;
-	const gchar   *nav_bar;
-	GSList		*list, *iter;
-	gboolean up_dir = TRUE;
-	gboolean use_tabs = TRUE;
-	gboolean show_menubar = TRUE;
-	GtkWidget *item;
-
-	window->accel_group = gtk_accel_group_new();
-	gtk_window_add_accel_group(GTK_WINDOW(window), window->accel_group);
-
-	window->settings = sq_settings_new();
-
-	sq_settings_set_group(window->settings, "Global");
-
-	window->main_vbox = gtk_vbox_new(FALSE, 0);
-
-	window->widget_factory = sq_widget_factory_new();
-
-	show_menubar = sq_settings_read_bool_entry(window->settings, "MenuBar", TRUE);
-
-	gtk_window_set_default_size (GTK_WINDOW(window), 
-								 sq_settings_read_int_entry(window->settings, "LastWindowWidth", 500),
-								 sq_settings_read_int_entry(window->settings, "LastWindowHeight", 300));
-
-	if(show_menubar)
-	{
-		window->menu_bar = gtk_menu_bar_new();
-
-		/* File menu */
-		window->menubar.menu_item_file = gtk_menu_item_new_with_mnemonic(_("_File"));
-		window->menubar.menu_file = gtk_menu_new();
-		gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_file), window->menubar.menu_file);
-
-		window->menubar.menu_item_new = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, window->accel_group);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_file), window->menubar.menu_item_new);
-		window->menubar.menu_item_open = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, window->accel_group);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_file), window->menubar.menu_item_open);
-		gtk_widget_add_accelerator (window->menubar.menu_item_open, "activate", window->accel_group, GDK_o, GDK_SHIFT_MASK| GDK_CONTROL_MASK, GTK_ACCEL_LOCKED | GTK_ACCEL_MASK);
-
-		menu_separator = gtk_separator_menu_item_new();
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_file), menu_separator);
-
-		window->menubar.menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, window->accel_group);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_file), window->menubar.menu_item_close);
-		gtk_widget_set_sensitive(window->menubar.menu_item_close, FALSE);
-
-		menu_separator = gtk_separator_menu_item_new();
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_file), menu_separator);
-
-		window->menubar.menu_item_quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, window->accel_group);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_file), window->menubar.menu_item_quit);
-
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_new), "activate", G_CALLBACK(cb_sq_main_new_archive), window);
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_open), "activate", G_CALLBACK(cb_sq_main_open_archive), window);
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_close), "activate", G_CALLBACK(cb_sq_main_close_archive), window);
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_quit), "activate", G_CALLBACK(cb_sq_main_close_window), window);
-		/* Action menu: ref all the childs*/
-		window->menubar.menu_item_action = gtk_menu_item_new_with_mnemonic(_("_Action"));
-		window->menubar.menu_action = gtk_menu_new();
-		gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_action), window->menubar.menu_action);
-
-		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_MENU);
-		window->menubar.menu_item_add_files = g_object_ref(gtk_image_menu_item_new_with_mnemonic(_("_Add files")));
-		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(window->menubar.menu_item_add_files), tmp_image);
-		gtk_widget_set_sensitive(window->menubar.menu_item_add_files, FALSE);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_add_files);
-
-		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_MENU);
-		window->menubar.menu_item_add_folders = g_object_ref(gtk_image_menu_item_new_with_mnemonic(_("_Add _folders")));
-		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(window->menubar.menu_item_add_folders), tmp_image);
-		gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, FALSE);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_add_folders);
-
-		tmp_image = sq_main_window_find_image("archive-extract.png", GTK_ICON_SIZE_MENU);
-		window->menubar.menu_item_extract = g_object_ref(gtk_image_menu_item_new_with_mnemonic(_("_Extract")));
-		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(window->menubar.menu_item_extract), tmp_image);
-		gtk_widget_set_sensitive(window->menubar.menu_item_extract, FALSE);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_extract);
-
-		window->menubar.menu_item_remove = g_object_ref(gtk_image_menu_item_new_from_stock(GTK_STOCK_DELETE, window->accel_group));
-		gtk_widget_set_sensitive(window->menubar.menu_item_remove, FALSE);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_remove);
-
-		window->menubar.menu_item_refresh = g_object_ref(gtk_image_menu_item_new_from_stock(GTK_STOCK_REFRESH, window->accel_group));
-		gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_action), window->menubar.menu_item_refresh);
-
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_add_files), "activate", G_CALLBACK(cb_sq_main_add_files_to_archive), window);
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_add_folders), "activate", G_CALLBACK(cb_sq_main_add_folders_to_archive), window);
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_extract), "activate", G_CALLBACK(cb_sq_main_extract_archive), window);
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_remove), "activate", G_CALLBACK(cb_sq_main_remove_from_archive), window);
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_refresh), "activate", G_CALLBACK(cb_sq_main_refresh_archive), window);
-
-		gtk_widget_add_accelerator (window->menubar.menu_item_refresh,
-									"activate",
-									window->accel_group,
-									GDK_F5,
-									0,
-									GTK_ACCEL_LOCKED | GTK_ACCEL_MASK);
-		gtk_widget_add_accelerator (window->menubar.menu_item_refresh,
-									"activate",
-									window->accel_group,
-									GDK_r,
-									GDK_CONTROL_MASK,
-									GTK_ACCEL_LOCKED | GTK_ACCEL_MASK);
-
-		/* View menu */
-		window->menubar.menu_item_view = gtk_menu_item_new_with_mnemonic(_("_View"));
-		window->menubar.menu_view = gtk_menu_new();
-		gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_view), window->menubar.menu_view);
-
-#ifdef SQ_MAIN_ANY_BAR
-		list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window), "navigation-style");
-		for(iter = list; iter; iter = iter->next)
-		{
-			gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), iter->data);
-			gtk_widget_show(iter->data);
-		}
-#endif
-
-/*
-		window->menubar.menu_item_settings = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, window->accel_group);
-
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_settings), "activate", G_CALLBACK(cb_sq_main_preferences), window);
-
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), window->menubar.menu_item_settings);
-*/
-
-		gtk_widget_show_all(window->menubar.menu_view);
-
-		/* Help menu */
-		window->menubar.menu_item_help = gtk_menu_item_new_with_mnemonic(_("_Help"));
-		window->menubar.menu_help = gtk_menu_new();
-		gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->menubar.menu_item_help), window->menubar.menu_help);
-
-		window->menubar.menu_item_about = g_object_ref(gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, window->accel_group));
-		gtk_container_add(GTK_CONTAINER(window->menubar.menu_help), window->menubar.menu_item_about);
-
-		g_signal_connect(G_OBJECT(window->menubar.menu_item_about), "activate", G_CALLBACK(cb_sq_main_about), window);
-
-		gtk_menu_bar_append(GTK_MENU_BAR(window->menu_bar), window->menubar.menu_item_file);
-		gtk_menu_bar_append(GTK_MENU_BAR(window->menu_bar), window->menubar.menu_item_action);
-		gtk_menu_bar_append(GTK_MENU_BAR(window->menu_bar), window->menubar.menu_item_view);
-		gtk_menu_bar_append(GTK_MENU_BAR(window->menu_bar), window->menubar.menu_item_help);
-  
-		item = gtk_menu_item_new ();
-		gtk_widget_set_sensitive (item, FALSE);
-		gtk_menu_item_set_right_justified (GTK_MENU_ITEM (item), TRUE);
-		gtk_menu_shell_append (GTK_MENU_SHELL (window->menu_bar), item);
-		gtk_widget_show (item);
-
-		window->throbber = sq_throbber_new ();
-		gtk_container_add (GTK_CONTAINER (item), window->throbber);
-		gtk_widget_show (window->throbber);
-
-	}
-
-	show_toolbar = sq_settings_read_bool_entry(window->settings, "ToolBar", TRUE);
-
-	if(show_toolbar)
-	{
-		window->tool_bar = gtk_toolbar_new();
-
-	/* Archive pane */
-		window->toolbar.tool_item_new = gtk_tool_button_new_from_stock(GTK_STOCK_NEW);
-		window->toolbar.tool_item_open = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
-		tool_separator = gtk_separator_tool_item_new ();
-
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_new));
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_open));
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(tool_separator));
-
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_new), "clicked", G_CALLBACK(cb_sq_main_new_archive), window);
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_open), "clicked", G_CALLBACK(cb_sq_main_open_archive), window);
-
-	/* Action pane */
-		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_LARGE_TOOLBAR);
-		window->toolbar.tool_item_add_files = gtk_tool_button_new(tmp_image, _("Add files"));
-		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), FALSE);
-
-		tmp_image = sq_main_window_find_image("archive-add.png", GTK_ICON_SIZE_LARGE_TOOLBAR);
-		window->toolbar.tool_item_add_folders = gtk_tool_button_new(tmp_image, _("Add folders"));
-		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), FALSE);
-
-		tmp_image = sq_main_window_find_image("archive-extract.png", GTK_ICON_SIZE_LARGE_TOOLBAR);
-		window->toolbar.tool_item_extract = gtk_tool_button_new(tmp_image, _("Extract"));
-		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
-
-		window->toolbar.tool_item_remove = gtk_tool_button_new_from_stock(GTK_STOCK_DELETE);
-		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
-
-		tool_separator = gtk_separator_tool_item_new ();
-
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_add_files));
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_add_folders));
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_extract));
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_remove));
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(tool_separator));
-
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_add_files), "clicked", G_CALLBACK(cb_sq_main_add_files_to_archive), window);
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_add_folders), "clicked", G_CALLBACK(cb_sq_main_add_folders_to_archive), window);
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_extract), "clicked", G_CALLBACK(cb_sq_main_extract_archive), window);
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_remove), "clicked", G_CALLBACK(cb_sq_main_remove_from_archive), window);
-
-	/* control pane */
-
-		window->toolbar.tool_item_stop = gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
-		gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
-
-		gtk_container_add(GTK_CONTAINER(window->tool_bar), GTK_WIDGET(window->toolbar.tool_item_stop));
-
-		g_signal_connect(G_OBJECT(window->toolbar.tool_item_stop), "clicked", G_CALLBACK(cb_sq_main_stop_archive), window);
-	}
-
-	nav_bar = sq_settings_read_entry(window->settings, "NavigationBar", "None");
-	window->nav_style = SQ_MAIN_WINDOW_NAVIGATION_INTERNAL;
-	window->navigationbar = NULL;
-	up_dir = TRUE;
-
-#ifdef ENABLE_TOOLBAR
-	if(!strcmp(nav_bar, "ToolBar"))
-	{
-		window->nav_style = SQ_MAIN_WINDOW_NAVIGATION_TOOL_BAR;
-		window->navigationbar = sq_tool_bar_new(NULL); 
-		up_dir = FALSE;
-	}
-#endif
-#ifdef ENABLE_PATHBAR
-	if(!strcmp(nav_bar, "PathBar"))
-	{
-		window->nav_style = SQ_MAIN_WINDOW_NAVIGATION_PATH_BAR;
-		window->navigationbar = sq_path_bar_new(NULL);
-		gtk_container_set_border_width(GTK_CONTAINER(window->navigationbar), 3);
-		up_dir = FALSE;
-	}
-#endif
-
-	g_object_notify(G_OBJECT(window), "navigation-style");
-
-	use_tabs = sq_settings_read_bool_entry(window->settings, "UseTabs", TRUE);
-
-/* main view */
-	window->notebook = sq_notebook_new(window->navigationbar, use_tabs, window->accel_group);
-	g_signal_connect(G_OBJECT(window->notebook), "archive-state-changed", G_CALLBACK(cb_sq_main_window_notebook_state_changed), window);
-	g_signal_connect(G_OBJECT(window->notebook), "switch-page", G_CALLBACK(cb_sq_main_window_notebook_page_switched), window);
-	g_signal_connect(G_OBJECT(window->notebook), "archive-removed", G_CALLBACK(cb_sq_main_window_notebook_page_removed), window);
-	g_signal_connect(G_OBJECT(window->notebook), "file-activated", G_CALLBACK(cb_sq_main_window_notebook_file_activated), window);
-
-/* menu item */
-	if(show_menubar)
-	{
-		list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window->notebook), "show-full-path");
-		for(iter = list; iter; iter = iter->next)
-		{
-			gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), iter->data);
-			gtk_widget_show(iter->data);
-		}
-		list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window->notebook), "show-icons");
-		for(iter = list; iter; iter = iter->next)
-		{
-			gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), iter->data);
-			gtk_widget_show(iter->data);
-		}
-		list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window->notebook), "sort-folders-first");
-		for(iter = list; iter; iter = iter->next)
-		{
-			gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), iter->data);
-			gtk_widget_show(iter->data);
-		}
-		list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window->notebook), "sort-case-sensitive");
-		for(iter = list; iter; iter = iter->next)
-		{
-			gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), iter->data);
-			gtk_widget_show(iter->data);
-		}
-		list = sq_widget_factory_create_property_menu(window->widget_factory, G_OBJECT(window->notebook), "rules-hint");
-		for(iter = list; iter; iter = iter->next)
-		{
-			gtk_container_add(GTK_CONTAINER(window->menubar.menu_view), iter->data);
-			gtk_widget_show(iter->data);
-		}
-	}
-
-/* Statusbar */
-
-	window->statusbar = gtk_statusbar_new();
-
-	if(show_menubar)
-		gtk_box_pack_start(GTK_BOX(window->main_vbox), window->menu_bar, FALSE, FALSE, 0);
-
-	if(show_toolbar)
-		gtk_box_pack_start(GTK_BOX(window->main_vbox), window->tool_bar, FALSE, FALSE, 0);
-
-	if(window->navigationbar)
-	{
-		gtk_widget_ref(GTK_WIDGET(window->navigationbar));
-		gtk_box_pack_start(GTK_BOX(window->main_vbox), GTK_WIDGET(window->navigationbar), FALSE, FALSE, 0);
-		gtk_widget_show_all(GTK_WIDGET(window->navigationbar));
-	}
-
-	gtk_box_pack_start(GTK_BOX(window->main_vbox), window->notebook, TRUE, TRUE, 0);
-	gtk_box_pack_end(GTK_BOX(window->main_vbox), window->statusbar, FALSE, FALSE, 0);
-
-	gtk_widget_show_all(window->main_vbox);
-	if(show_toolbar)
-		gtk_widget_show_all(window->tool_bar);
-	gtk_widget_show_all(window->notebook);
-	gtk_widget_show_all(window->statusbar);
-
-	gtk_container_add(GTK_CONTAINER(window), window->main_vbox);
-}
-
-GtkWidget *
-sq_main_window_new(SQApplication *app, GtkIconTheme *icon_theme)
-{
-	SQMainWindow *window;
-
-	window = g_object_new(sq_main_window_get_type(),
-			"title", PACKAGE_STRING,
-			NULL);
-
-	window->icon_theme = icon_theme;
-
-	sq_notebook_set_icon_theme(SQ_NOTEBOOK(window->notebook), icon_theme);
-
-	g_object_ref(app);
-	window->app = app;
-
-	return GTK_WIDGET(window);
-}
-
-static void
-sq_main_window_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(object);
-	switch(prop_id)
-	{
-		case SQ_MAIN_WINDOW_NAVIGATION_STYLE:
-			g_value_set_enum(value, window->nav_style);
-		break;
-	}
+    parent_class->dispose(object);
 }
 
 static void
-sq_main_window_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+sq_main_window_init ( GObject *object )
 {
-	SQMainWindow *window = SQ_MAIN_WINDOW(object);
-	switch(prop_id)
-	{
-		case SQ_MAIN_WINDOW_NAVIGATION_STYLE:
-			window->nav_style = g_value_get_enum(value);
-			sq_main_window_set_navigation(window);
-		break;
-	}
+    SQMainWindow    *window = SQ_MAIN_WINDOW (object);
+    GtkAccelGroup   *accel_group;
+
+    GtkWidget       *main_vbox = gtk_vbox_new (FALSE, 0);
+
+    window->priv = g_new0 (SQMainWindowPriv, 1);
+
+    window->priv->ui_manager = gtk_ui_manager_new();
+    window->priv->action_group = gtk_action_group_new ("SQWindow");
+    
+    accel_group = gtk_ui_manager_get_accel_group ( window->priv->ui_manager);
+    gtk_window_add_accel_group (GTK_WINDOW ( window ), accel_group);
+ 
+    gtk_ui_manager_insert_action_group (
+            window->priv->ui_manager,
+            window->priv->action_group,
+            0 ); 
+    gtk_action_group_set_translation_domain (
+            window->priv->action_group,
+            GETTEXT_PACKAGE );
+
+    gtk_action_group_add_actions (
+            window->priv->action_group,
+            action_entries,
+            G_N_ELEMENTS (action_entries),
+            GTK_WIDGET (window) );
+
+
+    gtk_ui_manager_add_ui_from_string (
+            window->priv->ui_manager,
+            main_window_ui,
+            main_window_ui_length,
+            NULL );
+
+    window->priv->menubar = gtk_ui_manager_get_widget (
+            window->priv->ui_manager,
+            "/main-menu" );
+
+    window->priv->toolbar = gtk_ui_manager_get_widget (
+            window->priv->ui_manager,
+            "/file-toolbar" );
+
+    gtk_container_add (
+            GTK_CONTAINER (window),
+            main_vbox );
+    gtk_box_pack_start(
+            GTK_BOX (main_vbox),
+            window->priv->menubar,
+            FALSE,
+            FALSE,
+            0);
+    gtk_box_pack_start(
+            GTK_BOX (main_vbox),
+            window->priv->toolbar,
+            FALSE,
+            FALSE,
+            0);
 }
 
 GtkWidget *
-sq_main_window_find_image(gchar *filename, GtkIconSize size)
+sq_main_window_new ( SQApplication *app )
 {
-	GError *error = NULL;
-	gint width  = 0;
-	gint height = 0;
-	GtkWidget *file_image;
-	gchar *path;
-	GdkPixbuf *file_pixbuf;
-	path = g_strconcat(DATADIR, "/pixmaps/squeeze/", filename, NULL);
+    SQMainWindow *window;
 
-	gtk_icon_size_lookup(size, &width, &height);
+    window = g_object_new (SQ_TYPE_MAIN_WINDOW,
+            "title", _("Archive Manager"),
+            NULL);
 
-	file_pixbuf = gdk_pixbuf_new_from_file_at_size(path, width, height, &error);
-	if(file_pixbuf)
-	{
-		file_image = gtk_image_new_from_pixbuf(file_pixbuf);
-		g_object_unref(file_pixbuf);
-	}
-	else
-	{
-		g_free(error);
-		file_image = gtk_image_new_from_stock(GTK_STOCK_MISSING_IMAGE, size);
-	}
-	g_free(path);
-	return file_image;
-}
+    g_object_ref(app);
+    window->priv->app = app;
 
-static void
-sq_main_window_new_action_menu(SQMainWindow *window, LSQArchive *archive)
-{
+    return GTK_WIDGET(window);
 }
 
 static void
-cb_sq_main_new_archive(GtkWidget *widget, gpointer userdata)
+sq_main_window_get_property (
+        GObject *object,
+        guint prop_id,
+        GValue *value,
+        GParamSpec *pspec )
 {
-	GtkWidget *dialog = sq_new_archive_dialog_new();
-	GFile *file = NULL;
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	LSQArchive *archive = NULL;
-	LSQSupportType support_mask = 0;
-	gint result = 0;
-
-	result = gtk_dialog_run (GTK_DIALOG (dialog) );
-	if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
-	{
-		gtk_widget_destroy (GTK_WIDGET (dialog) );
-		return;
-	}
-	if(result == GTK_RESPONSE_OK)
-	{
-		file = sq_new_archive_dialog_get_file(SQ_NEW_ARCHIVE_DIALOG(dialog));
-		
-		if(!lsq_new_archive(file, TRUE, &archive))
-		{
-			support_mask = lsq_archive_get_support_mask(archive);
-			sq_notebook_add_archive(SQ_NOTEBOOK(window->notebook), archive, TRUE);
-			if(support_mask & LSQ_SUPPORT_FILES)
-				gtk_widget_set_sensitive(window->menubar.menu_item_add_files, TRUE);
-			if(support_mask & LSQ_SUPPORT_FOLDERS)
-				gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, TRUE);
-
-			gtk_widget_set_sensitive(window->menubar.menu_item_extract, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_remove, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, TRUE);
-
-			if(window->tool_bar)
-			{
-				if(support_mask & LSQ_SUPPORT_FILES)
-					gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), TRUE);
-				if(support_mask & LSQ_SUPPORT_FOLDERS)
-					gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), TRUE);
-
-				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), TRUE);
-				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), TRUE);
-
-				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
-			}
-		}
-		else
-		{
-
-		}
-        g_object_unref (file);
-		gtk_widget_destroy (dialog );
-	}
-
+    switch(prop_id)
+    {
+        default:
+            break;
+    }
 }
 
 static void
-cb_sq_main_open_archive(GtkWidget *widget, gpointer userdata)
+sq_main_window_set_property (
+        GObject *object,
+        guint prop_id,
+        const GValue *value,
+        GParamSpec *pspec )
 {
-	GtkWidget *dialog = NULL;
-	GSList *open_archive_paths = NULL;
-	GSList *_open_archive_paths = NULL;
-	gint result = 0;
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	gint x, y;
-	GdkModifierType mod_type;
-
-	gdk_window_get_pointer(GTK_WIDGET(window)->window, &x, &y, &mod_type);
-	
-	if(mod_type & GDK_SHIFT_MASK)
-		dialog = gtk_file_chooser_dialog_new(_("Open archive in new window"), 
-											 GTK_WINDOW(window),
-											 GTK_FILE_CHOOSER_ACTION_OPEN,
-											 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-											 GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
-	else
-		dialog = gtk_file_chooser_dialog_new(_("Open archive"), 
-											 GTK_WINDOW(window),
-											 GTK_FILE_CHOOSER_ACTION_OPEN,
-											 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-											 GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
-
-	gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);
-
-	/*
-	GSList *supported_mime_types = lsq_get_supported_mime_types(0);
-	GSList *_supported_mime_types = supported_mime_types;
-	
-	GtkFileFilter *filter_all = gtk_file_filter_new();
-	gtk_file_filter_set_name(filter_all, _("Archives"));
-	while(_supported_mime_types)
-	{
-		GtkFileFilter *filter = gtk_file_filter_new();
-		gtk_file_filter_add_mime_type(filter,
-				lsq_mime_support_get_name((LSQMimeSupport *)(_supported_mime_types->data)));
-
-		gtk_file_filter_set_name(filter, lsq_mime_support_get_comment((LSQMimeSupport *)(_supported_mime_types->data)));
-		gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
-
-		gtk_file_filter_add_mime_type(filter_all,
-				lsq_mime_support_get_name((LSQMimeSupport *)(_supported_mime_types->data)));
-		_supported_mime_types = g_slist_next(_supported_mime_types);
-	}
-	g_slist_free(supported_mime_types);
-
-	gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter_all);
-	gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter_all);
-	*/
-	
-
-	result = gtk_dialog_run (GTK_DIALOG (dialog) );
-	if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
-	{
-		gtk_widget_destroy (dialog);
-		return;
-	}
-	if(result == GTK_RESPONSE_OK)
-	{
-		open_archive_paths = gtk_file_chooser_get_files(GTK_FILE_CHOOSER(dialog));
-		_open_archive_paths = open_archive_paths;
-		while(_open_archive_paths)
-		{
-			if(mod_type & GDK_SHIFT_MASK)
-				sq_application_open_archive(window->app, NULL, _open_archive_paths->data);
-			else
-				sq_application_open_archive(window->app, (GtkWidget *)window, _open_archive_paths->data);
-			/*
-			if(sq_notebook_get_multi_tab(SQ_NOTEBOOK(window->notebook)))
-				sq_application_open_archive(window->app, (GtkWidget *)window, _open_archive_paths->data);
-			else
-				sq_application_open_archive(window->app, NULL, _open_archive_paths->data);
-			*/
-			_open_archive_paths = _open_archive_paths->next;
-		}
-		g_slist_foreach(open_archive_paths, (GFunc)g_object_unref, NULL);
-		g_slist_free(open_archive_paths);
-		gtk_widget_destroy(dialog);
-	}
-}
-
-
-static void
-cb_sq_main_extract_archive(GtkWidget *widget, gpointer userdata)
-{
-	GtkWidget *dialog = NULL;
-	gchar *extract_archive_path = NULL;
-	gint result = 0;
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-
-	LSQArchive		*lp_archive = NULL;
-
-  const gchar **strv;
-
-	GSList *filenames = sq_notebook_get_selected_items(SQ_NOTEBOOK(window->notebook));
-
-	sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive);
-
-	dialog = sq_extract_archive_dialog_new(lp_archive, g_slist_length(filenames));
-	result = gtk_dialog_run (GTK_DIALOG (dialog) );
-	if(result == GTK_RESPONSE_OK)
-	{
-		gtk_widget_hide(dialog);
-		extract_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
-		if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(SQ_EXTRACT_ARCHIVE_DIALOG(dialog)->all_files_radio)))
-		{
-			lsq_iter_slist_free(filenames);
-			filenames = NULL;
-		}
-    strv = lsq_iter_list_to_strv(filenames);
-		if(!lsq_archive_operate(lp_archive, LSQ_COMMAND_TYPE_EXTRACT, strv, extract_archive_path))
-		{
-			GtkWidget *warning_dialog;
-      g_free(strv);
-			warning_dialog = gtk_message_dialog_new(GTK_WINDOW(window), 
-															   GTK_DIALOG_DESTROY_WITH_PARENT, 
-																												 GTK_MESSAGE_WARNING,
-																												 GTK_BUTTONS_CLOSE,
-																												 _("Squeeze cannot extract this archive type,\nthe application to support this is missing."));
-			if(warning_dialog)
-			{
-				gtk_dialog_run (GTK_DIALOG (warning_dialog) );
-				gtk_widget_destroy(warning_dialog);
-			}
-		}
-    else
-      g_free(strv);
-		g_free(extract_archive_path);
-		extract_archive_path = NULL;
-	}
-	gtk_widget_destroy (dialog);
-
-	lsq_iter_slist_free(filenames);
-}
-
-static void
-cb_sq_main_add_files_to_archive(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-
-	LSQArchive		*lp_archive = NULL;
-	GtkWidget		 *dialog = NULL;
-	GSList			*filenames = NULL;
-	gint result;
-	sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive);
-
-	dialog = gtk_file_chooser_dialog_new(_("Add files"), 
-										 GTK_WINDOW(window),
-										 GTK_FILE_CHOOSER_ACTION_OPEN,
-										 GTK_STOCK_CANCEL,
-										 GTK_RESPONSE_CANCEL,
-										 GTK_STOCK_OPEN,
-										 GTK_RESPONSE_OK,
-										 NULL);
-
-	result = gtk_dialog_run (GTK_DIALOG(dialog));
-	if(result == GTK_RESPONSE_OK)
-	{
-		gtk_widget_hide(dialog);
-		filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
-		if(filenames)
-		{
-      const gchar **strv = lsq_iter_list_to_strv(filenames);
-			if(!lsq_archive_operate(lp_archive, LSQ_COMMAND_TYPE_ADD, strv, NULL))
-			{
-				GtkWidget *warning_dialog;
-        g_free(strv);
-				warning_dialog = gtk_message_dialog_new(GTK_WINDOW(window), 
-																													 GTK_DIALOG_DESTROY_WITH_PARENT, 
-																													 GTK_MESSAGE_WARNING,
-																													 GTK_BUTTONS_CLOSE,
-																													 _("Squeeze cannot add files to this archive type,\nthe application to support this is missing."));
-				gtk_dialog_run (GTK_DIALOG (warning_dialog) );
-				gtk_widget_destroy(warning_dialog);
-			}
-      else
-        g_free(strv);
-		}
-	}
-	gtk_widget_destroy (dialog);
-}
-
-static void
-cb_sq_main_add_folders_to_archive(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-
-	LSQArchive		*lp_archive = NULL;
-	GtkWidget		 *dialog = NULL;
-	GSList			*filenames = NULL;
-	gint result;
-	sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive);
-
-	dialog = gtk_file_chooser_dialog_new(_("Add folders"),
-										 GTK_WINDOW(window),
-										 GTK_FILE_CHOOSER_ACTION_OPEN,
-										 GTK_STOCK_CANCEL,
-										 GTK_RESPONSE_CANCEL,
-										 GTK_STOCK_OPEN,
-										 GTK_RESPONSE_OK,
-										 NULL);
-
-	result = gtk_dialog_run (GTK_DIALOG(dialog));
-	if(result == GTK_RESPONSE_OK)
-	{
-		gtk_widget_hide(dialog);
-		filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
-		if(filenames)
-		{
-      const gchar **strv = lsq_iter_list_to_strv(filenames);
-			if(!lsq_archive_operate(lp_archive, LSQ_COMMAND_TYPE_ADD, strv, NULL))
-			{
-				GtkWidget *warning_dialog;
-        g_free(strv);
-				warning_dialog = gtk_message_dialog_new(GTK_WINDOW(window),
-									  GTK_DIALOG_DESTROY_WITH_PARENT, 
-									  GTK_MESSAGE_WARNING,
-									  GTK_BUTTONS_CLOSE,
-									  _("Squeeze cannot add folders to this archive type,\n"
-										"the application to support this is missing."));
-				gtk_dialog_run (GTK_DIALOG (warning_dialog) );
-				gtk_widget_destroy(warning_dialog);
-			}
-      else
-        g_free(strv);
-		}
-	}
-	gtk_widget_destroy (dialog);
-}
-
-static void
-cb_sq_main_remove_from_archive(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	LSQArchive		*lp_archive = NULL;
-	GtkWidget *dialog = NULL;
-	gint result = 0;
-  const gchar **strv;
-	GSList *filenames = sq_notebook_get_selected_items(SQ_NOTEBOOK(window->notebook));
-
-	if(filenames)
-	{
-		dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("Are you sure you want to remove the selected files?"));
-		result = gtk_dialog_run(GTK_DIALOG(dialog));
-		if(result == GTK_RESPONSE_YES)
-		{
-			gtk_widget_hide(dialog);
-			sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive);
-			/* gtk_tree_view_set_model(sq_notebook_get_active_tree_view(SQ_NOTEBOOK(window->notebook)), NULL); */
-      strv = lsq_iter_list_to_strv(filenames);
-			if(!lsq_archive_operate(lp_archive, LSQ_COMMAND_TYPE_REMOVE, strv, NULL))
-			{
-				GtkWidget *warning_dialog;
-        g_free(strv);
-				warning_dialog = gtk_message_dialog_new(GTK_WINDOW(window), 
-																													 GTK_DIALOG_DESTROY_WITH_PARENT, 
-																													 GTK_MESSAGE_WARNING,
-																													 GTK_BUTTONS_CLOSE,
-																													 _("Squeeze cannot remove files from this archive type,\nthe application to support this is missing."));
-				gtk_dialog_run (GTK_DIALOG (warning_dialog) );
-				gtk_widget_destroy(warning_dialog);
-			}
-      else
-        g_free(strv);
-		}
-		gtk_widget_destroy (dialog);
-
-		lsq_iter_slist_free(filenames);
-	}
-}
-
-static void
-cb_sq_main_close_archive(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	sq_notebook_close_active_archive(SQ_NOTEBOOK(window->notebook));
-}
-
-static void
-cb_sq_main_close_window(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	gtk_widget_destroy(GTK_WIDGET(window));
-}
-
-static void 
-cb_sq_main_refresh_archive(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	SQArchiveStore *store = sq_notebook_get_active_store(SQ_NOTEBOOK(window->notebook));
-	LSQArchive *archive = sq_archive_store_get_archive(store);
-	lsq_archive_operate(archive, LSQ_COMMAND_TYPE_REFRESH, NULL, NULL);
-}
-
-static void
-cb_sq_main_stop_archive(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-
-	LSQArchive		*lp_archive = NULL;
-	GtkWidget		 *dialog = NULL;
-	gint result = 0;
-	sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive);
-	
-	if(lsq_archive_can_stop(lp_archive))
-		lsq_archive_stop(lp_archive);
-	else
-	{
-		dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, 
-										_("Are you sure you want to cancel this operation?\nThis could damage the archive."));
-		result = gtk_dialog_run(GTK_DIALOG(dialog));
-		if(result == GTK_RESPONSE_YES)
-		{
-			gtk_widget_hide(dialog);
-			lsq_archive_stop(lp_archive);
-		}
-		gtk_widget_destroy(dialog);
-	}
-}
-
-/*
-static void 
-cb_sq_main_properties(GtkWidget *widget, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	LSQArchive *lp_archive = NULL;
-
-	sq_notebook_get_active_archive(SQ_NOTEBOOK(window->notebook), &lp_archive, NULL);
-
-	GtkWidget *dialog = sq_properties_dialog_new(lp_archive, window->icon_theme);
-
-	gtk_dialog_run(GTK_DIALOG(dialog));
-	gtk_widget_destroy(dialog);
-}
-*/
-
-
-/*
-static void
-cb_sq_main_preferences(GtkWidget *widget, gpointer userdata)
-{
-	GtkWidget *dialog = sq_preferences_dialog_new();
-
-	gtk_dialog_run(GTK_DIALOG(dialog));
-
-	GSList *iter = SQ_PREFERENCES_DIALOG(dialog)->support.support_list;
-	SQButtonDragBox *box;
-	LSQArchiveSupport *support;
-	GSList *buttons, *button_iter;
-	
-	while(iter)
-	{
-		support = ((SQSupportTuple*)iter->data)->support;
-		box = SQ_BUTTON_DRAG_BOX(((SQSupportTuple*)iter->data)->box);
-
-		buttons = button_iter = sq_button_drag_box_get_visible(box);
-
-		while(button_iter)
-		{
-			g_object_set(G_OBJECT(support), (const gchar*)button_iter->data, TRUE, NULL);
-
-			button_iter = g_slist_next(button_iter);
-		}
-		g_slist_free(buttons);
-
-		buttons = button_iter = sq_button_drag_box_get_hidden(box);
-
-		while(button_iter)
-		{
-			g_object_set(G_OBJECT(support), (const gchar*)button_iter->data, FALSE, NULL);
-
-			button_iter = g_slist_next(button_iter);
-		}
-		g_slist_free(buttons);
-
-		g_free(iter->data);
-
-		iter = g_slist_next(iter);
-	}
-	
-	g_slist_free(SQ_PREFERENCES_DIALOG(dialog)->support.support_list);
-	SQ_PREFERENCES_DIALOG(dialog)->support.support_list = NULL;
-
-	gtk_widget_destroy(dialog);
-}
-*/
-
-static void
-cb_sq_main_about(GtkWidget *widget, gpointer userdata)
-{
-	const gchar *authors[] = {
-	  _("Lead developer:"),
-		"Stephan Arts <stephan at xfce.org>",
-		"",
-		_("Contributors:"),
-		"Peter de Ridder <peter at xfce.org>",
-		"",
-		_("Inspired by Xarchiver, written by Giuseppe Torelli"), NULL};
-	const gchar *artists[] = {
-		_("Application Icon:"),
-		"Stephan Arts <stephan at xfce.org>",
-		"",
-		_("Add / Extract icons:"),
-		_("Based on the original extract icon created by Andreas Nilsson"),
-		NULL
-	};
-	GtkWidget *about_dialog = gtk_about_dialog_new();
-
-	gtk_about_dialog_set_name((GtkAboutDialog *)about_dialog, PACKAGE_NAME);
-	gtk_about_dialog_set_version((GtkAboutDialog *)about_dialog, PACKAGE_VERSION);
-	gtk_about_dialog_set_comments((GtkAboutDialog *)about_dialog, _("Squeeze is a lightweight and flexible archive manager for the Xfce Desktop Environment"));
-	gtk_about_dialog_set_website((GtkAboutDialog *)about_dialog, "http://squeeze.xfce.org");
-
-	gtk_about_dialog_set_logo_icon_name((GtkAboutDialog *)about_dialog, "squeeze");
-
-	gtk_about_dialog_set_authors((GtkAboutDialog *)about_dialog, authors);
-
-	/* Translator credits as shown in the about dialog: NAME <E-MAIL> YEAR */
-	gtk_about_dialog_set_translator_credits((GtkAboutDialog *)about_dialog, _("translator-credits"));
-
-	gtk_about_dialog_set_license((GtkAboutDialog *)about_dialog, xfce_get_license_text(XFCE_LICENSE_TEXT_GPL));
-
-	gtk_about_dialog_set_artists((GtkAboutDialog *)about_dialog, artists);
-
-	gtk_about_dialog_set_copyright((GtkAboutDialog *)about_dialog, "Copyright \302\251 2006-2007 Stephan Arts");
-
-	gtk_dialog_run(GTK_DIALOG(about_dialog));
-
-	gtk_widget_destroy(about_dialog);
-
-}
-
-static void
-cb_sq_main_window_notebook_page_switched(SQNotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
-{
-	LSQArchive *lp_archive;
-	SQMainWindow *window = SQ_MAIN_WINDOW(data);
-	guint context_id;
-	const gchar *message;
-	gchar *filename;
-	sq_notebook_page_get_archive(notebook, &lp_archive, page_nr);
-
-    filename = lsq_archive_get_filename(lp_archive);
-	gtk_window_set_title(GTK_WINDOW(window), g_strconcat(PACKAGE_NAME, " - ", filename , NULL));
-    g_free (filename);
-
-	sq_main_window_new_action_menu(window, lp_archive);
-
-	context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(window->statusbar), "Window Statusbar");
-	message = lsq_archive_get_state_msg(lp_archive);
-	if(!message)
-	{
-		message = _("Done");
-		if(window->menu_bar)
-		{
-			sq_throbber_set_animated(SQ_THROBBER(window->throbber), FALSE);
-			/* FIXME: */
-			/* gtk_widget_set_sensitive(window->menubar.menu_item_add, TRUE); */
-			gtk_widget_set_sensitive(window->menubar.menu_item_extract, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_remove, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, TRUE);
-		}
-		if(window->tool_bar)
-		{
-			/* gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), TRUE); */
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
-		}
-	}
-	else
-	{
-		if(window->menu_bar)
-		{
-			sq_throbber_set_animated(SQ_THROBBER(window->throbber), TRUE);
-			/* FIXME: */
-			/* gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE); */
-			gtk_widget_set_sensitive(window->menubar.menu_item_extract, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_remove, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
-		}
-
-		if(window->tool_bar)
-		{
-			/* gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE); */
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), TRUE);
-		}
-
-	}
-	gtk_statusbar_push(GTK_STATUSBAR(window->statusbar), context_id, message);
-}
-
-static void
-cb_sq_main_window_notebook_page_removed(SQNotebook *notebook, gpointer data)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(data);
-	guint context_id;
-
-	if(!gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
-	{
-		if(window->menu_bar)
-		{
-			gtk_widget_set_sensitive(window->menubar.menu_item_close, FALSE);
-			/*gtk_widget_set_sensitive(window->menubar.menu_item_properties, FALSE);*/
-
-			/* FIXME: */
-			/*gtk_widget_set_sensitive(window->menubar.menu_item_add, FALSE);*/
-			gtk_widget_set_sensitive(window->menubar.menu_item_extract, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_remove, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
-		}
-
-		if(window->tool_bar)
-		{
-			/* gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add), FALSE); */
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
-		}
-
-		gtk_window_set_title(GTK_WINDOW(window), PACKAGE_STRING);
-		context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(window->statusbar), "Window Statusbar");
-		gtk_statusbar_push(GTK_STATUSBAR(window->statusbar), context_id, _("Done"));
-	}
-}
-
-static void
-cb_sq_main_window_notebook_file_activated(SQNotebook *notebook, LSQArchiveIter *iter, gpointer data)
-{
-	GtkWindow *window = GTK_WINDOW(data);
-	LSQArchive *lp_archive = NULL;
-	gchar *extract_archive_path = NULL;
-	GtkWidget *label = gtk_label_new(_("Which action do you want to perform on the selected file(s)?"));
-	GtkWidget *dialog = gtk_dialog_new_with_buttons("",window,GTK_DIALOG_DESTROY_WITH_PARENT, _("Open"), GTK_RESPONSE_OK, _("Extract"), GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL);
-	GtkWidget *extr_dialog = NULL;
-	gint result;
-	const gchar **strv;
-	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, TRUE, TRUE, 20);
-	gtk_widget_show(label);
-	result = gtk_dialog_run(GTK_DIALOG(dialog));
-	gtk_widget_hide(dialog);
-
-	strv = g_new(const gchar*, 2);
-  strv[0] = lsq_archive_iter_get_filename(iter);
-  strv[1] = NULL;
-
-	switch(result)
-	{
-		case GTK_RESPONSE_OK: /* VIEW */
-			sq_notebook_get_active_archive(SQ_NOTEBOOK(notebook), &lp_archive);
-			if(lsq_archive_operate(lp_archive, LSQ_COMMAND_TYPE_OPEN, strv, NULL))
-			{
-				GtkWidget *warning_dialog = gtk_message_dialog_new(window, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, _("Squeeze cannot view this file.\nthe application to support this is missing."));
-				if(warning_dialog)
-				{
-					gtk_dialog_run(GTK_DIALOG(warning_dialog));
-					gtk_widget_destroy(warning_dialog);
-				}
-			}
-			break;
-		case GTK_RESPONSE_ACCEPT: /* EXTRACT */
-			sq_notebook_get_active_archive(SQ_NOTEBOOK(notebook), &lp_archive);
-			extr_dialog = sq_extract_archive_dialog_new(lp_archive, 1);
-			result = gtk_dialog_run (GTK_DIALOG (extr_dialog) );
-			if(result == GTK_RESPONSE_OK)
-			{
-				gtk_widget_hide(extr_dialog);
-				extract_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(extr_dialog));
-				if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(SQ_EXTRACT_ARCHIVE_DIALOG(extr_dialog)->all_files_radio)))
-				{
-					g_free(strv);
-					strv = NULL;
-				}
-				if(lsq_archive_operate(lp_archive, LSQ_COMMAND_TYPE_EXTRACT, strv, extract_archive_path))
-				{
-					GtkWidget *warning_dialog = gtk_message_dialog_new(GTK_WINDOW(window), 
-																	 GTK_DIALOG_DESTROY_WITH_PARENT, 
-																	 GTK_MESSAGE_WARNING,
-																	 GTK_BUTTONS_CLOSE,
-																	 _("Squeeze cannot extract this archive type,\nthe application to support this is missing."));
-					gtk_dialog_run (GTK_DIALOG (warning_dialog) );
-					gtk_widget_destroy(warning_dialog);
-
-				}
-				g_free(extract_archive_path);
-				extract_archive_path = NULL;
-			}
-			gtk_widget_destroy (extr_dialog);
-			
-			break;
-		case GTK_RESPONSE_CANCEL: /* CANCEL */
-			break;
-	}
-	g_free(strv);
-	gtk_widget_destroy(dialog);
-}
-
-gint
-sq_main_window_open_archive(SQMainWindow *window, GFile *file, gint replace)
-{
-	LSQArchive *archive = NULL;
-
-	if(!lsq_open_archive(file, &archive))
-	{
-		if(replace < 0)
-			sq_notebook_add_archive(SQ_NOTEBOOK(window->notebook), archive, FALSE);
-		else
-			sq_notebook_page_set_archive(SQ_NOTEBOOK(window->notebook), archive, replace);
-		gtk_widget_set_sensitive(window->menubar.menu_item_close, TRUE);
-
-		/*gtk_widget_set_sensitive(window->menubar.menu_item_properties, TRUE);*/
-		return 0;
-	}
-	else
-	{
-		GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window), 
-				GTK_DIALOG_DESTROY_WITH_PARENT, 
-				GTK_MESSAGE_ERROR, 
-				GTK_BUTTONS_OK,
-				_("Failed to open file"));
-		gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), _("'%s'\nCould not be opened"), g_file_get_path (file));
-		gtk_dialog_run(GTK_DIALOG(dialog));
-		gtk_widget_destroy(dialog);
-	}
-	return 1;
-}
-
-static void
-sq_main_window_set_navigation(SQMainWindow *window)
-{
-	SQNavigationBar *nav_bar = NULL; 
-	gboolean up_dir = TRUE;
-
-	switch(window->nav_style)
-	{
-		case SQ_MAIN_WINDOW_NAVIGATION_INTERNAL:
-			break;
-#ifdef ENABLE_TOOLBAR
-		case SQ_MAIN_WINDOW_NAVIGATION_TOOL_BAR:
-			nav_bar = sq_tool_bar_new(NULL);
-			up_dir = FALSE;
-			break;
-#endif
-#ifdef ENABLE_PATHBAR
-		case SQ_MAIN_WINDOW_NAVIGATION_PATH_BAR:
-			nav_bar = sq_path_bar_new(NULL);
-			up_dir = FALSE;
-			break;
-#endif
-		default:
-			return;
-	}
-
-	sq_notebook_set_navigation_bar(SQ_NOTEBOOK(window->notebook), nav_bar);
-
-	if(window->navigationbar)
-		gtk_widget_destroy(GTK_WIDGET(window->navigationbar));
-
-	window->navigationbar = nav_bar;
-	if(nav_bar)
-	{
-		gtk_box_pack_start(GTK_BOX(window->main_vbox), (GtkWidget *)nav_bar, FALSE, FALSE, 0);
-		if(show_toolbar)
-			gtk_box_reorder_child(GTK_BOX(window->main_vbox), (GtkWidget *)nav_bar, 2);
-		else
-			gtk_box_reorder_child(GTK_BOX(window->main_vbox), (GtkWidget *)nav_bar, 1);
-		gtk_widget_show_all((GtkWidget *)nav_bar);
-	}	
-}
-
-static void
-cb_sq_main_window_notebook_state_changed(SQNotebook *notebook, LSQArchive *archive, gpointer userdata)
-{
-	SQMainWindow *window = SQ_MAIN_WINDOW(userdata);
-	LSQSupportType support_mask = lsq_archive_get_support_mask(archive);
-
-	guint context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(window->statusbar), "Window Statusbar");
-	const gchar *message = lsq_archive_get_state_msg(archive);
-	if(!message)
-	{
-		sq_throbber_set_animated(SQ_THROBBER(window->throbber), FALSE);
-		message = _("Done");
-		if(window->menu_bar)
-		{
-			if(support_mask & LSQ_SUPPORT_FILES)
-				gtk_widget_set_sensitive(window->menubar.menu_item_add_files, TRUE);
-			if(support_mask & LSQ_SUPPORT_FOLDERS)
-				gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_extract, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_remove, TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, TRUE);
-		}
-
-		if(window->tool_bar)
-		{
-			if(support_mask & LSQ_SUPPORT_FILES)
-				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), TRUE);
-			if(support_mask & LSQ_SUPPORT_FOLDERS)
-				gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), TRUE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), TRUE);
-
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), FALSE);
-		}
-	}
-	else
-	{
-
-		if(window->menu_bar)
-		{
-			sq_throbber_set_animated(SQ_THROBBER(window->throbber), TRUE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_add_files, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_add_folders, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_extract, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_remove, FALSE);
-			gtk_widget_set_sensitive(window->menubar.menu_item_refresh, FALSE);
-		}
-
-		if(window->tool_bar)
-		{
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_files), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_add_folders), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_extract), FALSE);
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_remove), FALSE);
-
-			gtk_widget_set_sensitive(GTK_WIDGET(window->toolbar.tool_item_stop), TRUE);
-		}
-	}
-
-	gtk_statusbar_push(GTK_STATUSBAR(window->statusbar), context_id, message);
+    switch(prop_id)
+    {
+        default:
+            break;
+    }
 }
diff --git a/src/main_window.h b/src/main_window.h
index eb86228..e30d4a4 100644
--- a/src/main_window.h
+++ b/src/main_window.h
@@ -21,20 +21,16 @@
 G_BEGIN_DECLS
 
 typedef enum {
-	SQ_MAIN_WINDOW_STATUS_NONE,
-	SQ_MAIN_WINDOW_STATUS_IDLE,
-	SQ_MAIN_WINDOW_STATUS_BUSY
+    SQ_MAIN_WINDOW_STATUS_NONE,
+    SQ_MAIN_WINDOW_STATUS_IDLE,
+    SQ_MAIN_WINDOW_STATUS_BUSY
 }SQMainWindowStatus;
 
 typedef enum
 {
-	SQ_MAIN_WINDOW_NAVIGATION_INTERNAL,
-#ifdef ENABLE_TOOLBAR
-	SQ_MAIN_WINDOW_NAVIGATION_TOOL_BAR,
-#endif
-#ifdef ENABLE_PATHBAR
-	SQ_MAIN_WINDOW_NAVIGATION_PATH_BAR
-#endif
+    SQ_MAIN_WINDOW_NAVIGATION_INTERNAL,
+    SQ_MAIN_WINDOW_NAVIGATION_TOOL_BAR,
+    SQ_MAIN_WINDOW_NAVIGATION_PATH_BAR
 } SQMainWindowNavigationStyle;
 
 #define SQ_TYPE_MAIN_WINDOW_NAVIGATION_STYLE (sq_main_window_navigation_style_get_type())
@@ -42,109 +38,45 @@ typedef enum
 
 #define SQ_TYPE_MAIN_WINDOW sq_main_window_get_type()
 
-#define SQ_MAIN_WINDOW(obj)		 ( \
-		G_TYPE_CHECK_INSTANCE_CAST ((obj),	\
-			sq_main_window_get_type(),	  \
-			SQMainWindow))
+#define SQ_MAIN_WINDOW(obj)         ( \
+        G_TYPE_CHECK_INSTANCE_CAST ((obj),    \
+            sq_main_window_get_type(),      \
+            SQMainWindow))
 
-#define SQ_IS_MAIN_WINDOW(obj)	  ( \
-		G_TYPE_CHECK_INSTANCE_TYPE ((obj),	\
-			sq_main_window_get_type()))
+#define SQ_IS_MAIN_WINDOW(obj)      ( \
+        G_TYPE_CHECK_INSTANCE_TYPE ((obj),    \
+            sq_main_window_get_type()))
 
 #define SQ_MAIN_WINDOW_CLASS(class) ( \
-		G_TYPE_CHECK_CLASS_CAST ((class),	 \
-			sq_main_window_get_type(),	  \
-			SQMainWindowClass))
+        G_TYPE_CHECK_CLASS_CAST ((class),     \
+            sq_main_window_get_type(),      \
+            SQMainWindowClass))
 
 #define SQ_IS_MAIN_WINDOW_CLASS(class) ( \
-		G_TYPE_CHECK_CLASS_TYPE ((class),		\
-			sq_main_window_get_type()))
+        G_TYPE_CHECK_CLASS_TYPE ((class),        \
+            sq_main_window_get_type()))
 
 typedef struct _SQMainWindow SQMainWindow;
+typedef struct _SQMainWindowPriv SQMainWindowPriv;
 
 struct _SQMainWindow
 {
-	GtkWindow parent;
-	SQSettings *settings;
-	GtkIconTheme *icon_theme;
-	SQApplication *app;
-	GtkWidget *menu_bar;
-	GtkWidget *tool_bar;
-	GtkWidget *main_vbox;
-	SQWidgetFactory *widget_factory;
-	GtkWidget *throbber;
-	struct {
-		/* 'file' menu */
-		GtkWidget *menu_item_file;
-		GtkWidget *menu_file;
-		/* contents of 'file' menu */
-			GtkWidget *menu_item_new;
-			GtkWidget *menu_item_open;
-			GtkWidget *menu_item_properties;
-			GtkWidget *menu_item_close;
-			GtkWidget *menu_item_quit;
-		/***************************/
-
-
-		/* 'action' menu */
-		GtkWidget *menu_item_action;
-		GtkWidget *menu_action;
-		/* contents of 'action' menu */
-			GtkWidget *menu_item_add_files;
-			GtkWidget *menu_item_add_folders;
-			GtkWidget *menu_item_extract;
-			GtkWidget *menu_item_remove;
-			GtkWidget *menu_item_refresh;
-		/***************************/
-
-		/* 'view' menu */
-		GtkWidget *menu_item_view;
-		GtkWidget *menu_view;
-		/* contents of 'view' menu */
-			GtkWidget *menu_item_settings;
-		/***************************/
-
-		/* 'help' menu */
-		GtkWidget *menu_item_help;
-		GtkWidget *menu_help;
-		/* contents of 'help' menu */
-		GtkWidget *menu_item_about;
-
-	} menubar;
-	struct {
-		/* contents of 'archive' pane */
-		GtkToolItem *tool_item_new;
-		GtkToolItem *tool_item_open;
-
-		/* contents of 'action' pane */
-		GtkToolItem *tool_item_add_files;
-		GtkToolItem *tool_item_add_folders;
-		GtkToolItem *tool_item_extract;
-		GtkToolItem *tool_item_remove;
-		GtkToolItem *tool_item_stop;
-	} toolbar;
-	SQMainWindowNavigationStyle nav_style;
-	SQNavigationBar *navigationbar;
-	GtkAccelGroup *accel_group;
-	GtkWidget *notebook;
-	GtkWidget *statusbar;
-	GtkWidget *about_dlg;
+    GtkWindow parent;
+    SQMainWindowPriv *priv;
 };
 
 typedef struct _SQMainWindowClass SQMainWindowClass;
 
 struct _SQMainWindowClass
 {
-	GtkWindowClass parent;
+    GtkWindowClass parent;
 };
 
-GType	  sq_main_window_navigation_style_get_type();
+GType
+sq_main_window_get_type ();
 
-GtkWidget *sq_main_window_new(SQApplication *, GtkIconTheme *icon_theme);
-GtkWidget *sq_main_window_find_image(gchar *, GtkIconSize);
-GType	  sq_main_window_get_type ();
-
-gint sq_main_window_open_archive(SQMainWindow *window, GFile *file, gint replace);
+GtkWidget *
+sq_main_window_new ( SQApplication * );
 
 
 G_END_DECLS
diff --git a/src/message_dialog.c b/src/message_dialog.c
index 04599f4..b486734 100644
--- a/src/message_dialog.c
+++ b/src/message_dialog.c
@@ -22,7 +22,6 @@
 #include <libsqueeze/libsqueeze.h>
 
 #include "message_dialog.h"
-#include "widget_factory.h"
 
 static void
 sq_message_dialog_class_init(SQMessageDialogClass *archive_class);
diff --git a/src/notebook.c b/src/notebook.c
deleted file mode 100644
index de09a7c..0000000
--- a/src/notebook.c
+++ /dev/null
@@ -1,913 +0,0 @@
-/*
- *  This program 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 program 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 Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <string.h>
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gio/gio.h>
-#include <libxfce4util/libxfce4util.h>
-
-#include <libsqueeze/libsqueeze.h>
-#include "settings.h"
-#include "archive_store.h"
-#include "navigation_bar.h"
-#include "tool_bar.h"
-#include "path_bar.h"
-#include "notebook.h"
-#include "throbber.h"
-
-static void
-sq_notebook_class_init(SQNotebookClass *archive_class);
-
-static void
-sq_notebook_init(SQNotebook *archive);
-static void
-sq_notebook_dispose(GObject *object);
-
-static void
-sq_notebook_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void
-sq_notebook_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-static void
-sq_notebook_treeview_reset_columns(LSQArchive *archive, GtkTreeView *treeview);
-
-static SQArchiveStore *
-sq_notebook_get_store(SQNotebook *notebook, gint page_nr);
-static GtkTreeView *
-sq_notebook_get_tree_view(SQNotebook *notebook, gint page_nr);
-
-static void
-cb_notebook_close_archive(GtkButton *button, GtkWidget *child);
-
-static void
-cb_notebook_archive_refreshed(LSQArchive *archive, GtkTreeView *tree_view);
-static void
-cb_notebook_archive_state_changed(LSQArchive *archive, SQNotebook *notebook);
-static void
-cb_notebook_tab_archive_state_changed(LSQArchive *archive, GtkContainer *widget);
-static void
-cb_notebook_file_activated(SQArchiveStore *, LSQArchiveIter *, SQNotebook *);
-
-static void
-cb_sq_notebook_page_switched(SQNotebook *notebook, GtkNotebookPage *, guint page_nr, gpointer data);
-static void
-cb_sq_notebook_page_removed(SQNotebook *notebook, gpointer data);
-
-static void
-cb_sq_notebook_notify_proxy(GObject *obj, GParamSpec *pspec, gpointer user_data);
-
-enum {
-	SQ_NOTEBOOK_MULTI_TAB = 1,
-	SQ_NOTEBOOK_STORE_SHOW_FULL_PATH,
-	SQ_NOTEBOOK_STORE_SHOW_ICONS,
-	SQ_NOTEBOOK_STORE_SORT_FOLDERS_FIRST,
-	SQ_NOTEBOOK_STORE_SORT_CASE_SENSITIVE,
-	SQ_NOTEBOOK_TREE_RULES_HINT
-};
-
-enum
-{
-	SQ_NOTEBOOK_SIGNAL_ARCHIVE_REMOVED = 0,
-	SQ_NOTEBOOK_SIGNAL_PAGE_UP,
-	SQ_NOTEBOOK_SIGNAL_PAGE_DOWN,
-	SQ_NOTEBOOK_SIGNAL_FILE_ACTIVATED,
-	SQ_NOTEBOOK_SIGNAL_STATE_CHANGED, /* is emitted when the state of the active archive changed */
-	SQ_NOTEBOOK_SIGNAL_COUNT
-};
-
-static gint sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_COUNT];
-
-static GObjectClass *parent_class;
-
-GType
-sq_notebook_get_type (void)
-{
-	static GType sq_notebook_type = 0;
-
- 	if (!sq_notebook_type)
-	{
- 		static const GTypeInfo sq_notebook_info = 
-		{
-			sizeof (SQNotebookClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) sq_notebook_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL,
-			sizeof (SQNotebook),
-			0,
-			(GInstanceInitFunc) sq_notebook_init,
-			NULL
-		};
-
-		sq_notebook_type = g_type_register_static (GTK_TYPE_NOTEBOOK, "SQNotebook", &sq_notebook_info, 0);
-	}
-	return sq_notebook_type;
-}
-
-static void
-sq_notebook_class_init(SQNotebookClass *notebook_class)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (notebook_class);
-	GParamSpec *pspec = NULL;
-
-	parent_class = gtk_type_class (GTK_TYPE_NOTEBOOK);
-
-	object_class->set_property = sq_notebook_set_property;
-	object_class->get_property = sq_notebook_get_property;
-	object_class->dispose	  = sq_notebook_dispose;
-
-	sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_ARCHIVE_REMOVED] = g_signal_new("archive-removed",
-			G_TYPE_FROM_CLASS(notebook_class),
-			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-			0,
-			NULL,
-			NULL,
-			g_cclosure_marshal_VOID__VOID,
-			G_TYPE_NONE,
-			0,
-			NULL);
-
-	sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_PAGE_UP] = g_signal_new("page-up",
-			G_TYPE_FROM_CLASS(notebook_class),
-			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0,
-			NULL, NULL,
-			g_cclosure_marshal_VOID__VOID,
-			G_TYPE_NONE, 0, NULL);
-
-	sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_PAGE_DOWN] = g_signal_new("page-down",
-			G_TYPE_FROM_CLASS(notebook_class),
-			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0,
-			NULL, NULL,
-			g_cclosure_marshal_VOID__VOID,
-			G_TYPE_NONE, 0, NULL);
-
-	sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_FILE_ACTIVATED] = g_signal_new("file-activated",
-			G_TYPE_FROM_CLASS(notebook_class),
-			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0,
-			NULL, NULL,
-			g_cclosure_marshal_VOID__POINTER,
-			G_TYPE_NONE, 1, G_TYPE_POINTER, NULL);
-
-	sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_STATE_CHANGED] = g_signal_new("archive-state-changed",
-			G_TYPE_FROM_CLASS(notebook_class),
-			G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, 0,
-			NULL, NULL,
-			g_cclosure_marshal_VOID__POINTER,
-			G_TYPE_NONE, 1, G_TYPE_OBJECT, NULL);
-
-	pspec = g_param_spec_boolean("multi_tab",
-		"",
-		"",
-		TRUE,
-		G_PARAM_READWRITE); g_object_class_install_property(object_class, SQ_NOTEBOOK_MULTI_TAB, pspec); 
-
-	pspec = g_param_spec_boolean("show-full-path",
-		_("Show full path"),
-		_("Show the full path strings for each entry"),
-		FALSE,
-		G_PARAM_READWRITE);
-	g_object_class_install_property(object_class, SQ_NOTEBOOK_STORE_SHOW_FULL_PATH, pspec);
-
-	pspec = g_param_spec_boolean("show-icons",
-		_("Show mime icons"),
-		_("Show the mime type icons for each entry"),
-		FALSE,
-		G_PARAM_READWRITE);
-	g_object_class_install_property(object_class, SQ_NOTEBOOK_STORE_SHOW_ICONS, pspec);
-
-	pspec = g_param_spec_boolean("sort_folders_first",
-		_("Sort folders before files"),
-		_("The folders will be put at the top of the list"),
-		TRUE,
-		G_PARAM_READWRITE);
-	g_object_class_install_property(object_class, SQ_NOTEBOOK_STORE_SORT_FOLDERS_FIRST, pspec);
-
-	pspec = g_param_spec_boolean("sort_case_sensitive",
-		_("Sort text case sensitive"),
-		_("Sort text case sensitive"),
-		TRUE,
-		G_PARAM_READWRITE);
-	g_object_class_install_property(object_class, SQ_NOTEBOOK_STORE_SORT_CASE_SENSITIVE, pspec);
-
-	pspec = g_param_spec_boolean("rules-hint",
-		_("Rules hint"),
-		_("Make the row background colors alternate"),
-		FALSE,
-		G_PARAM_READWRITE);
-	g_object_class_install_property(object_class, SQ_NOTEBOOK_TREE_RULES_HINT, pspec);
-}
-
-static void
-sq_notebook_init(SQNotebook *notebook)
-{
-	g_signal_connect(G_OBJECT(notebook), "switch-page", G_CALLBACK(cb_sq_notebook_page_switched), NULL);
-	g_signal_connect(G_OBJECT(notebook), "archive-removed", G_CALLBACK(cb_sq_notebook_page_removed), NULL);
-
-	g_signal_connect(G_OBJECT(notebook), "page-up", G_CALLBACK(gtk_notebook_next_page),  NULL);
-	g_signal_connect(G_OBJECT(notebook), "page-down", G_CALLBACK(gtk_notebook_prev_page), NULL);
-
-	notebook->settings = sq_settings_new();
-
-	notebook->current_page_fix = 0;
-	notebook->props._rules_hint = sq_settings_read_bool_entry(notebook->settings, "RulesHint", FALSE);
-	notebook->props._show_full_path = sq_settings_read_bool_entry(notebook->settings, "ShowFullPath", FALSE);
-	notebook->props._show_icons = sq_settings_read_bool_entry(notebook->settings, "ShowIcons", TRUE);
-	notebook->props._sort_folders_first = sq_settings_read_bool_entry(notebook->settings, "SortFoldersFirst", TRUE);
-	notebook->props._sort_case_sensitive = sq_settings_read_bool_entry(notebook->settings, "SortCaseSensitive", TRUE);
-	notebook->multi_tab = TRUE;
-	notebook->accel_group = NULL;
-
-	notebook->tool_tips = gtk_tooltips_new();
-	gtk_tooltips_enable(notebook->tool_tips);
-	gtk_notebook_set_tab_border(GTK_NOTEBOOK(notebook), 0);
-	gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook), FALSE);
-	gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE);
-}
-
-static void
-sq_notebook_dispose(GObject *object)
-{
-	/* TODO: unref archive_stores */
-	GtkNotebook *notebook = GTK_NOTEBOOK(object);
-	SQNotebook *sq_notebook = SQ_NOTEBOOK(object);
-	gint n;
-	gint i = 0;
-
-	if(sq_notebook->settings)
-	{
-		sq_settings_write_bool_entry(sq_notebook->settings, "RulesHint", sq_notebook->props._rules_hint);
-		sq_settings_write_bool_entry(sq_notebook->settings, "ShowFullPath", sq_notebook->props._show_full_path);
-		sq_settings_write_bool_entry(sq_notebook->settings, "ShowIcons", sq_notebook->props._show_icons);
-		sq_settings_write_bool_entry(sq_notebook->settings, "SortFoldersFirst", sq_notebook->props._sort_folders_first);
-		sq_settings_write_bool_entry(sq_notebook->settings, "SortCaseSensitive", sq_notebook->props._sort_case_sensitive);
-
-		sq_settings_save(sq_notebook->settings);
-
-		g_object_unref(G_OBJECT(sq_notebook->settings));
-		sq_notebook->settings = NULL;
-	}
-
-	n = gtk_notebook_get_n_pages(notebook);
-	for(i = n-1; i >= 0; --i)
-	{
-		GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), i);
-		GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
-		GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
-		
-		LSQArchive *archive = sq_archive_store_get_archive(SQ_ARCHIVE_STORE(archive_store));
-
-		if(archive)
-			g_signal_handlers_disconnect_by_func(archive, cb_notebook_archive_refreshed, treeview);
-
-		if(SQ_NOTEBOOK(notebook)->navigation_bar)
-			sq_navigation_bar_set_store(((SQNotebook *)notebook)->navigation_bar, NULL);
-
-		g_object_unref(archive_store);
-
-		lsq_close_archive(archive);
-		gtk_notebook_remove_page(notebook, i);
-	}
-
-	parent_class->dispose(object);
-}
-
-GtkWidget *
-sq_notebook_new(SQNavigationBar *bar, gboolean use_tabs, GtkAccelGroup *accel_group)
-{
-	SQNotebook *notebook;
-
-	notebook = g_object_new(SQ_TYPE_NOTEBOOK, NULL);
-
-	sq_notebook_set_navigation_bar(notebook, bar);
-
-	notebook->multi_tab = use_tabs;
-	notebook->accel_group = accel_group;
-
-	gtk_widget_add_accelerator(GTK_WIDGET(notebook), "page-up", accel_group, 0xff55, GDK_CONTROL_MASK, 0);
-	gtk_widget_add_accelerator(GTK_WIDGET(notebook), "page-down", accel_group, 0xff56, GDK_CONTROL_MASK, 0);
-
-	return (GtkWidget *)notebook;
-}
-
-static void
-sq_notebook_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
-	switch(prop_id)
-	{
-		case SQ_NOTEBOOK_MULTI_TAB:
-			SQ_NOTEBOOK(object)->multi_tab = g_value_get_boolean(value);		
-			break;
-		case SQ_NOTEBOOK_STORE_SHOW_FULL_PATH:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				sq_archive_store_set_show_full_path(store, g_value_get_boolean(value));
-			SQ_NOTEBOOK(object)->props._show_full_path = g_value_get_boolean(value);
-			break;
-		}
-		case SQ_NOTEBOOK_STORE_SHOW_ICONS:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				sq_archive_store_set_show_icons(store, g_value_get_boolean(value));
-			SQ_NOTEBOOK(object)->props._show_icons = g_value_get_boolean(value);
-			break;
-		}
-		case SQ_NOTEBOOK_STORE_SORT_FOLDERS_FIRST:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				sq_archive_store_set_sort_folders_first(store, g_value_get_boolean(value));
-			SQ_NOTEBOOK(object)->props._sort_folders_first = g_value_get_boolean(value);
-			break;
-		}
-		case SQ_NOTEBOOK_STORE_SORT_CASE_SENSITIVE:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				sq_archive_store_set_sort_case_sensitive(store, g_value_get_boolean(value));
-			SQ_NOTEBOOK(object)->props._sort_case_sensitive = g_value_get_boolean(value);
-			break;
-		}
-		case SQ_NOTEBOOK_TREE_RULES_HINT:
-		{
-			GtkTreeView *tree = sq_notebook_get_tree_view(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(tree)
-				gtk_tree_view_set_rules_hint(tree, g_value_get_boolean(value));
-			SQ_NOTEBOOK(object)->props._rules_hint = g_value_get_boolean(value);
-			break;
-		}
-	}
-}
-
-static void
-sq_notebook_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
-	switch(prop_id)
-	{
-		case SQ_NOTEBOOK_MULTI_TAB:
-			g_value_set_boolean(value, SQ_NOTEBOOK(object)->multi_tab);
-			break;
-		case SQ_NOTEBOOK_STORE_SHOW_FULL_PATH:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				g_value_set_boolean(value, sq_archive_store_get_show_full_path(store));
-			else
-				g_value_set_boolean(value, SQ_NOTEBOOK(object)->props._show_full_path);
-			break;
-		}
-		case SQ_NOTEBOOK_STORE_SHOW_ICONS:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				g_value_set_boolean(value, sq_archive_store_get_show_icons(store));
-			else
-				g_value_set_boolean(value, SQ_NOTEBOOK(object)->props._show_icons);
-			break;
-		}
-		case SQ_NOTEBOOK_STORE_SORT_FOLDERS_FIRST:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				g_value_set_boolean(value, sq_archive_store_get_sort_folders_first(store));
-			else
-				g_value_set_boolean(value, SQ_NOTEBOOK(object)->props._sort_folders_first);
-			break;
-		}
-		case SQ_NOTEBOOK_STORE_SORT_CASE_SENSITIVE:
-		{
-			SQArchiveStore *store = sq_notebook_get_store(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(store)
-				g_value_set_boolean(value, sq_archive_store_get_sort_case_sensitive(store));
-			else
-				g_value_set_boolean(value, SQ_NOTEBOOK(object)->props._sort_case_sensitive);
-			break;
-		}
-		case SQ_NOTEBOOK_TREE_RULES_HINT:
-		{
-			GtkTreeView *tree = sq_notebook_get_tree_view(SQ_NOTEBOOK(object), SQ_NOTEBOOK(object)->current_page_fix);
-			if(tree)
-				g_value_set_boolean(value, gtk_tree_view_get_rules_hint(tree));
-			else
-				g_value_set_boolean(value, SQ_NOTEBOOK(object)->props._rules_hint);
-			break;
-		}
-	}
-}
-
-gboolean
-sq_notebook_get_multi_tab(SQNotebook *notebook)
-{
-	return notebook->multi_tab;
-}
-
-SQArchiveStore *
-sq_notebook_get_active_store(SQNotebook *notebook)
-{
-	gint page_nr = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
-
-	return sq_notebook_get_store(notebook, page_nr);
-}
-
-static SQArchiveStore *
-sq_notebook_get_store(SQNotebook *notebook, gint page_nr)
-{
-	GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_nr);
-	GtkWidget *treeview;
-	GtkTreeModel *archive_store;
-	if(!scrolledwindow)
-		return NULL;
-	treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
-	archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
-	return SQ_ARCHIVE_STORE(archive_store);
-}
-
-GtkTreeView *
-sq_notebook_get_active_tree_view(SQNotebook *notebook)
-{
-	gint page_nr = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
-
-	return sq_notebook_get_tree_view(notebook, page_nr);
-}
-
-static GtkTreeView *
-sq_notebook_get_tree_view(SQNotebook *notebook, gint page_nr)
-{
-	GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_nr);
-	GtkWidget *treeview;
-	if(!scrolledwindow)
-		return NULL;
-	treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
-	return GTK_TREE_VIEW(treeview);
-}
-
-void
-sq_notebook_set_navigation_bar(SQNotebook *notebook, SQNavigationBar *bar)
-{
-	if(notebook->navigation_bar)
-	{
-		sq_navigation_bar_set_store(notebook->navigation_bar, NULL);
-		gtk_widget_unref(GTK_WIDGET(notebook->navigation_bar));
-	}
-
-	notebook->props._up_dir = TRUE;
-
-	if(bar)
-	{
-#ifdef ENABLE_TOOLBAR
-		if(SQ_IS_TOOL_BAR(bar))
-			notebook->props._up_dir = FALSE;
-#endif
-#ifdef ENABLE_PATHBAR
-		if(SQ_IS_PATH_BAR(bar))
-			notebook->props._up_dir = FALSE;
-#endif
-	}
-	
-	if(bar)
-		gtk_widget_ref(GTK_WIDGET(bar));
-
-	if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
-	{
-		SQArchiveStore *archive_store = sq_notebook_get_active_store(notebook);
-		notebook->navigation_bar = bar;
-		if(bar)
-			sq_navigation_bar_set_store(notebook->navigation_bar, archive_store);
-		if(archive_store)
-			g_object_set(G_OBJECT(archive_store), "show_up_dir", notebook->props._up_dir, NULL);
-	}
-	else
-		notebook->navigation_bar = bar;
-
-}
-
-void
-sq_notebook_add_archive(SQNotebook *notebook, LSQArchive *archive, gboolean new_archive)
-{
-	GtkWidget *lbl_hbox = gtk_hbox_new(FALSE, 0);
-    gchar *filename = lsq_archive_get_filename(archive);
-    gchar *filepath = lsq_archive_get_path(archive);
-	GtkWidget *label = gtk_label_new(filename);
-	GtkWidget *archive_image = gtk_image_new_from_icon_name("unknown", GTK_ICON_SIZE_MENU);
-	GtkWidget *throbber = sq_throbber_new();
-	GtkWidget *alignment = gtk_alignment_new(0.5,0.5,1,1);
-	GtkWidget *close_button;
-	GtkWidget *close_image;
-	GtkWidget *scroll_window;
-	GtkWidget *tree_view;
-	GtkTreeSelection *selection;
-	GtkTreeModel *tree_model;
-	gint page_nr;
-	
-	gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 4, 0, 0, 0);
-
-	gtk_container_add(GTK_CONTAINER(alignment), throbber);
-
-	/*thunar_vfs_mime_info_lookup_icon_name(lsq_archive_get_mimetype(archive), notebook->icon_theme), GTK_ICON_SIZE_MENU);*/
-	close_button = gtk_button_new();
-	close_image = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
-	scroll_window = gtk_scrolled_window_new(NULL, NULL);
-
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
-	gtk_button_set_image(GTK_BUTTON(close_button), close_image);
-	gtk_button_set_relief(GTK_BUTTON(close_button), GTK_RELIEF_NONE);
-
-	gtk_widget_set_size_request(lbl_hbox, -1, 22);
-
-	gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_MIDDLE);
-	gtk_label_set_max_width_chars(GTK_LABEL(label), 20);
-    
-	gtk_tooltips_set_tip(notebook->tool_tips, label, filepath, NULL);
-
-	tree_view = gtk_tree_view_new();
-	g_signal_connect(G_OBJECT(tree_view), "notify", G_CALLBACK(cb_sq_notebook_notify_proxy), notebook);
-	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree_view), TRUE);
-
-	selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (tree_view) );
-	gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
-
-	tree_model = sq_archive_store_new(archive, notebook->props._show_icons, notebook->props._up_dir, notebook->icon_theme);
-	sq_archive_store_set_show_full_path(SQ_ARCHIVE_STORE(tree_model), notebook->props._show_full_path);
-	sq_archive_store_set_sort_folders_first(SQ_ARCHIVE_STORE(tree_model), notebook->props._sort_folders_first);
-	sq_archive_store_set_sort_case_sensitive(SQ_ARCHIVE_STORE(tree_model), notebook->props._sort_case_sensitive);
-	g_signal_connect(G_OBJECT(tree_model), "notify", G_CALLBACK(cb_sq_notebook_notify_proxy), notebook);
-
-	gtk_box_pack_start(GTK_BOX(lbl_hbox), archive_image, FALSE, FALSE, 3);
-	gtk_box_pack_start(GTK_BOX(lbl_hbox), alignment, FALSE, FALSE, 3);
-	gtk_box_pack_start(GTK_BOX(lbl_hbox), label, TRUE, TRUE, 0);
-	gtk_box_pack_start(GTK_BOX(lbl_hbox), close_button, FALSE, FALSE, 0);
-	gtk_widget_show_all(lbl_hbox);
-	gtk_widget_show_all(tree_view);
-	gtk_widget_show(scroll_window);
-
-	g_signal_connect(G_OBJECT(archive), "refreshed", G_CALLBACK(cb_notebook_archive_refreshed), tree_view);
-	g_signal_connect(G_OBJECT(archive), "state-changed", G_CALLBACK(cb_notebook_archive_state_changed), notebook);
-	g_signal_connect(G_OBJECT(archive), "state-changed", G_CALLBACK(cb_notebook_tab_archive_state_changed), lbl_hbox);
-
-	g_signal_connect(G_OBJECT(close_button), "clicked", G_CALLBACK(cb_notebook_close_archive), scroll_window);
-	g_signal_connect(G_OBJECT(tree_model), "file-activated", G_CALLBACK(cb_notebook_file_activated), notebook);
-
-
-	sq_archive_store_connect_treeview(SQ_ARCHIVE_STORE(tree_model), GTK_TREE_VIEW(tree_view));
-
-	gtk_tree_view_set_model(GTK_TREE_VIEW(tree_view), tree_model);
-	gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree_view), notebook->props._rules_hint);
-
-  //FIXME: for now it's here, should it be?
-	sq_notebook_treeview_reset_columns(archive, GTK_TREE_VIEW(tree_view));
-
-	if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), TRUE);
-	else
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE);
-
-	gtk_container_add(GTK_CONTAINER(scroll_window), tree_view);
-	
-	page_nr = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scroll_window, lbl_hbox);
-	if(page_nr >= 0)
-	{
-		gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), page_nr);
-		gtk_widget_grab_focus(tree_view);
-	}
-
-	if(new_archive == FALSE)
-	{
-		lsq_archive_operate(archive, LSQ_COMMAND_TYPE_REFRESH, NULL, NULL);
-	}
-    g_free(filename);
-    g_free(filepath);
-
-}
-
-static void
-cb_notebook_close_archive(GtkButton *button, GtkWidget *child)
-{
-	GtkNotebook *notebook = GTK_NOTEBOOK(gtk_widget_get_parent(child));
-	gint n;
-
-	GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(child));
-	GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
-
-	LSQArchive *archive = sq_archive_store_get_archive(SQ_ARCHIVE_STORE(archive_store));
-
-	if(archive)
-	{
-		g_signal_handlers_disconnect_by_func(archive, cb_notebook_archive_refreshed, treeview);
-	}
-	if(SQ_NOTEBOOK(notebook)->navigation_bar)
-		sq_navigation_bar_set_store(((SQNotebook *)notebook)->navigation_bar, NULL);
-	g_object_unref(archive_store);
-
-	lsq_close_archive(archive);
-
-	n = gtk_notebook_page_num(notebook, child);
-	gtk_notebook_remove_page(notebook, n);
-	g_signal_emit(G_OBJECT(notebook), sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_ARCHIVE_REMOVED], 0, NULL);
-}
-
-void
-sq_notebook_close_active_archive(SQNotebook *notebook)
-{
-	gint n = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
-	GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
-	GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
-	GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
-
-	LSQArchive *archive = sq_archive_store_get_archive(SQ_ARCHIVE_STORE(archive_store));
-
-	if(archive)
-		g_signal_handlers_disconnect_by_func(archive, cb_notebook_archive_refreshed, treeview);
-	if(SQ_NOTEBOOK(notebook)->navigation_bar)
-		sq_navigation_bar_set_store(notebook->navigation_bar, NULL);
-	g_object_unref(archive_store);
-
-	lsq_close_archive(archive);
-
-	gtk_notebook_remove_page(GTK_NOTEBOOK(notebook), n);
-	g_signal_emit(G_OBJECT(notebook), sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_ARCHIVE_REMOVED], 0, NULL);
-}
-
-void
-cb_notebook_archive_refreshed(LSQArchive *archive, GtkTreeView *treeview)
-{
-	GtkTreeModel *archive_store = gtk_tree_view_get_model(treeview);
-	/* 
-	 * Some archives are done refreshing so fast there is not even an
-	 * archive store to accomodate them.
-	 */
-	g_object_ref(archive_store);
-	gtk_tree_view_set_model(treeview, NULL);
-	sq_archive_store_set_archive(SQ_ARCHIVE_STORE(archive_store), archive);
-	gtk_tree_view_set_model(treeview, archive_store);
-	g_object_unref(archive_store);
-	sq_notebook_treeview_reset_columns(archive, treeview);
-}
-
-static void
-cb_notebook_archive_state_changed(LSQArchive *archive, SQNotebook *notebook)
-{
-	if(sq_notebook_is_active_archive(notebook, archive))
-		g_signal_emit(G_OBJECT(notebook), sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_STATE_CHANGED], 0, archive, NULL);
-}
-
-static void
-cb_notebook_tab_archive_state_changed(LSQArchive *archive, GtkContainer *widget)
-{
-	GList *children = gtk_container_get_children(widget);
-	switch(lsq_archive_get_state(archive))
-	{
-        case LSQ_ARCHIVE_STATE_IDLE:
-            gtk_widget_show(GTK_WIDGET(children->data));
-            sq_throbber_set_animated(SQ_THROBBER(gtk_bin_get_child(GTK_BIN(children->next->data))), FALSE);
-            gtk_widget_hide(GTK_WIDGET(children->next->data));
-            break;
-        default:
-            gtk_widget_hide(GTK_WIDGET(children->data));
-            sq_throbber_set_animated(SQ_THROBBER(gtk_bin_get_child(GTK_BIN(children->next->data))), TRUE);
-            gtk_widget_show(GTK_WIDGET(children->next->data));
-            break;
-	}
-
-	g_list_free(children);
-}
-
-static void
-sq_notebook_treeview_reset_columns(LSQArchive *archive, GtkTreeView *treeview)
-{
-	GtkCellRenderer *renderer = NULL;
-	GtkTreeViewColumn *column = NULL;
-	guint x = 0;
-
-	GList *columns = gtk_tree_view_get_columns(treeview);
-	gboolean show_only_filenames = FALSE;
-
-	while(columns)
-	{
-		gtk_tree_view_remove_column(treeview, columns->data);
-		columns = columns->next;
-	}
-	g_list_free(columns);
-
-	column = gtk_tree_view_column_new();
-
-	renderer = gtk_cell_renderer_pixbuf_new();
-	g_object_set(G_OBJECT(renderer), "stock-size", GTK_ICON_SIZE_SMALL_TOOLBAR, NULL);
-	gtk_tree_view_column_pack_start(column, renderer, FALSE);
-	gtk_tree_view_column_set_attributes(column, renderer, "gicon", SQ_ARCHIVE_STORE_EXTRA_PROP_ICON, NULL);
-
-	renderer = gtk_cell_renderer_text_new();
-	gtk_tree_view_column_pack_start(column, renderer, TRUE);
-	gtk_tree_view_column_set_attributes(column, renderer, "text", LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT, NULL);
-
-	gtk_tree_view_column_set_resizable(column, TRUE);
-	gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-	gtk_tree_view_column_set_sort_column_id(column, LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT);
-	gtk_tree_view_column_set_title(column, lsq_archive_get_entry_property_name(archive, LSQ_ARCHIVE_PROP_FILENAME));
-	gtk_tree_view_append_column(treeview, column);
-
-	if(!show_only_filenames)
-	{
-		for(x = LSQ_ARCHIVE_PROP_USER; x < lsq_archive_n_entry_properties(archive); ++x)
-		{
-			switch(lsq_archive_get_entry_property_type(archive, x))
-			{
-        case(G_TYPE_CHAR):
-				case(G_TYPE_DOUBLE):
-				case(G_TYPE_FLOAT):
-				case(G_TYPE_INT):
-				case(G_TYPE_INT64):
-				case(G_TYPE_LONG):
-				case(G_TYPE_STRING):
-				case(G_TYPE_UINT):
-				case(G_TYPE_UINT64):
-				case(G_TYPE_ULONG):
-					renderer = gtk_cell_renderer_text_new();
-					column = gtk_tree_view_column_new_with_attributes(lsq_archive_get_entry_property_name(archive, x), renderer, "text", x+SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT, NULL);
-					break;
-        default:
-#ifdef DEBUG
-          g_debug("Should not be reached");
-#endif
-          continue;
-			}
-			gtk_tree_view_column_set_resizable(column, TRUE);
-			gtk_tree_view_column_set_sort_column_id(column, x+SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT);
-			gtk_tree_view_append_column(treeview, column);
-		}
-	}
-	gtk_tree_view_set_search_column(treeview, LSQ_ARCHIVE_PROP_FILENAME + SQ_ARCHIVE_STORE_EXTRA_PROP_COUNT);
-}
-
-void
-sq_notebook_set_icon_theme(SQNotebook *notebook, GtkIconTheme *icon_theme)
-{
-	notebook->icon_theme = icon_theme;
-}
-
-static void
-cb_sq_notebook_page_switched(SQNotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
-{
-	SQArchiveStore *archive_store = sq_notebook_get_store(notebook, page_nr);
-	if(notebook->navigation_bar)
-		sq_navigation_bar_set_store(notebook->navigation_bar, archive_store);
-	if(archive_store)
-	{
-		g_object_set(G_OBJECT(archive_store), "show_up_dir", notebook->props._up_dir, NULL);
-	}
-	notebook->current_page_fix = page_nr;
-	g_object_notify(G_OBJECT(notebook), "show-icons");
-	g_object_notify(G_OBJECT(notebook), "rules-hint");
-}
-
-static void
-cb_sq_notebook_page_removed(SQNotebook *notebook, gpointer data)
-{
-	if(!gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
-	{
-		if(notebook->navigation_bar)
-			sq_navigation_bar_set_store(notebook->navigation_bar, NULL);
-	}
-	if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)) > 1)
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), TRUE);
-	else
-		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE);
-}
-
-static void
-cb_notebook_file_activated(SQArchiveStore *store, LSQArchiveIter *iter, SQNotebook *notebook)
-{
-	g_signal_emit(G_OBJECT(notebook), sq_notebook_signals[SQ_NOTEBOOK_SIGNAL_FILE_ACTIVATED], 0, iter, NULL);
-}
-
-gboolean
-sq_notebook_is_active_archive(SQNotebook *notebook, LSQArchive *archive)
-{
-	SQArchiveStore *archive_store = sq_notebook_get_active_store(notebook);
-	LSQArchive * lp_archive;
-	if(!archive_store)
-		return FALSE;
-	lp_archive = sq_archive_store_get_archive(archive_store);
-	if(lp_archive == archive)
-		return TRUE;
-	return FALSE;
-}
-
-void
-sq_notebook_get_active_archive(SQNotebook *notebook, LSQArchive **lp_archive)
-{
-	gint n = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
-		
-	sq_notebook_page_get_archive(notebook, lp_archive, n);
-}
-
-GtkWidget *
-sq_notebook_get_active_child(SQNotebook *notebook)
-{
-	gint n = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
-
-	return gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
-}
-
-void
-sq_notebook_page_set_archive(SQNotebook *notebook, LSQArchive *archive, gint n)
-{
-	if(gtk_notebook_get_n_pages(GTK_NOTEBOOK(notebook)))
-	{
-		GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
-		GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
-		GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
-
-		sq_archive_store_set_archive(SQ_ARCHIVE_STORE(store), archive);
-
-		g_signal_connect(G_OBJECT(archive), "refreshed", G_CALLBACK(cb_notebook_archive_refreshed), treeview);
-
-		lsq_archive_operate(archive, LSQ_COMMAND_TYPE_REFRESH, NULL, NULL);
-
-
-		gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), store);
-	}
-	else
-		sq_notebook_add_archive(SQ_NOTEBOOK(notebook), archive, FALSE);
-}
-
-GSList *
-sq_notebook_get_selected_items(SQNotebook *notebook)
-{
-	GtkWidget *scrolledwindow = sq_notebook_get_active_child(notebook);
-	GtkTreeIter iter;
-	GSList *filenames = NULL;
-
-	GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
-	GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
-	GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(treeview));
-	GList *rows = gtk_tree_selection_get_selected_rows(selection, &store);
-	GList *_rows = rows;
-	while(_rows)
-	{
-		LSQArchiveIter *entry;
-		gtk_tree_model_get_iter(store, &iter, _rows->data);
-		entry = sq_archive_store_get_archive_iter(SQ_ARCHIVE_STORE(store), &iter);
-
-		lsq_archive_iter_ref(entry);
-		filenames = g_slist_prepend(filenames, entry);
-
-		_rows = _rows->next;
-	}
-	g_list_free(rows);
-	
-	return filenames;
-}
-		
-
-void
-sq_notebook_page_get_archive(SQNotebook *notebook, LSQArchive **lp_archive, gint n)
-{
-	SQArchiveStore *store = sq_notebook_get_store(notebook, n);
-		
-	if(lp_archive)
-		(*lp_archive) = sq_archive_store_get_archive(store);
-}
-
-static void
-cb_sq_notebook_notify_proxy(GObject *obj, GParamSpec *pspec, gpointer user_data)
-{
-	if(strcmp(g_param_spec_get_name(pspec), "show-icons") == 0)
-	{
-		GtkTreeView *treeview;
-		SQArchiveStore *store;
-
-		g_object_notify(user_data, g_param_spec_get_name(pspec));
-
-		treeview = sq_notebook_get_active_tree_view(SQ_NOTEBOOK(user_data));
-		store = SQ_ARCHIVE_STORE(gtk_tree_view_get_model(treeview));
-
-		sq_notebook_treeview_reset_columns(sq_archive_store_get_archive(store), treeview);
-	}
-	if(strcmp(g_param_spec_get_name(pspec), "show-full-path") == 0 || strcmp(g_param_spec_get_name(pspec), "sort-folders-first") == 0 || strcmp(g_param_spec_get_name(pspec), "sort-case-sensitive") == 0)
-	{
-		g_object_notify(user_data, g_param_spec_get_name(pspec));
-	}
-	if(strcmp(g_param_spec_get_name(pspec), "rules-hint") == 0)
-	{
-		g_object_notify(user_data, g_param_spec_get_name(pspec));
-	}
-}
-
diff --git a/src/notebook.h b/src/notebook.h
deleted file mode 100644
index 0366ba1..0000000
--- a/src/notebook.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *  This program 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 program 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 Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef __SQRCHIVER_NOTEBOOK_H__
-#define __SQRCHIVER_NOTEBOOK_H__
-G_BEGIN_DECLS
-
-#define SQ_TYPE_NOTEBOOK sq_notebook_get_type()
-
-#define SQ_NOTEBOOK(obj)		 ( \
-		G_TYPE_CHECK_INSTANCE_CAST ((obj),	\
-			sq_notebook_get_type(),	  \
-			SQNotebook))
-
-#define SQ_IS_NOTEBOOK(obj)	  ( \
-		G_TYPE_CHECK_INSTANCE_TYPE ((obj),	\
-			sq_notebook_get_type()))
-
-#define SQ_NOTEBOOK_CLASS(class) ( \
-		G_TYPE_CHECK_CLASS_CAST ((class),	 \
-			sq_notebook_get_type(),	  \
-			SQNotebookClass))
-
-#define SQ_IS_NOTEBOOK_CLASS(class) ( \
-		G_TYPE_CHECK_CLASS_TYPE ((class),		\
-			sq_notebook_get_type()))
-
-typedef struct _SQNotebook SQNotebook;
-
-struct _SQNotebook
-{
-	GtkNotebook parent;
-	SQNavigationBar *navigation_bar;
-	gboolean multi_tab;
-	SQSettings *settings;
-	struct
-	{
-		gboolean _show_full_path;
-		gboolean _show_icons;
-		gboolean _up_dir;
-		gboolean _sort_folders_first;
-		gboolean _sort_case_sensitive;
-		gboolean _rules_hint;
-	} props;
-	GtkIconTheme *icon_theme;
-	GtkAccelGroup *accel_group;
-	GtkTooltips *tool_tips;
-	gint current_page_fix;
-};
-
-typedef struct _SQNotebookClass SQNotebookClass;
-
-struct _SQNotebookClass
-{
-	GtkNotebookClass parent;
-};
-
-GtkWidget  *sq_notebook_new (SQNavigationBar *, gboolean , GtkAccelGroup *);
-GType	   sq_notebook_get_type ();
-
-void		sq_notebook_set_navigation_bar(SQNotebook *, SQNavigationBar *);
-void		sq_notebook_add_archive(SQNotebook *, LSQArchive *, gboolean);
-void		sq_notebook_page_set_archive(SQNotebook *, LSQArchive *, gint n);
-void		sq_notebook_page_get_archive(SQNotebook *, LSQArchive **, gint n);
-void		sq_notebook_set_icon_theme(SQNotebook *, GtkIconTheme *);
-void		sq_notebook_get_active_archive(SQNotebook *, LSQArchive **);
-gboolean	sq_notebook_is_active_archive(SQNotebook *, LSQArchive *);
-GtkWidget  *sq_notebook_get_active_child(SQNotebook *notebook);
-SQArchiveStore *sq_notebook_get_active_store(SQNotebook *notebook);
-GtkTreeView *sq_notebook_get_active_tree_view(SQNotebook *notebook);
-gboolean	sq_notebook_get_multi_tab(SQNotebook *notebook);
-void		sq_notebook_close_active_archive(SQNotebook *);
-
-GSList	 *sq_notebook_get_selected_items(SQNotebook *notebook);
-
-G_END_DECLS
-#endif /* __SQRCHIVER_NOTEBOOK_H__ */
diff --git a/src/widget_factory.c b/src/widget_factory.c
deleted file mode 100644
index 33a3c69..0000000
--- a/src/widget_factory.c
+++ /dev/null
@@ -1,1084 +0,0 @@
-/*
- *  This program 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 program 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 Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <config.h>
-#include <string.h>
-#include <gtk/gtk.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <glib-object.h> 
-#include <signal.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <gio/gio.h>
-#include <libsqueeze/libsqueeze.h>
-
-#include "widget_factory.h"
-
-#define SQ_PROPERTY_SPEC_DATA "sq-property-spec"
-#define SQ_PROPERTY_VALUE_DATA "sq-property-value"
-#define SQ_ACTION_CUSTOM_DATA "sq-action-custom"
-#define SQ_ACTION_CALLBACK_DATA "sq-action-callback"
-
-static void
-sq_widget_factory_class_init(SQWidgetFactoryClass *factory_class);
-static void
-sq_widget_factory_init(SQWidgetFactory *factory);
-
-static GtkWidget*
-sq_widget_factory_create_boolean_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GtkWidget*
-sq_widget_factory_create_numeric_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GtkWidget*
-sq_widget_factory_create_enum_widget_group(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GtkWidget*
-sq_widget_factory_create_enum_widget_list(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GtkWidget*
-sq_widget_factory_create_flags_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GtkWidget*
-sq_widget_factory_create_string_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-
-static GSList*
-sq_widget_factory_create_boolean_menu(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GSList*
-sq_widget_factory_create_enum_menu_group(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GSList*
-sq_widget_factory_create_enum_menu_list(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GSList*
-sq_widget_factory_create_flags_menu_group(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-static GSList*
-sq_widget_factory_create_flags_menu_list(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value);
-
-static void
-cb_sq_widget_factory_property_changed(GtkWidget *widget, gpointer user_data);
-static void
-cb_sq_widget_factory_property_notify(GObject *obj, GParamSpec *pspec, gpointer user_data);
-static void
-cb_sq_widget_factory_widget_destroyed(GtkObject *obj, gpointer user_data);
-static void
-cb_sq_widget_factory_object_destroyed(GtkObject *obj, gpointer user_data);
-
-/* static void																   */
-/* cb_sq_widget_factory_action_triggered(GtkWidget *widget, gpointer user_data); */
-
-/* static void															  */
-/* sq_widget_factory_notify(LSQCustomAction *action, const gchar *message); */
-
-GType
-sq_widget_factory_get_type(void)
-{
-	static GType sq_widget_factory_type = 0;
-
-	if(!sq_widget_factory_type)
-	{
-		static const GTypeInfo sq_widget_factory_info =
-		{
-			sizeof(SQWidgetFactoryClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) sq_widget_factory_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL,
-			sizeof(SQWidgetFactory),
-			0,
-			(GInstanceInitFunc) sq_widget_factory_init,
-			NULL
-		};
-
-		sq_widget_factory_type = g_type_register_static(G_TYPE_OBJECT, "SQWidgetFactory", &sq_widget_factory_info, 0);
-	}
-	return sq_widget_factory_type;
-}
-
-static void
-sq_widget_factory_class_init(SQWidgetFactoryClass *factory_class)
-{
-/*	GObjectClass *object_class = G_OBJECT_CLASS(factory_class);*/
-}
-
-static void
-sq_widget_factory_init(SQWidgetFactory *factory)
-{
-	factory->tips = gtk_tooltips_new();
-	/* factory->custom_callback = g_new(LSQCustomActionCallback, 1);								*/
-	/* factory->custom_callback->notify_func = (LSQCustomActionNotifyFunc)sq_widget_factory_notify; */
-}
-
-SQWidgetFactory*
-sq_widget_factory_new(void)
-{
-	SQWidgetFactory *factory;
-
-	factory = g_object_new(sq_widget_factory_get_type(), NULL);
-
-	return factory;
-}
-
-static GtkWidget*
-sq_widget_factory_create_boolean_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GtkWidget *check = gtk_check_button_new_with_label(g_param_spec_get_nick(pspec));
-	const gchar *large_tip;
-	gchar *small_tip = NULL;
-
-	g_object_set_data(G_OBJECT(check), SQ_PROPERTY_SPEC_DATA, pspec);
-	g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-	g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), check);
-	g_signal_connect(GTK_OBJECT(check), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-	
-	/* FIXME: HACK */
-	if(GTK_IS_WIDGET(obj))
-		g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), check);
-	else
-		g_object_ref(obj);
-
-	large_tip = g_param_spec_get_blurb(pspec);
-	if(strchr(large_tip, '\n'))
-	{
-		small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);
-		large_tip = strchr(large_tip, '\n') + 1;
-	}
-
-	gtk_tooltips_set_tip(factory->tips, check, small_tip?small_tip:large_tip, large_tip);
-
-	g_free(small_tip);
-
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), g_value_get_boolean(value));
-
-	gtk_widget_show(check);
-
-	return check;
-}
-
-static GtkWidget*
-sq_widget_factory_create_numeric_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GtkWidget *box = gtk_hbox_new(FALSE, 3);
-	GtkWidget *label = gtk_label_new(g_param_spec_get_nick(pspec));
-	GValue double_value;
-	gdouble min = 0, max = 0, inc = 0, step = 0;
-	guint digits = 0;
-	GtkAdjustment *adjust;
-	GtkWidget *spin;
-	const gchar *large_tip;
-	gchar *small_tip = NULL;
-
-	memset(&double_value, 0, sizeof(GValue));
-
-	g_value_init(&double_value, G_TYPE_DOUBLE);
-	g_return_val_if_fail(g_value_transform(value, &double_value), NULL);
-
-	switch(pspec->value_type)
-	{
-		/*case G_TYPE_CHAR:
-		break;
-		case G_TYPE_UCHAR:
-		break;*/
-		case G_TYPE_INT:
-			min = G_PARAM_SPEC_INT(pspec)->minimum;
-			max = G_PARAM_SPEC_INT(pspec)->maximum;
-			inc = 1;
-			step = ((max-min)/5)>10?10:(gint)((max-min)/5);
-			digits = 1;
-		break;
-		case G_TYPE_UINT:
-			min = G_PARAM_SPEC_UINT(pspec)->minimum;
-			max = G_PARAM_SPEC_UINT(pspec)->maximum;
-			inc = 1;
-			step = ((max-min)/5)>10?10:(guint)((max-min)/5);
-			digits = 0;
-		break;
-		case G_TYPE_LONG:
-			min = G_PARAM_SPEC_LONG(pspec)->minimum;
-			max = G_PARAM_SPEC_LONG(pspec)->maximum;
-			inc = 1;
-			step = ((max-min)/5)>10?10:(glong)((max-min)/5);
-			digits = 0;
-		break;
-		case G_TYPE_ULONG:
-			min = G_PARAM_SPEC_ULONG(pspec)->minimum;
-			max = G_PARAM_SPEC_ULONG(pspec)->maximum;
-			inc = 1;
-			step = ((max-min)/5)>10?10:(gulong)((max-min)/5);
-			digits = 0;
-		break;
-		case G_TYPE_INT64:
-			min = G_PARAM_SPEC_INT64(pspec)->minimum;
-			max = G_PARAM_SPEC_INT64(pspec)->maximum;
-			inc = 1;
-			step = ((max-min)/5)>10?10:(gint64)((max-min)/5);
-			digits = 0;
-		break;
-		case G_TYPE_UINT64:
-			min = G_PARAM_SPEC_UINT64(pspec)->minimum;
-			max = G_PARAM_SPEC_UINT64(pspec)->maximum;
-			inc = 1;
-			step = ((max-min)/5)>10?10:(guint64)((max-min)/5);
-			digits = 0;
-		break;
-		case G_TYPE_FLOAT:
-			min = G_PARAM_SPEC_FLOAT(pspec)->minimum;
-			max = G_PARAM_SPEC_FLOAT(pspec)->maximum;
-			inc = 0.000001;
-			step = ((max-min)/5)>0.1?0.1:(gfloat)((max-min)/5);
-			digits = 6;
-		break;
-		case G_TYPE_DOUBLE:
-			min = G_PARAM_SPEC_DOUBLE(pspec)->minimum;
-			max = G_PARAM_SPEC_DOUBLE(pspec)->maximum;
-			inc = 0.0000000000000000001;
-			step = ((max-min)/5)>0.01?0.01:((max-min)/5);
-			digits = 20;
-		break;
-	}
-
-	adjust = GTK_ADJUSTMENT(gtk_adjustment_new(g_value_get_double(&double_value), min, max, inc, step, step));
-	spin = gtk_spin_button_new(adjust, step, digits);
-
-	g_object_set_data(G_OBJECT(spin), SQ_PROPERTY_SPEC_DATA, pspec);
-	g_signal_connect(G_OBJECT(spin), "value-changed", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-	g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), spin);
-	g_signal_connect(GTK_OBJECT(spin), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-	/* FIXME: HACK */
-	if(GTK_IS_WIDGET(obj))
-		g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), spin);
-	else
-		g_object_ref(obj);
-
-	gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 3);
-	gtk_box_pack_end(GTK_BOX(box), spin, TRUE, TRUE, 3);
-
-	large_tip = g_param_spec_get_blurb(pspec);
-	if(strchr(large_tip, '\n'))
-	{
-		small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);
-		large_tip = strchr(large_tip, '\n') + 1;
-	}
-
-	gtk_tooltips_set_tip(factory->tips, label, small_tip?small_tip:large_tip, large_tip);
-	gtk_tooltips_set_tip(factory->tips, spin, small_tip?small_tip:large_tip, large_tip);
-
-	g_free(small_tip);
-
-	g_value_unset(&double_value);
-
-	gtk_widget_show_all(box);
-
-	return box;
-}
-
-static GtkWidget*
-sq_widget_factory_create_enum_widget_group(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GtkWidget *frame = gtk_frame_new(g_param_spec_get_nick(pspec));
-	GtkWidget *box = gtk_vbox_new(FALSE, 3);
-	GtkWidget *radio = NULL;
-	guint i, n = G_PARAM_SPEC_ENUM(pspec)->enum_class->n_values;
-	GEnumValue *values = G_PARAM_SPEC_ENUM(pspec)->enum_class->values;
-	const gchar *large_tip;
-	gchar *small_tip = NULL;
-
-	for(i = 0; i < n; ++i)
-	{
-		radio = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio), values[i].value_nick);
-
-		g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_SPEC_DATA, pspec);
-		g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_VALUE_DATA, GINT_TO_POINTER(values[i].value));
-		g_signal_connect(G_OBJECT(radio), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-		g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), radio);
-		g_signal_connect(GTK_OBJECT(radio), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-		/* FIXME: HACK */
-		if(GTK_IS_WIDGET(obj))
-			g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), radio);
-		else
-			g_object_ref(obj);
-
-		if(g_value_get_enum(value) == values[i].value)
-			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
-		gtk_box_pack_start(GTK_BOX(box), radio, FALSE, FALSE, 5);
-	}
-
-	gtk_container_add(GTK_CONTAINER(frame), box);
-
-	large_tip = g_param_spec_get_blurb(pspec);
-	if(strchr(large_tip, '\n'))
-	{
-		small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);
-		large_tip = strchr(large_tip, '\n') + 1;
-	}
-
-	gtk_tooltips_set_tip(factory->tips, frame, small_tip?small_tip:large_tip, large_tip);
-
-	g_free(small_tip);
-
-	gtk_widget_show_all(frame);
-
-	return frame;
-}
-
-static GtkWidget*
-sq_widget_factory_create_enum_widget_list(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GtkWidget *box = gtk_hbox_new(FALSE, 3);
-	GtkWidget *label = gtk_label_new(g_param_spec_get_nick(pspec));
-	GtkWidget *combo = gtk_combo_box_new_text();
-	guint select_ = 0, i, n = G_PARAM_SPEC_ENUM(pspec)->enum_class->n_values;
-	GEnumValue *values = G_PARAM_SPEC_ENUM(pspec)->enum_class->values;
-	const gchar *large_tip;
-	gchar *small_tip = NULL;
-
-	g_object_set_data(G_OBJECT(combo), SQ_PROPERTY_SPEC_DATA, pspec);
-	g_signal_connect(G_OBJECT(combo), "changed", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-	g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), combo);
-	g_signal_connect(GTK_OBJECT(combo), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-	/* FIXME: HACK */
-	if(GTK_IS_WIDGET(obj))
-		g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), combo);
-	else
-		g_object_ref(obj);
-
-	for(i = 0; i < n; ++i)
-	{
-		gtk_combo_box_append_text(GTK_COMBO_BOX(combo), values[i].value_nick);
-
-		if(g_value_get_enum(value) == values[i].value)
-			select_ = i;
-	}
-
-	gtk_combo_box_set_active(GTK_COMBO_BOX(combo), select_);
-
-	gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 3);
-	gtk_box_pack_end(GTK_BOX(box), combo, TRUE, TRUE, 3);
-
-	large_tip = g_param_spec_get_blurb(pspec);
-	if(strchr(large_tip, '\n'))
-	{
-		small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);
-		large_tip = strchr(large_tip, '\n') + 1;
-	}
-
-	gtk_tooltips_set_tip(factory->tips, label, small_tip?small_tip:large_tip, large_tip);
-	gtk_tooltips_set_tip(factory->tips, combo, small_tip?small_tip:large_tip, large_tip);
-
-	g_free(small_tip);
-
-	gtk_widget_show_all(box);
-
-	return box;
-}
-
-static GtkWidget*
-sq_widget_factory_create_flags_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GtkWidget *frame = gtk_frame_new(g_param_spec_get_nick(pspec));
-	GtkWidget *box = gtk_vbox_new(FALSE, 3);
-	GtkWidget *check;
-	guint i, n = G_PARAM_SPEC_FLAGS(pspec)->flags_class->n_values;
-	GFlagsValue *values = G_PARAM_SPEC_FLAGS(pspec)->flags_class->values;
-	const gchar *large_tip;
-	gchar *small_tip = NULL;
-
-	gtk_container_add(GTK_CONTAINER(frame), box);
-
-	for(i = 0; i < n; ++i)
-	{
-		check = gtk_check_button_new_with_label(values[i].value_nick);
-
-		g_object_set_data(G_OBJECT(check), SQ_PROPERTY_SPEC_DATA, pspec);
-		g_object_set_data(G_OBJECT(check), SQ_PROPERTY_VALUE_DATA, GINT_TO_POINTER(values[i].value));
-		g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-		g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), check);
-		g_signal_connect(GTK_OBJECT(check), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-		/* FIXME: HACK */
-		if(GTK_IS_WIDGET(obj))
-			g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), check);
-		else
-			g_object_ref(obj);
-
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), g_value_get_enum(value) & values[i].value);
-		gtk_box_pack_start(GTK_BOX(box), check, FALSE, FALSE, 5);
-	}
-
-	large_tip = g_param_spec_get_blurb(pspec);
-	if(strchr(large_tip, '\n'))
-	{
-		small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);
-		large_tip = strchr(large_tip, '\n') + 1;
-	}
-
-	gtk_tooltips_set_tip(factory->tips, frame, small_tip?small_tip:large_tip, large_tip);
-
-	g_free(small_tip);
-
-	gtk_widget_show_all(frame);
-
-	return frame;
-}
-
-static GtkWidget*
-sq_widget_factory_create_string_widget(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GtkWidget *box = gtk_hbox_new(FALSE, 3);
-	GtkWidget *label = gtk_label_new(g_param_spec_get_nick(pspec));
-	GtkWidget *entry = gtk_entry_new();
-	const gchar *large_tip;
-	gchar *small_tip = NULL;
-
-	g_object_set_data(G_OBJECT(entry), SQ_PROPERTY_SPEC_DATA, pspec);
-	g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-	g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), entry);
-	g_signal_connect(GTK_OBJECT(entry), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-	/* FIXME: HACK */
-	if(GTK_IS_WIDGET(obj))
-		g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), entry);
-	else
-		g_object_ref(obj);
-
-	gtk_entry_set_text(GTK_ENTRY(entry), g_value_get_string(value));
-
-	gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 3);
-	gtk_box_pack_end(GTK_BOX(box), entry, TRUE, TRUE, 3);
-
-	large_tip = g_param_spec_get_blurb(pspec);
-	if(strchr(large_tip, '\n'))
-	{
-		small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);
-		large_tip = strchr(large_tip, '\n') + 1;
-	}
-
-	gtk_tooltips_set_tip(factory->tips, label, small_tip?small_tip:large_tip, large_tip);
-	gtk_tooltips_set_tip(factory->tips, entry, small_tip?small_tip:large_tip, large_tip);
-
-	g_free(small_tip);
-
-	gtk_widget_show_all(box);
-
-	return box;
-}
-
-GtkWidget*
-sq_widget_factory_create_property_widget(SQWidgetFactory *factory, GObject *obj, const gchar *prop)
-{
-	GtkWidget *widget = NULL;
-	GParamSpec *pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(obj), prop);
-	GValue value;
-
-	if(!pspec)
-		return NULL;
-
-	memset(&value, 0, sizeof(GValue));
-
-	/* FIXME: object property type string is bugged, in glib? */
-	g_value_init(&value, pspec->value_type);
-	g_object_get_property(obj, prop, &value);
-
-	switch(pspec->value_type)
-	{
-		case G_TYPE_BOOLEAN:
-			widget = sq_widget_factory_create_boolean_widget(factory, obj, pspec, &value);
-		break;
-		/*
-		case G_TYPE_CHAR:
-		case G_TYPE_UCHAR:
-		break;*/
-		case G_TYPE_INT:
-		case G_TYPE_UINT:
-		case G_TYPE_LONG:
-		case G_TYPE_ULONG:
-		case G_TYPE_INT64:
-		case G_TYPE_UINT64:
-		case G_TYPE_FLOAT:
-		case G_TYPE_DOUBLE:
-			widget = sq_widget_factory_create_numeric_widget(factory, obj, pspec, &value);
-		break;
-		case G_TYPE_STRING:
-			widget = sq_widget_factory_create_string_widget(factory, obj, pspec, &value);
-		break;
-		default:
-			if(G_IS_PARAM_SPEC_ENUM(pspec))
-			{
-				widget = sq_widget_factory_create_enum_widget_group(factory, obj, pspec, &value);
-				if(0)
-					sq_widget_factory_create_enum_widget_list(factory, obj, pspec, &value);
-			}
-			if(G_IS_PARAM_SPEC_FLAGS(pspec))
-			{
-				widget = sq_widget_factory_create_flags_widget(factory, obj, pspec, &value);
-			}
-		break;
-	}
-
-	g_value_unset(&value);
-
-	return widget;
-}
-
-static GSList*
-sq_widget_factory_create_boolean_menu(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GSList *menu = NULL;
-	GtkWidget *check = gtk_check_menu_item_new_with_label(g_param_spec_get_nick(pspec));
-
-	g_object_set_data(G_OBJECT(check), SQ_PROPERTY_SPEC_DATA, pspec);
-	g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-	g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), check);
-	g_signal_connect(GTK_OBJECT(check), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-	/* FIXME: HACK */
-	if(GTK_IS_WIDGET(obj))
-		g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), check);
-	else
-		g_object_ref(obj);
-
-	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(check), g_value_get_boolean(value));
-
-	menu = g_slist_append(menu, check);
-
-	gtk_widget_show(check);
-
-	return menu;
-}
-
-static GSList*
-sq_widget_factory_create_enum_menu_group(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GSList *menu = NULL;
-	GtkWidget *radio;
-	guint i, n = G_PARAM_SPEC_ENUM(pspec)->enum_class->n_values;
-	GEnumValue *values = G_PARAM_SPEC_ENUM(pspec)->enum_class->values;
-
-	for(i = 0; i < n; ++i)
-	{
-		radio = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(radio), values[i].value_nick);
-
-		g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_SPEC_DATA, pspec);
-		g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_VALUE_DATA, GINT_TO_POINTER(values[i].value));
-		g_signal_connect(G_OBJECT(radio), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-		g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), radio);
-		g_signal_connect(GTK_OBJECT(radio), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-		/* FIXME: HACK */
-		if(GTK_IS_WIDGET(obj))
-			g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), radio);
-		else
-			g_object_ref(obj);
-
-		if(g_value_get_enum(value) == values[i].value)
-			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(radio), TRUE);
-
-		menu = g_slist_append(menu, radio);
-
-		gtk_widget_show(radio);
-	}
-
-	return menu;
-}
-
-static GSList*
-sq_widget_factory_create_enum_menu_list(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GSList *menu = NULL;
-	GtkWidget *list = gtk_menu_item_new_with_label(g_param_spec_get_nick(pspec));
-	GtkWidget *sub = gtk_menu_new();
-	GtkWidget *radio = NULL;
-	guint i, n = G_PARAM_SPEC_ENUM(pspec)->enum_class->n_values;
-	GEnumValue *values = G_PARAM_SPEC_ENUM(pspec)->enum_class->values;
-
-	for(i = 0; i < n; ++i)
-	{
-		if(radio)
-			radio = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(radio), values[i].value_nick);
-		else
-			radio = gtk_radio_menu_item_new_with_label(NULL, values[i].value_nick);
-
-		g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_SPEC_DATA, pspec);
-		g_object_set_data(G_OBJECT(radio), SQ_PROPERTY_VALUE_DATA, GINT_TO_POINTER(values[i].value));
-		g_signal_connect(G_OBJECT(radio), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-		g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), radio);
-		g_signal_connect(GTK_OBJECT(radio), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-		/* FIXME: HACK */
-		if(GTK_IS_WIDGET(obj))
-			g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), radio);
-		else
-			g_object_ref(obj);
-
-		if(g_value_get_enum(value) == values[i].value)
-			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(radio), TRUE);
-
-		gtk_menu_shell_append(GTK_MENU_SHELL(sub), radio);
-	}
-
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(list), sub);
-
-	menu = g_slist_append(menu, list);
-
-	gtk_widget_show_all(sub);
-	gtk_widget_show(list);
-
-	return menu;
-}
-
-static GSList*
-sq_widget_factory_create_flags_menu_group(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GSList *menu = NULL;
-	GtkWidget *check;
-	guint i, n = G_PARAM_SPEC_ENUM(pspec)->enum_class->n_values;
-	GFlagsValue *values = G_PARAM_SPEC_FLAGS(pspec)->flags_class->values;
-
-	for(i = 0; i < n; ++i)
-	{
-		check = gtk_check_menu_item_new_with_label(values[i].value_nick);
-
-		g_object_set_data(G_OBJECT(check), SQ_PROPERTY_SPEC_DATA, pspec);
-		g_object_set_data(G_OBJECT(check), SQ_PROPERTY_VALUE_DATA, GINT_TO_POINTER(values[i].value));
-		g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-		g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), check);
-		g_signal_connect(GTK_OBJECT(check), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-		/* FIXME: HACK */
-		if(GTK_IS_WIDGET(obj))
-			g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), check);
-		else
-			g_object_ref(obj);
-
-		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(check), g_value_get_enum(value) & values[i].value);
-
-		menu = g_slist_append(menu, check);
-
-		gtk_widget_show(check);
-	}
-
-	return menu;
-}
-
-static GSList*
-sq_widget_factory_create_flags_menu_list(SQWidgetFactory *factory, GObject *obj, GParamSpec *pspec, const GValue *value)
-{
-	GSList *menu = NULL;
-	GtkWidget *list = gtk_menu_item_new_with_label(g_param_spec_get_nick(pspec));
-	GtkWidget *sub = gtk_menu_new();
-	GtkWidget *check;
-	guint i, n = G_PARAM_SPEC_ENUM(pspec)->enum_class->n_values;
-	GFlagsValue *values = G_PARAM_SPEC_FLAGS(pspec)->flags_class->values;
-
-	for(i = 0; i < n; ++i)
-	{
-		check = gtk_check_menu_item_new_with_label(values[i].value_nick);
-
-		g_object_set_data(G_OBJECT(check), SQ_PROPERTY_SPEC_DATA, pspec);
-		g_object_set_data(G_OBJECT(check), SQ_PROPERTY_VALUE_DATA, GINT_TO_POINTER(values[i].value));
-		g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(cb_sq_widget_factory_property_changed), obj);
-		g_signal_connect(obj, "notify", G_CALLBACK(cb_sq_widget_factory_property_notify), check);
-		g_signal_connect(GTK_OBJECT(check), "destroy", G_CALLBACK(cb_sq_widget_factory_widget_destroyed), obj);
-		/* FIXME: HACK */
-		if(GTK_IS_WIDGET(obj))
-			g_signal_connect(obj, "destroy", G_CALLBACK(cb_sq_widget_factory_object_destroyed), check);
-		else
-			g_object_ref(obj);
-
-		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(check), g_value_get_enum(value) & values[i].value);
-
-		gtk_menu_shell_append(GTK_MENU_SHELL(sub), check);
-	}
-
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(list), sub);
-
-	menu = g_slist_append(menu, list);
-
-	gtk_widget_show_all(sub);
-	gtk_widget_show(list);
-
-	return menu;
-}
-
-GSList*
-sq_widget_factory_create_property_menu(SQWidgetFactory *factory, GObject *obj, const gchar *prop)
-{
-	GSList *menu = NULL;
-	GParamSpec *pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(obj), prop);
-	GValue value;
-
-	if(!pspec)
-		return NULL;
-
-	memset(&value, 0, sizeof(GValue));
-
-	/* FIXME: object property type string is bugged, in glib? */
-	g_value_init(&value, pspec->value_type);
-	g_object_get_property(obj, prop, &value);
-
-	switch(pspec->value_type)
-	{
-		case G_TYPE_BOOLEAN:
-			menu = sq_widget_factory_create_boolean_menu(factory, obj, pspec, &value);
-		break;
-		/*
-		case G_TYPE_CHAR:
-		case G_TYPE_UCHAR:
-		break;
-		case G_TYPE_INT:
-		case G_TYPE_UINT:
-		case G_TYPE_LONG:
-		case G_TYPE_ULONG:
-		case G_TYPE_INT64:
-		case G_TYPE_UINT64:
-		case G_TYPE_FLOAT:
-		case G_TYPE_DOUBLE:
-		break;
-		case G_TYPE_STRING:
-		break;*/
-		default:
-			if(G_IS_PARAM_SPEC_ENUM(pspec))
-			{
-				menu = sq_widget_factory_create_enum_menu_list(factory, obj, pspec, &value);
-				if(0)
-					sq_widget_factory_create_enum_menu_group(factory, obj, pspec, &value);
-			}
-			if(G_IS_PARAM_SPEC_FLAGS(pspec))
-			{
-				menu = sq_widget_factory_create_flags_menu_list(factory, obj, pspec, &value);
-				if(0)
-					sq_widget_factory_create_flags_menu_group(factory, obj, pspec, &value);
-			}
-		break;
-	}
-
-	g_value_unset(&value);
-
-	return menu;
-}
-
-static void
-cb_sq_widget_factory_property_changed(GtkWidget *widget, gpointer user_data)
-{
-	GParamSpec *pspec = g_object_get_data(G_OBJECT(widget), SQ_PROPERTY_SPEC_DATA);
-	GValue value, other_value;
-	memset(&value, 0, sizeof(GValue));
-	memset(&other_value, 0, sizeof(GValue));
-
-	g_value_init(&value, pspec->value_type);
-
-	switch(pspec->value_type)
-	{
-		case G_TYPE_BOOLEAN:
-			if(GTK_IS_TOGGLE_BUTTON(widget))
-			{
-				g_value_set_boolean(&value, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)));
-				g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-			}
-			if(GTK_IS_CHECK_MENU_ITEM(widget))
-			{
-				g_value_set_boolean(&value, gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
-				g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-			}
-		break;
-		/*
-		case G_TYPE_CHAR:
-		case G_TYPE_UCHAR:
-		break;*/
-		case G_TYPE_INT:
-		case G_TYPE_UINT:
-		case G_TYPE_LONG:
-		case G_TYPE_ULONG:
-		case G_TYPE_INT64:
-		case G_TYPE_UINT64:
-		case G_TYPE_FLOAT:
-		case G_TYPE_DOUBLE:
-			if(GTK_IS_SPIN_BUTTON(widget))
-			{
-				g_value_init(&other_value, G_TYPE_DOUBLE);
-				g_value_set_double(&other_value, gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget)));
-				g_value_transform(&other_value, &value);
-				g_value_unset(&other_value);
-				g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-			}
-		break;
-		case G_TYPE_STRING:
-			if(GTK_IS_ENTRY(widget))
-			{
-				g_value_set_string(&value, gtk_entry_get_text(GTK_ENTRY(widget)));
-				g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-			}
-		break;
-		default:
-			if(G_IS_PARAM_SPEC_ENUM(pspec))
-			{
-				if(GTK_IS_RADIO_BUTTON(widget))
-				{
-					if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
-					{
-						g_value_set_enum(&value, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), SQ_PROPERTY_VALUE_DATA)));
-						g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-					}
-				}
-				if(GTK_IS_RADIO_MENU_ITEM(widget))
-				{
-					if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))
-					{
-						g_value_set_enum(&value, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), SQ_PROPERTY_VALUE_DATA)));
-						g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-					}
-				}
-			}
-			if(G_IS_PARAM_SPEC_FLAGS(pspec))
-			{
-				if(GTK_IS_CHECK_BUTTON(widget))
-				{
-					g_object_get_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-					/* TODO: sync? */
-					g_value_set_flags(&value, g_value_get_flags(&value) ^ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), SQ_PROPERTY_VALUE_DATA)));
-					g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-				}
-				if(GTK_IS_CHECK_MENU_ITEM(widget))
-				{
-					g_object_get_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-					/* TODO: sync? */
-					g_value_set_flags(&value, g_value_get_flags(&value) ^ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), SQ_PROPERTY_VALUE_DATA)));
-					g_object_set_property(G_OBJECT(user_data), g_param_spec_get_name(pspec), &value);
-				}
-			}
-		break;
-	}
-
-	g_value_unset(&value);
-}
-
-static void
-cb_sq_widget_factory_property_notify(GObject *obj, GParamSpec *pspec, gpointer user_data)
-{
-	GValue value, other_value;
-
-	if(strcmp(g_param_spec_get_name(pspec), g_param_spec_get_name(g_object_get_data(G_OBJECT(user_data), SQ_PROPERTY_SPEC_DATA))))
-		return;
-
-	memset(&value, 0, sizeof(GValue));
-	memset(&other_value, 0, sizeof(GValue));
-
-	g_value_init(&value, pspec->value_type);
-
-	switch(pspec->value_type)
-	{
-		case G_TYPE_BOOLEAN:
-			if(GTK_IS_TOGGLE_BUTTON(user_data))
-			{
-				g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-				gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user_data), g_value_get_boolean(&value));
-			}
-			if(GTK_IS_CHECK_MENU_ITEM(user_data))
-			{
-				g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-				gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(user_data), g_value_get_boolean(&value));
-			}
-		break;
-		/*
-		case G_TYPE_CHAR:
-		case G_TYPE_UCHAR:
-		break;*/
-		case G_TYPE_INT:
-		case G_TYPE_UINT:
-		case G_TYPE_LONG:
-		case G_TYPE_ULONG:
-		case G_TYPE_INT64:
-		case G_TYPE_UINT64:
-		case G_TYPE_FLOAT:
-		case G_TYPE_DOUBLE:
-			if(GTK_IS_SPIN_BUTTON(user_data))
-			{
-				g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-				g_value_init(&other_value, G_TYPE_DOUBLE);
-				g_value_transform(&value, &other_value);
-				gtk_spin_button_set_value(GTK_SPIN_BUTTON(user_data), g_value_get_double(&other_value));
-				g_value_unset(&other_value);
-			}
-		break;
-		case G_TYPE_STRING:
-			if(GTK_IS_ENTRY(user_data))
-			{
-				g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-				gtk_entry_set_text(GTK_ENTRY(user_data), g_value_get_string(&value));
-			}
-		break;
-		default:
-			if(G_IS_PARAM_SPEC_ENUM(pspec))
-			{
-				if(GTK_IS_RADIO_BUTTON(user_data))
-				{
-					g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-					gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user_data), GPOINTER_TO_INT(g_object_get_data(G_OBJECT(user_data), SQ_PROPERTY_VALUE_DATA))==g_value_get_enum(&value));
-				}
-				if(GTK_IS_RADIO_MENU_ITEM(user_data))
-				{
-					g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-					gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(user_data), GPOINTER_TO_INT(g_object_get_data(G_OBJECT(user_data), SQ_PROPERTY_VALUE_DATA))==g_value_get_enum(&value));
-				}
-			}
-			if(G_IS_PARAM_SPEC_FLAGS(pspec))
-			{
-				if(GTK_IS_CHECK_BUTTON(user_data))
-				{
-					g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-					gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(user_data), GPOINTER_TO_INT(g_object_get_data(G_OBJECT(user_data), SQ_PROPERTY_VALUE_DATA)) & g_value_get_enum(&value));
-				}
-				if(GTK_IS_CHECK_MENU_ITEM(user_data))
-				{
-					g_object_get_property(obj, g_param_spec_get_name(pspec), &value);
-					gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(user_data), GPOINTER_TO_INT(g_object_get_data(G_OBJECT(user_data), SQ_PROPERTY_VALUE_DATA)) & g_value_get_enum(&value));
-				}
-			}
-		break;
-	}
-
-	g_value_unset(&value);
-}
-
-/* GtkWidget*																														  */
-/* sq_widget_factory_create_action_widget(SQWidgetFactory *factory, LSQArchiveSupport *support, LSQArchive *archive, const gchar *act) */
-/* {																																   */
-	/* GtkWidget *widget = NULL;																										 */
-	/* LSQCustomAction *action = lsq_archive_support_find_action(support, act);														  */
-
-	/* if(!action)																													   */
-		/* return NULL;																													*/
-
-	/* widget = gtk_button_new_with_label(lsq_custom_action_get_nick(action));														   */
-	/* g_object_set_data(G_OBJECT(widget), SQ_ACTION_CUSTOM_DATA, action);															   */
-	/* g_object_set_data(G_OBJECT(widget), SQ_ACTION_CALLBACK_DATA, factory->custom_callback);										   */
-	/* g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(cb_sq_widget_factory_action_triggered), archive);						*/
-
-	/* const gchar *large_tip = lsq_custom_action_get_blurb(action);																	 */
-	/* gchar *small_tip = NULL;																										  */
-	/* if(strchr(large_tip, '\n'))																									   */
-	/* {																																 */
-		/* small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);														  */
-		/* large_tip = strchr(large_tip, '\n') + 1;																						*/
-	/* }																																 */
-
-	/* gtk_tooltips_set_tip(factory->tips, widget, small_tip?small_tip:large_tip, large_tip);											*/
-
-	/* g_free(small_tip);																												*/
-
-	/* gtk_widget_show(widget);																										  */
-
-	/* return widget;																													*/
-/* }																																   */
-
-/* GtkWidget*																															 */
-/* sq_widget_factory_create_action_menu_item(SQWidgetFactory *factory, LSQArchiveSupport *support, LSQArchive *archive, const gchar *act) */
-/* {																																	  */
-	/* GtkWidget *menu;																													 */
-	/* LSQCustomAction *action = lsq_archive_support_find_action(support, act);															 */
-
-	/* if(!action)																														  */
-		/* return NULL;																													   */
-
-	/* menu = gtk_menu_item_new_with_label(lsq_custom_action_get_nick(action));															 */
-	/* g_object_set_data(G_OBJECT(menu), SQ_ACTION_CUSTOM_DATA, action);																	*/
-	/* g_object_set_data(G_OBJECT(menu), SQ_ACTION_CALLBACK_DATA, factory->custom_callback);												*/
-	/* g_signal_connect(G_OBJECT(menu), "activate", G_CALLBACK(cb_sq_widget_factory_action_triggered), archive);							*/
-	/* gtk_widget_show(menu);																											   */
-
-	/* return menu;																														 */
-/* }																																	  */
-
-/* GtkToolItem*																													 */
-/* sq_widget_factory_create_action_bar(SQWidgetFactory *factory, LSQArchiveSupport *support, LSQArchive *archive, const gchar *act) */
-/* {																																*/
-	/* GtkToolItem *widget;																										   */
-	/* LSQCustomAction *action = lsq_archive_support_find_action(support, act);													   */
-
-	/* if(!action)																													*/
-		/* return NULL;																												 */
-
-	/* widget = gtk_tool_button_new(NULL, lsq_custom_action_get_nick(action));														*/
-	/* g_object_set_data(G_OBJECT(widget), SQ_ACTION_CUSTOM_DATA, action);															*/
-	/* g_object_set_data(G_OBJECT(widget), SQ_ACTION_CALLBACK_DATA, factory->custom_callback);										*/
-	/* g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(cb_sq_widget_factory_action_triggered), archive);					 */
-
-	/* const gchar *large_tip = lsq_custom_action_get_blurb(action);																  */
-	/* gchar *small_tip = NULL;																									   */
-	/* if(strchr(large_tip, '\n'))																									*/
-	/* {																															  */
-		/* small_tip = g_strndup(large_tip, strchr(large_tip, '\n') - large_tip);													   */
-		/* large_tip = strchr(large_tip, '\n') + 1;																					 */
-	/* }																															  */
-
-	/* gtk_tooltips_set_tip(factory->tips, GTK_WIDGET(widget), small_tip?small_tip:large_tip, large_tip);							 */
-
-	/* g_free(small_tip);																											 */
-
-	/* gtk_widget_show(GTK_WIDGET(widget));																						   */
-
-	/* return widget;																												 */
-/* }																																*/
-
-/* GSList*																										 */
-/* sq_widget_factory_create_action_menu(SQWidgetFactory *factory, LSQArchiveSupport *support, LSQArchive *archive) */
-/* {																											   */
-	/* GSList *menu = NULL;																						  */
-	/* GtkWidget *item;																							  */
-	/* guint n_act, i;																							   */
-	/* LSQCustomAction **action = lsq_archive_support_list_actions(support, &n_act);								 */
-
-	/* for(i = 0; i < n_act; ++i)																					*/
-	/* {																											 */
-		/* if(strncmp("menu", lsq_custom_action_get_name(action[i]), 4) == 0)										  */
-		/* {																										   */
-			/* item = gtk_menu_item_new_with_label(lsq_custom_action_get_nick(action[i]));							   */
-			/* g_object_set_data(G_OBJECT(item), SQ_ACTION_CUSTOM_DATA, action[i]);									  */
-			/* g_object_set_data(G_OBJECT(item), SQ_ACTION_CALLBACK_DATA, factory->custom_callback);					 */
-			/* g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(cb_sq_widget_factory_action_triggered), archive); */
-			/* menu = g_slist_append(menu, item);																		*/
-			/* gtk_widget_show(item);																					*/
-		/* }																										   */
-	/* }																											 */
-
-	/* g_free(action);																							   */
-
-	/* return menu;																								  */
-/* }																											   */
-
-/* static void																																					 */
-/* cb_sq_widget_factory_action_triggered(GtkWidget *widget, gpointer user_data)																					*/
-/* {																																							   */
-	/* LSQArchive *archive = LSQ_ARCHIVE(user_data);																												 */
-
-	/* lsq_custom_action_execute(g_object_get_data(G_OBJECT(widget), SQ_ACTION_CUSTOM_DATA), archive, g_object_get_data(G_OBJECT(widget), SQ_ACTION_CALLBACK_DATA)); */
-/* }																																							   */
-
-static void
-cb_sq_widget_factory_widget_destroyed(GtkObject *obj, gpointer user_data)
-{
-	if(user_data)
-	{
-		g_signal_handlers_disconnect_by_func(user_data, cb_sq_widget_factory_property_notify, obj);
-		if(!GTK_IS_WIDGET(user_data))
-			g_object_unref(user_data);
-	}
-}
-
-static void
-cb_sq_widget_factory_object_destroyed(GtkObject *obj, gpointer user_data)
-{
-	if(user_data)
-	{
-		g_signal_handlers_disconnect_by_func(user_data, cb_sq_widget_factory_widget_destroyed, obj);
-	}
-}
-
-/* static void																																					  */
-/* sq_widget_factory_notify(LSQCustomAction *action, const gchar *message)																						  */
-/* {																																								*/
-	/* GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "%s: %s", action->support->id, message); */
-	/* gtk_dialog_run(GTK_DIALOG(dialog));																															*/
-	/* gtk_widget_destroy(dialog);																																	*/
-/* }																																								*/
diff --git a/src/widget_factory.h b/src/widget_factory.h
deleted file mode 100644
index eea9a98..0000000
--- a/src/widget_factory.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- *  This program 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 program 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 Library General Public License for more details.
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software 
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
- */
-
-#ifndef __SQ_WIDGET_FACTORY_H__
-#define __SQ_WIDGET_FACTORY_H__
-
-G_BEGIN_DECLS
-
-#define SQ_WIDGET_FACTORY(obj)		 ( \
-		G_TYPE_CHECK_INSTANCE_CAST ((obj),	\
-			sq_widget_factory_get_type(),	  \
-			LSQArchive))
-
-#define LSQ_IS_WIDGET_FACTORY(obj)	  ( \
-		G_TYPE_CHECK_INSTANCE_TYPE ((obj),	\
-			sq_widget_factory_get_type()))
-
-#define SQ_WIDGET_FACTORY_CLASS(klass) ( \
-		G_TYPE_CHECK_CLASS_CAST ((klass),	 \
-			sq_widget_factory_get_type(),	  \
-			LSQArchiveClass))
-
-#define LSQ_IS_WIDGET_FACTORY_CLASS(klass) ( \
-		G_TYPE_CHECK_CLASS_TYPE ((klass),		\
-			sq_widget_factory_get_type()))
-
-typedef struct
-{
-	GObject parent;
-	GtkTooltips *tips;
-	// LSQCustomActionCallback *custom_callback;
-} SQWidgetFactory;
-
-typedef struct
-{
-	GObjectClass parent;
-} SQWidgetFactoryClass;
-
-GType			   sq_widget_factory_get_type(void);
-SQWidgetFactory	*sq_widget_factory_new();
-
-GtkWidget		  *sq_widget_factory_create_property_widget(SQWidgetFactory *, GObject *, const gchar *);
-GSList			 *sq_widget_factory_create_property_menu(SQWidgetFactory *, GObject *, const gchar *);
-// GtkWidget		  *sq_widget_factory_create_action_widget(SQWidgetFactory *, LSQArchiveSupport *, LSQArchive *, const gchar *);
-// GtkWidget		  *sq_widget_factory_create_action_menu_item(SQWidgetFactory *, LSQArchiveSupport *, LSQArchive *, const gchar *);
-// GtkToolItem		*sq_widget_factory_create_action_bar(SQWidgetFactory *, LSQArchiveSupport *, LSQArchive *, const gchar *);
-// GSList			 *sq_widget_factory_create_action_menu(SQWidgetFactory *, LSQArchiveSupport *, LSQArchive *);
-
-#endif /*__SQ_WIDGET_FACTORY_H__*/
-


More information about the Xfce4-commits mailing list