<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.gnome.apps.geeqie.devel">
    <title>gmane.comp.gnome.apps.geeqie.devel</title>
    <link>http://blog.gmane.org/gmane.comp.gnome.apps.geeqie.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1180"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1179"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1178"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1177"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1176"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1175"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1174"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1173"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1172"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1171"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1170"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1169"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1168"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1167"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1166"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1165"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1164"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1163"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1162"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1161"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1180">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1180</link>
    <description>&lt;pre&gt;
Tore Ericsson &amp;lt;tore.ericsson-zq6IREYz3ykAvxtiuMwx3w&amp;lt; at &amp;gt;public.gmane.org&amp;gt; writes:


http://git-scm.com/book

Seriously - read this cover to cover, and then try some things, and then
read it again.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________
Geeqie-devel mailing list
Geeqie-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f&amp;lt; at &amp;gt;public.gmane.org
https://lists.sourceforge.net/lists/listinfo/geeqie-devel
&lt;/pre&gt;</description>
    <dc:creator>Greg Troxel</dc:creator>
    <dc:date>2012-05-16T22:15:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1179">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1179</link>
    <description>&lt;pre&gt;Thanks for this, Klaus!

I would appreciate a git course! I have actually searched for such a course 
and studied literature on git but did never came to real practice, since with 
such a rich and powerful tool I'm somewhat hesitating ...
 
Tore
-----------------------------
Från Klaus Ethgen &amp;lt;Klaus+geekie-QDfuIGTxWZ+zQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;
2012-05-14 19.22.30 [Re: [Geeqie-devel] New development]: 
...

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Tore Ericsson</dc:creator>
    <dc:date>2012-05-15T10:58:25</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1178">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1178</link>
    <description>&lt;pre&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hello,

Am Di den 15. Mai 2012 um  5:01 schrieb Jeffery Small:
[Problem with async Update]

I see that Bug. And I currently do not know if we find a solution for
the development tree.

In the selection I did only consider Patches that I could prove that
they do not break stuff. There is amazing stuff in development. But this
would be object for next major release I think.


Well, in my opinion there will be a solution in future. But maybe not in
the next stable release.

Regards
   Klaus
- -- 
Klaus Ethgen                              http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16   Klaus Ethgen &amp;lt;Klaus-AFvVKsdj98azQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQGcBAEBCgAGBQJPsfv4AAoJEKZ8CrGAGfasMHYMAKLed0eH3h5bzUF7250h/0Na
bfz0EnGuqefE+I7k6gP8orYS+M+YKIh6EZnnHPaOaxp3iaweaywgOMpd1BgEa3+r
jOKEOj3gG5UohlVm9cKSuw8mdfbTtJqZ4eyp6utJhdTllqMQtDd5pcKrnX3aS8zU
rBJrGESOKrdtuBUYFREKyIAxpf6BJl96pvIqOuTmVf3gaSpkfIFklY3yMEF+1dA4
hdLTIo2yW71o8up6Q72MJjQScb23n4BbHgXRXDdbV2wX36qQQJDKdKoeGmnWHaAc
Dmd67CcFp5RYXPMYMidJt9MPln0+BRN6vLoBnuf4jtnAevS3XT9vIqj2z3RajzGO
NIrmPbaw6TRPpeaRLIZvNdNBlhzAoQ3nyXm0f59eWNZGLuz3WXXDI1BDE/ri/Rro
tBRgtQMdQ6VQOr1MdjuSqvZxYN8QfowhreDBoFExG6InTksX19JLzBHpW/h2/90e
mN0qXMjdxxI4LONgvkVpwqP7RZ7TeDBJShyIsu5f+g==
=ed+f
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Klaus Ethgen</dc:creator>
    <dc:date>2012-05-15T06:47:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1177">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1177</link>
    <description>&lt;pre&gt;
Regarding geeqie 1.0:

Long ago I wrote about a problem with the thumbnail images getting all
screwed up if the image files were being renames by and external program.
In other words, if you have a directory with:

    image_01.jpg
    image_02.jpg
    image_03.jpg

and an external program rearranges these images but reuses the same names
(in my case what actually happens is that the images get numerically
resequenced) then geeqie does not recognize this and displays the wrong
thumbnail for the new images now stored using the old filename.

I once suggested that geeqie monitor the mtime of the image files and
automatically update the thumbnail if it's creation date was older.  This
was apparently never done as the problem seems to still exist.

If this change was rejected for some reason by the developers and is not
being planned for the next release, then I would like to suggest that some
other means of updating the thumbnail cache be provided.  I thought that
right-clicking on the thumbnail area and selecting "Refresh" should do the
job, but it doesn't update thumbnails under the conditions I describe above.
If Refresh could be made to force thumbnail regeneration -- or if a new
force regeneration option could be added, this would be my second preference.

P.S.: In my preferences I have checked:

    * Cache thumbnails
    * Use standard thumbnail cache, shared with other applications

Regards,
&lt;/pre&gt;</description>
    <dc:creator>Jeffery Small</dc:creator>
    <dc:date>2012-05-15T04:01:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1176">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1176</link>
    <description>&lt;pre&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Am Di den 15. Mai 2012 um  0:12 schrieb Jonathan Woithe:

It was lost on the way. However, as it is still in the repository, it
was not lost completelly. I did cherry-pick it as commit 97bddb3. Will
check it.

Gruß
   Klaus
- -- 
Klaus Ethgen                              http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16   Klaus Ethgen &amp;lt;Klaus-AFvVKsdj98azQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQGcBAEBCgAGBQJPsakeAAoJEKZ8CrGAGfaslo4L/0twT5qzGnBGFAVqhG6H/Ew3
OMaUXKByXxsmnkgXNHEzwuAorkGDl/nle+ns9M8HabjmFeFZo3pmZlVsi/DmvkuM
LZQRWDXelV7L5ZRB3CsX8uZ526y8UQXuiK4Nc4DullMM0YgqNISHcMqC8n228KwP
hp+iPDXQYOsx+R4ez4ycDkqhtpvdM+XxumPa2PVAxr68vzAXqAhoEDo2Zb6TveOB
e88VqGXUG9tuN0zbMcdaEWFcbvyKUoQ8QPbTiqymT7N2xUz5XiRiCN3aVGMC3VaN
lsx8nO6IGHHE131warmM2gHotcmJAe75Gfh1vAOpZPlq4a98kdysz46Kl1J7SkS8
/3juKydFRdbuzZhcJmVtFaAHivV1xHMg6+bCI614np4+RocQDV50SXpEPGJdC9Xp
+SdJQErku/t7FQ2ow9gVblQSp6KJw1iR32OvYdx410aEGjakUpxPbthybsPRboxn
3Ml56+1zLV0r2S0TjQ55hHOtjKGEmwxAC2jWHqYc/g==
=Ku8w
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Klaus Ethgen</dc:creator>
    <dc:date>2012-05-15T00:53:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1175">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1175</link>
    <description>&lt;pre&gt;
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 14/05/2012 20:33, Omari Stephens a écrit :

