mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Add 'Show similar books' item to eight click menu'
This commit is contained in:
parent
cb9bd2621a
commit
e2232e64c3
581
src/calibre/gui2/images/books_in_series.svg
Normal file
581
src/calibre/gui2/images/books_in_series.svg
Normal file
@ -0,0 +1,581 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
|
||||||
|
<svg
|
||||||
|
xmlns:ns="http://ns.adobe.com/SaveForWeb/1.0/"
|
||||||
|
xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://web.resource.org/cc/"
|
||||||
|
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"
|
||||||
|
version="1.1"
|
||||||
|
id="Layer_1"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
viewBox="0 0 128 128"
|
||||||
|
overflow="visible"
|
||||||
|
enable-background="new 0 0 128 128"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.45.1"
|
||||||
|
sodipodi:docname="edit-copy.svg"
|
||||||
|
sodipodi:docbase="/home/david/sandbox"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/david/sandbox/edit-copy.png"
|
||||||
|
inkscape:export-xdpi="22.5"
|
||||||
|
inkscape:export-ydpi="22.5"><defs
|
||||||
|
id="defs105"><linearGradient
|
||||||
|
id="linearGradient3291"><stop
|
||||||
|
style="stop-color:black;stop-opacity:1"
|
||||||
|
offset="0"
|
||||||
|
id="stop3293" /><stop
|
||||||
|
style="stop-color:black;stop-opacity:0"
|
||||||
|
offset="1"
|
||||||
|
id="stop3295" /></linearGradient><linearGradient
|
||||||
|
y2="0"
|
||||||
|
x2="28"
|
||||||
|
y1="57.5"
|
||||||
|
x1="28"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient18668">
|
||||||
|
<stop
|
||||||
|
id="stop18670"
|
||||||
|
style="stop-color:#fffccf;stop-opacity:1;"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop18672"
|
||||||
|
style="stop-color:white;stop-opacity:0;"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient><linearGradient
|
||||||
|
y2="0"
|
||||||
|
x2="28"
|
||||||
|
y1="57.5"
|
||||||
|
x1="28"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient15967">
|
||||||
|
<stop
|
||||||
|
id="stop15969"
|
||||||
|
style="stop-color:white;stop-opacity:1;"
|
||||||
|
offset="0" />
|
||||||
|
<stop
|
||||||
|
id="stop15971"
|
||||||
|
style="stop-color:white;stop-opacity:0;"
|
||||||
|
offset="1" />
|
||||||
|
</linearGradient><linearGradient
|
||||||
|
id="XMLID_2_"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="28"
|
||||||
|
y1="57.5"
|
||||||
|
x2="28"
|
||||||
|
y2="0">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#FFEA00"
|
||||||
|
id="stop12" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#FFCC00"
|
||||||
|
id="stop14" />
|
||||||
|
</linearGradient><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_9_"
|
||||||
|
id="linearGradient2391"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="94.3438"
|
||||||
|
y1="102.3447"
|
||||||
|
x2="86.5356"
|
||||||
|
y2="94.5366" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_10_"
|
||||||
|
id="linearGradient2393"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="95"
|
||||||
|
y1="103"
|
||||||
|
x2="86.5865"
|
||||||
|
y2="94.5865" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_11_"
|
||||||
|
id="linearGradient2395"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="95"
|
||||||
|
y1="103"
|
||||||
|
x2="87.293"
|
||||||
|
y2="95.293" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_12_"
|
||||||
|
id="linearGradient2397"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="96"
|
||||||
|
y1="104"
|
||||||
|
x2="88.0002"
|
||||||
|
y2="96.0002" /><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_7_"
|
||||||
|
id="radialGradient2465"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
cx="102"
|
||||||
|
cy="112.3047"
|
||||||
|
r="139.5585" /><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_8_"
|
||||||
|
id="radialGradient2467"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
cx="102"
|
||||||
|
cy="112.3047"
|
||||||
|
r="139.55859" />
|
||||||
|
<foreignObject
|
||||||
|
requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
width="1"
|
||||||
|
height="1"
|
||||||
|
id="foreignObject7">
|
||||||
|
<i:pgfRef
|
||||||
|
xlink:href="#adobe_illustrator_pgf">
|
||||||
|
</i:pgfRef>
|
||||||
|
</foreignObject>
|
||||||
|
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_2_"
|
||||||
|
id="linearGradient12378"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="28"
|
||||||
|
y1="57.5"
|
||||||
|
x2="28"
|
||||||
|
y2="0" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2309"
|
||||||
|
id="linearGradient14180"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="-74.820707"
|
||||||
|
y1="100.82378"
|
||||||
|
x2="-18.121965"
|
||||||
|
y2="100.82378" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2309"
|
||||||
|
id="linearGradient14189"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="-74.820707"
|
||||||
|
y1="100.82378"
|
||||||
|
x2="-18.121965"
|
||||||
|
y2="100.82378" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient15967"
|
||||||
|
id="linearGradient15973"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="27.719746"
|
||||||
|
y1="7.881104"
|
||||||
|
x2="27.719746"
|
||||||
|
y2="30.441185"
|
||||||
|
gradientTransform="translate(1.470416e-5,0)" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient2309"
|
||||||
|
id="linearGradient15977"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="-74.820707"
|
||||||
|
y1="100.82378"
|
||||||
|
x2="-18.121965"
|
||||||
|
y2="100.82378" /><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient15967"
|
||||||
|
id="radialGradient15986"
|
||||||
|
cx="26.954102"
|
||||||
|
cy="31.045055"
|
||||||
|
fx="26.954102"
|
||||||
|
fy="31.045055"
|
||||||
|
r="8.968153"
|
||||||
|
gradientTransform="matrix(0.754978,-2.959381e-2,0,0.905772,7.650275,10.87807)"
|
||||||
|
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_2_"
|
||||||
|
id="linearGradient18657"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="28"
|
||||||
|
y1="57.5"
|
||||||
|
x2="28"
|
||||||
|
y2="0" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient18649"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="28"
|
||||||
|
y1="57.5"
|
||||||
|
x2="28"
|
||||||
|
y2="0">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#FFEA00"
|
||||||
|
id="stop18651" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#FFCC00"
|
||||||
|
id="stop18653" />
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient18668"
|
||||||
|
id="linearGradient18674"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="-39.53125"
|
||||||
|
y1="78"
|
||||||
|
x2="-39.53125"
|
||||||
|
y2="51.1875" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient18668"
|
||||||
|
id="linearGradient18746"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="-39.53125"
|
||||||
|
y1="78"
|
||||||
|
x2="-39.53125"
|
||||||
|
y2="51.1875" /><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_8_"
|
||||||
|
id="radialGradient2311"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.856383,0,0,0.8415585,11.191492,18.14026)"
|
||||||
|
cx="99.080742"
|
||||||
|
cy="109.33402"
|
||||||
|
r="139.55859"
|
||||||
|
fx="99.080742"
|
||||||
|
fy="109.33402" /><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_7_"
|
||||||
|
id="radialGradient2314"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.8749999,0,0,0.8571428,10.000003,17.142857)"
|
||||||
|
cx="102"
|
||||||
|
cy="112.3047"
|
||||||
|
r="139.5585" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_12_"
|
||||||
|
id="linearGradient2339"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="96"
|
||||||
|
y1="104"
|
||||||
|
x2="86.571632"
|
||||||
|
y2="94.104362"
|
||||||
|
gradientTransform="matrix(0.8749999,0,0,0.8571428,10.000003,17.142857)" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter6241"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="1.2065414"
|
||||||
|
id="feGaussianBlur6243" /></filter><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_7_"
|
||||||
|
id="radialGradient6272"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.8749999,0,0,0.8571428,10.000003,17.142857)"
|
||||||
|
cx="102"
|
||||||
|
cy="112.3047"
|
||||||
|
r="139.5585" /><radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_8_"
|
||||||
|
id="radialGradient6274"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.856383,0,0,0.8415585,11.191492,18.14026)"
|
||||||
|
cx="99.080742"
|
||||||
|
cy="109.33402"
|
||||||
|
fx="99.080742"
|
||||||
|
fy="109.33402"
|
||||||
|
r="139.55859" /><linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#XMLID_12_"
|
||||||
|
id="linearGradient6276"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.8749999,0,0,0.8571428,10.000003,17.142857)"
|
||||||
|
x1="96"
|
||||||
|
y1="104"
|
||||||
|
x2="86.571632"
|
||||||
|
y2="94.104362" /><filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3217"><feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.89955545"
|
||||||
|
id="feGaussianBlur3219" /></filter></defs><sodipodi:namedview
|
||||||
|
inkscape:window-height="670"
|
||||||
|
inkscape:window-width="1022"
|
||||||
|
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"
|
||||||
|
inkscape:zoom="4"
|
||||||
|
inkscape:cx="92.02737"
|
||||||
|
inkscape:cy="54.798944"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:current-layer="g6245"
|
||||||
|
showgrid="true"
|
||||||
|
gridspacingx="4px"
|
||||||
|
gridspacingy="4px"
|
||||||
|
gridempspacing="0"
|
||||||
|
inkscape:grid-points="false"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:object-points="true" />
|
||||||
|
<metadata
|
||||||
|
id="metadata3">
|
||||||
|
<ns:sfw>
|
||||||
|
<ns:slices>
|
||||||
|
<ns:slice
|
||||||
|
y="0"
|
||||||
|
x="0"
|
||||||
|
height="128"
|
||||||
|
width="128"
|
||||||
|
sliceID="1316743234" />
|
||||||
|
</ns:slices>
|
||||||
|
<ns:sliceSourceBounds
|
||||||
|
y="0"
|
||||||
|
x="0"
|
||||||
|
height="128"
|
||||||
|
width="128"
|
||||||
|
bottomLeftOrigin="true" />
|
||||||
|
<ns:optimizationSettings>
|
||||||
|
<ns:targetSettings
|
||||||
|
targetSettingsID="0"
|
||||||
|
fileFormat="PNG24Format">
|
||||||
|
<ns:PNG24Format
|
||||||
|
transparency="true"
|
||||||
|
filtered="false"
|
||||||
|
matteColor="#FFFFFF"
|
||||||
|
noMatteColor="false"
|
||||||
|
interlaced="false">
|
||||||
|
</ns:PNG24Format>
|
||||||
|
</ns:targetSettings>
|
||||||
|
<ns:targetSettings
|
||||||
|
targetSettingsID="1696735251"
|
||||||
|
fileFormat="PNG24Format">
|
||||||
|
<ns:PNG24Format
|
||||||
|
transparency="true"
|
||||||
|
filtered="false"
|
||||||
|
matteColor="#FFFFFF"
|
||||||
|
noMatteColor="false"
|
||||||
|
interlaced="false">
|
||||||
|
</ns:PNG24Format>
|
||||||
|
</ns:targetSettings>
|
||||||
|
</ns:optimizationSettings>
|
||||||
|
</ns:sfw>
|
||||||
|
<rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata>
|
||||||
|
|
||||||
|
<radialGradient
|
||||||
|
id="XMLID_7_"
|
||||||
|
cx="102"
|
||||||
|
cy="112.3047"
|
||||||
|
r="139.5585"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#00537D"
|
||||||
|
id="stop16" />
|
||||||
|
<stop
|
||||||
|
offset="0.0151"
|
||||||
|
style="stop-color:#186389"
|
||||||
|
id="stop18" />
|
||||||
|
<stop
|
||||||
|
offset="0.0558"
|
||||||
|
style="stop-color:#558CA8"
|
||||||
|
id="stop20" />
|
||||||
|
<stop
|
||||||
|
offset="0.0964"
|
||||||
|
style="stop-color:#89AFC3"
|
||||||
|
id="stop22" />
|
||||||
|
<stop
|
||||||
|
offset="0.1357"
|
||||||
|
style="stop-color:#B3CCD8"
|
||||||
|
id="stop24" />
|
||||||
|
<stop
|
||||||
|
offset="0.1737"
|
||||||
|
style="stop-color:#D4E2E9"
|
||||||
|
id="stop26" />
|
||||||
|
<stop
|
||||||
|
offset="0.2099"
|
||||||
|
style="stop-color:#ECF2F5"
|
||||||
|
id="stop28" />
|
||||||
|
<stop
|
||||||
|
offset="0.2435"
|
||||||
|
style="stop-color:#FAFCFD"
|
||||||
|
id="stop30" />
|
||||||
|
<stop
|
||||||
|
offset="0.2722"
|
||||||
|
style="stop-color:#FFFFFF"
|
||||||
|
id="stop32" />
|
||||||
|
</radialGradient>
|
||||||
|
|
||||||
|
<radialGradient
|
||||||
|
id="XMLID_8_"
|
||||||
|
cx="102"
|
||||||
|
cy="112.3047"
|
||||||
|
r="139.55859"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#7a7d80;stop-opacity:1;"
|
||||||
|
id="stop37" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<stop
|
||||||
|
offset="0.12617962"
|
||||||
|
style="stop-color:#c2c2c2;stop-opacity:1;"
|
||||||
|
id="stop47" />
|
||||||
|
<stop
|
||||||
|
offset="0.23250513"
|
||||||
|
style="stop-color:#FAFAFA"
|
||||||
|
id="stop49" />
|
||||||
|
<stop
|
||||||
|
offset="0.2722"
|
||||||
|
style="stop-color:#FFFFFF"
|
||||||
|
id="stop51" />
|
||||||
|
<stop
|
||||||
|
offset="0.5313"
|
||||||
|
style="stop-color:#FAFAFA"
|
||||||
|
id="stop53" />
|
||||||
|
<stop
|
||||||
|
offset="0.8449"
|
||||||
|
style="stop-color:#EBECEC"
|
||||||
|
id="stop55" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#E1E2E3"
|
||||||
|
id="stop57" />
|
||||||
|
</radialGradient>
|
||||||
|
|
||||||
|
<linearGradient
|
||||||
|
id="XMLID_9_"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="94.3438"
|
||||||
|
y1="102.3447"
|
||||||
|
x2="86.5356"
|
||||||
|
y2="94.5366">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#FFFFFF"
|
||||||
|
id="stop62" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#555753"
|
||||||
|
id="stop64" />
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<linearGradient
|
||||||
|
id="XMLID_10_"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="95"
|
||||||
|
y1="103"
|
||||||
|
x2="86.5865"
|
||||||
|
y2="94.5865">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#FFFFFF"
|
||||||
|
id="stop69" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#555753"
|
||||||
|
id="stop71" />
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<linearGradient
|
||||||
|
id="XMLID_11_"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="95"
|
||||||
|
y1="103"
|
||||||
|
x2="87.293"
|
||||||
|
y2="95.293">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#FFFFFF"
|
||||||
|
id="stop76" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#393B38"
|
||||||
|
id="stop78" />
|
||||||
|
</linearGradient>
|
||||||
|
|
||||||
|
<linearGradient
|
||||||
|
id="XMLID_12_"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="96"
|
||||||
|
y1="104"
|
||||||
|
x2="88.0002"
|
||||||
|
y2="96.0002">
|
||||||
|
<stop
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#888A85"
|
||||||
|
id="stop83" />
|
||||||
|
<stop
|
||||||
|
offset="0.0072"
|
||||||
|
style="stop-color:#8C8E89"
|
||||||
|
id="stop85" />
|
||||||
|
<stop
|
||||||
|
offset="0.0673"
|
||||||
|
style="stop-color:#ABACA9"
|
||||||
|
id="stop87" />
|
||||||
|
<stop
|
||||||
|
offset="0.1347"
|
||||||
|
style="stop-color:#C5C6C4"
|
||||||
|
id="stop89" />
|
||||||
|
<stop
|
||||||
|
offset="0.2115"
|
||||||
|
style="stop-color:#DBDBDA"
|
||||||
|
id="stop91" />
|
||||||
|
<stop
|
||||||
|
offset="0.3012"
|
||||||
|
style="stop-color:#EBEBEB"
|
||||||
|
id="stop93" />
|
||||||
|
<stop
|
||||||
|
offset="0.4122"
|
||||||
|
style="stop-color:#F7F7F6"
|
||||||
|
id="stop95" />
|
||||||
|
<stop
|
||||||
|
offset="0.5679"
|
||||||
|
style="stop-color:#FDFDFD"
|
||||||
|
id="stop97" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#FFFFFF"
|
||||||
|
id="stop99" />
|
||||||
|
</linearGradient>
|
||||||
|
<g
|
||||||
|
id="g6245"><g
|
||||||
|
id="g6263"
|
||||||
|
transform="translate(12,0)"
|
||||||
|
style="opacity:1"><path
|
||||||
|
sodipodi:nodetypes="cccccc"
|
||||||
|
id="path2350"
|
||||||
|
d="M 23,25 L 23,121 L 76.525498,121 C 76.989247,121 107,91.601715 107,91.147428 L 107,25 L 23,25 z "
|
||||||
|
style="opacity:0.6;fill:#000000;fill-opacity:1;filter:url(#filter3217)"
|
||||||
|
transform="matrix(1.047619,0,0,1.0416667,-2.0952381,-4.041666)" /><path
|
||||||
|
style="fill:url(#radialGradient6272)"
|
||||||
|
d="M 24.000002,24 L 24.000002,120 L 77.5255,120 C 77.989249,120 108,90.601715 108,90.147428 L 108,24 L 24.000002,24 z "
|
||||||
|
id="path34"
|
||||||
|
sodipodi:nodetypes="cccccc" /><path
|
||||||
|
style="fill:url(#radialGradient6274);fill-opacity:1"
|
||||||
|
d="M 26.606384,25.714285 C 26.134518,25.714285 25.750001,26.092145 25.750001,26.555844 L 25.750001,117.44415 C 25.750001,117.9087 26.134518,118.28572 26.606384,118.28572 L 77.280277,118.28572 C 77.505506,118.28572 77.726453,118.19652 77.885739,118.03914 L 105.99908,90.412457 C 106.15921,90.255085 106.25,90.038805 106.25,89.817475 L 106.25,26.555844 C 106.25,26.092145 105.86634,25.714285 105.39361,25.714285 L 26.606384,25.714285 z "
|
||||||
|
id="path59" /><path
|
||||||
|
d="M 76.5255,120 C 76.5255,120 88.18749,110.99999 92.99999,106.28571 C 97.81249,101.57142 107,90.147428 107,90.147428 C 107,90.147428 99,96 83,96 C 83,112 76.5255,120 76.5255,120 z "
|
||||||
|
id="path101"
|
||||||
|
style="opacity:0.5;fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter6241)"
|
||||||
|
sodipodi:nodetypes="csccc" /><path
|
||||||
|
sodipodi:nodetypes="csccc"
|
||||||
|
style="fill:url(#linearGradient6276)"
|
||||||
|
id="path6233"
|
||||||
|
d="M 77.5255,120 C 77.5255,120 89.18749,110.99999 93.99999,106.28571 C 98.81249,101.57142 108,90.147428 108,90.147428 C 108,90.147428 100,96 84,96 C 84,112 77.5255,120 77.5255,120 z " /></g><use
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
xlink:href="#g6263"
|
||||||
|
id="use6270"
|
||||||
|
width="128"
|
||||||
|
height="128"
|
||||||
|
transform="translate(-28,-16)" /></g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
@ -575,7 +575,7 @@ class BooksView(TableView):
|
|||||||
self.setItemDelegateForColumn(col, self.rating_delegate)
|
self.setItemDelegateForColumn(col, self.rating_delegate)
|
||||||
|
|
||||||
def set_context_menu(self, edit_metadata, send_to_device, convert, view,
|
def set_context_menu(self, edit_metadata, send_to_device, convert, view,
|
||||||
save, open_folder, book_details):
|
save, open_folder, book_details, similar_menu=None):
|
||||||
self.setContextMenuPolicy(Qt.DefaultContextMenu)
|
self.setContextMenuPolicy(Qt.DefaultContextMenu)
|
||||||
self.context_menu = QMenu(self)
|
self.context_menu = QMenu(self)
|
||||||
if edit_metadata is not None:
|
if edit_metadata is not None:
|
||||||
@ -590,6 +590,8 @@ class BooksView(TableView):
|
|||||||
self.context_menu.addAction(open_folder)
|
self.context_menu.addAction(open_folder)
|
||||||
if book_details is not None:
|
if book_details is not None:
|
||||||
self.context_menu.addAction(book_details)
|
self.context_menu.addAction(book_details)
|
||||||
|
if similar_menu is not None:
|
||||||
|
self.context_menu.addMenu(similar_menu)
|
||||||
|
|
||||||
def contextMenuEvent(self, event):
|
def contextMenuEvent(self, event):
|
||||||
self.context_menu.popup(event.globalPos())
|
self.context_menu.popup(event.globalPos())
|
||||||
|
@ -234,10 +234,33 @@ class Main(MainWindow, Ui_MainWindow):
|
|||||||
QObject.connect(self.advanced_search_button, SIGNAL('clicked(bool)'), self.do_advanced_search)
|
QObject.connect(self.advanced_search_button, SIGNAL('clicked(bool)'), self.do_advanced_search)
|
||||||
|
|
||||||
####################### Library view ########################
|
####################### Library view ########################
|
||||||
|
similar_menu = QMenu(_('Similar books...'))
|
||||||
|
similar_menu.addAction(self.action_books_by_same_author)
|
||||||
|
similar_menu.addAction(self.action_books_in_this_series)
|
||||||
|
similar_menu.addAction(self.action_books_with_the_same_tags)
|
||||||
|
similar_menu.addAction(self.action_books_by_this_publisher)
|
||||||
|
self.action_books_by_same_author.setShortcut(Qt.ALT + Qt.Key_A)
|
||||||
|
self.action_books_in_this_series.setShortcut(Qt.ALT + Qt.Key_S)
|
||||||
|
self.action_books_by_this_publisher.setShortcut(Qt.ALT + Qt.Key_P)
|
||||||
|
self.action_books_with_the_same_tags.setShortcut(Qt.ALT+Qt.Key_T)
|
||||||
|
self.addAction(self.action_books_by_same_author)
|
||||||
|
self.addAction(self.action_books_by_this_publisher)
|
||||||
|
self.addAction(self.action_books_in_this_series)
|
||||||
|
self.addAction(self.action_books_with_the_same_tags)
|
||||||
|
self.similar_menu = similar_menu
|
||||||
|
self.connect(self.action_books_by_same_author, SIGNAL('triggered()'),
|
||||||
|
lambda : self.show_similar_books('author'))
|
||||||
|
self.connect(self.action_books_in_this_series, SIGNAL('triggered()'),
|
||||||
|
lambda : self.show_similar_books('series'))
|
||||||
|
self.connect(self.action_books_with_the_same_tags, SIGNAL('triggered()'),
|
||||||
|
lambda : self.show_similar_books('tag'))
|
||||||
|
self.connect(self.action_books_by_this_publisher, SIGNAL('triggered()'),
|
||||||
|
lambda : self.show_similar_books('publisher'))
|
||||||
self.library_view.set_context_menu(self.action_edit, self.action_sync,
|
self.library_view.set_context_menu(self.action_edit, self.action_sync,
|
||||||
self.action_convert, self.action_view,
|
self.action_convert, self.action_view,
|
||||||
self.action_save, self.action_open_containing_folder,
|
self.action_save, self.action_open_containing_folder,
|
||||||
self.action_show_book_details)
|
self.action_show_book_details,
|
||||||
|
similar_menu=similar_menu)
|
||||||
self.memory_view.set_context_menu(None, None, None, self.action_view, self.action_save, None, None)
|
self.memory_view.set_context_menu(None, None, None, self.action_view, self.action_save, None, None)
|
||||||
self.card_view.set_context_menu(None, None, None, self.action_view, self.action_save, None, None)
|
self.card_view.set_context_menu(None, None, None, self.action_view, self.action_save, None, None)
|
||||||
QObject.connect(self.library_view, SIGNAL('files_dropped(PyQt_PyObject)'),
|
QObject.connect(self.library_view, SIGNAL('files_dropped(PyQt_PyObject)'),
|
||||||
@ -341,6 +364,34 @@ class Main(MainWindow, Ui_MainWindow):
|
|||||||
error_dialog(self, _('Failed to start content server'),
|
error_dialog(self, _('Failed to start content server'),
|
||||||
unicode(self.content_server.exception)).exec_()
|
unicode(self.content_server.exception)).exec_()
|
||||||
|
|
||||||
|
def show_similar_books(self, type):
|
||||||
|
search, join = [], ' '
|
||||||
|
idx = self.library_view.currentIndex()
|
||||||
|
if not idx.isValid():
|
||||||
|
return
|
||||||
|
row = idx.row()
|
||||||
|
if type == 'series':
|
||||||
|
series = idx.model().db.series(row)
|
||||||
|
if series:
|
||||||
|
search = ['series:'+series]
|
||||||
|
elif type == 'publisher':
|
||||||
|
publisher = idx.model().db.publisher(row)
|
||||||
|
if publisher:
|
||||||
|
search = ['publisher:'+publisher]
|
||||||
|
elif type == 'tag':
|
||||||
|
tags = idx.model().db.tags(row)
|
||||||
|
if tags:
|
||||||
|
search = ['tag:'+t for t in tags.split(',')]
|
||||||
|
elif type == 'author':
|
||||||
|
authors = idx.model().db.authors(row)
|
||||||
|
if authors:
|
||||||
|
search = ['author:'+a.strip().replace('|', ',') for a in authors.split(',')]
|
||||||
|
join = ' or '
|
||||||
|
if search:
|
||||||
|
self.search.set_search_string(join.join(search))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def toggle_cover_flow(self, show):
|
def toggle_cover_flow(self, show):
|
||||||
if show:
|
if show:
|
||||||
self.library_view.setCurrentIndex(self.library_view.currentIndex())
|
self.library_view.setCurrentIndex(self.library_view.currentIndex())
|
||||||
|
@ -581,6 +581,42 @@
|
|||||||
<string>Show book details</string>
|
<string>Show book details</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="action_books_by_same_author" >
|
||||||
|
<property name="icon" >
|
||||||
|
<iconset resource="images.qrc" >
|
||||||
|
<normaloff>:/images/user_profile.svg</normaloff>:/images/user_profile.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Books by same author</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="action_books_in_this_series" >
|
||||||
|
<property name="icon" >
|
||||||
|
<iconset resource="images.qrc" >
|
||||||
|
<normaloff>:/images/books_in_series.svg</normaloff>:/images/books_in_series.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Books in this series</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="action_books_by_this_publisher" >
|
||||||
|
<property name="icon" >
|
||||||
|
<iconset resource="images.qrc" >
|
||||||
|
<normaloff>:/images/publisher.png</normaloff>:/images/publisher.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Books by this publisher</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="action_books_with_the_same_tags" >
|
||||||
|
<property name="icon" >
|
||||||
|
<iconset resource="images.qrc" >
|
||||||
|
<normaloff>:/images/tags.svg</normaloff>:/images/tags.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Books with the same tags</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user