[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