I committed it as bddb1da on lm branch
(http://gitorious.org/geeqie/geeqie/commit/bddb1da637c705720b9d84f9d2e54d4bf3e7fec6).

Thank you.

- --
Zas


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJPsX+eAAoJENhZ8BtkbAenv+YIALC9AR1jWFl4CKUhvuVHYqw8
CG5sA23DQz0xnKc+mqhioMXdeLuOGm/eCcPyOUlB6snMiFbxWSKBbwrknPM4dfpp
/YthJNldAytkOVyZ5aepdCwkrZkjrE+dixMOGTNHEZTuKLe5RLRjqudQHPjetZFC
9JQ7OlapENjYdHHsFhp71dvbUGtNXdHsks273qi9aWV0My0pP4X7ntvMjoBv7d9B
GQb885D/JnblCMa6wRXMlIVfj/EgGW37XIqJ8C1Pal6bCbJCmdYb1gqT9d/oN3s8
iGvfy8Ppg5A/LS5e/Gw5VJCKlkuMkdseLKRz0ZryJCyhtxrtv8t6ubeh69Lpx04=
=BNqo
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________
Geeqie-devel mailing list
Geeqie-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f&amp;lt; at &amp;gt;public.gmane.org
https://lists.sourceforge.net/lists/listinfo/geeqie-devel
&lt;/pre&gt;</description>
    <dc:creator>Laurent Monin</dc:creator>
    <dc:date>2012-05-14T21:56:46</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1174">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1174</link>
    <description>&lt;pre&gt;Hi Klaus


Out of interest, what is the current state of a patch I submitted back in
2010 to autorotate proof images?  According to Laurent on 13 Dec 2010 it
was committed to his github repo as

  https://github.com/zas/geeqie_zas/commit/c4e3c3ee6f8b80c43925b0d38b8bcfae71050c6a

I have no idea what happened to it after this (that is, I don't know if this
made its way back to stable, or what).  It would be good to have this
included in an eventual release since having thumbnails autorotated makes
proof sheets much easier to use.

Regards
  jonathan

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Jonathan Woithe</dc:creator>
    <dc:date>2012-05-14T23:12:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1173">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1173</link>
    <description>&lt;pre&gt;I had sent a bugfix patch to the list, "[PATCH] Fix seghfault when using 
a filename on the commandline".  Dunno if someone pushed that or not, 
but it should definitely be in any new release.

--xsdg

On 05/14/2012 05:22 PM, Klaus Ethgen wrote:


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Omari Stephens</dc:creator>
    <dc:date>2012-05-14T18:33:42</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1172">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1172</link>
    <description>&lt;pre&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hi Tore,

Am Mo den 14. Mai 2012 um  7:28 schrieb Tore Ericsson:

2011-02-14, I see.

I think we should train our staff to know how to work with our tools.
And git is a very powerful tool I think. :-)

Would be a nice Idea to have a online course for such.


I can do so. In fact, I did. ;-) No conflicts.


I think, yes. We should update the 1.x version soon. Also we can provide
a monthly snapshot or so.

Candidates for inclusion in stable branch (beside that, that are
settled in by now.):
- - Translation updates: 8c25cb5, 236bc4c, dc3dea1, ce2d11c, 1ce6b8f,
  590da3d
- - b71f37b -- Bugfix
- - 7a426d7 -- File class extended
- - GTK deprecated stuff: dd54e57
- - b71da22 -- Bugfix
- - svn-&amp;gt;git leftovers: 55de20b, 4e2e57b
- - a4270ac -- Bugfix
- - 559683d -- Added copyright note
- - 7bb3871 -- Bugfix
- - 18d80ca -- Bugfix
- - 5ef3084 -- Bugfix
- - d53d2b9 -- Bugfix
- - 83db9a2 -- Bugfix
- - 09c22e6 -- Bugfix
- - 103c2e2 -- Better code (;-)
- - 4f944cd -- Better code, fixed whitespaces
- - 9b64785 -- README update
- - d8b7b32 -- Dito
- - 49d0e74 -- Better Text
- - evtl. 924ca61

I think I will cherry-pick them if there is no objectives against. How
should we number the stable update? 1.1, I would say?


My opinion too. That is the reason why I help making it more better. :-)

Gruß
   Klaus
- -- 
Klaus Ethgen                              http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16   Klaus Ethgen &amp;lt;Klaus-AFvVKsdj98azQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQGcBAEBCgAGBQJPsT9VAAoJEKZ8CrGAGfasOOcL/2IviWqZzt5EATY68wj2KdWx
CIqepY0S6iauXAqGTbl0LwoAKGl8x+1n5Rja2GMT6VRC55zm4EjSZCSGfZlp6pHQ
ylnX8RTQkcQqPZKynZYW6WxTBveUTnKjW+1ein3NWftwalxBUCTk4y6mXa4xwVls
slYZuKqYkXKZvkHGxfsKVpPEAXZzsA2Xt5mNU3xocGniZCfVpotUV2x4urpHMh4V
DtQDMhf6Q/nB5IhD+51eBaXikHbXF4ECATKYmUHl1r6yChw9KwHTFH3CkLzTacrZ
gmo9NtbkuLRvr8o3vEDRSa7mjLQyLhLkR1jviawefBNeyG+Lu2aNS6l5WjxSLoEE
ktNeYz9O0KZO06LTSHFb8HTziQA7INBjwGr0ILRw/8LUUfFKMtrseTlha/ZuPbI0
e0oARpVOXTnbi8kYnOkdPH5uv37fj8bivqAr8CmnuyDLMPQf4vkU+gsEJSX3EQ2y
Dl/YKQ9jQzsgPlTziPQ3uAUm0lWqUq6M8XJ6V99yhg==
=0VD3
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Klaus Ethgen</dc:creator>
    <dc:date>2012-05-14T17:22:30</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1171">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1171</link>
    <description>&lt;pre&gt;Yes, Klaus, good to hear from you again!

I once comitted a complete Swedish translation (thanks for excellent guidance) 
but did never come to merge it into some main master branch being too 
unexperience with git. 

I would appreciate someone to also marge that translation into the main and 
tell if I can help to resolve any conflicts coming up. 

And can we have an updated version on Sourceforge sooner or later? This is a 
too valuable a software to slumber like that for general users! 

This is, in my opinion, the best fast general image viewer ever made!

All the best,

Tore Ericsson / toer

-----------------------------
Från Klaus Ethgen &amp;lt;Klaus+geekie-QDfuIGTxWZ+zQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;
2012-05-13 13.42.25 [[Geeqie-devel] New development]: 

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Tore Ericsson</dc:creator>
    <dc:date>2012-05-14T06:28:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1170">
    <title>Re: New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1170</link>
    <description>&lt;pre&gt;
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 13/05/2012 13:42, Klaus Ethgen a écrit :

Hi Klaus,

 you can merge most changes from my branch, carefully, most are ok to me.

I would like someone with time and good GTK knowledge fix up GTK
versions compatibility issues.
I think, nowadays, Geeqie code could use more native widgets (ie. for
folder navigation).

Regards,

Laurent aka Zas


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJPr+yyAAoJENhZ8BtkbAenmZ8H/jRE+tEwfCyVPFjrpvMSIC2F
9MNQidMYZ1fbrleBRVqQyq8eU0oXrPRtAbul1mcQngBfABSNpqwNKtK59J3Hr1iy
vgo99+9Aq3oDz7ASKPsYCEH1U1TAUWQaSpZHLxVqlg8eoOEjOnCJkdv7FBCLyAGL
Ru8vqWA8LXpMUEvTJlcOL2T6mBp2AhGW3tCZUq7e1NtsFmpbVmXAqBHgx//LKh0e
BdpieP+9ziznFdRG+5vuP7rRZHfqK0J+mc0xfEfYMJitH9InKcI9R3jSXq6brTa8
hbJP4nP5qJ75oC+wDS2wySFHrvy5E0/Qsr0WPgmShOSmtbqFdqHJtktYfOke/xk=
=LeKV
-----END PGP SIGNATURE-----


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Laurent Monin</dc:creator>
    <dc:date>2012-05-13T17:17:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1169">
    <title>New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1169</link>
    <description>&lt;pre&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hello,

today I finally find the time to look after geeqie again. I find that
Laurent did make some cool stuff including committing patches from
contributors.

Is there any reason for not including them to the master ak development
branch?

By the way, e4a5079 seems to fix or try to fix the same issue than
0922b29. I have to look which is better. ;-)

Regards
   Klaus
