From 0ff02d3903907605e497617ee3183ec0ff12bc7d Mon Sep 17 00:00:00 2001 From: Hydrus Date: Wed, 8 May 2013 15:31:00 -0500 Subject: [PATCH] Version 69 --- help/advanced.html | 4 +- help/advanced_parents.html | 32 ++ help/advanced_siblings.html | 52 ++ help/changelog.html | 27 ++ help/index.html | 3 +- help/tag_parents.svg | 722 ++++++++++++++++++++++++++++ help/tag_parents_firearms.png | Bin 0 -> 51329 bytes help/tag_parents_got.png | Bin 0 -> 35201 bytes help/tag_parents_venn.png | Bin 0 -> 37123 bytes help/tag_siblings.svg | 487 +++++++++++++++++++ help/tag_siblings_ac_write.png | Bin 0 -> 8443 bytes help/tag_siblings_dialog.png | Bin 0 -> 15824 bytes help/tag_siblings_rei.png | Bin 0 -> 6804 bytes help/tag_siblings_usa.png | Bin 0 -> 4841 bytes help/tag_siblings_venn_1.png | Bin 0 -> 55989 bytes help/tag_siblings_venn_2.png | Bin 0 -> 39195 bytes help/tag_siblings_what_is_a_man.png | Bin 0 -> 2779 bytes help/tag_siblings_yo_dawg.png | Bin 0 -> 8650 bytes include/ClientConstants.py | 216 ++++++++- include/ClientController.py | 30 +- include/ClientDB.py | 299 +++++++++--- include/ClientGUI.py | 26 +- include/ClientGUICanvas.py | 5 + include/ClientGUICommon.py | 170 +++++-- include/ClientGUIDialogs.py | 383 ++++++++++++++- include/ClientGUIMixins.py | 2 + include/HydrusConstants.py | 49 +- 27 files changed, 2358 insertions(+), 149 deletions(-) create mode 100644 help/advanced_parents.html create mode 100644 help/advanced_siblings.html create mode 100644 help/tag_parents.svg create mode 100644 help/tag_parents_firearms.png create mode 100644 help/tag_parents_got.png create mode 100644 help/tag_parents_venn.png create mode 100644 help/tag_siblings.svg create mode 100644 help/tag_siblings_ac_write.png create mode 100644 help/tag_siblings_dialog.png create mode 100644 help/tag_siblings_rei.png create mode 100644 help/tag_siblings_usa.png create mode 100644 help/tag_siblings_venn_1.png create mode 100644 help/tag_siblings_venn_2.png create mode 100644 help/tag_siblings_what_is_a_man.png create mode 100644 help/tag_siblings_yo_dawg.png diff --git a/help/advanced.html b/help/advanced.html index 47800447..bed8780b 100755 --- a/help/advanced.html +++ b/help/advanced.html @@ -49,10 +49,10 @@

PIL errors

At some point, you will probably encounter a PIL error when importing a file. PIL is the Python Image Library, the code I use to manipulate image files. Some files are kooky, and just won't load with it. I can't fix these errors, since PIL is not mine. It would take me thousands of hours to write my own image library, and even then it would have its own odd errors. Just gotta deal with it.

-

If the PIL error'ing file is one you particularly care about, I suggest you import it into photoshop or similar and save it again. Photoshop should be clever enough to parse the file's weirdness, and then it'll hopefully save again to a simpler format which PIL, and hence the client, will be able to understand.

+

If the PIL error'ing file is one you particularly care about, I suggest you import it into photoshop or similar and save it again. Photoshop should be clever enough to parse the file's weirdness, and then it'll hopefully save again to a simpler format that PIL, and hence the client, will be able to understand.

busted up gifs

Animated gifs are a real pain in the neck. There are several loopholes in the standard that permit odd palettes and colourspaces, and PIL has a hard time parsing it all.

-

So, some gifs will have a coloured first frame but grey frames thereafter; or they will have odd washy noise all over; or they will just be black. The file isn't broken, but lib is looking at it wrong. Every ten versions or so, I gather enough enthusiasm to fix a few more.

+

So, some gifs will have a coloured first frame but grey frames thereafter; or they will have odd washy noise all over; or they will just be black. The file isn't broken, the client is just looking at it wrong. Every ten versions or so, I gather enough enthusiasm to fix a few more.

setting a password

the client offers a very simple password system, enough to keep out noobs. You can set it at database->set a password. It will thereafter ask for the password every time you start the program, and will not open without it. However none of the database is encrypted, and someone with enough enthusiasm or a tool and access to your computer can still very easily see what files you have. The password is mainly to stop idle snoops checking your images if you are away from your machine.

backing up

diff --git a/help/advanced_parents.html b/help/advanced_parents.html new file mode 100644 index 00000000..1e6f6d03 --- /dev/null +++ b/help/advanced_parents.html @@ -0,0 +1,32 @@ + + + advanced - parents + + + + +
+

This is a draft document. None of this code actually exists yet!

+

what's the problem?

+

Tags often fall into certain heirarchies. Files with one particular tag often always have certain other tags, and it is annoying and time-consuming to add them all individually every time.