- -- 
Klaus Ethgen                              http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16   Klaus Ethgen &amp;lt;Klaus-AFvVKsdj98azQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQGcBAEBCgAGBQJPr54gAAoJEKZ8CrGAGfas39wMAI1UGvyMWZe/D2oS/1Q++abf
osCZtnaNNQsc0NiczxScRQLhbfHTsEsK06spCxGigfCsampvQgfXk3QKo94mLylG
pr9qXFRXvbEliKXBajWKI/fkzewCjOm9ilTRtRT1pkmBoR//y64zTyYK37egTNVq
qEfLdedddlRQCuRzAAy9rlbyOxvt9yy0UtYuY0c/qB2ktZ7GXkde4YzH9UIIS1E3
fnjbjMjzzIV27u7QClfy9vjheGuIcVozeqpA0yJKtGAIkuQp6IDclc6jnYo/XG1p
R8JVOqq8QN2DFpJFW7fd+vF4MxrawrtavNzWHJWyK6nXOkkuP0XUwLSPyJGigCTQ
zqMgzsKrmSddQrIhslU4EGaQQuOO6NmuwZ5hyFPN+iGdNEhUrJyYXNz5o69jw17D
Zv2rvsmjNro0bmouXH3enzx6xtSnR7TottcNGf+MhIjYsu5N1ngpOt2f6Nw4e+PC
3vjhyyW8E1sd7TpY4TYInHifed8rzeHvw0K7+Idyew==
=6Iyw
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Klaus Ethgen</dc:creator>
    <dc:date>2012-05-13T11:42:25</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1168">
    <title>New development</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1168</link>
    <description>&lt;pre&gt;-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Ups, 5ef3084 is the correct commit in master branch. And I think the
patch e4a5079 drives the fix unworkable as the second reference to
...-&amp;gt;name is correct.

Gruß
   Klaus
- -- 
Klaus Ethgen                              http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16   Klaus Ethgen &amp;lt;Klaus-AFvVKsdj98azQB+pC5nmwQ&amp;lt; at &amp;gt;public.gmane.org&amp;gt;
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQGcBAEBCgAGBQJPr5/5AAoJEKZ8CrGAGfasnDsL/2hHLxCaqdyRfcedzQGsR3Cb
sL7c33iqGQ8dGDU4XZY9T/9NcmB50RgRnBMfwHw1/AvE8XOkzxvzvjQscSCrJEDy
NpI5jmK2LV5c77qQlAKgSz19zOjv7/ZEgu8o2IM4ZsUYxwdFBQFBG5ehhVZcg7hY
mZ2tvZfUGM7TvcHsqbpQwgufQfH6mcbFVVp5+KaEAZLrkmKm/Joi6FOvvfUrym5I
fOXtuL9jWSnZJ9h6m26qBewqpdHd9eU+bvnhZ+/apUUpYMpEzQGyBRA3/zDi7v4t
akJAWLMWjx0/4T6EJM8F8bwtok//HiJEBcWCXOTwf+lV0nWDSltyVLMzD79+YOQr
wrKK9ovmvEnr7rOBDPfi+LtGRl9akHzCYokoUPKjIapq/T2ua80TZwk7MtTzlnJ7
WWCvnrHHjw1ZvUIChkaIolwsPOcwSvxSwFpKUCbYXqqXrz/1Bi63YYwbR1NC/fVC
SHqenwUSvYNCSKc1ysqxIXCqHiCzRD+pjTwTAfwUuA==
=Mt+h
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Klaus Ethgen</dc:creator>
    <dc:date>2012-05-13T11:50:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1167">
    <title>Re: File browser/navigation question</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1167</link>
    <description>&lt;pre&gt;Ah, but now I see the problem, in "Folder List" mode it works and shows
you only /home/chris/pictures and what's below it.  However in "Folder
Tree" mode you get to see the whole world.  I want "Folder Tree" mode to
be limited in the same way as "Folder List" mode.

My image directories are several levels deep so "Folder List" mode
doesn't really show things too well, "Folder Tree" is much nicer but not
when it shows everything else as well.

&lt;/pre&gt;</description>
    <dc:creator>Chris Green</dc:creator>
    <dc:date>2012-04-08T20:42:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1166">
    <title>Re: File browser/navigation question</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1166</link>
    <description>&lt;pre&gt;I somehow got the the same place (i.e. what I want) but I'm far from
clear how I did it!  :-)

&lt;/pre&gt;</description>
    <dc:creator>Chris Green</dc:creator>
    <dc:date>2012-04-08T20:35:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1165">
    <title>Re: Star Rating</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1165</link>
    <description>&lt;pre&gt;Personally, I just use keywords.  I predominantly use three keywords 
named "decent", "top20", and "top10".  I use the "Connect keyword to 
mark" functionality extensively, which lets me trivially toggle and 
filter on up to six keywords.  In particular, this works well for me 
since I don't have info in geeqie that other apps need to know about.

I had written a partially-completed patch to plumb the EXIF (I think) 
Rating value through to the UI, but it's bit-rotted a bit; I last 
touched it 2.5 years ago (wow).  It's attached.

That said, even when I had my local geeqie build patched with it, I 
didn't find it anywhere near as useful as the keywords.  Particularly 
because it wasn't easy to filter by the rating (you could search, but 
you couldn't just filter like you can with marks).

--xsdg
diff --git a/trunk/src/Makefile.am b/trunk/src/Makefile.am
index 144b090..9528d30 100644
--- a/trunk/src/Makefile.am
+++ b/trunk/src/Makefile.am
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -94,6 +94,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; geeqie_SOURCES = \
 bar_keywords.h\
 bar_exif.c\
 bar_exif.h\
+bar_rating.c\
+bar_rating.h\
 bar_sort.c\
 bar_sort.h\
 cache.c\
diff --git a/trunk/src/bar.c b/trunk/src/bar.c
index 52d6a54..4d64b71 100644
--- a/trunk/src/bar.c
+++ b/trunk/src/bar.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -25,6 +25,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "ui_menu.h"
 #include "bar_comment.h"
 #include "bar_keywords.h"
+#include "bar_rating.h"
 #include "bar_exif.h"
 #include "bar_histogram.h"
 #include "histogram.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -76,6 +77,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const gchar default_config_comment[] =
 "    &amp;lt;/layout&amp;gt;"
 "&amp;lt;/gq&amp;gt;";
 
+static const gchar default_config_rating[] =
+"&amp;lt;gq&amp;gt;"
+"    &amp;lt;layout id = '_current_'&amp;gt;"
+"        &amp;lt;bar&amp;gt;"
+"            &amp;lt;pane_rating id = 'rating' expanded = 'true' key = '" RATING_KEY "' /&amp;gt;"
+"        &amp;lt;/bar&amp;gt;"
+"    &amp;lt;/layout&amp;gt;"
+"&amp;lt;/gq&amp;gt;";
+
 static const gchar default_config_exif[] = 
 "&amp;lt;gq&amp;gt;"
 "    &amp;lt;layout id = '_current_'&amp;gt;"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -178,6 +188,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const KnownPanes known_panes[] = {
 {PANE_GPS,"gps",N_("GPS Map"),default_config_gps},
 #endif
 #endif
+{PANE_RATING,"rating",       N_("Rating"),   default_config_rating},
 {PANE_UNDEF,NULL,NULL,NULL}
 };
 
diff --git a/trunk/src/bar.h b/trunk/src/bar.h
index 61dc4be..d24acf3 100644
--- a/trunk/src/bar.h
+++ b/trunk/src/bar.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -20,7 +20,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef enum {
 PANE_EXIF,
 PANE_HISTOGRAM,
 PANE_KEYWORDS,
-PANE_GPS
+PANE_GPS,
+PANE_RATING
 } PaneType;
 
 typedef struct _PaneData PaneData;
diff --git a/trunk/src/bar_rating.c b/trunk/src/bar_rating.c
new file mode 100644
index 0000000..0898183
--- /dev/null
+++ b/trunk/src/bar_rating.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,401 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+ * Geeqie
+ * (C) 2004 John Ellis
+ * Copyright (C) 2008 - 2009 The Geeqie Team
+ *
+ * Author: Omari Stephens
+ *
+ * This software is released under the GNU General Public License (GNU GPL).
+ * Please read the included file COPYING for more information.
+ * This software comes with no warranty of any kind, use at your own risk!
+ */
+
+
+#include "main.h"
+#include "bar_rating.h"
+
+#include "bar.h"
+#include "metadata.h"
+#include "filedata.h"
+#include "ui_menu.h"
+#include "ui_misc.h"
+#include "rcfile.h"
+#include "layout.h"
+#include "layout_image.h"
+
+static void bar_pane_rating_changed(GtkSpinButton *button, gpointer data);
+
+/*
+ *-------------------------------------------------------------------
+ * rating utils
+ *-------------------------------------------------------------------
+ */
+
+
+
+typedef struct _PaneRatingData PaneRatingData;
+struct _PaneRatingData
+{
+PaneData pane;
+GtkHBox *container;
+GtkSpinButton *spinbutton;
+GtkToggleButton *auto_adv;      // autoadvance
+FileData *fd;
+gchar *key;
+gint height;
+};
+
+
+static void bar_pane_rating_write(PaneRatingData *prd)
+{
+guint value;
+
+if (!prd-&amp;gt;fd) return;
+
+value = gtk_spin_button_get_value_as_int(prd-&amp;gt;spinbutton);
+
+metadata_write_int(prd-&amp;gt;fd, prd-&amp;gt;key, value);
+}
+
+
+static void bar_pane_rating_update(PaneRatingData *prd)
+{
+guint64 value;
+
+g_signal_handlers_block_by_func(prd-&amp;gt;spinbutton, bar_pane_rating_changed, prd);
+
+value = metadata_read_int(prd-&amp;gt;fd, prd-&amp;gt;key, (guint64)-1);
+
+if(value != (guint64)-1)
+{
+gtk_spin_button_set_value(prd-&amp;gt;spinbutton, value);
+}
+else
+{
+gtk_spin_button_set_value(prd-&amp;gt;spinbutton, 0);
+}
+
+g_signal_handlers_unblock_by_func(prd-&amp;gt;spinbutton, bar_pane_rating_changed, prd);
+
+gtk_widget_set_sensitive((GtkWidget*) prd-&amp;gt;spinbutton, (prd-&amp;gt;fd != NULL));
+}
+
+static void bar_pane_rating_set_selection(PaneRatingData *prd, gboolean overwrite)
+{
+GList *list = NULL;
+GList *work;
+gint value = -1;
+
+value = gtk_spin_button_get_value_as_int(prd-&amp;gt;spinbutton);
+
+list = layout_selection_list(prd-&amp;gt;pane.lw);
+list = file_data_process_groups_in_selection(list, FALSE, NULL);
+
+work = list;
+while (work)
+{
+FileData *fd = work-&amp;gt;data;
+work = work-&amp;gt;next;
+if (fd == prd-&amp;gt;fd) continue;
+
+if (overwrite || (metadata_read_int(fd, prd-&amp;gt;key, -1) == (guint64)-1))
+{
+metadata_write_int(fd, prd-&amp;gt;key, value);
+}
+}
+
+filelist_free(list);
+}
+
+/*
+static void bar_pane_comment_sel_add_cb(GtkWidget *button, gpointer data)
+{
+PaneCommentData *pcd = data;
+
+bar_pane_comment_set_selection(pcd, TRUE);
+}
+
+
+static void bar_pane_comment_sel_replace_cb(GtkWidget *button, gpointer data)
+{
+PaneCommentData *pcd = data;
+
+bar_pane_comment_set_selection(pcd, FALSE);
+}
+*/
+
+static void bar_pane_rating_set_fd(GtkWidget *bar, FileData *fd)
+{
+PaneRatingData *prd;
+
+prd = g_object_get_data(G_OBJECT(bar), "pane_data");
+if (!prd) return;
+
+file_data_unref(prd-&amp;gt;fd);
+prd-&amp;gt;fd = file_data_ref(fd);
+
+bar_pane_rating_update(prd);
+}
+
+static gint bar_pane_rating_event(GtkWidget *bar, GdkEvent *event)
+{
+PaneRatingData *prd;
+
+prd = g_object_get_data(G_OBJECT(bar), "pane_data");
+if (!prd) return FALSE;
+
+if (GTK_WIDGET_HAS_FOCUS(prd-&amp;gt;spinbutton))
+{
+return gtk_widget_event((GtkWidget*) prd-&amp;gt;spinbutton, event);
+}
+
+return FALSE;
+}
+
+static void bar_pane_rating_write_config(GtkWidget *pane, GString *outstr, gint indent)
+{
+PaneRatingData *prd;
+
+prd = g_object_get_data(G_OBJECT(pane), "pane_data");
+if (!prd) return;
+
+WRITE_NL(); WRITE_STRING("&amp;lt;pane_rating ");
+write_char_option(outstr, indent, "id", prd-&amp;gt;pane.id);
+write_char_option(outstr, indent, "title", gtk_label_get_text(GTK_LABEL(prd-&amp;gt;pane.title)));
+WRITE_BOOL(prd-&amp;gt;pane, expanded);
+WRITE_CHAR(*prd, key);
+WRITE_INT(*prd, height);
+WRITE_STRING("/&amp;gt;");
+}
+
+static void bar_pane_rating_notify_cb(FileData *fd, NotifyType type, gpointer data)
+{
+PaneRatingData *prd = data;
+if ((type &amp;amp; (NOTIFY_REREAD | NOTIFY_CHANGE | NOTIFY_METADATA)) &amp;amp;&amp;amp; fd == prd-&amp;gt;fd)
+{
+DEBUG_1("Notify pane_rating: %s %04x", fd-&amp;gt;path, type);
+
+bar_pane_rating_update(prd);
+}
+}
+
+static void bar_pane_rating_changed(GtkSpinButton *button, gpointer data)
+{
+PaneRatingData *prd = data;
+
+file_data_unregister_notify_func(bar_pane_rating_notify_cb, prd);
+bar_pane_rating_write(prd);
+file_data_register_notify_func(bar_pane_rating_notify_cb, prd, NOTIFY_PRIORITY_LOW);
+}
+
+static void bar_pane_rating_inc_value_cb(GtkButton *button, gpointer data)
+{
+bar_pane_rating_inc_value(data);
+}
+
+void bar_pane_rating_inc_value(gpointer data)
+{
+PaneRatingData *prd = data;
+gtk_spin_button_spin(prd-&amp;gt;spinbutton, GTK_SPIN_STEP_FORWARD, 1.0);
+if(gtk_toggle_button_get_active(prd-&amp;gt;auto_adv)) layout_image_next(NULL);
+}
+
+static void bar_pane_rating_dec_value_cb(GtkButton *button, gpointer data)
+{
+bar_pane_rating_dec_value(data);
+}
+
+void bar_pane_rating_dec_value(gpointer data)
+{
+PaneRatingData *prd = data;
+gtk_spin_button_spin(prd-&amp;gt;spinbutton, GTK_SPIN_STEP_BACKWARD, 1.0);
+if(gtk_toggle_button_get_active(prd-&amp;gt;auto_adv)) layout_image_next(NULL);
+}
+
+void bar_pane_rating_set_value(gint value, gpointer data)
+{
+PaneRatingData *prd = data;
+gtk_spin_button_set_value(prd-&amp;gt;spinbutton, value);
+if(gtk_toggle_button_get_active(prd-&amp;gt;auto_adv)) layout_image_next(NULL);
+}
+
+
+/*
+static void bar_pane_comment_populate_popup(GtkTextView *textview, GtkMenu *menu, gpointer data)
+{
+PaneCommentData *pcd = data;
+
+menu_item_add_divider(GTK_WIDGET(menu));
+menu_item_add_stock(GTK_WIDGET(menu), _("Add text to selected files"), GTK_STOCK_ADD, G_CALLBACK(bar_pane_comment_sel_add_cb), pcd);
+menu_item_add_stock(GTK_WIDGET(menu), _("Replace existing text in selected files"), GTK_STOCK_CONVERT, G_CALLBACK(bar_pane_comment_sel_replace_cb), data);
+}
+*/
+
+#if 0
+static void bar_pane_comment_close(GtkWidget *bar)
+{
+PaneCommentData *pcd;
+
+pcd = g_object_get_data(G_OBJECT(bar), "pane_data");
+if (!pcd) return;
+
+gtk_widget_destroy(pcd-&amp;gt;comment_view);
+}
+#endif
+
+static void bar_pane_rating_destroy(GtkWidget *widget, gpointer data)
+{
+// FIXME: make sure we free the spinbutton
+PaneRatingData *prd = data;
+
+file_data_unregister_notify_func(bar_pane_rating_notify_cb, prd);
+
+file_data_unref(prd-&amp;gt;fd);
+g_free(prd-&amp;gt;key);
+
+g_free(prd-&amp;gt;pane.id);
+
+g_free(prd);
+}
+
+
+static GtkWidget *bar_pane_rating_new(const gchar *id, const gchar *title, const gchar *key,
+gboolean expanded, gint height)
+{
+PaneRatingData *prd;
+GtkHBox *hbox;
+GtkWidget *tmp;
+
+prd = g_new0(PaneRatingData, 1);
+
+prd-&amp;gt;pane.pane_set_fd = bar_pane_rating_set_fd;
+prd-&amp;gt;pane.pane_event = bar_pane_rating_event;
+prd-&amp;gt;pane.pane_write_config = bar_pane_rating_write_config;
+prd-&amp;gt;pane.title = bar_pane_expander_title(title);
+prd-&amp;gt;pane.id = g_strdup(id);
+prd-&amp;gt;pane.type = PANE_RATING;
+
+prd-&amp;gt;pane.expanded = expanded;
+
+prd-&amp;gt;key = g_strdup(key);
+prd-&amp;gt;height = height;
+
+// HBOX
+hbox = (GtkHBox*)gtk_hbox_new(FALSE, 0);
+
+prd-&amp;gt;container = hbox;
+g_object_set_data(G_OBJECT(prd-&amp;gt;container), "pane_data", prd);
+g_signal_connect(G_OBJECT(prd-&amp;gt;container), "destroy",
+ G_CALLBACK(bar_pane_rating_destroy), prd);
+
+gtk_widget_set_size_request((GtkWidget*) prd-&amp;gt;container, -1, -1);
+gtk_widget_show((GtkWidget*) hbox);
+
+// AUTOADVANCE CHECKBOX
+tmp = gtk_check_button_new_with_label("AA");
+gtk_box_pack_start((GtkBox*) hbox, tmp, TRUE, TRUE, 0);
+gtk_widget_show(tmp);
+prd-&amp;gt;auto_adv = (GtkToggleButton*) tmp;
+
+// INCREMENT/DECREMENT BUTTONS
+tmp = gtk_button_new_with_label(_("↓ Dec."));
+gtk_box_pack_start((GtkBox*) hbox, tmp, TRUE, TRUE, 0);
+g_signal_connect(G_OBJECT(tmp), "clicked", G_CALLBACK(bar_pane_rating_dec_value_cb), prd);
+gtk_widget_show(tmp);
+
+tmp = gtk_button_new_with_label(_("↑ Inc."));
+gtk_box_pack_end((GtkBox*) hbox, tmp, TRUE, TRUE, 0);
+g_signal_connect(G_OBJECT(tmp), "clicked", G_CALLBACK(bar_pane_rating_inc_value_cb), prd);
+gtk_widget_show(tmp);
+
+
+// SPIN BUTTON
+prd-&amp;gt;spinbutton = (GtkSpinButton*) gtk_spin_button_new_with_range((gdouble) MIN_RATING,
+(gdouble) MAX_RATING, 1.0);
+gtk_spin_button_set_numeric(prd-&amp;gt;spinbutton, TRUE);
+gtk_spin_button_set_snap_to_ticks(prd-&amp;gt;spinbutton, TRUE);
+
+gtk_box_pack_start((GtkBox*) hbox, (GtkWidget*) prd-&amp;gt;spinbutton, FALSE, TRUE, 0);
+//g_signal_connect(G_OBJECT(pcd-&amp;gt;comment_view), "populate-popup",
+// G_CALLBACK(bar_pane_comment_populate_popup), pcd);
+gtk_widget_show((GtkWidget*) prd-&amp;gt;spinbutton);
+
+g_signal_connect(G_OBJECT(prd-&amp;gt;spinbutton), "value-changed",
+ G_CALLBACK(bar_pane_rating_changed), prd);
+
+
+file_data_register_notify_func(bar_pane_rating_notify_cb, prd, NOTIFY_PRIORITY_LOW);
+
+return (GtkWidget*) prd-&amp;gt;container;
+}
+
+GtkWidget *bar_pane_rating_new_from_config(const gchar **attribute_names,
+const gchar **attribute_values)
+{
+gchar *title = NULL;
+gchar *key = g_strdup(RATING_KEY);
+gboolean expanded = TRUE;
+gint height = 50;
+gchar *id = g_strdup("rating");
+GtkWidget *ret;
+
+while (*attribute_names)
+{
+const gchar *option = *attribute_names++;
+const gchar *value = *attribute_values++;
+
+if (READ_CHAR_FULL("title", title)) continue;
+if (READ_CHAR_FULL("key", key)) continue;
+if (READ_BOOL_FULL("expanded", expanded)) continue;
+if (READ_INT_FULL("height", height)) continue;
+if (READ_CHAR_FULL("id", id)) continue;
+
+
+log_printf("unknown attribute %s = %s\n", option, value);
+}
+
+bar_pane_translate_title(PANE_RATING, id, &amp;amp;title);
+ret = bar_pane_rating_new(id, title, key, expanded, height);
+g_free(title);
+g_free(key);
+g_free(id);
+return ret;
+}
+
+void bar_pane_rating_update_from_config(GtkWidget *pane, const gchar **attribute_names,
+const gchar **attribute_values)
+{
+PaneRatingData *prd;
+
+prd = g_object_get_data(G_OBJECT(pane), "pane_data");
+if (!prd) return;
+
+gchar *title = NULL;
+
+while (*attribute_names)
+{
+const gchar *option = *attribute_names++;
+const gchar *value = *attribute_values++;
+
+if (READ_CHAR_FULL("title", title)) continue;
+if (READ_CHAR_FULL("key", prd-&amp;gt;key)) continue;
+if (READ_BOOL_FULL("expanded", prd-&amp;gt;pane.expanded)) continue;
+if (READ_INT_FULL("height", prd-&amp;gt;height)) continue;
+if (READ_CHAR_FULL("id", prd-&amp;gt;pane.id)) continue;
+
+
+log_printf("unknown attribute %s = %s\n", option, value);
+}
+
+if (title)
+{
+bar_pane_translate_title(PANE_RATING, prd-&amp;gt;pane.id, &amp;amp;title);
+gtk_label_set_text(GTK_LABEL(prd-&amp;gt;pane.title), title);
+g_free(title);
+}
+gtk_widget_set_size_request((GtkWidget*) prd-&amp;gt;container, -1, -1);
+bar_update_expander(pane);
+bar_pane_rating_update(prd);
+}
+
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
diff --git a/trunk/src/bar_rating.h b/trunk/src/bar_rating.h
new file mode 100644
index 0000000..1862159
--- /dev/null
+++ b/trunk/src/bar_rating.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,30 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+/*
+ * Geeqie
+ * (C) 2004 John Ellis
+ * Copyright (C) 2008 - 2009 The Geeqie Team
+ *
+ * Author: Omari Stephens
+ *
+ * This software is released under the GNU General Public License (GNU GPL).
+ * Please read the included file COPYING for more information.
+ * This software comes with no warranty of any kind, use at your own risk!
+ */
+
+
+#ifndef BAR_RATING_H
+#define BAR_RATING_H
+
+GtkWidget *bar_pane_rating_new_from_config(const gchar **attribute_names,
+const gchar **attribute_values);
+void bar_pane_rating_update_from_config(GtkWidget *pane, const gchar **attribute_names,
+const gchar **attribute_values);
+void bar_pane_rating_inc_value(gpointer data);
+void bar_pane_rating_dec_value(gpointer data);
+void bar_pane_rating_set_value(gint value, gpointer data);
+
+#define MIN_RATING 0
+#define MAX_RATING 10
+
+
+#endif
+/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
diff --git a/trunk/src/filedata.c b/trunk/src/filedata.c
index 43dc828..97e5ff9 100644
--- a/trunk/src/filedata.c
+++ b/trunk/src/filedata.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -230,6 +230,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void file_data_set_collate_keys(FileData *fd)
 g_free(fd-&amp;gt;collate_key_name);
 g_free(fd-&amp;gt;collate_key_name_nocase);
 