+

For example, whenever you tag a file with ak-47, you probably also want to tag it assault rifle, and maybe even firearm as well.

+

+

Another time, you might tag a file character:eddard stark, and then also have to type in house stark and then series:game of thrones. (you might also think series:game of thrones should actually be series:a song of ice and fire, but that is an issue for siblings)

+

Drawing more relationships would make a significantly more complicated venn diagram, so let's draw it like a family tree instead:

+

+

If we were to search for the tag house stark, we would expect our results to include all the images of any of the Starks. Even so, it is tedious to have to remember to tag every image of a character with their house affiliation or other parent tags. You may not even remember.

+

Wouldn't it be great if we could add these sorts of tags at the same time?

+

tag parents

+

Let's define the relationship 'tag P is tag C's parent' as saying that tag P is the semantic superset of tag C. All files that have C should have P. Let's say that when the user tries to add a tag to a file, the tag's parents are added recursively.

+

Let's expand our weapon example:

+

+

In that graph, adding ar-15 to a file would also add semi-automatic rifle, rifle, and firearm. Searching for handgun would everything with m1911 and smith and wesson model 10.

+

Although characters are an obvious and convenient step, we need to be careful to make sure we only link characters to series if they have unique names, and only if they are inextricably linked with their series. Series with crossovers and spinoffs (like CSI) make this difficult.

+

how you do it

+

services->manage tag parents

+

picture of dialog

+

when you add a tag, all of its parents will be added. This is transitive, so grandparents and great-grandparents and so on are also added.

+

parents are not cast-iron. from time to time, even the simplest and most seemingly-obvious of relationships can be broken. Rule 63 will often break a 'character x is a male' relationship, for example. so, you can de-pend and petition parents without the children being similarly removed. (screenshot?)

+
+ + \ No newline at end of file diff --git a/help/advanced_siblings.html b/help/advanced_siblings.html new file mode 100644 index 00000000..356b1032 --- /dev/null +++ b/help/advanced_siblings.html @@ -0,0 +1,52 @@ + + + advanced - siblings + + + + +
+

This is another area under active development right now. I will expand this as I add remote siblings.

+

what's the problem?

+

It is a common problem, in communal tagging, for ambiguity to arise when different tags with the same meaning are applied non-uniformly.

+

A great example is in Japanese names, which are natively written surname first. character:ayanami rei and character:rei ayanami have the same meaning, but different users will use one, or the other, or even both.

+

Other examples are tiny syntactic changes, common misspellings, and unique acronyms: +

+

A particular repository may have a preferred standard, but it is not easy to guarantee that all the users will know exactly which tag to use or search for.

+

After some time, you get this:

+

+

Without continual intervention by janitors or other experienced users to make sure y⊇x (i.e. making the yellow circle entirely overlap the blue by manually giving y to everything with x), searches can only return x (blue circle) or y (yellow circle) or x∩y (the lens-shaped overlap). What we really want is x∪y (both circles).

+

So, how do we fix this problem?

+

tag siblings

+

Let's define a relationship, A->B, that means that any time we would normally see or use tag A or tag B, we will instead get the union of tag A and tag B, and this union will be labelled as tag B. In short, we fold A into B, unioning the two tag spaces.

+

Note that this relationship implies that B is in some way 'better' than A. For instance, I might say that I prefer character:ayanami rei, as I think Japanese characters should probably get their names in the Japanese fashion. So, I would say character:rei ayanami->character:ayanami rei. This means that whenever I might see or type the Western arrangement of Rei's name, I'll automatically get the Japanese instead. Any search will return files with either tag as if they were all tagged character:ayanami rei.

+

+

ok, I understand; now confuse me

+

This relationship is transitive, which means as well as saying A->B, you can also say B->C, which implies A->C and B->C.

+

+

You can also have an A->C and B->C that does not include A->B.

+

+

The outcome of these two arrangements is the same (everything ends up as C), but the underlying semantics are a little different if you ever want to edit them.

+

Many complicated arrangements are possible:

+

+

Note that if you say A->B, you cannot say A->C; the left-hand side can only go to one. The right-hand side can receive many. The client will stop you from constructing loops.

+

how you do it

+

It is easy. Just open services->manage tag siblings, and add a few.

+

+

The client will automatically collapse the tagspace to whatever you set. It'll even work with autocomplete, so when you start to type in 'rei ayanami' in search, it will show character:ayanami rei instead:

+

+

It will not collapse in the write dialog. You will be able to add or remove A as normal, but it will be written in some form of "A (B)" to let you know that, ultimately, the tag will end up displaying in the main gui as B:

+

+

Although the client may present A as B, it will secretly remember A! You can remove the association A->B, and everything will return to how it was. No information is lost at any point.

+

At the moment, this only supports local siblings. Just like tags, don't go crazy and try to do everything yourself. Have a play with local, but please wait for remote support so your efforts are shared.

+
+ + \ No newline at end of file diff --git a/help/changelog.html b/help/changelog.html index 02c9b412..6a3f4e4b 100755 --- a/help/changelog.html +++ b/help/changelog.html @@ -8,6 +8,33 @@

changelog