+g_free(fd-&amp;gt;metadata_collate_key);
+fd-&amp;gt;metadata_collate_key = NULL;
+
 #if GLIB_CHECK_VERSION(2, 8, 0)
 fd-&amp;gt;collate_key_name = g_utf8_collate_key_for_filename(fd-&amp;gt;name, -1);
 fd-&amp;gt;collate_key_name_nocase = g_utf8_collate_key_for_filename(caseless_name, -1);
diff --git a/trunk/src/layout_util.c b/trunk/src/layout_util.c
index b853852..fa09e4f 100644
--- a/trunk/src/layout_util.c
+++ b/trunk/src/layout_util.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,6 +17,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "advanced_exif.h"
 #include "bar_sort.h"
 #include "bar.h"
+#include "bar_rating.h"
 #include "cache_maint.h"
 #include "collect.h"
 #include "collect-dlg.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -750,6 +751,38 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void layout_menu_bar_exif_cb(GtkAction *action, gpointer data)
 layout_exif_window_new(lw);
 }
 
+static void layout_menu_bar_rating_cb(GtkAction *action, gpointer data)
+{
+LayoutWindow *lw = data;
+GtkWidget *pane;
+void *prd;
+const gchar *action_name;
+
+if(!lw-&amp;gt;bar) return;
+
+pane = bar_find_pane_by_id(lw-&amp;gt;bar, PANE_RATING, "rating");
+if(!pane) return;
+
+prd = g_object_get_data(G_OBJECT(pane), "pane_data");
+if(!prd) return;
+
+// Got a pane; now poke at it
+action_name = gtk_action_get_name(action);
+if(!g_strcmp0(action_name, "IncRating")) bar_pane_rating_inc_value(prd);
+else if(!g_strcmp0(action_name, "DecRating")) bar_pane_rating_dec_value(prd);
+else if(!g_strcmp0(action_name, "Rating0")) bar_pane_rating_set_value(0, prd);
+else if(!g_strcmp0(action_name, "Rating1")) bar_pane_rating_set_value(1, prd);
+else if(!g_strcmp0(action_name, "Rating2")) bar_pane_rating_set_value(2, prd);
+else if(!g_strcmp0(action_name, "Rating3")) bar_pane_rating_set_value(3, prd);
+else if(!g_strcmp0(action_name, "Rating4")) bar_pane_rating_set_value(4, prd);
+else if(!g_strcmp0(action_name, "Rating5")) bar_pane_rating_set_value(5, prd);
+else if(!g_strcmp0(action_name, "Rating6")) bar_pane_rating_set_value(6, prd);
+else if(!g_strcmp0(action_name, "Rating7")) bar_pane_rating_set_value(7, prd);
+else if(!g_strcmp0(action_name, "Rating8")) bar_pane_rating_set_value(8, prd);
+else if(!g_strcmp0(action_name, "Rating9")) bar_pane_rating_set_value(9, prd);
+else if(!g_strcmp0(action_name, "Rating10")) bar_pane_rating_set_value(10, prd);
+}
+
 static void layout_menu_float_cb(GtkToggleAction *action, gpointer data)
 {
 LayoutWindow *lw = data;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1236,6 +1269,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static GtkActionEntry menu_entries[] = {
   { "EditMenu",NULL,N_("_Edit"),NULL, NULL,NULL },
   { "SelectMenu",NULL,N_("_Select"),NULL, NULL,NULL },
   { "OrientationMenu",NULL,N_("_Orientation"),NULL, NULL,NULL },
+  { "MetadataMenu",NULL,N_("_Metadata"),NULL, NULL,NULL },
+  { "MetadataRateMenu",NULL,N_("_Set Rating"),NULL, NULL,NULL },
   { "ExternalMenu",NULL,N_("E_xternal Editors"),NULL, NULL,NULL },
   { "PreferencesMenu",NULL,N_("P_references"),NULL, NULL,NULL },
   { "ViewMenu",NULL,N_("_View"),NULL, NULL,NULL },
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1293,6 +1328,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static GtkActionEntry menu_entries[] = {
   { "Maintenance",NULL,N_("_Thumbnail maintenance..."),NULL,N_("Thumbnail maintenance..."),CB(layout_menu_remove_thumb_cb) },
   { "Wallpaper",NULL,N_("Set as _wallpaper"),NULL,N_("Set as wallpaper"),CB(layout_menu_wallpaper_cb) },
   { "SaveMetadata",GTK_STOCK_SAVE,N_("_Save metadata"),"&amp;lt;control&amp;gt;S",N_("Save metadata"),CB(layout_menu_metadata_write_cb) },
+  { "IncRating",NULL,N_("_Increment Rating"),"&amp;lt;alt&amp;gt;KP_Add",N_("Increment image rating"),CB(layout_menu_bar_rating_cb) },
+  { "DecRating",NULL,N_("_Decrement Rating"),"&amp;lt;alt&amp;gt;KP_Subtract",N_("Decrement image rating"),CB(layout_menu_bar_rating_cb) },
+  { "Rating0",NULL,N_("Rate _0"),"&amp;lt;alt&amp;gt;KP_0",N_("Set image rating to 0"),CB(layout_menu_bar_rating_cb) },
+  { "Rating1",NULL,N_("Rate _1"),"&amp;lt;alt&amp;gt;KP_1",N_("Set image rating to 1"),CB(layout_menu_bar_rating_cb) },
+  { "Rating2",NULL,N_("Rate _2"),"&amp;lt;alt&amp;gt;KP_2",N_("Set image rating to 2"),CB(layout_menu_bar_rating_cb) },
+  { "Rating3",NULL,N_("Rate _3"),"&amp;lt;alt&amp;gt;KP_3",N_("Set image rating to 3"),CB(layout_menu_bar_rating_cb) },
+  { "Rating4",NULL,N_("Rate _4"),"&amp;lt;alt&amp;gt;KP_4",N_("Set image rating to 4"),CB(layout_menu_bar_rating_cb) },
+  { "Rating5",NULL,N_("Rate _5"),"&amp;lt;alt&amp;gt;KP_5",N_("Set image rating to 5"),CB(layout_menu_bar_rating_cb) },
+  { "Rating6",NULL,N_("Rate _6"),"&amp;lt;alt&amp;gt;KP_6",N_("Set image rating to 6"),CB(layout_menu_bar_rating_cb) },
+  { "Rating7",NULL,N_("Rate _7"),"&amp;lt;alt&amp;gt;KP_7",N_("Set image rating to 7"),CB(layout_menu_bar_rating_cb) },
+  { "Rating8",NULL,N_("Rate _8"),"&amp;lt;alt&amp;gt;KP_8",N_("Set image rating to 8"),CB(layout_menu_bar_rating_cb) },
+  { "Rating9",NULL,N_("Rate _9"),"&amp;lt;alt&amp;gt;KP_9",N_("Set image rating to 9"),CB(layout_menu_bar_rating_cb) },
+  { "Rating10",NULL,N_("Rate _10"),"&amp;lt;alt&amp;gt;KP_Decimal",N_("Set image rating to 10"),CB(layout_menu_bar_rating_cb) },
   { "ZoomIn",GTK_STOCK_ZOOM_IN,N_("Zoom _in"),"equal",N_("Zoom in"),CB(layout_menu_zoom_in_cb) },
   { "ZoomInAlt1",GTK_STOCK_ZOOM_IN,N_("Zoom _in"),"KP_Add",N_("Zoom in"),CB(layout_menu_zoom_in_cb) },
   { "ZoomOut",GTK_STOCK_ZOOM_OUT,N_("Zoom _out"),"minus",N_("Zoom out"),CB(layout_menu_zoom_out_cb) },
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1343,7 +1391,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static GtkActionEntry menu_entries[] = {
   { "About",GTK_STOCK_ABOUT,N_("_About"),NULL,N_("About"),CB(layout_menu_about_cb) },
   { "LogWindow",NULL,N_("_Log Window"),NULL,N_("Log Window"),CB(layout_menu_log_window_cb) },
   { "ExifWin",NULL,N_("_Exif window"),"&amp;lt;control&amp;gt;E",N_("Exif window"),CB(layout_menu_bar_exif_cb) },
-
 };
 
 static GtkToggleActionEntry menu_toggle_entries[] = {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1469,7 +1516,25 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const gchar *menu_ui_description =
 "        &amp;lt;menuitem action='Flip'/&amp;gt;"
 "        &amp;lt;menuitem action='AlterNone'/&amp;gt;"
 "      &amp;lt;/menu&amp;gt;"
-"      &amp;lt;menuitem action='SaveMetadata'/&amp;gt;"
+"      &amp;lt;menu action='MetadataMenu'&amp;gt;"
+"        &amp;lt;menuitem action='SaveMetadata'/&amp;gt;"
+"        &amp;lt;separator/&amp;gt;"
+"        &amp;lt;menuitem action='IncRating'/&amp;gt;"
+"        &amp;lt;menuitem action='DecRating'/&amp;gt;"
+"        &amp;lt;menu action='MetadataRateMenu'&amp;gt;"
+"          &amp;lt;menuitem action='Rating0'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating1'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating2'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating3'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating4'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating5'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating6'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating7'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating8'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating9'/&amp;gt;"
+"          &amp;lt;menuitem action='Rating10'/&amp;gt;"
+"        &amp;lt;/menu&amp;gt;"
+"      &amp;lt;/menu&amp;gt;"
 "      &amp;lt;placeholder name='PropertiesSection'/&amp;gt;"
 "      &amp;lt;separator/&amp;gt;"
 "        &amp;lt;menu action='PreferencesMenu'&amp;gt;"
diff --git a/trunk/src/metadata.h b/trunk/src/metadata.h
index 639da6d..be265cc 100644
--- a/trunk/src/metadata.h
+++ b/trunk/src/metadata.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,6 +17,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define COMMENT_KEY "Xmp.dc.description"
 #define KEYWORD_KEY "Xmp.dc.subject"
 #define ORIENTATION_KEY "Xmp.tiff.Orientation"
+#define RATING_KEY "Xmp.xmp.Rating"
 
 gboolean metadata_write_queue_remove(FileData *fd);
 gboolean metadata_write_queue_remove_list(GList *list);
diff --git a/trunk/src/rcfile.c b/trunk/src/rcfile.c
index 4053b58..babd0a4 100644
--- a/trunk/src/rcfile.c
+++ b/trunk/src/rcfile.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -22,6 +22,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "bar_histogram.h"
 #include "bar_keywords.h"
 #include "bar_sort.h"
+#include "bar_rating.h"
 #include "editors.h"
 #include "filefilter.h"
 #include "misc.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -918,6 +919,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void options_parse_bar(GQParserData *parser_data, GMarkupParseContext *co
 }
 options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL);
 }
+else if (g_ascii_strcasecmp(element_name, "pane_rating") == 0)
+{
+GtkWidget *pane = bar_find_pane_by_id(bar, PANE_RATING,
+options_get_id(attribute_names, attribute_values));
+if (pane)
+{
+bar_pane_rating_update_from_config(pane, attribute_names,
+attribute_values);
+}
+else
+{
+pane = bar_pane_rating_new_from_config(attribute_names, attribute_values);
+bar_add(bar, pane);
+}
+options_parse_func_push(parser_data, options_parse_leaf, NULL, NULL);
+}
 #ifdef HAVE_LIBCHAMPLAIN
 #ifdef HAVE_LIBCHAMPLAIN_GTK
 else if (g_ascii_strcasecmp(element_name, "pane_gps") == 0)
diff --git a/trunk/src/search.c b/trunk/src/search.c
index 451e091..f99687b 100644
--- a/trunk/src/search.c
+++ b/trunk/src/search.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -40,6 +40,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "utilops.h"
 #include "window.h"
 #include "bar_keywords.h"
+#include "bar_rating.h"
 
 #include &amp;lt;gdk/gdkkeysyms.h&amp;gt; /* for keyboard values */
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -122,6 +123,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct _SearchData
 GtkWidget *spin_similarity;
 GtkWidget *entry_similarity;
 
+GtkWidget *check_rating;
+GtkWidget *menu_rating;
+GtkWidget *spin_rating;
+GtkWidget *spin_rating_end;
+
 GtkWidget *check_keywords;
 GtkWidget *menu_keywords;
 GtkWidget *entry_keywords;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -136,6 +142,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct _SearchData
 gboolean   search_name_match_case;
 gint64 search_size;
 gint64 search_size_end;
+guint64 search_rating;
+guint64 search_rating_end;
 gint   search_date_y;
 gint   search_date_m;
 gint   search_date_d;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -159,6 +167,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct _SearchData
 MatchType match_size;
 MatchType match_date;
 MatchType match_dimensions;
+MatchType match_rating;
 MatchType match_keywords;
 MatchType match_comment;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -167,6 +176,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct _SearchData
 gboolean match_date_enable;
 gboolean match_dimensions_enable;
 gboolean match_similarity_enable;
+gboolean match_rating_enable;
 gboolean match_keywords_enable;
 gboolean match_comment_enable;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -233,6 +243,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static const MatchList text_search_menu_date[] = {
 { N_("between"),SEARCH_MATCH_BETWEEN }
 };
 
+static const MatchList text_search_menu_rating[] = {
+{ N_("equal to"),SEARCH_MATCH_EQUAL },
+{ N_("less than"),SEARCH_MATCH_UNDER },
+{ N_("greater than"),SEARCH_MATCH_OVER },
+{ N_("between"),SEARCH_MATCH_BETWEEN },
+{ N_("unset"),SEARCH_MATCH_NONE },
+};
+
 static const MatchList text_search_menu_keyword[] = {
 { N_("match all"),SEARCH_MATCH_ALL },
 { N_("match any"),SEARCH_MATCH_ANY },
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1799,6 +1817,36 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static gboolean search_file_next(SearchData *sd)
 }
 }
 
+if (match &amp;amp;&amp;amp; sd-&amp;gt;match_rating_enable)
+{
+tested = TRUE;
+match = FALSE;
+guint64 rating = metadata_read_int(fd, RATING_KEY, (guint64) -1);
+
+if (rating == (guint64) -1)
+{
+/* Files without a rating only match if we're actively looking for them */
+match = (sd-&amp;gt;match_rating == SEARCH_MATCH_NONE);
+}
+else if (sd-&amp;gt;match_rating == SEARCH_MATCH_EQUAL)
+{
+match = (rating == sd-&amp;gt;search_rating);
+}
+else if (sd-&amp;gt;match_rating == SEARCH_MATCH_UNDER)
+{
+match = (rating &amp;lt; sd-&amp;gt;search_rating);
+}
+else if (sd-&amp;gt;match_rating == SEARCH_MATCH_OVER)
+{
+match = (rating &amp;gt; sd-&amp;gt;search_rating);
+}
+else if (sd-&amp;gt;match_rating == SEARCH_MATCH_BETWEEN)
+{
+match = MATCH_IS_BETWEEN(rating, sd-&amp;gt;search_rating,
+                         sd-&amp;gt;search_rating_end);
+}
+}
+
 if (match &amp;amp;&amp;amp; sd-&amp;gt;match_keywords_enable &amp;amp;&amp;amp; sd-&amp;gt;search_keyword_list)
 {
 GList *list;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2427,6 +2475,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void menu_choice_dimensions_cb(GtkWidget *combo, gpointer data)
 (sd-&amp;gt;match_dimensions == SEARCH_MATCH_BETWEEN));
 }
 
+static void menu_choice_rating_cb(GtkWidget *combo, gpointer data)
+{
+SearchData *sd = data;
+
+if (!menu_choice_get_match_type(combo, &amp;amp;sd-&amp;gt;match_rating)) return;
+
+menu_choice_set_visible(sd-&amp;gt;spin_rating, sd-&amp;gt;match_rating != SEARCH_MATCH_NONE);
+menu_choice_set_visible(gtk_widget_get_parent(sd-&amp;gt;spin_rating_end),
+(sd-&amp;gt;match_rating == SEARCH_MATCH_BETWEEN));
+}
+
 static void menu_choice_keyword_cb(GtkWidget *combo, gpointer data)
 {
 SearchData *sd = data;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2623,6 +2682,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void search_new(FileData *dir_fd, FileData *example_file)
 sd-&amp;gt;match_size = SEARCH_MATCH_EQUAL;
 sd-&amp;gt;match_date = SEARCH_MATCH_EQUAL;
 sd-&amp;gt;match_dimensions = SEARCH_MATCH_EQUAL;
+sd-&amp;gt;match_rating = SEARCH_MATCH_EQUAL;
 sd-&amp;gt;match_keywords = SEARCH_MATCH_ALL;
 sd-&amp;gt;match_comment = SEARCH_MATCH_CONTAINS;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2762,6 +2822,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void search_new(FileData *dir_fd, FileData *example_file)
 gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0);
 gtk_widget_show(combo);
 
+/* Search for rating */
+hbox = menu_choice(sd-&amp;gt;box_search, &amp;amp;sd-&amp;gt;check_rating, &amp;amp;sd-&amp;gt;menu_rating,
+   _("Rating is"), &amp;amp;sd-&amp;gt;match_rating_enable, text_search_menu_rating,
+   sizeof(text_search_menu_rating) / sizeof(MatchList),
+   G_CALLBACK(menu_choice_rating_cb), sd);
+sd-&amp;gt;spin_rating = menu_spin(hbox, MIN_RATING, MAX_RATING, sd-&amp;gt;search_rating,
+  G_CALLBACK(menu_choice_spin_cb), &amp;amp;sd-&amp;gt;search_rating);
+hbox2 = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
+gtk_box_pack_start(GTK_BOX(hbox), hbox2, FALSE, FALSE, 0);
+pref_label_new(hbox2, _("and"));
+sd-&amp;gt;spin_rating_end = menu_spin(hbox2, MIN_RATING, MAX_RATING, sd-&amp;gt;search_rating_end,
+      G_CALLBACK(menu_choice_spin_cb), &amp;amp;sd-&amp;gt;search_rating_end);
+
 /* Search for image keywords */
 hbox = menu_choice(sd-&amp;gt;box_search, &amp;amp;sd-&amp;gt;check_keywords, &amp;amp;sd-&amp;gt;menu_keywords,
    _("Keywords"), &amp;amp;sd-&amp;gt;match_keywords_enable,
diff --git a/trunk/src/typedefs.h b/trunk/src/typedefs.h
index 86fc4ea..0691778 100644
--- a/trunk/src/typedefs.h
+++ b/trunk/src/typedefs.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -463,6 +463,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct _FileData {
 const gchar *extension;
 gchar *collate_key_name;
 gchar *collate_key_name_nocase;
+gchar *metadata_collate_key; /* for sorting by metadata tags */
 gint64 size;
 time_t date;
 mode_t mode; /* this is needed at least for notification in view_dir because it is preserved after the file/directory is deleted */
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2_______________________________________________
Geeqie-devel mailing list
Geeqie-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f&amp;lt; at &amp;gt;public.gmane.org
https://lists.sourceforge.net/lists/listinfo/geeqie-devel
&lt;/pre&gt;</description>
    <dc:creator>Omari Stephens</dc:creator>
    <dc:date>2012-04-07T21:12:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1164">
    <title>Star Rating</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1164</link>
    <description>&lt;pre&gt;How are users dealing with the lack of a 'star' rating?
Is there any way to add to the Windows Rating value?

David



------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
&lt;/pre&gt;</description>
    <dc:creator>David Vincent-Jones</dc:creator>
    <dc:date>2012-04-07T20:14:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1163">
    <title>Re: File browser/navigation question</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1163</link>
    <description>&lt;pre&gt;It's not very intuitive ... I set what Geeqie calls "Home path" to
Pictures with (/home/david/Pictures as the home path) and then set the
'Restore last path' option ... so now my system opens with
2000
2001
2002
......

bit of a mess

David


On Sat, 2012-04-07 at 18:15 +0100, Chris Green wrote:



------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
&lt;/pre&gt;</description>
    <dc:creator>David Vincent-Jones</dc:creator>
    <dc:date>2012-04-07T18:00:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1162">
    <title>Re: File browser/navigation question</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1162</link>
    <description>&lt;pre&gt;Yes, you have understood OK.

However it's only part of what I wanted.  If I set /home/chris/pictures
as my "Home Path" and set the Start Up Directory: to Home Path then,
yes, when geeqie starts /home/chris/pictures is where I am. But there's
all my other directories visible there too and I really don't want to
see them, they just waste space in the file browser and mean that my
pictures 'home' is indented unnecessarily.

What I want to see in the browser sidebar is:-

pictures
  1960s
  1970s
  1980s
  1990s 
  2000s
  2010s


What I actually get to see is:-

/
  bak
  bin
  ..... loads and loads of other irrelevant directories
  ....
  home
    ben
    chris
      bin
      ... 13 or so more of *my* directories
      ...
      pictures
        1960s
        1970s
        1980s
        1990s 
        2000s
        2010s
      sound
      src
      tmp
    ...
    ... everyone else's home directories
    ... and so on



&lt;/pre&gt;</description>
    <dc:creator>Chris Green</dc:creator>
    <dc:date>2012-04-07T17:15:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1161">
    <title>Re: File browser/navigation question</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1161</link>
    <description>&lt;pre&gt;
If I understand you correctly, this is what you want:

Select "Edit" -&amp;gt; "Preferences" -&amp;gt; "Configure this Window...", and set
the home path.

Then, geeqie will open in the selceted folder by default.


HTH,

Henry

------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
&lt;/pre&gt;</description>
    <dc:creator>Henry Gebhardt</dc:creator>
    <dc:date>2012-04-07T16:18:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1160">
    <title>File browser/navigation question</title>
    <link>http://permalink.gmane.org/gmane.comp.gnome.apps.geeqie.devel/1160</link>
    <description>&lt;pre&gt;I'm trying geeqie as my default photo album browser and quite liking it,
however I have one problem/question about the file browser tree in the
LH sidebar.

Is it possible to 'root' the tree somewhere in my home directory?  I.e.
I want only to see the contents of the hiearchy under /home/chris/pictures,
at least by default that's all I want to see.

Oh, and another request, is it possible to select some EXIF/IPTC data to
show beside the thumbnails rather than the filename, size and date that
it shows by default - I'd much rather see the comment/caption than the
size of the file!

&lt;/pre&gt;</description>
    <dc:creator>Chris Green</dc:creator>
    <dc:date>2012-04-07T15:26:12</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.gnome.apps.geeqie.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.gnome.apps.geeqie.devel</link>
  </textinput>
</rdf:RDF>

