Compare commits
523 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0cd9398b83 | ||
|
|
6e8e09db42 | ||
|
|
e6b9550a3a | ||
|
|
cfa8111533 | ||
|
|
767855b15f | ||
|
|
4f456456e8 | ||
|
|
2a1677c6ee | ||
|
|
2ada4e2333 | ||
|
|
9e47ddcc5a | ||
|
|
1ecfa48022 | ||
|
|
bd3b812797 | ||
|
|
6577fcff11 | ||
|
|
b86ee5dd07 | ||
|
|
e2d13ef10b | ||
|
|
c3c383a9cb | ||
|
|
35ea5b463a | ||
|
|
c884270dd2 | ||
|
|
d825efdb0b | ||
|
|
49282078d0 | ||
|
|
e5e54acb41 | ||
|
|
54573e8c14 | ||
|
|
ab0b464dac | ||
|
|
6411fd735c | ||
|
|
67b95d8c73 | ||
|
|
bee9924a29 | ||
|
|
235ea7d982 | ||
|
|
bec920f07f | ||
|
|
d0e0e61c85 | ||
|
|
786050926c | ||
|
|
88a75d0629 | ||
|
|
1464355c71 | ||
|
|
a8635c059d | ||
|
|
2490e95516 | ||
|
|
74b793ee74 | ||
|
|
8b69cecd4a | ||
|
|
85477cf6bc | ||
|
|
fc69de5d66 | ||
|
|
53720a5b23 | ||
|
|
784de2139f | ||
|
|
fd884ca728 | ||
|
|
52d4b6f7b0 | ||
|
|
e9c0c24829 | ||
|
|
fba995f794 | ||
|
|
13d2fd0c5b | ||
|
|
d62304a988 | ||
|
|
8d51bc9133 | ||
|
|
1265a76d72 | ||
|
|
84b1548106 | ||
|
|
19f65cc8fb | ||
|
|
b9b048a4c3 | ||
|
|
dfba96224d | ||
|
|
728b04aa53 | ||
|
|
157c0c3e4e | ||
|
|
3fc552312a | ||
|
|
29359ea87f | ||
|
|
7620e1cf22 | ||
|
|
cebe039944 | ||
|
|
6eecb0f697 | ||
|
|
83e191b44c | ||
|
|
e6667ebd81 | ||
|
|
92d33c6c4c | ||
|
|
35fb7ae3ff | ||
|
|
bb233dbd91 | ||
|
|
a4239a518c | ||
|
|
1d71716bb2 | ||
|
|
3b3ae1d5c3 | ||
|
|
1f46765b00 | ||
|
|
41e10ddf7c | ||
|
|
535fa8243a | ||
|
|
08727254f6 | ||
|
|
c35347f0a5 | ||
|
|
a514c716cf | ||
|
|
21b6f4c05f | ||
|
|
b617c69fd3 | ||
|
|
642627648d | ||
|
|
1627fffa8b | ||
|
|
1b3a4207fa | ||
|
|
286220d07a | ||
|
|
3566a30074 | ||
|
|
1bd98c9c38 | ||
|
|
da16c21ab5 | ||
|
|
c048408aba | ||
|
|
9baef907d2 | ||
|
|
d743be5ba6 | ||
|
|
c74553085e | ||
|
|
0cafd02010 | ||
|
|
1e94463a06 | ||
|
|
96f096c764 | ||
|
|
931e86c7b5 | ||
|
|
0b92da973a | ||
|
|
2efc5d4218 | ||
|
|
b861cc8986 | ||
|
|
bcda9c21d5 | ||
|
|
3e4208ffc2 | ||
|
|
7ad9cd61bf | ||
|
|
fac2a3b0b2 | ||
|
|
627307e8a5 | ||
|
|
75cdb0fb7f | ||
|
|
7522bd8c42 | ||
|
|
35ae99199e | ||
|
|
282e5df505 | ||
|
|
df119a577a | ||
|
|
8b0664423b | ||
|
|
fbe76c37f6 | ||
|
|
63c42435db | ||
|
|
2408a07190 | ||
|
|
2af3c78c71 | ||
|
|
48f42e4a25 | ||
|
|
af1c0768ac | ||
|
|
ed5f19a88a | ||
|
|
3441ecf6d3 | ||
|
|
3c335bf66f | ||
|
|
cad652e031 | ||
|
|
f956e0c17d | ||
|
|
af9934e308 | ||
|
|
36574af264 | ||
|
|
a39db6c102 | ||
|
|
5de4e3a511 | ||
|
|
12f12f0e61 | ||
|
|
63f708fb72 | ||
|
|
dc776b673a | ||
|
|
e11c893475 | ||
|
|
79ce221302 | ||
|
|
40470fabd9 | ||
|
|
d726dedc67 | ||
|
|
dfb222c581 | ||
|
|
b26d488be9 | ||
|
|
aacc0667f9 | ||
|
|
8e606cf6b1 | ||
|
|
8c538ad6af | ||
|
|
97123b05cc | ||
|
|
77c0fabb74 | ||
|
|
a554f17cbf | ||
|
|
79adad4cf2 | ||
|
|
5488697d3e | ||
|
|
906d9970d8 | ||
|
|
40456e7961 | ||
|
|
52356e6b35 | ||
|
|
3d7f48b26d | ||
|
|
6fa3b3f4ba | ||
|
|
77f9d237e4 | ||
|
|
117003345d | ||
|
|
bfa97587b9 | ||
|
|
a121036a77 | ||
|
|
50e15c94f5 | ||
|
|
92770c720b | ||
|
|
e372b2de97 | ||
|
|
97dc486b7b | ||
|
|
9cb286be10 | ||
|
|
55fbb182a0 | ||
|
|
4e6eae79e4 | ||
|
|
9f5a8c1640 | ||
|
|
fc3ad7e30b | ||
|
|
8eab440bf2 | ||
|
|
1771a3227a | ||
|
|
3aa128d934 | ||
|
|
d8d6b1ffbf | ||
|
|
92270e91ec | ||
|
|
62420fd91a | ||
|
|
b0ad9bc94d | ||
|
|
3f48fe6a99 | ||
|
|
36f7326596 | ||
|
|
1363079150 | ||
|
|
aa720896b4 | ||
|
|
f9e1b5683b | ||
|
|
1d6c60a79a | ||
|
|
50102b318e | ||
|
|
248ee6e2a6 | ||
|
|
765391b9f4 | ||
|
|
4d9f0342b5 | ||
|
|
c7fe445508 | ||
|
|
493b2d6906 | ||
|
|
22ce7d4099 | ||
|
|
2d3ec9d137 | ||
|
|
ba23299cdc | ||
|
|
e39e43d8a9 | ||
|
|
8f76160d7c | ||
|
|
35af4fe25c | ||
|
|
4c1b8d00a9 | ||
|
|
590098cc08 | ||
|
|
4a703e04c9 | ||
|
|
2122f16622 | ||
|
|
c230ccf09d | ||
|
|
047560a351 | ||
|
|
128addb910 | ||
|
|
d47da6c11a | ||
|
|
2a3cc4d8db | ||
|
|
3861b0a2df | ||
|
|
975e99fd35 | ||
|
|
26b534a9f1 | ||
|
|
872600c14e | ||
|
|
d0a2ca8d65 | ||
|
|
e9963e5b69 | ||
|
|
4aef61a74d | ||
|
|
3f8fe577f6 | ||
|
|
e80835ba1f | ||
|
|
3cea7de87f | ||
|
|
820dbdddf4 | ||
|
|
1b0cb23c93 | ||
|
|
f7fcfcc31f | ||
|
|
abbe406cac | ||
|
|
a029a5fbb3 | ||
|
|
e28b984c9a | ||
|
|
786aa46e04 | ||
|
|
7e7053dea6 | ||
|
|
580a96ca60 | ||
|
|
56ef8c1604 | ||
|
|
d889d4241b | ||
|
|
a14acdaf59 | ||
|
|
db321da222 | ||
|
|
eee3de641e | ||
|
|
1d81d90e01 | ||
|
|
6eb9f6753f | ||
|
|
49c399806e | ||
|
|
5f2e72cd12 | ||
|
|
75dd3fb8e3 | ||
|
|
812a8e3558 | ||
|
|
0fb43b9363 | ||
|
|
c19d9fa182 | ||
|
|
29d4bd7cd8 | ||
|
|
a2f52ba688 | ||
|
|
39bd74c201 | ||
|
|
acea7c3f07 | ||
|
|
4a78bc9acc | ||
|
|
edbfa15f91 | ||
|
|
1fdef5eb0f | ||
|
|
cc8aee4fb4 | ||
|
|
a29934e8c1 | ||
|
|
b780cb234b | ||
|
|
7cdee5a619 | ||
|
|
515688be68 | ||
|
|
928fafe636 | ||
|
|
54212085d9 | ||
|
|
ca49540cb2 | ||
|
|
90e3796c9a | ||
|
|
02165991fe | ||
|
|
378b563dad | ||
|
|
11d37767c5 | ||
|
|
9af37e9401 | ||
|
|
891915ec82 | ||
|
|
ce61acacc1 | ||
|
|
a0bfee3f9e | ||
|
|
3658709051 | ||
|
|
e0c10b0fe5 | ||
|
|
798f587c4f | ||
|
|
8ad766b8a6 | ||
|
|
bcedb72249 | ||
|
|
0238c0234e | ||
|
|
1f983e495c | ||
|
|
9124d2f1e2 | ||
|
|
ef70d2aa24 | ||
|
|
4ed73e110b | ||
|
|
fe479d09fb | ||
|
|
b7ea5564cb | ||
|
|
2cc5ef39f8 | ||
|
|
e6441f7bf8 | ||
|
|
c4e0c492f1 | ||
|
|
c3c5aafac6 | ||
|
|
6524ea60ad | ||
|
|
628660c086 | ||
|
|
6ba7859027 | ||
|
|
bc61ca8672 | ||
|
|
62b8fda959 | ||
|
|
ee65991e8d | ||
|
|
0d6cccf8f0 | ||
|
|
096068ccc3 | ||
|
|
708b60e50e | ||
|
|
afca94762e | ||
|
|
b9be74eaf2 | ||
|
|
5a3209dcc7 | ||
|
|
f3f8041166 | ||
|
|
80ee334925 | ||
|
|
9cbc121992 | ||
|
|
eba451cf3a | ||
|
|
c585108118 | ||
|
|
afb59dc6c2 | ||
|
|
fcd73beae4 | ||
|
|
169515a8c4 | ||
|
|
1fd0097963 | ||
|
|
ba51e3f653 | ||
|
|
ed594216cc | ||
|
|
78b16a0743 | ||
|
|
dc91892634 | ||
|
|
357c1212c1 | ||
|
|
1113611f2e | ||
|
|
31f7121901 | ||
|
|
c3d09a7095 | ||
|
|
97b90cb7cc | ||
|
|
9f4e80edd5 | ||
|
|
2974bf900b | ||
|
|
80b2a660cd | ||
|
|
01d4323f02 | ||
|
|
957f907387 | ||
|
|
e727a17ed9 | ||
|
|
380b952606 | ||
|
|
8c9b422b69 | ||
|
|
bcd269b931 | ||
|
|
f4dd17fd4b | ||
|
|
c72810d69a | ||
|
|
983a5d36a1 | ||
|
|
72036d1f43 | ||
|
|
4b58718da0 | ||
|
|
01a0cf6686 | ||
|
|
183681a4d1 | ||
|
|
d64446fe7d | ||
|
|
c9d34d5736 | ||
|
|
69ef11cae2 | ||
|
|
ad5c395e30 | ||
|
|
840bafb136 | ||
|
|
1613eca16b | ||
|
|
4587132a3e | ||
|
|
583a69195b | ||
|
|
013669d2dc | ||
|
|
64e9346c8f | ||
|
|
be91726560 | ||
|
|
a021e2d7fb | ||
|
|
dcb42e6c42 | ||
|
|
0139692edb | ||
|
|
8671c8f504 | ||
|
|
36d5a5b3db | ||
|
|
20a81da5cd | ||
|
|
7eb6773fbd | ||
|
|
209799ea95 | ||
|
|
5a0fc235a0 | ||
|
|
654cd5f7dc | ||
|
|
67f8a689af | ||
|
|
a365bcf978 | ||
|
|
9efe5e82e7 | ||
|
|
d1cb7bb7aa | ||
|
|
7884078f87 | ||
|
|
4c78b0d33a | ||
|
|
df2eb70601 | ||
|
|
e597daf289 | ||
|
|
a574c1bf74 | ||
|
|
9105033cad | ||
|
|
b78fe80e6f | ||
|
|
9c8ecdd814 | ||
|
|
477e3a0a30 | ||
|
|
6750b2880f | ||
|
|
0f17151cd1 | ||
|
|
074915b8cb | ||
|
|
b43a39084c | ||
|
|
33d50107ac | ||
|
|
56146fa77c | ||
|
|
2b8287fa3e | ||
|
|
17f390ed9c | ||
|
|
2cda92a291 | ||
|
|
2db3fbab65 | ||
|
|
bb36311dee | ||
|
|
ec34f2e310 | ||
|
|
63560a25d4 | ||
|
|
c36dbd80a4 | ||
|
|
2083e0ef92 | ||
|
|
a7c2dc19e7 | ||
|
|
0a46f47d53 | ||
|
|
8b81a019b2 | ||
|
|
f96c77b4dd | ||
|
|
fceed3f9e6 | ||
|
|
d12cc4c83e | ||
|
|
d846f0cb25 | ||
|
|
f0291a164c | ||
|
|
78e5eb7d1d | ||
|
|
b7d31f060d | ||
|
|
26a69191a0 | ||
|
|
c67efd002c | ||
|
|
58251a3bd5 | ||
|
|
6d063e6f7f | ||
|
|
3aaf4a9970 | ||
|
|
fedf3b3209 | ||
|
|
b0753af034 | ||
|
|
ab4a5e13fa | ||
|
|
f43d31877f | ||
|
|
cf061f2622 | ||
|
|
cd6e031a34 | ||
|
|
542a206d01 | ||
|
|
f97448429e | ||
|
|
95077c712b | ||
|
|
7aa6104e14 | ||
|
|
60902de817 | ||
|
|
1c851e1817 | ||
|
|
161d1cb6c9 | ||
|
|
3b90e3e6a2 | ||
|
|
86497ea2c8 | ||
|
|
2b8ed46a59 | ||
|
|
4aef1245c9 | ||
|
|
e37cb11343 | ||
|
|
26047e92a5 | ||
|
|
22586db454 | ||
|
|
3e224391fe | ||
|
|
beb6f9a114 | ||
|
|
2a84d8d728 | ||
|
|
bed9898498 | ||
|
|
4aa9a89ed5 | ||
|
|
181257ab9e | ||
|
|
680432877d | ||
|
|
4080d95306 | ||
|
|
d92a78c563 | ||
|
|
64618001f4 | ||
|
|
e8089a9f7d | ||
|
|
6821d6dca4 | ||
|
|
f266b18285 | ||
|
|
b1e966b6b6 | ||
|
|
e3d8e6fe3f | ||
|
|
4fa2a65db2 | ||
|
|
582a4ab7e4 | ||
|
|
f0c17ae27a | ||
|
|
db74213976 | ||
|
|
f55cca4827 | ||
|
|
0b53e96a71 | ||
|
|
f477ba4cf8 | ||
|
|
a24a187fe0 | ||
|
|
3da1929c70 | ||
|
|
f5e154d24a | ||
|
|
54bde33675 | ||
|
|
a771c37ca6 | ||
|
|
60c3b5fecb | ||
|
|
6d32f8ed06 | ||
|
|
40c53d073b | ||
|
|
31324ba240 | ||
|
|
c27e34da2c | ||
|
|
75a2aba102 | ||
|
|
cdcf75f60f | ||
|
|
8f0146812b | ||
|
|
e3e709f69b | ||
|
|
0db39e04dc | ||
|
|
eb77f8cbdd | ||
|
|
a471490e6e | ||
|
|
99e04027a6 | ||
|
|
52b6ab1aac | ||
|
|
f623438072 | ||
|
|
57e906c403 | ||
|
|
3e46942841 | ||
|
|
ee5d7640d2 | ||
|
|
d8d367986e | ||
|
|
343c80486e | ||
|
|
a8a486eb58 | ||
|
|
1cb131bff3 | ||
|
|
b0b2a5f1f8 | ||
|
|
bee7d84536 | ||
|
|
cb34e6dfef | ||
|
|
de00f0739d | ||
|
|
d9385ef82e | ||
|
|
692bc3eb3c | ||
|
|
1393e4dcef | ||
|
|
a3020a5136 | ||
|
|
baaf637a41 | ||
|
|
07c3339975 | ||
|
|
29e9970d68 | ||
|
|
abee17325d | ||
|
|
5cfb2f2a43 | ||
|
|
56471fb574 | ||
|
|
f259758f42 | ||
|
|
c0e3ac8c60 | ||
|
|
6ddb4c98d6 | ||
|
|
fb67cd2b86 | ||
|
|
04251cd9f9 | ||
|
|
d5ae2e0617 | ||
|
|
f6fecd4df2 | ||
|
|
38c12ec313 | ||
|
|
26813c7178 | ||
|
|
0ff2a6d5d0 | ||
|
|
401f0a5a42 | ||
|
|
4334283cc6 | ||
|
|
1947269b11 | ||
|
|
6be391371d | ||
|
|
b69baae4b8 | ||
|
|
47c0e647cc | ||
|
|
aa09b47c3a | ||
|
|
5f69d430a3 | ||
|
|
d87a0e2ce3 | ||
|
|
4761671cac | ||
|
|
e23fd407e7 | ||
|
|
891d94a66a | ||
|
|
371216bbe6 | ||
|
|
66aa26788a | ||
|
|
0ebcb5ac2c | ||
|
|
13f7240b01 | ||
|
|
160f6b184e | ||
|
|
f724249202 | ||
|
|
078e555de3 | ||
|
|
eeba5e4a07 | ||
|
|
1c2785c056 | ||
|
|
d6136e6310 | ||
|
|
4d564e6f23 | ||
|
|
0837423de9 | ||
|
|
4fd661d042 | ||
|
|
1f65bda6d9 | ||
|
|
544d2b8b48 | ||
|
|
e4b53c6601 | ||
|
|
4e49d5ee14 | ||
|
|
8dcaeba4f6 | ||
|
|
7840590d2b | ||
|
|
d2b0cf37af | ||
|
|
cabe51b673 | ||
|
|
2a3e5e5d2c | ||
|
|
3affb5e1e5 | ||
|
|
8cfc12b3c0 | ||
|
|
1ef438214e | ||
|
|
8832f929dd | ||
|
|
a436f10782 | ||
|
|
eb7ec6aacf | ||
|
|
bf0af8658b | ||
|
|
e4dd711bc4 | ||
|
|
0c01347964 | ||
|
|
747b4024f0 | ||
|
|
ada5312e5e | ||
|
|
b5a07ddad0 | ||
|
|
83902fc977 | ||
|
|
99d7bdeb15 | ||
|
|
4897d42e4a | ||
|
|
8dc42c3d36 | ||
|
|
a4b20a3b5d | ||
|
|
0a3637e806 | ||
|
|
7cdf4938fb | ||
|
|
9f684e3198 | ||
|
|
13545cfd3a | ||
|
|
6dc29b1ab0 | ||
|
|
4ba02efdb3 | ||
|
|
7d523af813 | ||
|
|
09fb50d444 | ||
|
|
b934dcd9ac | ||
|
|
e39b9b853f | ||
|
|
54b5529670 |
228
CHANGELOG
@@ -1,3 +1,231 @@
|
||||
0.4.2
|
||||
BugFix: when searching AUR pkgs, given search string was not being matched by package
|
||||
descriptions.
|
||||
BugFix: Sometimes got a gconf bug string at sync db.
|
||||
Updated a bunch of translations.
|
||||
Added support for the new kcp tool (Go version).
|
||||
|
||||
0.4.1
|
||||
Added basque translation (thanks to tarteka).
|
||||
Added es_AR translation (thanks to javier).
|
||||
Added japanese translation (thanks to UTUMI Hirosi - utuhiro78).
|
||||
Some coding refactorings regarding Yaourt/AUR as well as utils namespace.
|
||||
BugFix: Tools menu was not being refreshed after a package
|
||||
removal/installation.
|
||||
BugFix: Ctrl and Shift key pkg actions not behaving right in Qt5
|
||||
builds.
|
||||
BugFix: When clicking a pkg on the outdated list, it could scroll
|
||||
to a wrong pkg info.
|
||||
BugFix: Adapted ArchBang changes.
|
||||
BugFix: Removed unused Ctrl+N help text.
|
||||
BugFix: Some changes in LXQt support.
|
||||
BugFix: Download and installed size info at info tab.
|
||||
BugFix: The 'Enter' key (numeric keyboard) is now supported.
|
||||
BugFix: At start when there is no pacman db, octopi hangs (thanks to anex).
|
||||
BugFix: After a pkg list rebuild the Files and Info cache were not
|
||||
being emptied.
|
||||
Now downgrading operations appears in orange in Output tab.
|
||||
Small fixes in packagemodel/package code (thanks to tbinkau).
|
||||
Ctrl+C over an item in Files tab copies it's full path to Clipboard.
|
||||
Reworked code to count installed packages (based on filters).
|
||||
Leave some actions disabled before building pkg list and mirror-checking.
|
||||
Added 'installed size' information in package tooltips.
|
||||
Added Search by file feature (pacman -Qo).
|
||||
Added a string validator in the search edit widget.
|
||||
|
||||
0.4.0
|
||||
Huge refactorings in model/view that brings consistent memory and
|
||||
speed improvements - a single model and a central data storage (thanks to
|
||||
Thomas Binkau - tbinkau).
|
||||
BugFix: The transparent octopi notifier icon no longer shows a white bar in the
|
||||
eyes (thanks to Ankde Boersma) .
|
||||
BugFix: Fixed a jump bug when key-navigating in pkg list with Qt5 octopi.
|
||||
BugFix: When a pkg is outdated, show all available information.
|
||||
BugFix: Show warning if user do not have kdesu/gksu in sysupgrade/install local pkgs.
|
||||
BugFix: System upgrade can not be available while in yaourt mode.
|
||||
BugFix: Switching faster to yaourt mode if text field is empty.
|
||||
BugFix: Ctrl+A is available in the package list panel.
|
||||
BugFix: Now Shift+F3 and F3 search keys (and also Esc) work outside
|
||||
SearchLineEdit widget.
|
||||
BugFix: fixed freeze for install orphaned/yaourt package (thanks to
|
||||
tbinkau).
|
||||
BugFix: fixed notify-send code in octopi-notifier (thanks to vedgy).
|
||||
BugFix: Files tab presented some nasty results sometimes and even a GPF when it
|
||||
found symlinks to directories.
|
||||
BugFix: running as root was broken in KDE.
|
||||
BugFix: The preventing code for always refresh the pkg list was flawed.
|
||||
BugFix: hasInternetConnection code fixed to improve mirror-check speed.
|
||||
BugFix: Fixed CCR (Chakra) package installation/removal (thanks to dmnmsc).
|
||||
BugFix: Disable group widget while searching for AUR packages.
|
||||
Switched to "pacman -Syy" command when synching. It's safer.
|
||||
Added support for Pacaur tool.
|
||||
Added support to kcp in KaOS (thanks to Cellix).
|
||||
Added support to LXQt DE.
|
||||
Added support to ArchBSD news (thanks to bkc_).
|
||||
Added support to Netrunner news.
|
||||
Added support to mooOS distro (thanks to pdq).
|
||||
Added support to Antergos distro (thanks to Yoyo).
|
||||
Added popularity column (number of votes) in AUR/CCR mode (thanks to
|
||||
tbinkau).
|
||||
Added more filter options in View menu.
|
||||
Added parameter "sysupgrade-noconfirm" so Octopi can jump automatically
|
||||
to distro upgrade (if any new packages available) without prompt for
|
||||
confirmation. Also added a "Yes" button to the sysupgrade
|
||||
confirmation dialog at octopi-notifier (thanks to wget).
|
||||
Merged Oktopi's code for using KDE icon theme, tools menu and CCR support
|
||||
(thanks to Giuseppe Calà - gcala).
|
||||
Changed sorting of the first column to also include the name column as second
|
||||
sort criteria (thanks to tbinkau).
|
||||
Added pacman log viewer and repoeditor support in tools menu (thanks to gcala).
|
||||
Added asturian language in Qt5 builds (thanks to Llumex03).
|
||||
Patched repoeditor to run just one instance at a time.
|
||||
The filelist search now searches directories too.
|
||||
Refactorings here and there to make it more Chakra friendly.
|
||||
Updated README file.
|
||||
Updated some icons to unclutter the UI (thanks to Anke Boersma).
|
||||
Refactoring in some code to not generate translatable strings.
|
||||
Fixed getBuildDate code to always convert dates to english format.
|
||||
Updated some translations.
|
||||
|
||||
0.3.2
|
||||
Cleaned unused code.
|
||||
Added icon for mirror-check while in KaOS.
|
||||
Does a mirror-check at startup while in KaOS.
|
||||
Added icon for system upgrade.
|
||||
Added system upgrade button in octopi's toolbar.
|
||||
BugFix: Navigating in the package list using [A..Z] keys did not work as
|
||||
expected.
|
||||
BugFix: When the package list is filtered and you click in a package which is in
|
||||
the outdated package list, you are redirected to a blank information tab.
|
||||
BugFix: When the groups button is pressed and the lower pane is maximized, the
|
||||
former is hidden by the later.
|
||||
BugFix: When the user had no yaourt in the system, there were a zombie
|
||||
octopi process 'left running'.
|
||||
|
||||
0.3.1
|
||||
Added support for Qt5.
|
||||
Added chinese (Taiwan), malay, slovak and ukrainian translations.
|
||||
Added support to KaOS, a lean KDE centric Linux distro.
|
||||
Added support to installation of local packages with GUI feedback.
|
||||
Updated translations.
|
||||
Changed widget for package groups, from combobox to treeview.
|
||||
BugFix: When inserting an optional dependency package or removing a dep,
|
||||
first searches into transaction queue for them.
|
||||
BugFix: Prevent header resizing in File and Transaction tabs.
|
||||
|
||||
0.3
|
||||
Code cleanings.
|
||||
BugFix: No need to refresh package list after a cache clean.
|
||||
BugFix: Konsole was not working with yaourt package installation.
|
||||
BugFix: Position of search icon in searchedit sometimes was wrong.
|
||||
BugFix: Some actions did not get disabled while executing a transaction.
|
||||
BugFix: Use -Ss option while searching for yaourt packages.
|
||||
BugFix: Don't show package names in yaourt package descriptions.
|
||||
BugFix: Better RazorQt compatibility.
|
||||
BugFix: Notifier: clear tooltip if no update is available (thanks to
|
||||
Anselmo L. S. Melo - anselmolsm).
|
||||
BugFix: When refreshing packages from a group, the list could become
|
||||
outdated if the user had installed/removed some package.
|
||||
BugFix: Use "yaourt -S aur/pkgname" to install yaourt packages
|
||||
(thanks to ringo32).
|
||||
BugFix: Octopi was only showing the first Optional Deps in some cases.
|
||||
Brought back the option to do a graphical system upgrade.
|
||||
Now when installing a package with optional dependencies, Octopi lets users choose
|
||||
which optional dependencies (if any) they want to install.
|
||||
Now when removing a package with dependencies, Octopi lets users choose which one they
|
||||
want to remove.
|
||||
Now Get Latest Distro News doesn't freeze the interface.
|
||||
Changed octopi main icon to octopi-green.png in PKGBUILD and
|
||||
octopi.desktop.
|
||||
Added menu "Octopi" and "System Upgrade" in octopi-notifier.
|
||||
Show Yaourt packages as outdated in default package list.
|
||||
Now it's possible to upgrade Yaourt packages even outside Yaourt group.
|
||||
Now the yellow octopi icon means there are outdated yaourt packages.
|
||||
Now octopi-notifier opens only the transaction dialog if Octopi is not running
|
||||
and user requests a system upgrade.
|
||||
Added support to remove Pacman's transaction lock file.
|
||||
Added a new notification for outdated packages on statusbar.
|
||||
Added a new status icon: an orange one for newer than repo
|
||||
installed packages.
|
||||
Added spanish (Latin America) translation.
|
||||
Added english (Great Britain) translation.
|
||||
Added portuguese (Portugal) translation.
|
||||
Added swedish translation.
|
||||
Added serbian translation.
|
||||
Added hungarian translation.
|
||||
Added new "foreign_red.png" and "octopi_green.png" icons (thanks to Alex
|
||||
Fredrich).
|
||||
Added support for pkgfile to view uninstalled package file list while in
|
||||
ArchLinux/ArchBang (thanks to Damián Nohales).
|
||||
Added an About Dialog to Octopi Notifier.
|
||||
Updated translations.
|
||||
|
||||
0.2
|
||||
Splitted the project in "octopi" and "octopi-notifier".
|
||||
Yaourt no longer runs with root permissions.
|
||||
Added support for package multi selection in Yaourt mode.
|
||||
Added option to install local packages.
|
||||
Added support for "notify-send" in "octopi-notifier".
|
||||
Added hebrew translation.
|
||||
Added lithuanian translation.
|
||||
Added norwegian bokmål translation.
|
||||
Added servian latin translation.
|
||||
Added dutch translation.
|
||||
Added russian translation.
|
||||
Added uzbek translation.
|
||||
Added finnish translation.
|
||||
Added vietnamese translation.
|
||||
Updated all other translations.
|
||||
GTK native theme is used by default in Manjaro (while not in KDE).
|
||||
Added support for Xterm terminal.
|
||||
IgnorePkg option is now used to build outdated package list.
|
||||
BugFix: Empty pkg descriptions are now shown as empty.
|
||||
|
||||
0.1.9.1
|
||||
Important bugfixes to deal with multithreaded code.
|
||||
Added a "globals.h/.cpp" file to group QFutureWatcher globals.
|
||||
Updated style changing code in main.cpp.
|
||||
BugFix: when user cancelled a sysupgrade transaction inside a
|
||||
terminal, the package actions remained disabled.
|
||||
|
||||
0.1.9
|
||||
Added yaourt support.
|
||||
Updated most of the translations.
|
||||
|
||||
0.1.8
|
||||
Added czech translation.
|
||||
Added support to ArchBang Linux.
|
||||
Added a systemtray icon notifier feature using DBus technology.
|
||||
|
||||
0.1.7.3
|
||||
Added a TRANSLATIONS file.
|
||||
Added danish translation.
|
||||
Added indonesian translation.
|
||||
Added polish translation.
|
||||
Added bulgarian translation.
|
||||
sysupgrade command line option now synchronizes database.
|
||||
Bugfix: sysupgrade must refresh packagelist after syncdatabase.
|
||||
Bugfix: if sysupgrade uses SyncFirst, makes it automatically start a second upgrade.
|
||||
|
||||
0.1.7.2
|
||||
Added catalan translation.
|
||||
Bugfix: updated new binary translation files to the resources.
|
||||
|
||||
0.1.7.1
|
||||
Bugfix: menu icons were not being shown while in Xfce.
|
||||
|
||||
0.1.7
|
||||
Added "-sysupgrade" command line option.
|
||||
Added "-removecmd" command line option.
|
||||
Added lots of translations.
|
||||
Added links to outdated package names in outdated package list.
|
||||
Added an About dialog.
|
||||
Changed the old About tab to Usage tab.
|
||||
|
||||
0.1.6.1
|
||||
Added pt_BR translation.
|
||||
Added "Open root terminal" option in File menu.
|
||||
|
||||
0.1.6
|
||||
Added a new Transaction Dialog.
|
||||
Added a Firefox-like search inside Files, News and About tabs.
|
||||
|
||||
30
INSTALL
@@ -1,10 +1,28 @@
|
||||
Installing Octopi is a pretty straightforward task.
|
||||
|
||||
Assuming you have updated Qt4 libs installed in your system, just:
|
||||
Assuming you have updated Qt4(*) libs installed in your system, all
|
||||
you have to do is run:
|
||||
|
||||
1) ./qmake
|
||||
2) make
|
||||
|
||||
Octopi's binary will be generated in "./bin" dir.
|
||||
makepkg -f
|
||||
|
||||
Enjoy!
|
||||
Wait for the compilation and then install the generated package (as
|
||||
root), using:
|
||||
|
||||
pacman -U [--force] <nameOfTheGeneratedOctopiPackage.tar.xz>
|
||||
|
||||
You can also install the generated package notifier, using:
|
||||
|
||||
pacman -U [--force] <nameOfTheGeneratedOctopiNotifierPackage.tar.xz>
|
||||
|
||||
Octopi is located at the system utilities menu of your Desktop
|
||||
Environment.
|
||||
|
||||
|
||||
Enjoy!
|
||||
|
||||
(*) Octopi is also Qt5 compatible, you'll only have to adjust the
|
||||
"depends" section in PKGBUILD.
|
||||
|
||||
If you are compiling Octopi in a KDE centric-distro like KaOS and Chakra, you should
|
||||
first uncomment the "#define NO_GTK_STYLE" string located at "src/main.cpp" and
|
||||
"notifier/octopi-notifier/main.cpp", otherwise it won't compile at all.
|
||||
|
||||
76
PKGBUILD
Normal file
@@ -0,0 +1,76 @@
|
||||
pkgname=('octopi' 'octopi-notifier')
|
||||
pkgver=0.4.2
|
||||
pkgrel=1
|
||||
pkgdesc="a powerful Pacman frontend using Qt libs"
|
||||
arch=('i686' 'x86_64')
|
||||
url="http://octopiproject.wordpress.com"
|
||||
license=('GPL2')
|
||||
install=$pkgname.install
|
||||
makedepends=('git')
|
||||
depends=('qt4' 'xterm')
|
||||
optdepends=('kdesu: for KDE'
|
||||
'gksu: for XFCE, Gnome, LXDE, Cinnamon'
|
||||
'gnome-keyring: for password management'
|
||||
'yaourt: for AUR support'
|
||||
'octopi-notifier: for notifications'
|
||||
'pkgfile: to view uninstalled pkg contents in ArchLinux')
|
||||
provides=('octopi')
|
||||
md5sums=()
|
||||
|
||||
build() {
|
||||
cpucount=$(grep -c processor /proc/cpuinfo 2>/dev/null)
|
||||
jc=$((${cpucount:-1}))
|
||||
|
||||
#cd "$srcdir"
|
||||
msg "Starting build..."
|
||||
|
||||
cd $startdir
|
||||
qmake-qt4 $pkgname.pro
|
||||
make -j $jc
|
||||
|
||||
cd $startdir/notifier/pacmanhelper
|
||||
msg "Building pacmanhelper..."
|
||||
qmake-qt4 pacmanhelper.pro
|
||||
make -j $jc
|
||||
|
||||
cd $startdir/notifier/octopi-notifier
|
||||
msg "Building octopi-notifier..."
|
||||
qmake-qt4 octopi-notifier.pro
|
||||
make -j $jc
|
||||
|
||||
cd $startdir/repoeditor
|
||||
msg "Building octopi-repoeditor..."
|
||||
qmake-qt4 repoeditor.pro
|
||||
make -j $jc
|
||||
}
|
||||
|
||||
package_octopi() {
|
||||
#Octopi main files
|
||||
install -D -m755 $startdir/bin/$pkgname ${pkgdir}/usr/bin/$pkgname
|
||||
install -D -m644 $startdir/$pkgname.desktop ${pkgdir}/usr/share/applications/$pkgname.desktop
|
||||
install -D -m644 $startdir/resources/images/${pkgname}_green.png ${pkgdir}/usr/share/icons/$pkgname.png
|
||||
install -D -m644 $startdir/resources/images/${pkgname}_green.png ${pkgdir}/usr/share/icons/gnome/32x32/apps/$pkgname.png
|
||||
install -D -m644 $startdir/resources/images/${pkgname}_red.png ${pkgdir}/usr/share/icons/${pkgname}_red.png
|
||||
install -D -m644 $startdir/resources/images/${pkgname}_yellow.png ${pkgdir}/usr/share/icons/${pkgname}_yellow.png
|
||||
|
||||
#Pacmanhelper service files
|
||||
install -D -m755 $startdir/notifier/bin/pacmanhelper ${pkgdir}/usr/lib/octopi/pacmanhelper
|
||||
|
||||
install -D -m644 $startdir/notifier/pacmanhelper/polkit/org.octopi.pacman.policy ${pkgdir}/usr/share/polkit-1/actions/org.octopi.pacman.policy
|
||||
install -D -m644 $startdir/notifier/pacmanhelper/polkit/org.octopi.pacmanhelper.conf ${pkgdir}/etc/dbus-1/system.d/org.octopi.pacmanhelper.conf
|
||||
install -D -m644 $startdir/notifier/pacmanhelper/polkit/org.octopi.pacmanhelper.xml ${pkgdir}/usr/share/dbus-1/interfaces/org.octopi.pacmanhelper.xml
|
||||
install -D -m644 $startdir/notifier/pacmanhelper/polkit/org.octopi.pacmanhelper.service ${pkgdir}/usr/share/dbus-1/system-services/org.octopi.pacmanhelper.service
|
||||
|
||||
#Pacmaneditor files
|
||||
install -D -m755 $startdir/repoeditor/bin/octopi-repoeditor ${pkgdir}/usr/bin/octopi-repoeditor
|
||||
}
|
||||
|
||||
package_octopi-notifier() {
|
||||
pkgdesc="Notifier for Octopi"
|
||||
depends=('octopi' 'libnotify')
|
||||
optdepends=('xfce4-notifyd: for notifications in XFCE')
|
||||
|
||||
#Octopi-notifier file
|
||||
install -D -m755 $startdir/notifier/bin/octopi-notifier ${pkgdir}/usr/bin/octopi-notifier
|
||||
install -D -m644 $startdir/octopi-notifier.desktop ${pkgdir}/etc/xdg/autostart/octopi-notifier.desktop
|
||||
}
|
||||
18
README
@@ -1,8 +1,18 @@
|
||||
This is Octopi, a powerful Pacman frontend using Qt libs.
|
||||
This is Octopi, a powerful Pacman/AUR frontend using Qt libs.
|
||||
================================================================
|
||||
|
||||
The project's source code is hosted at https://github.com/aarnt/octopi.
|
||||
The project's source code is hosted at
|
||||
https://github.com/aarnt/octopi.
|
||||
|
||||
You'll need a privilege escalation tool to use it, once running it as
|
||||
root will not work. Octopi supports kdesu and gksu for that.
|
||||
You'll need a privilege escalation tool to use it, once running as
|
||||
root will ONLY work in KDE. Octopi supports kdesu and gksu for that.
|
||||
|
||||
For AUR support, "yaourt" and "pacaur" are supported.
|
||||
When you are in Chakra, "ccr" is supported.
|
||||
While in KaOS, "kcp" is supported.
|
||||
|
||||
Do you understand english? Wanna help this project?
|
||||
You can translate it to your mother language at
|
||||
https://www.transifex.com/projects/p/octopi/.
|
||||
|
||||
Enjoy!
|
||||
|
||||
16
THANKS
@@ -1,13 +1,25 @@
|
||||
A very special thanks goes to:
|
||||
|
||||
- Alex Fredrich, for testing and suggestions
|
||||
- All Octopi translators listed in TRANSLATIONS file!
|
||||
- Alex Fredrich, for testing, suggestions and icons
|
||||
- Anke Boersma (demm), for supporting Octopi in KaOS
|
||||
- Bernardo M. Savone (Bersil), for testing and spreading the word
|
||||
- Damián Nohales (eagleoneraptor), for pkgfile support
|
||||
- Edgar Aloísio Berger, for spreading the word by email
|
||||
- Giuseppe Calà (gcala), for merging changes from Oktopi's code
|
||||
- Jordi (dmnmsc), for testing in Chakra Linux
|
||||
- Jose Martinez (dsngjoe), for testing under Cinnamon
|
||||
- Manjaro community, for testing and suggestions
|
||||
- Manuel Tortosa, for testing, suggestions and code
|
||||
- Philip Müller, for testing, patches and suggestions
|
||||
- Philip Müller (philm), for testing, patches and suggestions
|
||||
- pdq, for implementing mooOS compatibility
|
||||
- Riberti de Almeida Felisbino (Holmes), for spreading the word at Manjaro Linux
|
||||
Brasil
|
||||
- Ringo de kroon (ringo32), for testing and lots of suggestions
|
||||
- Sami Korkalainen (Sami-Perkele), for testing and suggestions
|
||||
- Thomas Binkau (tbinkau), for patches and suggestions
|
||||
- Valdir Rossi Belmonte Filho, for patching the site
|
||||
- vedgy, for patches and suggestions
|
||||
- Yoyo Fernández (Yoyo), for spreading the word and testing
|
||||
|
||||
Octopi has got much better with all your help!
|
||||
|
||||
39
TRANSLATIONS
Normal file
@@ -0,0 +1,39 @@
|
||||
Arabic: karim (Karim Oulad Chalha)
|
||||
Asturian: Llumex03
|
||||
Basque: tarteka (Sergio Moreno)
|
||||
Brazilian Portuguese: arnt (Alexandre Albuquerque Arnt)
|
||||
Bulgarian: loot270 (Galin Iskrenov)
|
||||
Catalan: oriolfa (Oriol Fernandez)
|
||||
Chinese (Taiwan): s8321414 (冥王歐西里斯)
|
||||
Czech: fri
|
||||
Danish: Snubbi (Carl Andersen)
|
||||
Dutch: jsm (Jasper van der Marel)
|
||||
English: source language
|
||||
English (Great Britain): jonathon (J Fernyhough)
|
||||
Finnish: Sami Korkalainen (Sami-Perkele)
|
||||
French: Loubrix (David Roux)
|
||||
German: Veraendert
|
||||
Greek: angel_solomos
|
||||
Hebrew: GenghisKhan
|
||||
Hungarian: lajos (Lajos Pasztor)
|
||||
Indonesian: Se7enTime (Mohamad Hasan Al Banna)
|
||||
Italian: bersil (Bernardo Miguel Savone)
|
||||
Japanese: (UTUMI Hirosi) utuhiro78
|
||||
Lithuanian: liudas (Liudas Ališauskas)
|
||||
Malay: Puretech
|
||||
Norwegian Bokmål: viking60
|
||||
Polish: poker98face (Kuba Kaczmarzyk)
|
||||
Portuguese: arcorreia (António Correia)
|
||||
Romanian: Ayceman (Alexandru Ianu)
|
||||
Russian: macbet (Daniil) and ualmasov (Umidjon Almasov)
|
||||
Serbian: milenkin (Milena Petrović)
|
||||
Serbian-latin: GameBoyT (GameBoy)
|
||||
Slovak: roslav
|
||||
Spanish: tufadorin and yoyo308 (Yoyo Fernández)
|
||||
Spanish - Argentina: (javier)
|
||||
Spanish - Latin America: CostGranda (Cost Granda)
|
||||
Swedish: riiga
|
||||
Turkish: yfdogan (Yusuf Faruk DOĞAN)
|
||||
Ukrainian: zubr139
|
||||
Uzbek: ualmasov (Umidjon Almasov)
|
||||
Vietnamese: ppanhh (Anh Phan)
|
||||
38
notifier/octopi-notifier/main.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include "../../src/unixcommand.h"
|
||||
#include "../../src/wmhelper.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QtGui>
|
||||
|
||||
//#define NO_GTK_STYLE
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (UnixCommand::isAppRunning("octopi-notifier")) return (-1);
|
||||
|
||||
QApplication a(argc, argv);
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
#ifndef NO_GTK_STYLE
|
||||
QApplication::setGraphicsSystem(QLatin1String("raster"));
|
||||
|
||||
if(!WMHelper::isKDERunning() && (!WMHelper::isLXQTRunning()) && (!WMHelper::isRazorQtRunning()))
|
||||
{
|
||||
qApp->setStyle(new QGtkStyle());
|
||||
}
|
||||
else
|
||||
qApp->setStyle(new QCleanlooksStyle);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
QTranslator appTranslator;
|
||||
appTranslator.load(":/resources/translations/octopi_" +
|
||||
QLocale::system().name());
|
||||
a.installTranslator(&appTranslator);
|
||||
a.setQuitOnLastWindowClosed(false);
|
||||
MainWindow w;
|
||||
QResource::registerResource("./resources.qrc");
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
523
notifier/octopi-notifier/mainwindow.cpp
Normal file
@@ -0,0 +1,523 @@
|
||||
#include "mainwindow.h"
|
||||
#include "../../src/strconstants.h"
|
||||
#include "../../src/uihelper.h"
|
||||
#include "../../src/package.h"
|
||||
#include "../../src/pacmanhelperclient.h"
|
||||
#include "../../src/transactiondialog.h"
|
||||
|
||||
#include <QTimer>
|
||||
#include <QSystemTrayIcon>
|
||||
#include <QAction>
|
||||
#include <QMenu>
|
||||
#include <QProcess>
|
||||
#include <QMessageBox>
|
||||
|
||||
/*
|
||||
* This is Octopi Notifier slim interface code :-)
|
||||
*/
|
||||
|
||||
/*
|
||||
* The obligatory constructor...
|
||||
*/
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
QMainWindow(parent)
|
||||
{
|
||||
m_pacmanDatabaseSystemWatcher =
|
||||
new QFileSystemWatcher(QStringList() << ctn_PACMAN_DATABASE_DIR, this);
|
||||
initSystemTrayIcon();
|
||||
}
|
||||
|
||||
/*
|
||||
* Let's initialize the system tray object...
|
||||
*/
|
||||
void MainWindow::initSystemTrayIcon()
|
||||
{
|
||||
m_commandExecuting = ectn_NONE;
|
||||
m_outdatedPackageList = new QStringList();
|
||||
m_systemTrayIcon = new QSystemTrayIcon(this);
|
||||
m_systemTrayIcon->setObjectName("systemTrayIcon");
|
||||
|
||||
m_icon = IconHelper::getIconOctopiTransparent();
|
||||
m_systemTrayIcon->setIcon(m_icon);
|
||||
setWindowIcon(m_icon);
|
||||
m_systemTrayIcon->show();
|
||||
m_systemTrayIcon->setToolTip(StrConstants::getSyncDatabases());
|
||||
qApp->processEvents();
|
||||
|
||||
m_actionExit = new QAction(IconHelper::getIconExit(), tr("Exit"), this);
|
||||
connect(m_actionExit, SIGNAL(triggered()), this, SLOT(exitNotifier()));
|
||||
|
||||
m_actionAbout = new QAction(StrConstants::getHelpAbout(), this);
|
||||
m_actionAbout->setIconVisibleInMenu(true);
|
||||
connect(m_actionAbout, SIGNAL(triggered()), this, SLOT(aboutOctopiNotifier()));
|
||||
|
||||
m_actionOctopi = new QAction(this);
|
||||
m_actionOctopi->setText("Octopi...");
|
||||
connect(m_actionOctopi, SIGNAL(triggered()), this, SLOT(startOctopi()));
|
||||
|
||||
m_actionSystemUpgrade = new QAction(this);
|
||||
m_actionSystemUpgrade->setIconVisibleInMenu(true);
|
||||
m_actionSystemUpgrade->setText(tr("System upgrade"));
|
||||
m_actionSystemUpgrade->setIcon(IconHelper::getIconSystemUpgrade());
|
||||
connect(m_actionSystemUpgrade, SIGNAL(triggered()), this, SLOT(runOctopiSysUpgrade()));
|
||||
|
||||
m_systemTrayIconMenu = new QMenu( this );
|
||||
m_systemTrayIconMenu->addAction(m_actionOctopi);
|
||||
m_systemTrayIconMenu->addAction(m_actionSystemUpgrade);
|
||||
m_systemTrayIconMenu->addSeparator();
|
||||
m_systemTrayIconMenu->addAction(m_actionAbout);
|
||||
m_systemTrayIconMenu->addAction(m_actionExit);
|
||||
m_systemTrayIcon->setContextMenu(m_systemTrayIconMenu);
|
||||
|
||||
connect ( m_systemTrayIcon , SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ),
|
||||
this, SLOT( execSystemTrayActivated ( QSystemTrayIcon::ActivationReason ) ) );
|
||||
|
||||
m_pacmanHelperClient = new PacmanHelperClient("org.octopi.pacmanhelper", "/", QDBusConnection::systemBus(), 0);
|
||||
connect(m_pacmanHelperClient, SIGNAL(syncdbcompleted()), this, SLOT(afterPacmanHelperSyncDatabase()));
|
||||
|
||||
m_pacmanHelperTimer = new QTimer();
|
||||
m_pacmanHelperTimer->setInterval(100);
|
||||
m_pacmanHelperTimer->start();
|
||||
|
||||
connect(m_pacmanHelperTimer, SIGNAL(timeout()), this, SLOT(pacmanHelperTimerTimeout()));
|
||||
}
|
||||
|
||||
/*
|
||||
* Execs Octopi
|
||||
*/
|
||||
void MainWindow::runOctopi(ExecOpt execOptions)
|
||||
{
|
||||
if (execOptions == ectn_SYSUPGRADE_NOCONFIRM_EXEC_OPT)
|
||||
{
|
||||
if (!WMHelper::isKDERunning() && (!WMHelper::isRazorQtRunning()) && (!WMHelper::isLXQTRunning()))
|
||||
{
|
||||
QProcess::startDetached("octopi -sysupgrade-noconfirm -style gtk");
|
||||
}
|
||||
else
|
||||
{
|
||||
QProcess::startDetached("octopi -sysupgrade-noconfirm");
|
||||
}
|
||||
}
|
||||
else if (execOptions == ectn_SYSUPGRADE_EXEC_OPT &&
|
||||
!UnixCommand::isAppRunning("octopi", true) && m_outdatedPackageList->count() > 0)
|
||||
{
|
||||
doSystemUpgrade();
|
||||
}
|
||||
else if (execOptions == ectn_SYSUPGRADE_EXEC_OPT &&
|
||||
UnixCommand::isAppRunning("octopi", true) && m_outdatedPackageList->count() > 0)
|
||||
{
|
||||
if (!WMHelper::isKDERunning() && (!WMHelper::isRazorQtRunning()) && (!WMHelper::isLXQTRunning()))
|
||||
{
|
||||
QProcess::startDetached("octopi -sysupgrade -style gtk");
|
||||
}
|
||||
else
|
||||
{
|
||||
QProcess::startDetached("octopi -sysupgrade");
|
||||
}
|
||||
}
|
||||
else if (execOptions == ectn_NORMAL_EXEC_OPT)
|
||||
{
|
||||
if (!WMHelper::isKDERunning() && (!WMHelper::isRazorQtRunning()) && (!WMHelper::isLXQTRunning()))
|
||||
{
|
||||
QProcess::startDetached("octopi -style gtk");
|
||||
}
|
||||
else
|
||||
{
|
||||
QProcess::startDetached("octopi");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper to a runOctopi with a call to SystemUpgrade
|
||||
*/
|
||||
void MainWindow::runOctopiSysUpgrade()
|
||||
{
|
||||
runOctopi(ectn_SYSUPGRADE_EXEC_OPT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Shows Octopi Notifier About Dialog...
|
||||
*/
|
||||
void MainWindow::aboutOctopiNotifier()
|
||||
{
|
||||
QString aboutText = "<b>Octopi Notifier - " + StrConstants::getApplicationVersion() + "</b><br>";
|
||||
aboutText += "<a href=\"http://octopiproject.wordpress.com/\">http://octopiproject.wordpress.com</a><br><br>";
|
||||
aboutText += "© Alexandre Albuquerque Arnt";
|
||||
|
||||
QMessageBox::about(this, StrConstants::getHelpAbout(), aboutText);
|
||||
}
|
||||
|
||||
/*
|
||||
* Hides Octopi
|
||||
*/
|
||||
void MainWindow::hideOctopi()
|
||||
{
|
||||
QProcess::startDetached("octopi -hide");
|
||||
}
|
||||
|
||||
/*
|
||||
* Checks if some SU utility is available...
|
||||
* Returns false if not!
|
||||
*/
|
||||
bool MainWindow::_isSUAvailable()
|
||||
{
|
||||
//If there are no means to run the actions, we must warn!
|
||||
if (WMHelper::getSUCommand() == ctn_NO_SU_COMMAND){
|
||||
QMessageBox::critical( 0, StrConstants::getApplicationName(),
|
||||
StrConstants::getErrorNoSuCommand() +
|
||||
"\n" + StrConstants::getYoullNeedSuFrontend());
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Calls only the Octopi system upgrade window
|
||||
*/
|
||||
void MainWindow::doSystemUpgrade()
|
||||
{
|
||||
//Shows a dialog indicating the targets needed to be retrieved and asks for the user's permission.
|
||||
QList<PackageListData> * targets = Package::getTargetUpgradeList();
|
||||
|
||||
//There are no new updates to install!
|
||||
if (targets->count() == 0 && m_outdatedPackageList->count() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (targets->count() == 0 && m_outdatedPackageList->count() > 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QString list;
|
||||
double totalDownloadSize = 0;
|
||||
|
||||
foreach(PackageListData target, *targets)
|
||||
{
|
||||
totalDownloadSize += target.downloadSize;
|
||||
list = list + target.name + "-" + target.version + "\n";
|
||||
}
|
||||
list.remove(list.size()-1, 1);
|
||||
|
||||
totalDownloadSize = totalDownloadSize / 1024;
|
||||
QString ds = QString::number(totalDownloadSize, 'f', 2);
|
||||
|
||||
TransactionDialog question(this);
|
||||
|
||||
//If we're in Chakra, there are no graphical system upgrades!
|
||||
if (UnixCommand::getLinuxDistro() == ectn_CHAKRA) question.removeYesButton();
|
||||
|
||||
if(targets->count()==1)
|
||||
question.setText(StrConstants::getRetrieveTarget() +
|
||||
"\n\n" + StrConstants::getTotalDownloadSize().arg(ds));
|
||||
else
|
||||
question.setText(StrConstants::getRetrieveTargets().arg(targets->count()) +
|
||||
"\n\n" + StrConstants::getTotalDownloadSize().arg(ds));
|
||||
|
||||
question.setWindowTitle(StrConstants::getConfirmation());
|
||||
question.setInformativeText(StrConstants::getConfirmationQuestion());
|
||||
question.setDetailedText(list);
|
||||
|
||||
m_systemUpgradeDialog = true;
|
||||
int result = question.exec();
|
||||
|
||||
if (result == QDialogButtonBox::Yes)
|
||||
{
|
||||
runOctopi(ectn_SYSUPGRADE_NOCONFIRM_EXEC_OPT);
|
||||
}
|
||||
else if(result == QDialogButtonBox::AcceptRole)
|
||||
{
|
||||
m_systemUpgradeDialog = false;
|
||||
|
||||
//If there are no means to run the actions, we must warn!
|
||||
if (!_isSUAvailable()) return;
|
||||
|
||||
QStringList lastCommandList;
|
||||
lastCommandList.append("pacman -Su;");
|
||||
lastCommandList.append("echo -e;");
|
||||
lastCommandList.append("read -n1 -p \"" + StrConstants::getPressAnyKey() + "\"");
|
||||
|
||||
m_unixCommand = new UnixCommand(this);
|
||||
|
||||
QObject::connect(m_unixCommand, SIGNAL( finished ( int, QProcess::ExitStatus )),
|
||||
this, SLOT( doSystemUpgradeFinished(int, QProcess::ExitStatus) ));
|
||||
|
||||
toggleEnableInterface(false);
|
||||
m_actionSystemUpgrade->setEnabled(false);
|
||||
|
||||
if (result == QDialogButtonBox::AcceptRole)
|
||||
{
|
||||
m_commandExecuting = ectn_RUN_SYSTEM_UPGRADE_IN_TERMINAL;
|
||||
m_unixCommand->runCommandInTerminal(lastCommandList);
|
||||
}
|
||||
}
|
||||
else if (result == QDialogButtonBox::No)
|
||||
{
|
||||
m_systemUpgradeDialog = false;
|
||||
toggleEnableInterface(true);
|
||||
refreshAppIcon();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* When system upgrade process is finished...
|
||||
*/
|
||||
void MainWindow::doSystemUpgradeFinished(int, QProcess::ExitStatus)
|
||||
{
|
||||
refreshAppIcon();
|
||||
|
||||
//Does it still need to upgrade another packages due to SyncFirst issues???
|
||||
if ((m_commandExecuting == ectn_RUN_SYSTEM_UPGRADE_IN_TERMINAL)
|
||||
&& m_outdatedPackageList->count() > 0)
|
||||
{
|
||||
m_commandExecuting = ectn_NONE;
|
||||
m_unixCommand->removeTemporaryActionFile();
|
||||
doSystemUpgrade();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
m_commandExecuting = ectn_NONE;
|
||||
m_unixCommand->removeTemporaryActionFile();
|
||||
toggleEnableInterface(true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Enables and Disables some UI elements of Octopi-notifier
|
||||
*/
|
||||
void MainWindow::toggleEnableInterface(bool state)
|
||||
{
|
||||
m_actionOctopi->setEnabled(state);
|
||||
m_actionExit->setEnabled(state);
|
||||
}
|
||||
|
||||
/*
|
||||
* Whenever this timer ticks, we need to call the PacmanHelper DBus interface to sync Pacman's dbs
|
||||
*/
|
||||
void MainWindow::pacmanHelperTimerTimeout()
|
||||
{
|
||||
static bool firstTime=true;
|
||||
|
||||
if (m_commandExecuting != ectn_NONE) return;
|
||||
|
||||
if (firstTime)
|
||||
{
|
||||
m_pacmanHelperTimer->setInterval(1000 * 60 * 60);
|
||||
firstTime=false;
|
||||
}
|
||||
|
||||
m_actionOctopi->setEnabled(false);
|
||||
|
||||
if (m_outdatedPackageList->count() > 0)
|
||||
{
|
||||
m_actionSystemUpgrade->setEnabled(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_actionSystemUpgrade->setVisible(false);
|
||||
}
|
||||
|
||||
m_icon = IconHelper::getIconOctopiTransparent();
|
||||
m_systemTrayIcon->setIcon(m_icon);
|
||||
m_systemTrayIcon->setToolTip(StrConstants::getSyncDatabases());
|
||||
qApp->processEvents();
|
||||
|
||||
m_systemTrayIconMenu->close();
|
||||
m_systemTrayIcon->setContextMenu(0);
|
||||
m_commandExecuting = ectn_SYNC_DATABASE;
|
||||
m_pacmanHelperClient->syncdb();
|
||||
}
|
||||
|
||||
/*
|
||||
* Called right after the PacmanHelper syncdb() method has finished!
|
||||
*/
|
||||
void MainWindow::afterPacmanHelperSyncDatabase()
|
||||
{
|
||||
m_actionOctopi->setEnabled(true);
|
||||
m_systemTrayIcon->setContextMenu(m_systemTrayIconMenu);
|
||||
m_systemTrayIconMenu->close();
|
||||
m_commandExecuting = ectn_NONE;
|
||||
|
||||
disconnect(m_pacmanDatabaseSystemWatcher,
|
||||
SIGNAL(directoryChanged(QString)), this, SLOT(refreshAppIcon()));
|
||||
|
||||
int numberOfOutdatedPackages = m_numberOfOutdatedPackages;
|
||||
refreshAppIcon();
|
||||
|
||||
if (numberOfOutdatedPackages != m_numberOfOutdatedPackages)
|
||||
{
|
||||
if (m_numberOfOutdatedPackages > 0)
|
||||
{
|
||||
QString notification;
|
||||
|
||||
if (m_numberOfOutdatedPackages == 1)
|
||||
{
|
||||
notification = StrConstants::getOneNewUpdate();
|
||||
m_systemTrayIcon->setToolTip(notification);
|
||||
if (!UnixCommand::isAppRunning("spun", true)) sendNotification(notification);
|
||||
}
|
||||
else if (m_numberOfOutdatedPackages > 1)
|
||||
{
|
||||
notification = StrConstants::getNewUpdates().arg(m_numberOfOutdatedPackages);
|
||||
m_systemTrayIcon->setToolTip(notification);
|
||||
if (!UnixCommand::isAppRunning("spun", true)) sendNotification(notification);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QString notification;
|
||||
|
||||
if (numberOfOutdatedPackages == 1)
|
||||
{
|
||||
notification = StrConstants::getOneNewUpdate();
|
||||
m_systemTrayIcon->setToolTip(notification);
|
||||
if (!UnixCommand::isAppRunning("spun", true)) sendNotification(notification);
|
||||
}
|
||||
else if (numberOfOutdatedPackages > 1)
|
||||
{
|
||||
notification = StrConstants::getNewUpdates().arg(numberOfOutdatedPackages);
|
||||
m_systemTrayIcon->setToolTip(notification);
|
||||
if (!UnixCommand::isAppRunning("spun", true)) sendNotification(notification);
|
||||
}
|
||||
}
|
||||
|
||||
connect(m_pacmanDatabaseSystemWatcher,
|
||||
SIGNAL(directoryChanged(QString)), this, SLOT(refreshAppIcon()));
|
||||
}
|
||||
|
||||
/*
|
||||
* Uses notify-send to send a notification to the systray area
|
||||
*/
|
||||
void MainWindow::sendNotification(const QString &msg)
|
||||
{
|
||||
QString processToExec("notify-send");
|
||||
if (UnixCommand::hasTheExecutable(processToExec))
|
||||
{
|
||||
processToExec += " -i /usr/share/icons/octopi_red.png -t 5000 \"" + StrConstants::getApplicationName() +
|
||||
"\" \"" + msg + "\"";
|
||||
QProcess::startDetached(processToExec);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we have some outdated packages, let's put an angry red face icon in this app!
|
||||
*/
|
||||
void MainWindow::refreshAppIcon()
|
||||
{
|
||||
m_outdatedPackageList = Package::getOutdatedPackageList();
|
||||
|
||||
bool hasAURTool = UnixCommand::hasTheExecutable(StrConstants::getForeignRepositoryToolName());
|
||||
if (hasAURTool)
|
||||
{
|
||||
m_outdatedAURPackageList = Package::getOutdatedAURPackageList();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_outdatedAURPackageList = new QStringList();
|
||||
}
|
||||
|
||||
m_numberOfOutdatedPackages = m_outdatedPackageList->count();
|
||||
m_numberOfOutdatedAURPackages = m_outdatedAURPackageList->count();
|
||||
|
||||
if (m_numberOfOutdatedPackages == 0 && m_numberOfOutdatedAURPackages == 0)
|
||||
{
|
||||
m_systemTrayIcon->setToolTip("");
|
||||
}
|
||||
else if (m_numberOfOutdatedPackages > 0)
|
||||
{
|
||||
if (m_numberOfOutdatedPackages == 1)
|
||||
{
|
||||
m_systemTrayIcon->setToolTip(StrConstants::getOneNewUpdate());
|
||||
}
|
||||
else if (m_numberOfOutdatedPackages > 1)
|
||||
{
|
||||
m_systemTrayIcon->setToolTip(StrConstants::getNewUpdates().arg(m_numberOfOutdatedPackages));
|
||||
}
|
||||
}
|
||||
else if (m_numberOfOutdatedAURPackages > 0)
|
||||
{
|
||||
if (m_numberOfOutdatedAURPackages == 1)
|
||||
{
|
||||
m_systemTrayIcon->setToolTip(StrConstants::getOneNewUpdate());
|
||||
}
|
||||
else if (m_numberOfOutdatedAURPackages > 1)
|
||||
{
|
||||
m_systemTrayIcon->setToolTip(StrConstants::getNewUpdates().arg(m_numberOfOutdatedAURPackages));
|
||||
}
|
||||
}
|
||||
|
||||
if(m_outdatedPackageList->count() > 0) //RED ICON!
|
||||
{
|
||||
if(m_commandExecuting == ectn_NONE)
|
||||
{
|
||||
m_actionSystemUpgrade->setEnabled(true);
|
||||
m_actionSystemUpgrade->setVisible(true);
|
||||
}
|
||||
|
||||
m_icon = IconHelper::getIconOctopiRed();
|
||||
}
|
||||
else if(m_outdatedAURPackageList->count() > 0) //YELLOW ICON!
|
||||
{
|
||||
m_actionSystemUpgrade->setVisible(false);
|
||||
m_icon = IconHelper::getIconOctopiYellow();
|
||||
}
|
||||
else //YEAHHH... GREEN ICON!
|
||||
{
|
||||
m_actionSystemUpgrade->setVisible(false);
|
||||
m_icon = IconHelper::getIconOctopiGreen();
|
||||
}
|
||||
|
||||
setWindowIcon(m_icon);
|
||||
m_systemTrayIcon->setIcon(m_icon);
|
||||
}
|
||||
|
||||
/*
|
||||
* Whenever the user clicks on the systemTray icon...
|
||||
*/
|
||||
void MainWindow::execSystemTrayActivated(QSystemTrayIcon::ActivationReason ar)
|
||||
{
|
||||
if (m_commandExecuting != ectn_NONE) return;
|
||||
|
||||
switch (ar)
|
||||
{
|
||||
case QSystemTrayIcon::DoubleClick:
|
||||
{
|
||||
if (m_outdatedPackageList->count() > 0)
|
||||
{
|
||||
runOctopi(ectn_SYSUPGRADE_EXEC_OPT);
|
||||
}
|
||||
else
|
||||
{
|
||||
runOctopi(ectn_NORMAL_EXEC_OPT);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case QSystemTrayIcon::Trigger:
|
||||
{
|
||||
if (UnixCommand::isAppRunning("octopi", true))
|
||||
{
|
||||
hideOctopi();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* When the users quit this notifier...
|
||||
*/
|
||||
void MainWindow::exitNotifier()
|
||||
{
|
||||
if (UnixCommand::isAppRunning("octopi", true))
|
||||
{
|
||||
QProcess::startDetached("octopi -close");
|
||||
}
|
||||
|
||||
qApp->quit();
|
||||
}
|
||||
71
notifier/octopi-notifier/mainwindow.h
Normal file
@@ -0,0 +1,71 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include "../../src/unixcommand.h"
|
||||
|
||||
#include <QProcess>
|
||||
#include <QString>
|
||||
#include <QMainWindow>
|
||||
#include <QSystemTrayIcon>
|
||||
|
||||
class QIcon;
|
||||
class QMenu;
|
||||
class QAction;
|
||||
class QFileSystemWatcher;
|
||||
class PacmanHelperClient;
|
||||
|
||||
enum ExecOpt { ectn_NORMAL_EXEC_OPT, ectn_SYSUPGRADE_EXEC_OPT, ectn_SYSUPGRADE_NOCONFIRM_EXEC_OPT };
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
|
||||
private slots:
|
||||
|
||||
void pacmanHelperTimerTimeout();
|
||||
void afterPacmanHelperSyncDatabase();
|
||||
void execSystemTrayActivated(QSystemTrayIcon::ActivationReason);
|
||||
void refreshAppIcon();
|
||||
void runOctopi(ExecOpt execOptions = ectn_SYSUPGRADE_EXEC_OPT);
|
||||
void runOctopiSysUpgrade();
|
||||
|
||||
inline void startOctopi() { runOctopi(ectn_NORMAL_EXEC_OPT); }
|
||||
|
||||
void aboutOctopiNotifier();
|
||||
void hideOctopi();
|
||||
void exitNotifier();
|
||||
void doSystemUpgrade();
|
||||
void doSystemUpgradeFinished(int, QProcess::ExitStatus);
|
||||
void toggleEnableInterface(bool state);
|
||||
|
||||
private:
|
||||
|
||||
int m_numberOfOutdatedPackages;
|
||||
int m_numberOfOutdatedAURPackages;
|
||||
bool m_systemUpgradeDialog;
|
||||
CommandExecuting m_commandExecuting;
|
||||
UnixCommand *m_unixCommand;
|
||||
|
||||
QAction *m_actionOctopi;
|
||||
QAction *m_actionSystemUpgrade;
|
||||
QAction *m_actionAbout;
|
||||
QAction *m_actionExit;
|
||||
QIcon m_icon;
|
||||
QStringList *m_outdatedPackageList;
|
||||
QStringList *m_outdatedAURPackageList;
|
||||
QTimer *m_pacmanHelperTimer;
|
||||
QSystemTrayIcon *m_systemTrayIcon;
|
||||
QMenu *m_systemTrayIconMenu;
|
||||
QFileSystemWatcher *m_pacmanDatabaseSystemWatcher;
|
||||
PacmanHelperClient *m_pacmanHelperClient;
|
||||
|
||||
bool _isSUAvailable();
|
||||
void initSystemTrayIcon();
|
||||
void sendNotification(const QString &msg);
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
45
notifier/octopi-notifier/octopi-notifier.pro
Normal file
@@ -0,0 +1,45 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2013-07-20T16:15:14
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core xml gui network dbus
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
CONFIG += qt console warn_on debug
|
||||
|
||||
TARGET = octopi-notifier
|
||||
TEMPLATE = app
|
||||
|
||||
DESTDIR += ../bin
|
||||
OBJECTS_DIR += ../build-octopi-notifier
|
||||
MOC_DIR += ../build-octopi-notifier
|
||||
UI_DIR += ../build-octopi-notifier
|
||||
|
||||
SOURCES += main.cpp \
|
||||
mainwindow.cpp \
|
||||
../../src/unixcommand.cpp \
|
||||
../../src/package.cpp \
|
||||
../../src/wmhelper.cpp \
|
||||
../../src/settingsmanager.cpp \
|
||||
../../src/pacmanhelperclient.cpp \
|
||||
../../src/utils.cpp \
|
||||
../../src/transactiondialog.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainwindow.h \
|
||||
../../src/uihelper.h \
|
||||
../../src/unixcommand.h \
|
||||
../../src/wmhelper.h \
|
||||
../../src/strconstants.h \
|
||||
../../src/package.h \
|
||||
../../src/pacmanhelperclient.h \
|
||||
../../src/utils.h \
|
||||
../../src/transactiondialog.h
|
||||
|
||||
FORMS += ../../ui/transactiondialog.ui
|
||||
|
||||
RESOURCES += \
|
||||
../../resources.qrc
|
||||
5
notifier/pacmanhelper/README
Normal file
@@ -0,0 +1,5 @@
|
||||
Command used to generate the PacmanHelperAdaptor:
|
||||
|
||||
qdbusxml2cpp -c PacmanHelperAdaptor
|
||||
-a pacmanhelperadaptor.h:pacmanhelperadaptor.cpp
|
||||
polkit/org.octopi.pacmanhelper.xml
|
||||
11
notifier/pacmanhelper/main.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#include "pacmanhelper.h"
|
||||
#include <QCoreApplication>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication a(argc, argv);
|
||||
|
||||
PacmanHelper pacmanHelper;
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
35
notifier/pacmanhelper/pacmanhelper.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#include "pacmanhelper.h"
|
||||
#include "pacmanhelperadaptor.h"
|
||||
#include <QCoreApplication>
|
||||
#include <QDBusConnection>
|
||||
#include <QProcess>
|
||||
#include <QDebug>
|
||||
|
||||
PacmanHelper::PacmanHelper(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
(void) new PacmanHelperAdaptor(this);
|
||||
|
||||
if (!QDBusConnection::systemBus().registerService("org.octopi.pacmanhelper")) {
|
||||
qDebug() << "Another helper is already running!";
|
||||
QCoreApplication::instance()->quit();
|
||||
}
|
||||
|
||||
if (!QDBusConnection::systemBus().registerObject("/", this)) {
|
||||
qDebug() << "Unable to register service interface to dbus!";
|
||||
QCoreApplication::instance()->quit();
|
||||
}
|
||||
}
|
||||
|
||||
void PacmanHelper::syncdb()
|
||||
{
|
||||
QProcess pacman;
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.insert("LANG", "us_EN");
|
||||
pacman.setProcessEnvironment(env);
|
||||
|
||||
QString command = "pacman -Sy"; //-Syy or -Sy - eternal doubt!
|
||||
pacman.execute(command);
|
||||
|
||||
emit syncdbcompleted();
|
||||
}
|
||||
21
notifier/pacmanhelper/pacmanhelper.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef PACMANHELPER_H
|
||||
#define PACMANHELPER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QtDBus/QDBusContext>
|
||||
|
||||
class PacmanHelper : public QObject, protected QDBusContext
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_CLASSINFO("D-Bus Interface", "org.octopi.pacmanhelper")
|
||||
public:
|
||||
explicit PacmanHelper(QObject *parent = 0);
|
||||
|
||||
public slots:
|
||||
void syncdb();
|
||||
|
||||
signals:
|
||||
void syncdbcompleted();
|
||||
};
|
||||
|
||||
#endif // PACMANHELPER_H
|
||||
23
notifier/pacmanhelper/pacmanhelper.pro
Normal file
@@ -0,0 +1,23 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2013-06-01T15:00:00
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core dbus
|
||||
|
||||
CONFIG += qt console warn_on
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
DESTDIR += ../bin
|
||||
OBJECTS_DIR += ../build
|
||||
MOC_DIR += ../build
|
||||
UI_DIR += ../build
|
||||
|
||||
HEADERS += pacmanhelper.h \
|
||||
pacmanhelperadaptor.h
|
||||
|
||||
SOURCES += main.cpp \
|
||||
pacmanhelper.cpp \
|
||||
pacmanhelperadaptor.cpp
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by Qt Creator 2.6.2, 2013-02-21T18:58:46. -->
|
||||
<!-- Written by Qt Creator 2.6.2, 2013-06-03T23:20:52. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
@@ -53,8 +53,8 @@
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
|
||||
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">{1fc85a80-1e16-441f-8613-8eb60c31a7cf}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
|
||||
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">{0dce8b8b-e9b7-4159-956b-f4c9f1085a56}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
@@ -105,7 +105,7 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/arnt/Projects/octopi/octopi-build-Desktop-Debug</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/arnt/Projects/octopi/notifier/build</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
@@ -156,8 +156,8 @@
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/arnt/Projects/octopi/octopi-build-Desktop-Release</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/arnt/Projects/octopi/notifier/pacmanhelper/</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
@@ -205,12 +205,12 @@
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">octopi</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">pacmanhelper</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/arnt/Projects/octopi/octopi/octopi.pro</value>
|
||||
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/arnt/Projects/octopi/notifier/pacmanhelper/pacmanhelper.pro</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">octopi.pro</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">pacmanhelper.pro</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
|
||||
<valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
|
||||
@@ -230,7 +230,7 @@
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
|
||||
<value type="QString">{e429abb4-2b4e-4ad1-a132-46a4737661bf}</value>
|
||||
<value type="QString">{e7ed0845-58e4-42af-91c6-0506d885beb7}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
41
notifier/pacmanhelper/pacmanhelperadaptor.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.7
|
||||
* Command line was: qdbusxml2cpp -c PacmanHelperAdaptor -a pacmanhelperadaptor.h:pacmanhelperadaptor.cpp polkit/org.octopi.pacmanhelper.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#include "pacmanhelperadaptor.h"
|
||||
#include <QtCore/QMetaObject>
|
||||
#include <QtCore/QByteArray>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QVariant>
|
||||
|
||||
/*
|
||||
* Implementation of adaptor class PacmanHelperAdaptor
|
||||
*/
|
||||
|
||||
PacmanHelperAdaptor::PacmanHelperAdaptor(QObject *parent)
|
||||
: QDBusAbstractAdaptor(parent)
|
||||
{
|
||||
// constructor
|
||||
setAutoRelaySignals(true);
|
||||
}
|
||||
|
||||
PacmanHelperAdaptor::~PacmanHelperAdaptor()
|
||||
{
|
||||
// destructor
|
||||
}
|
||||
|
||||
void PacmanHelperAdaptor::syncdb()
|
||||
{
|
||||
// handle method call org.octopi.pacmanhelper.syncdb
|
||||
QMetaObject::invokeMethod(parent(), "syncdb");
|
||||
}
|
||||
|
||||
48
notifier/pacmanhelper/pacmanhelperadaptor.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.7
|
||||
* Command line was: qdbusxml2cpp -c PacmanHelperAdaptor -a pacmanhelperadaptor.h:pacmanhelperadaptor.cpp polkit/org.octopi.pacmanhelper.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#ifndef PACMANHELPERADAPTOR_H_1370179068
|
||||
#define PACMANHELPERADAPTOR_H_1370179068
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtDBus/QtDBus>
|
||||
class QByteArray;
|
||||
template<class T> class QList;
|
||||
template<class Key, class Value> class QMap;
|
||||
class QString;
|
||||
class QStringList;
|
||||
class QVariant;
|
||||
|
||||
/*
|
||||
* Adaptor class for interface org.octopi.pacmanhelper
|
||||
*/
|
||||
class PacmanHelperAdaptor: public QDBusAbstractAdaptor
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_CLASSINFO("D-Bus Interface", "org.octopi.pacmanhelper")
|
||||
Q_CLASSINFO("D-Bus Introspection", ""
|
||||
" <interface name=\"org.octopi.pacmanhelper\">\n"
|
||||
" <method name=\"syncdb\"/>\n"
|
||||
" <signal name=\"syncdbcompleted\"/>\n"
|
||||
" </interface>\n"
|
||||
"")
|
||||
public:
|
||||
PacmanHelperAdaptor(QObject *parent);
|
||||
virtual ~PacmanHelperAdaptor();
|
||||
|
||||
public: // PROPERTIES
|
||||
public Q_SLOTS: // METHODS
|
||||
void syncdb();
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void syncdbcompleted();
|
||||
};
|
||||
|
||||
#endif
|
||||
15
notifier/pacmanhelper/polkit/org.octopi.pacman.policy
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
|
||||
<action id="org.octopi.pacman.syncdb">
|
||||
<description>Synchronizes databases</description>
|
||||
<message>Prevents from doing action syncdb</message>
|
||||
<defaults>
|
||||
<allow_inactive>no</allow_inactive>
|
||||
<allow_active>auth_admin</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
</policyconfig>
|
||||
18
notifier/pacmanhelper/polkit/org.octopi.pacmanhelper.conf
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE busconfig PUBLIC
|
||||
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
||||
<busconfig>
|
||||
|
||||
<!-- Only user root can own the foo helper -->
|
||||
<policy user="root">
|
||||
<allow own="org.octopi.pacmanhelper"/>
|
||||
</policy>
|
||||
|
||||
<!-- Allow anyone to call into the service - we'll reject callers using PolicyKit -->
|
||||
<policy context="default">
|
||||
<allow send_interface="org.octopi.pacmanhelper"/>
|
||||
<allow receive_sender="org.octopi.pacmanhelper"/>
|
||||
<allow receive_interface="org.octopi.pacmanhelper"/>
|
||||
</policy>
|
||||
|
||||
</busconfig>
|
||||
@@ -0,0 +1,4 @@
|
||||
[D-BUS Service]
|
||||
Name=org.octopi.pacmanhelper
|
||||
Exec=/usr/lib/octopi/pacmanhelper
|
||||
User=root
|
||||
9
notifier/pacmanhelper/polkit/org.octopi.pacmanhelper.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
|
||||
<node>
|
||||
<interface name="org.octopi.pacmanhelper">
|
||||
<method name="syncdb" >
|
||||
</method>
|
||||
<signal name="syncdbcompleted">
|
||||
</signal>
|
||||
</interface>
|
||||
</node>
|
||||
9
octopi-notifier.desktop
Normal file
@@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Name=Octopi Notifier
|
||||
Icon=octopi
|
||||
Exec=octopi-notifier
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=GNOME;GTK;System;
|
||||
#NotShowIn=GNOME;XFCE;LXDE;KDE;
|
||||
StartupNotify=true
|
||||
157
octopi.desktop
@@ -1,4 +1,77 @@
|
||||
[Desktop Entry]
|
||||
Categories=GNOME;GTK;System;
|
||||
Comment[en_US]=Add or remove software installed on the system
|
||||
Comment=Add or remove software installed on the system
|
||||
Comment[af]=Voeg by of verwyder sagteware geïnstalleer op die stelsel
|
||||
Comment[ar]=أضف أو أزل البرمجيات المثبتة على النظام
|
||||
Comment[as]=ব্যৱস্থাপ্ৰণালীত সংস্থাপিত চালনাজ্ঞান উন্নয়ন কৰক
|
||||
Comment[ast]=Amestar o quitar software instaláu nel sistema
|
||||
Comment[be]=Дадаць ці выдаліць апраграмаванне, усталяванае ў сістэме
|
||||
Comment[bg]=Инсталиране и деинсталиране на софтуер към системата
|
||||
Comment[bn]=সিস্টেমে সফ্টওয়্যার যোগ করুন অথবা ইনস্টল করা সফ্টওয়্যার অপসারণ
|
||||
Comment[bn_IN]=সিস্টেমে সফ্টওয়্যার যোগ করুন অথবা ইনস্টল করা সফ্টওয়্যার সরিয়ে ফেলুন
|
||||
Comment[ca@valencia]=Afig o suprimeix programari instal·lat en el sistema
|
||||
Comment[ca]=Afegeix o suprimeix programari instal·lat en el sistema
|
||||
Comment[cs]=Přidat nebo odebrat software instalovaný v systému
|
||||
Comment[da]=Tilføj eller fjern software installeret på systemet
|
||||
Comment[de]=Auf dem System installierte Software aktualisieren oder neue Software hinzufügen
|
||||
Comment[el]=Προσθαφαίρεση λογισμικού στο σύστημα
|
||||
Comment[en@shaw]=𐑨𐑛 𐑹 𐑮𐑦𐑥𐑵𐑝 𐑕𐑪𐑓𐑑𐑢𐑺 𐑦𐑯𐑕𐑑𐑷𐑤𐑛 𐑪𐑯 𐑞 𐑕𐑦𐑕𐑑𐑩𐑥
|
||||
Comment[en_GB]=Add or remove software installed on the system
|
||||
Comment[eo]=Aldoni aŭ forigi instalitan pogramaron sur via sistemo
|
||||
Comment[es]=Añadir o quitar software instalado en el sistema
|
||||
Comment[et]=Arvutisse paigaldatud tarkvara lisamine ja eemaldamine
|
||||
Comment[eu]=Gehitu edo kendu sisteman instalatutako softwarea
|
||||
Comment[fa]=حذف یا افزودن نرمافزارهای نصب شده بر روی این سیستم
|
||||
Comment[fi]=Lisää tai poista järjestelmään asennettuja ohjelmistoja
|
||||
Comment[fr]=Ajouter ou supprimer des logiciels installés sur le système
|
||||
Comment[gl]=Engadir e eliminar o software instalado no sistema
|
||||
Comment[gu]=સિસ્ટમ પર સ્થાપિત થયેલ સોફ્ટવેરને ઉમેરો અથવા દૂર કરો
|
||||
Comment[he]=הוספה או הסרה של יישומי המערכת
|
||||
Comment[hi]=सिस्टम पर संस्थापित सॉफ्टवेयर जोड़ें या हटाएँ
|
||||
Comment[hu]=Szoftverek rendszerre telepítése vagy eltávolítása
|
||||
Comment[id]=Tambah atau hapus perangkat lunak yang terpasang pada sistem
|
||||
Comment[it]=Aggiunge o rimuove software installato sul sistema
|
||||
Comment[ja]=システムにインストールされたパッケージの追加と削除
|
||||
Comment[kn]=ಗಣಕಕ್ಕೆ ತಂತ್ರಾಂಶವನ್ನು ಸೇರಿಸು ಅಥವ ಅನುಸ್ಥಾಪಿತಗೊಂಡಿರುವುದನ್ನು ತೆಗೆದು ಹಾಕು
|
||||
Comment[ko]=시스템에 설치하는 소프트웨어를 추가하거나 제거합니다
|
||||
Comment[lt]=Įdiegti ar šalinti sistemoje įdiegtą programinę įrangą
|
||||
Comment[lv]=Pievienot vai izņemt programmatūru sistēmā
|
||||
Comment[mk]=Инсталирајте или избришете софтвер на системот
|
||||
Comment[ml]=സിസ്റ്റത്തില് ഇന്സ്റ്റോള് ചെയ്തിരിക്കുന്ന സോഫ്റ്റ്വെയര് ചേര്ക്കുക അല്ലെങ്കില് നീക്കം ചെയ്യുക
|
||||
Comment[mr]=प्रणालीवर प्रतिष्ठापीत सॉफ्टवेअर समावेष करा किंवा काढूण टाका
|
||||
Comment[ms]=Menambah atau memadam perisian yang dipasang pada sistem
|
||||
Comment[nb]=Legg til eller fjern programvare på systemet
|
||||
Comment[nl]=Software installeren op, of verwijderen van het systeem
|
||||
Comment[nn]=Legg til eller fjern programvare som er installert på systemet
|
||||
Comment[or]=ତନ୍ତ୍ରରେ ସ୍ଥାପିତ ସଫ୍ଟୱେରରେ ଯୋଗକରନ୍ତୁ କିମ୍ବା କାଢ଼ି ଦିଅନ୍ତୁ
|
||||
Comment[pa]=ਸਿਸਟਮ ਉੱਤੇ ਸਾਫਟਵੇਅਰ ਇੰਸਟਾਲ ਕਰੋ ਜਾਂ ਇੰਸਟਾਲ ਕੀਤੇ ਹਟਾਓ
|
||||
Comment[pl]=Instalowanie lub usuwanie oprogramowania zainstalowanego w systemie
|
||||
Comment[pt]=Adicionar ou remover software instalado no sistema
|
||||
Comment[pt_BR]=Adicione ou remova programas instalados no sistema
|
||||
Comment[ro]=Adăugați sau ștergeți programe instalate pe sistem
|
||||
Comment[ru]=Установка и удаление программ, установленных в системе
|
||||
Comment[sk]=Pridať alebo odstrániť softvér nainštalovaný na systéme
|
||||
Comment[sl]=Nameščanje in odstranjevanje programske opreme sistema
|
||||
Comment[sr@latin]=Dodajte ili uklonite programe instalirane na ovom sistemu
|
||||
Comment[sr]=Додајте или уклоните програме инсталиране на овом систему
|
||||
Comment[sv]=Lägg till eller ta bort programvara installerad på systemet
|
||||
Comment[ta]=கணினியில் நிறுவப்பட்ட மென்பொருளை சேர்க்கவும் அல்லது நீக்கவும்
|
||||
Comment[te]=ఈ వ్యవస్థ నందు స్థాపించిన సాఫ్ట్వేర్ను జతచేయి లేదా తీసివేయి
|
||||
Comment[th]=เพิ่มหรือลบซอฟต์แวร์ที่ติดตั้งในระบบ
|
||||
Comment[tr]=Sisteminizde yüklü yazılımları ekleyin veya kaldırın
|
||||
Comment[ug]=سىستېمىڭىزغا ئورنىتىلغان يۇمشاق دېتاللارنى قوشىدۇ ياكى ئۆچۈرىدۇ
|
||||
Comment[uk]=Встановлення та вилучення програм у системі
|
||||
Comment[vi]=Thêm hoặc gỡ phần mềm cài đặt trên hệ thống
|
||||
Comment[zh_CN]=添加或删除系统中安装的软件
|
||||
Comment[zh_HK]=加入或移除系統上安裝的軟件
|
||||
Comment[zh_TW]=加入或移除系統上安裝的軟體
|
||||
Exec=octopi
|
||||
GenericName[en_US]=
|
||||
GenericName=
|
||||
Icon=octopi
|
||||
MimeType=
|
||||
Name[en_US]=Add/Remove Software
|
||||
Name=Add/Remove Software
|
||||
Name[af]=Voeg by/verwyder sagteware
|
||||
Name[ar]=إضافة وإزالة البرمجيات
|
||||
@@ -8,8 +81,8 @@ Name[be]=Дадаць/выдаліць апраграмаванне
|
||||
Name[bg]=Инсталиране/деинсталиране на софтуер
|
||||
Name[bn]=সফ্টওয়্যার যোগ/অপসারণ
|
||||
Name[bn_IN]=সফ্টওয়্যার যোগ/অপসারণ করুন
|
||||
Name[ca]=Afegeix/Suprimeix programari
|
||||
Name[ca@valencia]=Afig/Suprimeix programari
|
||||
Name[ca]=Afegeix/Suprimeix programari
|
||||
Name[cs]=Přidat/odebrat software
|
||||
Name[da]=Tilføj/fjern software
|
||||
Name[de]=Software hinzufügen/entfernen
|
||||
@@ -52,8 +125,8 @@ Name[ro]=Adăugare sau ștergere programe
|
||||
Name[ru]=Установка и удаление программ
|
||||
Name[sk]=Pridať/odstrániť softvér
|
||||
Name[sl]=Upravljanje programske opreme
|
||||
Name[sr]=Додај-уклони програме
|
||||
Name[sr@latin]=Dodaj-ukloni programe
|
||||
Name[sr]=Додај-уклони програме
|
||||
Name[sv]=Lägg till/Ta bort programvara
|
||||
Name[ta]=மென்பொருளை சேர்த்தல்/நீக்குதல்
|
||||
Name[te]=సాఫ్ట్వేర్ జతచేయి/తీసివేయి
|
||||
@@ -65,76 +138,12 @@ Name[vi]=Thêm/Gỡ phần mềm
|
||||
Name[zh_CN]=添加/删除软件
|
||||
Name[zh_HK]=加入或移除軟件
|
||||
Name[zh_TW]=加入或移除軟體
|
||||
Comment=Add or remove software installed on the system
|
||||
Comment[af]=Voeg by of verwyder sagteware geïnstalleer op die stelsel
|
||||
Comment[ar]=أضف أو أزل البرمجيات المثبتة على النظام
|
||||
Comment[as]=ব্যৱস্থাপ্ৰণালীত সংস্থাপিত চালনাজ্ঞান উন্নয়ন কৰক
|
||||
Comment[ast]=Amestar o quitar software instaláu nel sistema
|
||||
Comment[be]=Дадаць ці выдаліць апраграмаванне, усталяванае ў сістэме
|
||||
Comment[bg]=Инсталиране и деинсталиране на софтуер към системата
|
||||
Comment[bn]=সিস্টেমে সফ্টওয়্যার যোগ করুন অথবা ইনস্টল করা সফ্টওয়্যার অপসারণ
|
||||
Comment[bn_IN]=সিস্টেমে সফ্টওয়্যার যোগ করুন অথবা ইনস্টল করা সফ্টওয়্যার সরিয়ে ফেলুন
|
||||
Comment[ca]=Afegeix o suprimeix programari instal·lat en el sistema
|
||||
Comment[ca@valencia]=Afig o suprimeix programari instal·lat en el sistema
|
||||
Comment[cs]=Přidat nebo odebrat software instalovaný v systému
|
||||
Comment[da]=Tilføj eller fjern software installeret på systemet
|
||||
Comment[de]=Auf dem System installierte Software aktualisieren oder neue Software hinzufügen
|
||||
Comment[el]=Προσθαφαίρεση λογισμικού στο σύστημα
|
||||
Comment[en@shaw]=𐑨𐑛 𐑹 𐑮𐑦𐑥𐑵𐑝 𐑕𐑪𐑓𐑑𐑢𐑺 𐑦𐑯𐑕𐑑𐑷𐑤𐑛 𐑪𐑯 𐑞 𐑕𐑦𐑕𐑑𐑩𐑥
|
||||
Comment[en_GB]=Add or remove software installed on the system
|
||||
Comment[eo]=Aldoni aŭ forigi instalitan pogramaron sur via sistemo
|
||||
Comment[es]=Añadir o quitar software instalado en el sistema
|
||||
Comment[et]=Arvutisse paigaldatud tarkvara lisamine ja eemaldamine
|
||||
Comment[eu]=Gehitu edo kendu sisteman instalatutako softwarea
|
||||
Comment[fa]=حذف یا افزودن نرمافزارهای نصب شده بر روی این سیستم
|
||||
Comment[fi]=Lisää tai poista järjestelmään asennettuja ohjelmistoja
|
||||
Comment[fr]=Ajouter ou supprimer des logiciels installés sur le système
|
||||
Comment[gl]=Engadir e eliminar o software instalado no sistema
|
||||
Comment[gu]=સિસ્ટમ પર સ્થાપિત થયેલ સોફ્ટવેરને ઉમેરો અથવા દૂર કરો
|
||||
Comment[he]=הוספה או הסרה של יישומי המערכת
|
||||
Comment[hi]=सिस्टम पर संस्थापित सॉफ्टवेयर जोड़ें या हटाएँ
|
||||
Comment[hu]=Szoftverek rendszerre telepítése vagy eltávolítása
|
||||
Comment[id]=Tambah atau hapus perangkat lunak yang terpasang pada sistem
|
||||
Comment[it]=Aggiunge o rimuove software installato sul sistema
|
||||
Comment[ja]=システムにインストールされたパッケージの追加と削除
|
||||
Comment[kn]=ಗಣಕಕ್ಕೆ ತಂತ್ರಾಂಶವನ್ನು ಸೇರಿಸು ಅಥವ ಅನುಸ್ಥಾಪಿತಗೊಂಡಿರುವುದನ್ನು ತೆಗೆದು ಹಾಕು
|
||||
Comment[ko]=시스템에 설치하는 소프트웨어를 추가하거나 제거합니다
|
||||
Comment[lt]=Įdiegti ar šalinti sistemoje įdiegtą programinę įrangą
|
||||
Comment[lv]=Pievienot vai izņemt programmatūru sistēmā
|
||||
Comment[mk]=Инсталирајте или избришете софтвер на системот
|
||||
Comment[ml]=സിസ്റ്റത്തില് ഇന്സ്റ്റോള് ചെയ്തിരിക്കുന്ന സോഫ്റ്റ്വെയര് ചേര്ക്കുക അല്ലെങ്കില് നീക്കം ചെയ്യുക
|
||||
Comment[mr]=प्रणालीवर प्रतिष्ठापीत सॉफ्टवेअर समावेष करा किंवा काढूण टाका
|
||||
Comment[ms]=Menambah atau memadam perisian yang dipasang pada sistem
|
||||
Comment[nb]=Legg til eller fjern programvare på systemet
|
||||
Comment[nl]=Software installeren op, of verwijderen van het systeem
|
||||
Comment[nn]=Legg til eller fjern programvare som er installert på systemet
|
||||
Comment[or]=ତନ୍ତ୍ରରେ ସ୍ଥାପିତ ସଫ୍ଟୱେରରେ ଯୋଗକରନ୍ତୁ କିମ୍ବା କାଢ଼ି ଦିଅନ୍ତୁ
|
||||
Comment[pa]=ਸਿਸਟਮ ਉੱਤੇ ਸਾਫਟਵੇਅਰ ਇੰਸਟਾਲ ਕਰੋ ਜਾਂ ਇੰਸਟਾਲ ਕੀਤੇ ਹਟਾਓ
|
||||
Comment[pl]=Instalowanie lub usuwanie oprogramowania zainstalowanego w systemie
|
||||
Comment[pt]=Adicionar ou remover software instalado no sistema
|
||||
Comment[pt_BR]=Adicione ou remova programas instalados no sistema
|
||||
Comment[ro]=Adăugați sau ștergeți programe instalate pe sistem
|
||||
Comment[ru]=Установка и удаление программ, установленных в системе
|
||||
Comment[sk]=Pridať alebo odstrániť softvér nainštalovaný na systéme
|
||||
Comment[sl]=Nameščanje in odstranjevanje programske opreme sistema
|
||||
Comment[sr]=Додајте или уклоните програме инсталиране на овом систему
|
||||
Comment[sr@latin]=Dodajte ili uklonite programe instalirane na ovom sistemu
|
||||
Comment[sv]=Lägg till eller ta bort programvara installerad på systemet
|
||||
Comment[ta]=கணினியில் நிறுவப்பட்ட மென்பொருளை சேர்க்கவும் அல்லது நீக்கவும்
|
||||
Comment[te]=ఈ వ్యవస్థ నందు స్థాపించిన సాఫ్ట్వేర్ను జతచేయి లేదా తీసివేయి
|
||||
Comment[th]=เพิ่มหรือลบซอฟต์แวร์ที่ติดตั้งในระบบ
|
||||
Comment[tr]=Sisteminizde yüklü yazılımları ekleyin veya kaldırın
|
||||
Comment[ug]=سىستېمىڭىزغا ئورنىتىلغان يۇمشاق دېتاللارنى قوشىدۇ ياكى ئۆچۈرىدۇ
|
||||
Comment[uk]=Встановлення та вилучення програм у системі
|
||||
Comment[vi]=Thêm hoặc gỡ phần mềm cài đặt trên hệ thống
|
||||
Comment[zh_CN]=添加或删除系统中安装的软件
|
||||
Comment[zh_HK]=加入或移除系統上安裝的軟件
|
||||
Comment[zh_TW]=加入或移除系統上安裝的軟體
|
||||
Icon=octopi
|
||||
Exec=octopi
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=GNOME;GTK;System;
|
||||
#NotShowIn=KDE;
|
||||
Path=
|
||||
StartupNotify=true
|
||||
|
||||
Terminal=false
|
||||
TerminalOptions=
|
||||
Type=Application
|
||||
X-DBUS-ServiceName=
|
||||
X-DBUS-StartupType=
|
||||
X-KDE-SubstituteUID=false
|
||||
X-KDE-Username=
|
||||
|
||||
12
octopi.install
Normal file
@@ -0,0 +1,12 @@
|
||||
post_install() {
|
||||
xdg-icon-resource forceupdate --theme hicolor &> /dev/null
|
||||
update-desktop-database -q
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
post_install $1
|
||||
}
|
||||
|
||||
post_remove() {
|
||||
post_install $1
|
||||
}
|
||||
117
octopi.pro
@@ -4,14 +4,15 @@
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui network xml
|
||||
QT += core gui network xml dbus
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
DEFINES += OCTOPI_EXTENSIONS
|
||||
|
||||
CONFIG += qt console warn_on debug
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
DESTDIR += bin
|
||||
OBJECTS_DIR += build
|
||||
MOC_DIR += build
|
||||
@@ -19,6 +20,12 @@ UI_DIR += build
|
||||
|
||||
HEADERS += src/QtSolutions/qtsingleapplication.h \
|
||||
src/QtSolutions/qtlocalpeer.h \
|
||||
src/QtSolutions/qtsinglecoreapplication.h \
|
||||
src/QtSolutions/QtSingleApplication \
|
||||
src/QtSolutions/qtlockedfile.h \
|
||||
src/QtSolutions/QtLockedFile \
|
||||
repoeditor/repoentry.h \
|
||||
src/repoconf.h \
|
||||
src/mainwindow.h \
|
||||
src/strconstants.h \
|
||||
src/searchlineedit.h \
|
||||
@@ -26,51 +33,101 @@ HEADERS += src/QtSolutions/qtsingleapplication.h \
|
||||
src/settingsmanager.h \
|
||||
src/uihelper.h \
|
||||
src/package.h \
|
||||
src/packagecontroller.h \
|
||||
src/unixcommand.h \
|
||||
src/wmhelper.h \
|
||||
src/QtSolutions/qtsinglecoreapplication.h \
|
||||
src/QtSolutions/QtSingleApplication \
|
||||
src/QtSolutions/qtlockedfile.h \
|
||||
src/QtSolutions/QtLockedFile \
|
||||
src/treeviewpackagesitemdelegate.h \
|
||||
src/searchbar.h \
|
||||
src/transactiondialog.h
|
||||
src/treeviewpackagesitemdelegate.h \
|
||||
src/searchbar.h \
|
||||
src/transactiondialog.h \
|
||||
src/pacmanhelperclient.h \
|
||||
src/globals.h \
|
||||
src/multiselectiondialog.h \
|
||||
src/packagerepository.h \
|
||||
src/model/packagemodel.h \
|
||||
src/ui/octopitabinfo.h \
|
||||
src/utils.h
|
||||
|
||||
SOURCES += src/QtSolutions/qtsingleapplication.cpp \
|
||||
src/QtSolutions/qtlocalpeer.cpp \
|
||||
src/QtSolutions/qtsinglecoreapplication.cpp \
|
||||
src/QtSolutions/qtlockedfile.cpp \
|
||||
src/QtSolutions/qtlockedfile_win.cpp \
|
||||
src/QtSolutions/qtlockedfile_unix.cpp \
|
||||
repoeditor/repoentry.cpp \
|
||||
src/repoconf.cpp \
|
||||
src/main.cpp\
|
||||
src/mainwindow.cpp \
|
||||
src/searchlineedit.cpp \
|
||||
src/argumentlist.cpp \
|
||||
src/settingsmanager.cpp \
|
||||
src/package.cpp \
|
||||
src/packagecontroller.cpp \
|
||||
src/unixcommand.cpp \
|
||||
src/wmhelper.cpp \
|
||||
src/QtSolutions/qtsinglecoreapplication.cpp \
|
||||
src/QtSolutions/qtlockedfile.cpp \
|
||||
src/QtSolutions/qtlockedfile_win.cpp \
|
||||
src/QtSolutions/qtlockedfile_unix.cpp \
|
||||
src/treeviewpackagesitemdelegate.cpp \
|
||||
src/mainwindow_init.cpp \
|
||||
src/mainwindow_transaction.cpp \
|
||||
src/mainwindow_events.cpp \
|
||||
src/mainwindow_help.cpp \
|
||||
src/searchbar.cpp \
|
||||
src/mainwindow_searchbar.cpp \
|
||||
src/transactiondialog.cpp \
|
||||
src/mainwindow_news.cpp \
|
||||
src/mainwindow_refresh.cpp
|
||||
src/treeviewpackagesitemdelegate.cpp \
|
||||
src/mainwindow_init.cpp \
|
||||
src/mainwindow_transaction.cpp \
|
||||
src/mainwindow_events.cpp \
|
||||
src/mainwindow_help.cpp \
|
||||
src/searchbar.cpp \
|
||||
src/mainwindow_searchbar.cpp \
|
||||
src/transactiondialog.cpp \
|
||||
src/mainwindow_news.cpp \
|
||||
src/mainwindow_refresh.cpp \
|
||||
src/pacmanhelperclient.cpp \
|
||||
src/globals.cpp \
|
||||
src/multiselectiondialog.cpp \
|
||||
src/packagerepository.cpp \
|
||||
src/model/packagemodel.cpp \
|
||||
src/ui/octopitabinfo.cpp \
|
||||
src/utils.cpp
|
||||
|
||||
FORMS += ui/mainwindow.ui \
|
||||
ui/transactiondialog.ui
|
||||
FORMS += ui/mainwindow.ui \
|
||||
ui/transactiondialog.ui \
|
||||
ui/multiselectiondialog.ui
|
||||
|
||||
RESOURCES += \
|
||||
resources.qrc
|
||||
RESOURCES += resources.qrc
|
||||
|
||||
OTHER_FILES += \
|
||||
src/QtSolutions/qtsinglecoreapplication.pri \
|
||||
src/QtSolutions/qtsingleapplication.pri
|
||||
|
||||
TRANSLATIONS += resources/translations/octopi_pt_BR.ts
|
||||
TRANSLATIONS += resources/translations/octopi_pt_BR.ts \
|
||||
resources/translations/octopi_fr_FR.ts \
|
||||
resources/translations/octopi_es_ES.ts \
|
||||
resources/translations/octopi_es_419.ts \
|
||||
resources/translations/octopi_es_AR.ts \
|
||||
resources/translations/octopi_el.ts \
|
||||
resources/translations/octopi_de.ts \
|
||||
resources/translations/octopi_it.ts \
|
||||
resources/translations/octopi_ro.ts \
|
||||
resources/translations/octopi_tr_TR.ts \
|
||||
resources/translations/octopi_ar.ts \
|
||||
resources/translations/octopi_ca.ts \
|
||||
resources/translations/octopi_bg.ts \
|
||||
resources/translations/octopi_pl.ts \
|
||||
resources/translations/octopi_id.ts \
|
||||
resources/translations/octopi_da.ts \
|
||||
resources/translations/octopi_cs.ts \
|
||||
resources/translations/octopi_he.ts \
|
||||
resources/translations/octopi_lt.ts \
|
||||
resources/translations/octopi_nb.ts \
|
||||
resources/translations/octopi_sr@latin.ts \
|
||||
resources/translations/octopi_sr_RS.ts \
|
||||
resources/translations/octopi_nl.ts \
|
||||
resources/translations/octopi_ru.ts \
|
||||
resources/translations/octopi_uz.ts \
|
||||
resources/translations/octopi_fi.ts \
|
||||
resources/translations/octopi_vi.ts \
|
||||
resources/translations/octopi_en_GB.ts \
|
||||
resources/translations/octopi_pt_PT.ts \
|
||||
resources/translations/octopi_sv.ts \
|
||||
resources/translations/octopi_hu.ts \
|
||||
resources/translations/octopi_zh_TW.ts \
|
||||
resources/translations/octopi_ms_MY.ts \
|
||||
resources/translations/octopi_uk.ts \
|
||||
resources/translations/octopi_sk.ts \
|
||||
resources/translations/octopi_ja.ts \
|
||||
resources/translations/octopi_eu.ts
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4){
|
||||
TRANSLATIONS += resources/translations/octopi_ast.ts
|
||||
}
|
||||
|
||||
155
repoeditor/addrepo.cpp
Normal file
@@ -0,0 +1,155 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "addrepo.h"
|
||||
#include "ui_addrepo.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#include <QFileDialog>
|
||||
#include <QUrl>
|
||||
|
||||
AddRepo::AddRepo( QWidget *parent ) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::AddRepo)
|
||||
{
|
||||
ui->setupUi( this );
|
||||
|
||||
connect( ui->buttonBox, SIGNAL( accepted() ),
|
||||
SLOT( checkAndApply() ) );
|
||||
|
||||
connect( ui->locationCB, SIGNAL( currentIndexChanged( int ) ),
|
||||
SLOT( locationChanged( int ) ) );
|
||||
|
||||
connect( ui->selectLocalDirectory, SIGNAL( clicked() ),
|
||||
SLOT( selectLocalRepository() ) );
|
||||
connect( ui->selectServerList, SIGNAL( clicked() ),
|
||||
SLOT( selectServerList() ) );
|
||||
|
||||
ui->locationCB->setCurrentIndex( 1 ); // 0 : Include, 1 : Server
|
||||
}
|
||||
|
||||
AddRepo::~AddRepo()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void AddRepo::setRepoName( const QString &name )
|
||||
{
|
||||
ui->repo->setText( name );
|
||||
}
|
||||
|
||||
void AddRepo::setRepoLocation( const QString &location )
|
||||
{
|
||||
ui->location->setText( location );
|
||||
}
|
||||
|
||||
void AddRepo::setLocationType( int type)
|
||||
{
|
||||
ui->locationCB->setCurrentIndex( type );
|
||||
}
|
||||
|
||||
QString AddRepo::getRepoName() const
|
||||
{
|
||||
return ui->repo->text().trimmed();
|
||||
}
|
||||
|
||||
QString AddRepo::getRepoLocation() const
|
||||
{
|
||||
return ui->location->text().trimmed();
|
||||
}
|
||||
|
||||
int AddRepo::getLocationType() const
|
||||
{
|
||||
return ui->locationCB->currentIndex();
|
||||
}
|
||||
|
||||
|
||||
void AddRepo::checkAndApply()
|
||||
{
|
||||
if( ui->repo->text().remove( RepoConf::commentString ).trimmed().isEmpty() ) {
|
||||
showError( tr( "The repository name field can't be blank." ) );
|
||||
} else if ( RepoConf::matchRepo( RepoEntry::formatRepoName( ui->repo->text() ) ) ) {
|
||||
QString prefix = "";
|
||||
|
||||
QString location = ui->locationCB->currentText() + " = " + ui->location->text();
|
||||
bool valid = true;
|
||||
|
||||
if( !RepoConf::matchRepoDetails( location ) )
|
||||
valid = false;
|
||||
|
||||
if( valid ) {
|
||||
entry.setName( ui->repo->text() );
|
||||
entry.setDetails( QStringList() << location );
|
||||
done( QDialog::Accepted );
|
||||
} else {
|
||||
showError( tr( "The repository location field is not valid." ) );
|
||||
}
|
||||
} else {
|
||||
showError( tr( "The repository name field is not valid." ) );
|
||||
}
|
||||
}
|
||||
|
||||
void AddRepo::locationChanged( int )
|
||||
{
|
||||
if( ui->locationCB->currentText() == "Server" ) {
|
||||
ui->location->setPlaceholderText( tr( "Address of remote or local packages repository" ) );
|
||||
ui->selectLocalDirectory->setVisible( true );
|
||||
ui->selectServerList->setVisible( false );
|
||||
} else {
|
||||
ui->location->setPlaceholderText( tr( "Path to mirrors list file" ) );
|
||||
ui->selectLocalDirectory->setVisible( false );
|
||||
ui->selectServerList->setVisible( true );
|
||||
}
|
||||
}
|
||||
|
||||
void AddRepo::showError(QString error)
|
||||
{
|
||||
QMessageBox mb( QMessageBox::Critical,
|
||||
tr( "Error" ),
|
||||
tr( "Can't add repository." ) + QString( "\n" ) + error,
|
||||
QMessageBox::Ok,
|
||||
this);
|
||||
mb.exec();
|
||||
}
|
||||
|
||||
void AddRepo::selectLocalRepository()
|
||||
{
|
||||
QStringList list;
|
||||
QFileDialog dialog( this );
|
||||
dialog.setDirectory( "/" );
|
||||
dialog.setWindowTitle( tr( "Select local repository" ) );
|
||||
dialog.setFileMode( QFileDialog::Directory );
|
||||
if( dialog.exec() )
|
||||
list = dialog.selectedFiles();
|
||||
if( list.count() > 0 )
|
||||
ui->location->setText( ( ui->locationCB->currentIndex() == 1 ? "file://" : "") + list.at( 0 ) );
|
||||
}
|
||||
|
||||
void AddRepo::selectServerList()
|
||||
{
|
||||
QStringList list;
|
||||
QFileDialog dialog( this );
|
||||
dialog.setDirectory( "/" );
|
||||
dialog.setWindowTitle( tr( "Select mirrors list" ) );
|
||||
dialog.setFileMode( QFileDialog::AnyFile );
|
||||
if ( dialog.exec() )
|
||||
list = dialog.selectedFiles();
|
||||
if( list.count() > 0 )
|
||||
ui->location->setText( list.at( 0 ) );
|
||||
}
|
||||
63
repoeditor/addrepo.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef ADDREPO_H
|
||||
#define ADDREPO_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "repoconf.h"
|
||||
#include "repoentry.h"
|
||||
|
||||
namespace Ui {
|
||||
class AddRepo;
|
||||
}
|
||||
|
||||
class AddRepo : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit AddRepo( QWidget *parent = 0 );
|
||||
~AddRepo();
|
||||
|
||||
RepoEntry entry;
|
||||
|
||||
void setRepoName( const QString & );
|
||||
void setRepoLocation( const QString & );
|
||||
void setLocationType( int );
|
||||
|
||||
QString getRepoName() const;
|
||||
QString getRepoLocation() const;
|
||||
int getLocationType() const;
|
||||
|
||||
private:
|
||||
Ui::AddRepo *ui;
|
||||
|
||||
QString examples;
|
||||
|
||||
void showError( QString error );
|
||||
|
||||
private slots:
|
||||
void checkAndApply();
|
||||
void locationChanged( int );
|
||||
void selectLocalRepository();
|
||||
void selectServerList();
|
||||
};
|
||||
|
||||
#endif // ADDREPO_H
|
||||
173
repoeditor/addrepo.ui
Normal file
@@ -0,0 +1,173 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>AddRepo</class>
|
||||
<widget class="QDialog" name="AddRepo">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>613</width>
|
||||
<height>106</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Add Repository - Octopi</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Repository:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="repo">
|
||||
<property name="placeholderText">
|
||||
<string>Repository name</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Location:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="locationCB">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">Include</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">Server</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="location">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="selectLocalDirectory">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="folder">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="selectServerList">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="document-open">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>478</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>142</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>AddRepo</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
58
repoeditor/checkboxdelegate.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "checkboxdelegate.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCheckBox>
|
||||
|
||||
CheckBoxDelegate::CheckBoxDelegate( QObject *parent )
|
||||
: QStyledItemDelegate(parent)
|
||||
{
|
||||
}
|
||||
|
||||
void CheckBoxDelegate::paint( QPainter *painter,
|
||||
const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index ) const
|
||||
{
|
||||
bool value = index.data().toBool();
|
||||
QStyleOptionButton cbo;
|
||||
|
||||
cbo.rect = option.rect;
|
||||
cbo.rect.setLeft( option.rect.center().x() - 10 );
|
||||
cbo.state = value ? QStyle::State_On : QStyle::State_Off;
|
||||
cbo.text = "";
|
||||
cbo.state = cbo.state | QStyle::State_Enabled;
|
||||
|
||||
|
||||
qApp->style()->drawControl( QStyle::CE_CheckBox,&cbo, painter );
|
||||
}
|
||||
|
||||
bool CheckBoxDelegate::editorEvent( QEvent *event,
|
||||
QAbstractItemModel *model,
|
||||
const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index )
|
||||
{
|
||||
if( event->type() == QEvent::MouseButtonRelease )
|
||||
return false;
|
||||
|
||||
model->setData( index, !index.data().toBool() );
|
||||
|
||||
return event->type() == QEvent::MouseButtonDblClick ? true : false;
|
||||
}
|
||||
41
repoeditor/checkboxdelegate.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef CHECKBOXDELEGATE_H
|
||||
#define CHECKBOXDELEGATE_H
|
||||
|
||||
#include <QStyledItemDelegate>
|
||||
|
||||
class CheckBoxDelegate : public QStyledItemDelegate
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CheckBoxDelegate( QObject *parent = 0 );
|
||||
|
||||
void paint( QPainter *painter,
|
||||
const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index ) const;
|
||||
|
||||
bool editorEvent( QEvent *event,
|
||||
QAbstractItemModel *model,
|
||||
const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index );
|
||||
};
|
||||
|
||||
#endif // CHECKBOXDELEGATE_H
|
||||
52
repoeditor/main.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "repoeditor.h"
|
||||
#include "repoconf.h"
|
||||
|
||||
#include "../src/QtSolutions/qtsingleapplication.h"
|
||||
#include <QtGui/QApplication>
|
||||
#include <QTranslator>
|
||||
#include <QLocale>
|
||||
#include <QLibraryInfo>
|
||||
|
||||
int main( int argc, char *argv[] )
|
||||
{
|
||||
QtSingleApplication app( "Repository Editor - Octopi", argc, argv );
|
||||
|
||||
//If there is already an instance running...
|
||||
if (app.isRunning())
|
||||
{
|
||||
app.sendMessage("RAISE");
|
||||
return 0;
|
||||
}
|
||||
|
||||
app.sendMessage("RAISE");
|
||||
|
||||
QTranslator appTranslator;
|
||||
appTranslator.load(":/resources/translations/octopi_repoeditor_" +
|
||||
QLocale::system().name());
|
||||
app.installTranslator(&appTranslator);
|
||||
|
||||
RepoEditor w;
|
||||
app.setActivationWindow(&w);
|
||||
w.show();
|
||||
return app.exec();
|
||||
}
|
||||
35
repoeditor/optionsdelegate.cpp
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "optionsdelegate.h"
|
||||
|
||||
#include <QPlainTextEdit>
|
||||
|
||||
OptionsDelegate::OptionsDelegate( QObject *parent )
|
||||
: QStyledItemDelegate( parent )
|
||||
{
|
||||
}
|
||||
|
||||
QWidget* OptionsDelegate::createEditor( QWidget *parent,
|
||||
const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index ) const
|
||||
{
|
||||
QPlainTextEdit *pte = new QPlainTextEdit( parent );
|
||||
return pte;
|
||||
}
|
||||
36
repoeditor/optionsdelegate.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef OPTIONSDELEGATE_H
|
||||
#define OPTIONSDELEGATE_H
|
||||
|
||||
#include <QStyledItemDelegate>
|
||||
|
||||
class OptionsDelegate : public QStyledItemDelegate
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit OptionsDelegate( QObject *parent = 0 );
|
||||
|
||||
QWidget* createEditor( QWidget *parent,
|
||||
const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index ) const;
|
||||
};
|
||||
|
||||
#endif // OPTIONSDELEGATE_H
|
||||
293
repoeditor/repoconf.cpp
Normal file
@@ -0,0 +1,293 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "repoconf.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QStyle>
|
||||
#include <QFont>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QMessageBox>
|
||||
|
||||
QString RepoConf::commentString = "";
|
||||
QRegExp RepoConf::repoMatch = QRegExp();
|
||||
QRegExp RepoConf::detailMatch = QRegExp();
|
||||
|
||||
RepoConf::RepoConf()
|
||||
{
|
||||
repoConfFilePath = "/etc/pacman.conf";
|
||||
repoMatch = QRegExp("^\\[(?!(options|repo-name|\\[|\s))");
|
||||
detailMatch = QRegExp("^(Server|Include)\\s*=\\s*.+");
|
||||
RepoEntry::nameFilter = QRegExp("(\\s+|\\[|\\])");
|
||||
commentString = "#";
|
||||
RepoEntry::repoFormat = "[%repo%]";
|
||||
|
||||
loadConf( repoConfFilePath );
|
||||
}
|
||||
|
||||
bool RepoConf::isEmpty(QString line)
|
||||
{
|
||||
return line.remove( commentString ).trimmed().isEmpty();
|
||||
}
|
||||
|
||||
bool RepoConf::matchRepo( QString line ){
|
||||
return line.remove( commentString ).trimmed().contains( repoMatch );
|
||||
}
|
||||
|
||||
bool RepoConf::matchRepoDetails( QString line )
|
||||
{
|
||||
return line.remove( commentString ).trimmed().contains( detailMatch );
|
||||
}
|
||||
|
||||
RepoEntry RepoConf::extractRepo( QString line )
|
||||
{
|
||||
line = line.trimmed();
|
||||
bool active = line.mid( 0, commentString.length() ) != commentString;
|
||||
return RepoEntry( line.remove( commentString ), active );
|
||||
}
|
||||
|
||||
bool RepoConf::exists( const QString &name )
|
||||
{
|
||||
bool found=false;
|
||||
for( int i=0; !found && i < entries.count(); ++i )
|
||||
if( ( ( RepoEntry & )entries.at( i ) ).getName() == name)
|
||||
found = true;
|
||||
return found;
|
||||
}
|
||||
|
||||
bool RepoConf::loadConf( const QString &eFile )
|
||||
{
|
||||
QFile confFile( eFile );
|
||||
QTextStream confFileStream( &confFile );
|
||||
RepoEntry actual;
|
||||
bool preamble = true;
|
||||
|
||||
if( !confFile.exists() || !confFile.open( QIODevice::ReadOnly ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
RepoEntry::commentString = RepoConf::commentString;
|
||||
|
||||
beginResetModel();
|
||||
entries.clear();
|
||||
|
||||
QStringList comments;
|
||||
while( !confFileStream.atEnd() ) {
|
||||
QString line = confFileStream.readLine();
|
||||
bool commented = !isEmpty( line ) &&
|
||||
line.trimmed().mid( 0, commentString.length() ) == commentString;
|
||||
if( !preamble && isEmpty( line ) ) {
|
||||
actual.setDetailsComments( comments );
|
||||
comments.clear();
|
||||
} else if( matchRepo( line ) ) {
|
||||
if( preamble )
|
||||
preamble = false;
|
||||
if( actual.isValid() )
|
||||
addEntry( actual );
|
||||
actual = extractRepo( line );
|
||||
actual.setComments( comments );
|
||||
comments.clear();
|
||||
} else if( !preamble && matchRepoDetails( line ) ) {
|
||||
if( actual.isActive() && commented )
|
||||
actual.addDetailsComment( line );
|
||||
else actual.addDetail( line.remove( commentString ) );
|
||||
} else if( !preamble && commented )
|
||||
comments << line;
|
||||
else if( preamble ) {
|
||||
if( isEmpty(line) || !commented ) {
|
||||
this->preamble << comments << line;
|
||||
comments.clear();
|
||||
} else if( commented )
|
||||
comments << line;
|
||||
}
|
||||
}
|
||||
|
||||
if( actual.isValid() )
|
||||
addEntry(actual);
|
||||
|
||||
endResetModel();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void RepoConf::addEntry( const RepoEntry & entry )
|
||||
{
|
||||
beginInsertRows( QModelIndex(), entries.count(), entries.count() );
|
||||
entries.push_back( entry );
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
void RepoConf::reload()
|
||||
{
|
||||
loadConf( repoConfFilePath );
|
||||
}
|
||||
|
||||
bool RepoConf::saveChanges( const QString & backup )
|
||||
{
|
||||
if( !backup.isEmpty() ) {
|
||||
QMessageBox mbexists( QMessageBox::Warning,
|
||||
tr( "Backup error" ),
|
||||
tr( "Backup file already exists." ) + QString( "\n" ) + tr( "Do you want to overwrite it?" ),
|
||||
QMessageBox::Yes | QMessageBox::No );
|
||||
|
||||
if( QFile::exists( backup ) && mbexists.exec() == QMessageBox::Yes ) {
|
||||
QFile::remove( backup );
|
||||
}
|
||||
|
||||
QMessageBox mberror( QMessageBox::Critical,
|
||||
tr( "Backup error" ),
|
||||
tr( "Can't create backup file." ) + QString( "\n" ) + tr( "Do you want to proceed without a backup?" ),
|
||||
QMessageBox::Yes | QMessageBox::No );
|
||||
|
||||
if( !QFile::copy( repoConfFilePath, backup ) && mberror.exec() == QMessageBox::No ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
QFile confFile( repoConfFilePath );
|
||||
if( !confFile.open( QIODevice::WriteOnly ) )
|
||||
return false;
|
||||
|
||||
confFile.write( toString().toLatin1() );
|
||||
confFile.close();
|
||||
reload();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RepoConf::removeRows( int row, int count, const QModelIndex & )
|
||||
{
|
||||
beginRemoveRows( QModelIndex(), row, row + count - 1);
|
||||
|
||||
for( int i = 0; i < count; ++i ) {
|
||||
entries.removeAt( row + i );
|
||||
}
|
||||
|
||||
endRemoveRows();
|
||||
}
|
||||
|
||||
QString RepoConf::toString() const
|
||||
{
|
||||
QStringList ret;
|
||||
|
||||
for( int i = 0; i < entries.count(); ++i ) {
|
||||
ret << ( ( RepoEntry & )entries.at( i ) ).toString();
|
||||
}
|
||||
|
||||
return preamble.join( "\n" ).trimmed() + QString( "\n\n" ) + ret.join( "\n\n" );
|
||||
}
|
||||
|
||||
bool RepoConf::detailsExists() const
|
||||
{
|
||||
bool found = false;
|
||||
|
||||
for( int i = 0; !found && i < entries.count(); ++i )
|
||||
found = !( ( const RepoEntry & )entries.at( i ) ).getDetails().isEmpty();
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
QVariant RepoConf::headerData( int section, Qt::Orientation orientation, int role ) const
|
||||
{
|
||||
QStringList headers;
|
||||
|
||||
headers << tr( "Active" ) << tr( "Repository" ) << tr( "Options" );
|
||||
|
||||
switch( role ) {
|
||||
case Qt::DisplayRole:
|
||||
if( orientation == Qt::Horizontal ) {
|
||||
return headers.at( section );
|
||||
} else {
|
||||
return section + 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QVariant RepoConf::data( const QModelIndex &index, int role ) const
|
||||
{
|
||||
switch( role ){
|
||||
case Qt::DisplayRole :
|
||||
case Qt::EditRole :
|
||||
switch( index.column() ) {
|
||||
case 0 :
|
||||
return ( ( RepoEntry & )entries.at( index.row() ) ).isActive();
|
||||
case 1 :
|
||||
return ( ( RepoEntry & )entries.at( index.row() ) ).getName();
|
||||
case 2 :
|
||||
return ( ( RepoEntry & )entries.at( index.row() ) ).getDetails().join( "\n" );
|
||||
}
|
||||
|
||||
break;
|
||||
case Qt::FontRole :
|
||||
switch( index.column() ) {
|
||||
case 1 :
|
||||
QFont font( qApp->font() );
|
||||
font.setBold( true );
|
||||
return font;
|
||||
}
|
||||
break;
|
||||
case Qt::ToolTipRole :
|
||||
switch( index.column() ) {
|
||||
case 2 :
|
||||
return ( ( ( ( RepoEntry & )entries.at( index.row() ) ).getDetailsComments().isEmpty() )
|
||||
? ( ( ( RepoEntry & )entries.at( index.row() ) ).getComments().join( "\n" ) )
|
||||
: ( ( ( RepoEntry & )entries.at( index.row() ) ).getDetailsComments().join( "\n" ) ) );
|
||||
default :
|
||||
return ( ( RepoEntry & )entries.at( index.row() ) ).getComments().join( "\n" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
bool RepoConf::setData( const QModelIndex &index, const QVariant &value, int role )
|
||||
{
|
||||
switch( role ) {
|
||||
case Qt::DisplayRole :
|
||||
case Qt::EditRole :
|
||||
switch( index.column() ) {
|
||||
case 0 :
|
||||
( ( RepoEntry & )entries.at( index.row() ) ).setActive( value.toBool() );
|
||||
break;
|
||||
case 1 :
|
||||
if( !matchRepo( RepoEntry::formatRepoName( value.toString() ) ) )
|
||||
return false;
|
||||
( ( RepoEntry & )entries.at( index.row() ) ).setName( value.toString() );
|
||||
break;
|
||||
case 2:
|
||||
QStringList list = value.toString().trimmed().split( "\n" );
|
||||
for( int i = 0; i < list.count(); ++i) {
|
||||
list[i] = list.at( i ).trimmed();
|
||||
if( !matchRepoDetails( list.at(i) ) )
|
||||
return false;
|
||||
}
|
||||
( ( RepoEntry & )entries.at( index.row() ) ).setDetails( list );
|
||||
break;
|
||||
}
|
||||
|
||||
emit dataChanged( index, index );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
113
repoeditor/repoconf.h
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef REPOCONF_H
|
||||
#define REPOCONF_H
|
||||
|
||||
#include <QAbstractTableModel>
|
||||
#include <QList>
|
||||
#include <QStringList>
|
||||
#include "repoentry.h"
|
||||
|
||||
class RepoConf : public QAbstractTableModel
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
QList<RepoEntry> entries;
|
||||
QStringList preamble;
|
||||
|
||||
QString repoConfFilePath;
|
||||
|
||||
bool isEmpty( QString line );
|
||||
|
||||
RepoEntry extractRepo( QString line );
|
||||
|
||||
public:
|
||||
explicit RepoConf();
|
||||
|
||||
static QString commentString;
|
||||
static QRegExp repoMatch;
|
||||
static QRegExp detailMatch;
|
||||
|
||||
static bool matchRepo( QString line );
|
||||
static bool matchRepoDetails( QString line );
|
||||
|
||||
QString toString() const;
|
||||
|
||||
RepoEntry at( int i ) const {
|
||||
return ( ( i <= entries.count() ) ? entries.at(i) : RepoEntry() );
|
||||
}
|
||||
|
||||
int count() const {
|
||||
return entries.count();
|
||||
}
|
||||
|
||||
bool detailsExists() const;
|
||||
|
||||
void addEntry( const RepoEntry & entry );
|
||||
|
||||
bool exists( const QString & name );
|
||||
|
||||
const QString & getConfPath() const {
|
||||
return repoConfFilePath;
|
||||
}
|
||||
|
||||
//Table Model
|
||||
int rowCount( const QModelIndex & ) const {
|
||||
return count();
|
||||
}
|
||||
|
||||
int columnCount( const QModelIndex & ) const {
|
||||
return detailsExists()?3:2;
|
||||
}
|
||||
|
||||
QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
|
||||
QVariant headerData( int section, Qt::Orientation orientation, int role ) const;
|
||||
|
||||
Qt::ItemFlags flags( const QModelIndex & ) const {
|
||||
return Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable;
|
||||
}
|
||||
|
||||
bool setData( const QModelIndex &index, const QVariant &value, int role );
|
||||
|
||||
public slots:
|
||||
bool loadConf( const QString &eFile );
|
||||
|
||||
void reload(); //Reloads entries from configured file
|
||||
bool saveChanges( const QString & backup = "" );
|
||||
|
||||
void moveUp( int i ) {
|
||||
if( entries.count() && i > 0 ) {
|
||||
entries.swap( i, i - 1 );
|
||||
emit dataChanged( QModelIndex(), QModelIndex() );
|
||||
}
|
||||
}
|
||||
|
||||
void moveDown( int i ){
|
||||
if( entries.count() && i < entries.count() - 1 ) {
|
||||
entries.swap( i, i + 1 );
|
||||
emit dataChanged( QModelIndex(), QModelIndex() );
|
||||
}
|
||||
}
|
||||
|
||||
bool removeRows(int row, int count, const QModelIndex &);
|
||||
};
|
||||
|
||||
#endif // REPOCONF_H
|
||||
219
repoeditor/repoeditor.cpp
Normal file
@@ -0,0 +1,219 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "repoeditor.h"
|
||||
#include "ui_repoeditor.h"
|
||||
|
||||
#include "repoconf.h"
|
||||
#include "checkboxdelegate.h"
|
||||
#include "optionsdelegate.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QProcess>
|
||||
|
||||
RepoEditor::RepoEditor( QWidget *parent )
|
||||
: QDialog( parent )
|
||||
, ui( new Ui::RepoEditor )
|
||||
{
|
||||
ui->setupUi( this );
|
||||
|
||||
repoConf = new RepoConf();
|
||||
addRepoDialog = new AddRepo( this );
|
||||
|
||||
ui->tableView->setModel( repoConf );
|
||||
ui->tableView->setItemDelegateForColumn( 0, new CheckBoxDelegate( this) );
|
||||
ui->tableView->setItemDelegateForColumn( 2, new OptionsDelegate( this) );
|
||||
|
||||
ui->tableView->setColumnWidth( 1, 133 );
|
||||
|
||||
ui->backupFile->setText( repoConf->getConfPath() + ".bak" );
|
||||
|
||||
connect( ui->moveUp, SIGNAL( clicked() ),
|
||||
SLOT( moveUp() ) );
|
||||
|
||||
connect( ui->moveDown, SIGNAL( clicked() ),
|
||||
SLOT( moveDown() ) );
|
||||
|
||||
QItemSelectionModel *selModel = ui->tableView->selectionModel();
|
||||
connect( selModel, SIGNAL( selectionChanged( QItemSelection,QItemSelection ) ),
|
||||
SLOT( updateMovers( QItemSelection,QItemSelection ) ) );
|
||||
|
||||
connect( ui->buttonBox->button( QDialogButtonBox::Reset ), SIGNAL( clicked() ),
|
||||
repoConf, SLOT( reload() ) );
|
||||
|
||||
connect( ui->buttonBox->button( QDialogButtonBox::Save ), SIGNAL( clicked() ),
|
||||
SLOT( apply() ) );
|
||||
|
||||
connect( ui->buttonBox->button( QDialogButtonBox::Discard ), SIGNAL( clicked() ),
|
||||
SLOT( discard() ) );
|
||||
|
||||
connect( ui->remove, SIGNAL( clicked() ),
|
||||
SLOT( removeEntry() ) );
|
||||
|
||||
connect( ui->add, SIGNAL( clicked() ),
|
||||
SLOT( addEntry() ) );
|
||||
|
||||
connect( ui->edit, SIGNAL( clicked() ),
|
||||
SLOT( editEntry() ) );
|
||||
|
||||
connect( ui->loadBackup, SIGNAL( clicked() ),
|
||||
SLOT( loadBackup() ) );
|
||||
|
||||
ui->tableView->selectRow(0);
|
||||
}
|
||||
|
||||
RepoEditor::~RepoEditor()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void RepoEditor::loadBackup()
|
||||
{
|
||||
RepoConf conf;
|
||||
QString file = QFileDialog::getOpenFileName( this );
|
||||
|
||||
if( file.isEmpty() )
|
||||
return;
|
||||
|
||||
conf.loadConf( file );
|
||||
|
||||
if( !conf.count() ) {
|
||||
QMessageBox mb(QMessageBox::Critical,
|
||||
tr( "Can't load backup file" ),
|
||||
tr( "Selected file is not valid" ),
|
||||
QMessageBox::Ok,
|
||||
this);
|
||||
mb.exec();
|
||||
} else {
|
||||
repoConf->loadConf( file );
|
||||
ui->backupFile->setText( repoConf->getConfPath() + ".bak" );
|
||||
}
|
||||
}
|
||||
|
||||
void RepoEditor::addEntry()
|
||||
{
|
||||
addRepoDialog->setRepoName("");
|
||||
addRepoDialog->setRepoLocation("");
|
||||
if( addRepoDialog->exec() == QDialog::Accepted ) {
|
||||
if( !repoConf->exists( addRepoDialog->entry.getName() ) )
|
||||
repoConf->addEntry( addRepoDialog->entry );
|
||||
}
|
||||
}
|
||||
|
||||
void RepoEditor::editEntry()
|
||||
{
|
||||
QModelIndex repoMI = ui->tableView->model()->index(ui->tableView->currentIndex().row(), 1, QModelIndex());
|
||||
QModelIndex locationMI = ui->tableView->model()->index(ui->tableView->currentIndex().row(), 2, QModelIndex());
|
||||
|
||||
addRepoDialog->setRepoName(ui->tableView->model()->data(repoMI).toString());
|
||||
|
||||
// take the location
|
||||
QString location = ui->tableView->model()->data(locationMI).toString();
|
||||
|
||||
// take the type and address
|
||||
QRegExp locationMatch("^(Server|Include)\\s*=\\s*(.+)");
|
||||
locationMatch.indexIn(location);
|
||||
location = locationMatch.cap(2);
|
||||
|
||||
// fill remaining fields
|
||||
addRepoDialog->setRepoLocation(location);
|
||||
addRepoDialog->setLocationType(locationMatch.cap(1) == "Server" ? 1 : 0);
|
||||
|
||||
if( addRepoDialog->exec() == QDialog::Accepted ) {
|
||||
ui->tableView->model()->setData( repoMI, addRepoDialog->getRepoName() );
|
||||
ui->tableView->model()->setData( locationMI, ( addRepoDialog->getLocationType() == 0 ? "Include = " : "Server = " ) + addRepoDialog->getRepoLocation() );
|
||||
}
|
||||
}
|
||||
|
||||
void RepoEditor::apply()
|
||||
{
|
||||
if( repoConf->saveChanges( ui->checkBox->isChecked() ? ui->backupFile->text() : "" ) ) {
|
||||
QMessageBox::information( this,
|
||||
tr( "Success" ),
|
||||
tr( "Repositories configuration successfully saved." ),
|
||||
QMessageBox::Ok );
|
||||
qApp->quit();
|
||||
} else {
|
||||
QMessageBox::critical( this,
|
||||
tr( "Error" ),
|
||||
tr( "Repositories configuration not saved." ),
|
||||
QMessageBox::Ok );
|
||||
}
|
||||
}
|
||||
|
||||
void RepoEditor::discard()
|
||||
{
|
||||
done( QDialog::Rejected );
|
||||
}
|
||||
|
||||
void RepoEditor::updateMovers( const QItemSelection &cur, const QItemSelection &)
|
||||
{
|
||||
QModelIndexList list = cur.indexes();
|
||||
|
||||
if( !list.count() )
|
||||
return;
|
||||
|
||||
int row = list.at( 0 ).row();
|
||||
|
||||
if( row > 0 )
|
||||
ui->moveUp->setEnabled( true );
|
||||
else
|
||||
ui->moveUp->setEnabled( false );
|
||||
|
||||
if( row < ui->tableView->model()->rowCount() - 1)
|
||||
ui->moveDown->setEnabled( true );
|
||||
else
|
||||
ui->moveDown->setEnabled( false );
|
||||
}
|
||||
|
||||
void RepoEditor::moveUp()
|
||||
{
|
||||
QModelIndexList list = ui->tableView->selectionModel()->selectedRows();
|
||||
|
||||
if( !list.count() )
|
||||
return;
|
||||
|
||||
int row = list.at( 0 ).row();
|
||||
repoConf->moveUp( row );
|
||||
ui->tableView->selectRow( row - 1 );
|
||||
}
|
||||
|
||||
void RepoEditor::moveDown()
|
||||
{
|
||||
QModelIndexList list = ui->tableView->selectionModel()->selectedRows();
|
||||
|
||||
if( !list.count() )
|
||||
return;
|
||||
|
||||
int row = list.at( 0 ).row();
|
||||
repoConf->moveDown( row );
|
||||
ui->tableView->selectRow( row + 1 );
|
||||
}
|
||||
|
||||
void RepoEditor::removeEntry()
|
||||
{
|
||||
QModelIndexList list = ui->tableView->selectionModel()->selectedRows();
|
||||
|
||||
if( !list.count() )
|
||||
return;
|
||||
|
||||
int row = list.at( 0 ).row();
|
||||
repoConf->removeRow( row );
|
||||
}
|
||||
68
repoeditor/repoeditor.h
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef REPOEDITOR_H
|
||||
#define REPOEDITOR_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QItemSelection>
|
||||
|
||||
#include "repoconf.h"
|
||||
#include "addrepo.h"
|
||||
|
||||
namespace Ui {
|
||||
class RepoEditor;
|
||||
}
|
||||
|
||||
class RepoEditor : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
RepoConf *repoConf;
|
||||
|
||||
AddRepo *addRepoDialog;
|
||||
|
||||
public:
|
||||
explicit RepoEditor( QWidget *parent = 0 );
|
||||
~RepoEditor();
|
||||
|
||||
QString toString() const {
|
||||
return repoConf->toString();
|
||||
}
|
||||
|
||||
private:
|
||||
Ui::RepoEditor *ui;
|
||||
|
||||
public slots:
|
||||
void moveUp();
|
||||
void moveDown();
|
||||
|
||||
void updateMovers( const QItemSelection &, const QItemSelection & );
|
||||
|
||||
void apply();
|
||||
void discard();
|
||||
|
||||
void removeEntry();
|
||||
void addEntry();
|
||||
void editEntry();
|
||||
|
||||
void loadBackup();
|
||||
};
|
||||
|
||||
#endif // REPOEDITOR_H
|
||||
52
repoeditor/repoeditor.pro
Normal file
@@ -0,0 +1,52 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2013-02-21T18:57:08
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
TARGET = octopi-repoeditor
|
||||
QT += core gui network
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
CONFIG += qt console warn_on debug
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
DESTDIR += bin
|
||||
OBJECTS_DIR += build
|
||||
MOC_DIR += build
|
||||
UI_DIR += build
|
||||
|
||||
HEADERS += addrepo.h \
|
||||
checkboxdelegate.h \
|
||||
optionsdelegate.h \
|
||||
repoconf.h \
|
||||
repoeditor.h \
|
||||
repoentry.h \
|
||||
../src/QtSolutions/qtsingleapplication.h \
|
||||
../src/QtSolutions/qtlocalpeer.h \
|
||||
../src/QtSolutions/qtlockedfile.h \
|
||||
../src/QtSolutions/qtsinglecoreapplication.h
|
||||
|
||||
SOURCES += addrepo.cpp \
|
||||
checkboxdelegate.cpp \
|
||||
main.cpp \
|
||||
optionsdelegate.cpp \
|
||||
repoconf.cpp \
|
||||
repoeditor.cpp \
|
||||
repoentry.cpp \
|
||||
../src/QtSolutions/qtsingleapplication.cpp \
|
||||
../src/QtSolutions/qtlocalpeer.cpp \
|
||||
../src/QtSolutions/qtlockedfile.cpp \
|
||||
../src/QtSolutions/qtsinglecoreapplication.cpp
|
||||
|
||||
FORMS += addrepo.ui \
|
||||
repoeditor.ui
|
||||
|
||||
RESOURCES += \
|
||||
resources.qrc
|
||||
|
||||
TRANSLATIONS += resources/translations/octopi_repoeditor_en.ts \
|
||||
resources/translations/octopi_repoeditor_it.ts
|
||||
|
||||
255
repoeditor/repoeditor.ui
Normal file
@@ -0,0 +1,255 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>RepoEditor</class>
|
||||
<widget class="QDialog" name="RepoEditor">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>900</width>
|
||||
<height>400</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Repository Editor - Octopi</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="resources.qrc">
|
||||
<normaloff>:/resources/images/octopi_red.png</normaloff>:/resources/images/octopi_red.png</iconset>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Available Repositories</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QTableView" name="tableView">
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::SingleSelection</enum>
|
||||
</property>
|
||||
<property name="selectionBehavior">
|
||||
<enum>QAbstractItemView::SelectRows</enum>
|
||||
</property>
|
||||
<property name="showGrid">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="cornerButtonEnabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<attribute name="horizontalHeaderDefaultSectionSize">
|
||||
<number>66</number>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderHighlightSections">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderMinimumSectionSize">
|
||||
<number>10</number>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderStretchLastSection">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="edit">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Edit</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="edit-rename">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="add">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Add</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="list-add">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="remove">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Remove</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="list-remove">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="moveUp">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Move Up</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="go-up">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="moveDown">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Move Down</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="go-down">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="horizontalGroupBox">
|
||||
<property name="title">
|
||||
<string>Backup</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkBox">
|
||||
<property name="text">
|
||||
<string>Create backup on save</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="loadBackup">
|
||||
<property name="text">
|
||||
<string>Load a backup file</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset theme="document-open">
|
||||
<normaloff/>
|
||||
</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Backup file:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="backupFile"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Discard|QDialogButtonBox::Reset|QDialogButtonBox::Save</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources>
|
||||
<include location="resources.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>checkBox</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>backupFile</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>117</x>
|
||||
<y>262</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>411</x>
|
||||
<y>298</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
112
repoeditor/repoentry.cpp
Normal file
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "repoentry.h"
|
||||
|
||||
QRegExp RepoEntry::nameFilter = QRegExp( "" );
|
||||
QString RepoEntry::commentString = "";
|
||||
QString RepoEntry::repoFormat = "";
|
||||
|
||||
RepoEntry::RepoEntry()
|
||||
: valid( false )
|
||||
, active( false )
|
||||
{
|
||||
}
|
||||
|
||||
RepoEntry::RepoEntry( QString name, bool active )
|
||||
: active( active )
|
||||
, valid( true )
|
||||
, name( name )
|
||||
{
|
||||
}
|
||||
|
||||
QString RepoEntry::getName() const
|
||||
{
|
||||
if( !nameFilter.isValid() || !isValid() )
|
||||
return "";
|
||||
|
||||
QString ret = name;
|
||||
|
||||
return ret.remove( nameFilter );
|
||||
}
|
||||
|
||||
void RepoEntry::addDetail( const QString & detail )
|
||||
{
|
||||
details << detail;
|
||||
}
|
||||
|
||||
void RepoEntry::setDetails( const QStringList &details )
|
||||
{
|
||||
this->details = details;
|
||||
}
|
||||
|
||||
void RepoEntry::addComment( const QString &comment )
|
||||
{
|
||||
this->comments << comment;
|
||||
}
|
||||
|
||||
void RepoEntry::setName( const QString &name )
|
||||
{
|
||||
this->name = formatRepoName( name );
|
||||
valid = true;
|
||||
}
|
||||
|
||||
QString RepoEntry::toString() const
|
||||
{
|
||||
QStringList list,list2,retList;
|
||||
|
||||
if( !isValid() )
|
||||
return "";
|
||||
|
||||
if( comments.isEmpty() )
|
||||
list << ( active ? name : commentString + name );
|
||||
else
|
||||
list << comments.join( "\n" ) << name;
|
||||
|
||||
if( detailsComments.isEmpty() ) {
|
||||
if( !active && !details.isEmpty() ) {
|
||||
QStringList detailsCopy = details;
|
||||
detailsCopy[0] = commentString + details.at( 0 );
|
||||
list2 << detailsCopy;
|
||||
} else
|
||||
list2 << details;
|
||||
} else
|
||||
list2 << detailsComments.join( "\n" ) << details;
|
||||
|
||||
retList << list.join( QString( "\n" ) + ( active ? "" : commentString ) );
|
||||
retList << list2.join( QString( "\n" ) + ( active ? "" : commentString ) );
|
||||
|
||||
return retList.join( "\n" );
|
||||
}
|
||||
|
||||
void RepoEntry::setRealName( const QString &realName )
|
||||
{
|
||||
name = realName;
|
||||
valid = true;
|
||||
}
|
||||
|
||||
bool RepoEntry::setActive( bool active )
|
||||
{
|
||||
if( !valid )
|
||||
return false;
|
||||
|
||||
this->active = active;
|
||||
|
||||
return true;
|
||||
}
|
||||
106
repoeditor/repoentry.h
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
Copyright 2011 Simone Tobia
|
||||
|
||||
This file is part of AppSet.
|
||||
|
||||
AppSet is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
AppSet is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with AppSet; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef REPOENTRY_H
|
||||
#define REPOENTRY_H
|
||||
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QRegExp>
|
||||
|
||||
class RepoEntry{
|
||||
|
||||
private:
|
||||
QString name; //Contains the formatted name (e.g. [main])
|
||||
QStringList details;
|
||||
QStringList comments;
|
||||
QStringList detailsComments;
|
||||
|
||||
bool valid;
|
||||
|
||||
bool active;
|
||||
|
||||
public:
|
||||
explicit RepoEntry();
|
||||
explicit RepoEntry( QString name, bool active = false );
|
||||
|
||||
static QRegExp nameFilter; //Contains the filter to obtain the unformatted repo name (e.g. [main] -> main)
|
||||
static QString commentString;
|
||||
static QString repoFormat;
|
||||
|
||||
static QString formatRepoName( const QString & name ) {
|
||||
QString aux = repoFormat;
|
||||
return aux.replace("%repo%",name);
|
||||
}
|
||||
|
||||
QString getName() const; //returns the unformatted repo name
|
||||
const QStringList & getDetails() const {
|
||||
return details;
|
||||
}
|
||||
|
||||
void addDetail( const QString & detail );
|
||||
void setDetails( const QStringList & details );
|
||||
|
||||
void addComment( const QString & comment );
|
||||
|
||||
void setComments( const QStringList & comments ) {
|
||||
this->comments = comments;
|
||||
}
|
||||
|
||||
void addComments( const QStringList & comments ) {
|
||||
this->comments << comments;
|
||||
}
|
||||
|
||||
const QStringList & getComments() const {
|
||||
return comments;
|
||||
}
|
||||
|
||||
void addDetailsComment( const QString & comment ) {
|
||||
detailsComments << comment;
|
||||
}
|
||||
|
||||
const QStringList & getDetailsComments() const {
|
||||
return detailsComments;
|
||||
}
|
||||
|
||||
void setDetailsComments( const QStringList & comments ) {
|
||||
detailsComments = comments;
|
||||
}
|
||||
|
||||
const QString & getRealName(){
|
||||
return name;
|
||||
}
|
||||
|
||||
void setRealName( const QString & realName );
|
||||
void setName( const QString & name );
|
||||
|
||||
bool isValid() const {
|
||||
return valid;
|
||||
}
|
||||
|
||||
bool isActive() const {
|
||||
return active;
|
||||
}
|
||||
|
||||
bool setActive( bool active );
|
||||
|
||||
QString toString() const;
|
||||
};
|
||||
|
||||
#endif // REPOENTRY_H
|
||||
5
repoeditor/resources.qrc
Normal file
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>resources/images/octopi_red.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
BIN
repoeditor/resources/images/octopi_red.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
repoeditor/resources/translations/octopi_repoeditor_en.qm
Normal file
204
repoeditor/resources/translations/octopi_repoeditor_en.ts
Normal file
@@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="en_US">
|
||||
<context>
|
||||
<name>AddRepo</name>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="14"/>
|
||||
<source>Add Repository - Octopi</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="22"/>
|
||||
<source>Repository:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="32"/>
|
||||
<source>Repository name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="39"/>
|
||||
<source>Location:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="86"/>
|
||||
<source>The repository name field can't be blank.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="101"/>
|
||||
<source>The repository location field is not valid.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="104"/>
|
||||
<source>The repository name field is not valid.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="111"/>
|
||||
<source>Address of remote or local packages repository</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="115"/>
|
||||
<source>Path to mirrors list file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="124"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="125"/>
|
||||
<source>Can't add repository.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="136"/>
|
||||
<source>Select local repository</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="149"/>
|
||||
<source>Select mirrors list</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RepoConf</name>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="148"/>
|
||||
<location filename="../../repoconf.cpp" line="157"/>
|
||||
<source>Backup error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="149"/>
|
||||
<source>Backup file already exists.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="149"/>
|
||||
<source>Do you want to overwrite it?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="158"/>
|
||||
<source>Can't create backup file.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="158"/>
|
||||
<source>Do you want to proceed without a backup?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="211"/>
|
||||
<source>Active</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="211"/>
|
||||
<source>Repository</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="211"/>
|
||||
<source>Location</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RepoEditor</name>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="14"/>
|
||||
<source>Repository Editor - Octopi</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="27"/>
|
||||
<source>Available Repositories</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="75"/>
|
||||
<source>Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="90"/>
|
||||
<source>Add</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="105"/>
|
||||
<source>Remove</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="133"/>
|
||||
<source>Move Up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="148"/>
|
||||
<source>Move Down</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="165"/>
|
||||
<source>Backup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="173"/>
|
||||
<source>Create backup on save</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="196"/>
|
||||
<source>Load a backup file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="212"/>
|
||||
<source>Backup file:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="99"/>
|
||||
<source>Can't load backup file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="100"/>
|
||||
<source>Selected file is not valid</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="149"/>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="150"/>
|
||||
<source>Repositories configuration successfully saved.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="155"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="156"/>
|
||||
<source>Repositories configuration not saved.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
repoeditor/resources/translations/octopi_repoeditor_it.qm
Normal file
204
repoeditor/resources/translations/octopi_repoeditor_it.ts
Normal file
@@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="it_IT">
|
||||
<context>
|
||||
<name>AddRepo</name>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="14"/>
|
||||
<source>Add Repository - Octopi</source>
|
||||
<translation type="unfinished">Aggiunta repository - Octopi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="22"/>
|
||||
<source>Repository:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="32"/>
|
||||
<source>Repository name</source>
|
||||
<translation type="unfinished">Nome repository</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.ui" line="39"/>
|
||||
<source>Location:</source>
|
||||
<translation type="unfinished">Posizione:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="86"/>
|
||||
<source>The repository name field can't be blank.</source>
|
||||
<translation type="unfinished">Il nome del repository non può essere vuoto.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="101"/>
|
||||
<source>The repository location field is not valid.</source>
|
||||
<translation type="unfinished">La posizione del repository non è valida.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="104"/>
|
||||
<source>The repository name field is not valid.</source>
|
||||
<translation type="unfinished">Il nome del repository non è valido.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="111"/>
|
||||
<source>Address of remote or local packages repository</source>
|
||||
<translation type="unfinished">Indirizzo remoto o locale del repository dei pacchetti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="115"/>
|
||||
<source>Path to mirrors list file</source>
|
||||
<translation type="unfinished">Percorso al file dei mirror</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="124"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished">Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="125"/>
|
||||
<source>Can't add repository.</source>
|
||||
<translation type="unfinished">Non è possibile aggiungere il repository.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="136"/>
|
||||
<source>Select local repository</source>
|
||||
<translation type="unfinished">Seleziona un repository locale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../addrepo.cpp" line="149"/>
|
||||
<source>Select mirrors list</source>
|
||||
<translation type="unfinished">Seleziona l'elenco dei mirror</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RepoConf</name>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="148"/>
|
||||
<location filename="../../repoconf.cpp" line="157"/>
|
||||
<source>Backup error</source>
|
||||
<translation type="unfinished">Errore durante il backup</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="149"/>
|
||||
<source>Backup file already exists.</source>
|
||||
<translation type="unfinished">Il file di backup esiste già.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="149"/>
|
||||
<source>Do you want to overwrite it?</source>
|
||||
<translation type="unfinished">Lo si vuole sovrascriverlo?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="158"/>
|
||||
<source>Can't create backup file.</source>
|
||||
<translation type="unfinished">Non è possibile creare il file di backup.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="158"/>
|
||||
<source>Do you want to proceed without a backup?</source>
|
||||
<translation type="unfinished">Si vuole procedere senza il backup?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="211"/>
|
||||
<source>Active</source>
|
||||
<translation type="unfinished">Attivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="211"/>
|
||||
<source>Repository</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoconf.cpp" line="211"/>
|
||||
<source>Location</source>
|
||||
<translation type="unfinished">Posizione</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RepoEditor</name>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="14"/>
|
||||
<source>Repository Editor - Octopi</source>
|
||||
<translation type="unfinished">Editor dei repository - Octopi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="27"/>
|
||||
<source>Available Repositories</source>
|
||||
<translation type="unfinished">Repository disponibili</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="75"/>
|
||||
<source>Edit</source>
|
||||
<translation type="unfinished">Modifica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="90"/>
|
||||
<source>Add</source>
|
||||
<translation type="unfinished">Aggiungi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="105"/>
|
||||
<source>Remove</source>
|
||||
<translation type="unfinished">Rimuovi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="133"/>
|
||||
<source>Move Up</source>
|
||||
<translation type="unfinished">Sposta su</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="148"/>
|
||||
<source>Move Down</source>
|
||||
<translation type="unfinished">sposta giù</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="165"/>
|
||||
<source>Backup</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="173"/>
|
||||
<source>Create backup on save</source>
|
||||
<translation type="unfinished">Crea backup durante il salvataggio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="196"/>
|
||||
<source>Load a backup file</source>
|
||||
<translation type="unfinished">Caricare il file di backup</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.ui" line="212"/>
|
||||
<source>Backup file:</source>
|
||||
<translation type="unfinished">File di backup:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="99"/>
|
||||
<source>Can't load backup file</source>
|
||||
<translation type="unfinished">Non è possibile caricare il file di backup</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="100"/>
|
||||
<source>Selected file is not valid</source>
|
||||
<translation type="unfinished">Il file selezionato non è valido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="149"/>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished">Successo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="150"/>
|
||||
<source>Repositories configuration successfully saved.</source>
|
||||
<translation type="unfinished">Configurazione dei repository salvata con successo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="155"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished">Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../repoeditor.cpp" line="156"/>
|
||||
<source>Repositories configuration not saved.</source>
|
||||
<translation type="unfinished">Configurazione dei repositori non salvata.</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -1,12 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>resources/images/octopi_red.png</file>
|
||||
<file>resources/images/octopi_yellow.png</file>
|
||||
<file>resources/images/esf-search.png</file>
|
||||
<file>resources/images/esf-clear-active.png</file>
|
||||
<file>resources/images/esf-clear-hover.png</file>
|
||||
<file>resources/images/esf-border.png</file>
|
||||
<file>resources/images/esf-clear.png</file>
|
||||
<file>resources/styles/branch-closed_BW.png</file>
|
||||
<file>resources/styles/branch-closed.png</file>
|
||||
<file>resources/styles/branch-end.png</file>
|
||||
@@ -14,6 +7,15 @@
|
||||
<file>resources/styles/branch-open_BW.png</file>
|
||||
<file>resources/styles/branch-open.png</file>
|
||||
<file>resources/styles/vline.png</file>
|
||||
<file>resources/images/octopi_transparent.png</file>
|
||||
<file>resources/images/octopi_red.png</file>
|
||||
<file>resources/images/octopi_yellow.png</file>
|
||||
<file>resources/images/octopi_green.png</file>
|
||||
<file>resources/images/esf-search.png</file>
|
||||
<file>resources/images/esf-clear-active.png</file>
|
||||
<file>resources/images/esf-clear-hover.png</file>
|
||||
<file>resources/images/esf-border.png</file>
|
||||
<file>resources/images/esf-clear.png</file>
|
||||
<file>resources/images/installed.png</file>
|
||||
<file>resources/images/noninstalled.png</file>
|
||||
<file>resources/images/toinstall.png</file>
|
||||
@@ -22,9 +24,9 @@
|
||||
<file>resources/images/binary.png</file>
|
||||
<file>resources/images/outdated.png</file>
|
||||
<file>resources/images/unrequired.png</file>
|
||||
<file>resources/images/foreign.png</file>
|
||||
<file>resources/images/commit.png</file>
|
||||
<file>resources/images/refresh.png</file>
|
||||
<file>resources/images/fast_forward.png</file>
|
||||
<file>resources/images/exit.png</file>
|
||||
<file>resources/images/rollback.png</file>
|
||||
<file>resources/images/editfile.png</file>
|
||||
@@ -36,6 +38,49 @@
|
||||
<file>resources/images/install_item.png</file>
|
||||
<file>resources/images/remove_item.png</file>
|
||||
<file>resources/images/find.png</file>
|
||||
<file>resources/images/rss.png</file>
|
||||
<file>resources/images/newer.png</file>
|
||||
<file>resources/images/foreign_green.png</file>
|
||||
<file>resources/images/foreign_red.png</file>
|
||||
<file>resources/images/show_groups.png</file>
|
||||
<file>resources/images/mirror-check.png</file>
|
||||
<file>resources/translations/octopi_pt_BR.qm</file>
|
||||
<file>resources/translations/octopi_fr_FR.qm</file>
|
||||
<file>resources/translations/octopi_es_ES.qm</file>
|
||||
<file>resources/translations/octopi_el.qm</file>
|
||||
<file>resources/translations/octopi_de.qm</file>
|
||||
<file>resources/translations/octopi_it.qm</file>
|
||||
<file>resources/translations/octopi_ro.qm</file>
|
||||
<file>resources/translations/octopi_tr_TR.qm</file>
|
||||
<file>resources/translations/octopi_ar.qm</file>
|
||||
<file>resources/translations/octopi_ca.qm</file>
|
||||
<file>resources/translations/octopi_bg.qm</file>
|
||||
<file>resources/translations/octopi_pl.qm</file>
|
||||
<file>resources/translations/octopi_id.qm</file>
|
||||
<file>resources/translations/octopi_da.qm</file>
|
||||
<file>resources/translations/octopi_cs.qm</file>
|
||||
<file>resources/translations/octopi_he.qm</file>
|
||||
<file>resources/translations/octopi_lt.qm</file>
|
||||
<file>resources/translations/octopi_nb.qm</file>
|
||||
<file>resources/translations/octopi_sr@latin.qm</file>
|
||||
<file>resources/translations/octopi_nl.qm</file>
|
||||
<file>resources/translations/octopi_ru.qm</file>
|
||||
<file>resources/translations/octopi_uz.qm</file>
|
||||
<file>resources/translations/octopi_fi.qm</file>
|
||||
<file>resources/translations/octopi_vi.qm</file>
|
||||
<file>resources/translations/octopi_es_419.qm</file>
|
||||
<file>resources/translations/octopi_en_GB.qm</file>
|
||||
<file>resources/translations/octopi_pt_PT.qm</file>
|
||||
<file>resources/translations/octopi_sv.qm</file>
|
||||
<file>resources/translations/octopi_sr_RS.qm</file>
|
||||
<file>resources/translations/octopi_hu.qm</file>
|
||||
<file>resources/translations/octopi_zh_TW.qm</file>
|
||||
<file>resources/translations/octopi_ms_MY.qm</file>
|
||||
<file>resources/translations/octopi_uk.qm</file>
|
||||
<file>resources/translations/octopi_sk.qm</file>
|
||||
<file>resources/translations/octopi_ast.qm</file>
|
||||
<file>resources/translations/octopi_es_AR.qm</file>
|
||||
<file>resources/translations/octopi_ja.qm</file>
|
||||
<file>resources/translations/octopi_eu.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
<h2>Octopi</h2>
|
||||
<h3><p>A Qt4-based Pacman frontend,
|
||||
licensed under the terms of <a style="color:'#4BC413'" href="http://www.gnu.org/licenses/gpl-2.0.html">GPL v2</a>.</p></h3>
|
||||
<h4><p>For more information, visit:
|
||||
<a style="color:'#4BC413'" href="http://octopiproject.wordpress.com">http://octopiproject.wordpress.com</a>.</p></h4>
|
||||
<br>
|
||||
Package classification:
|
||||
<ul type="square">
|
||||
<li><img height="16" width="16" src=":/resources/images/installed.png"> An installed package</li>
|
||||
<li><img height="16" width="16" src=":/resources/images/unrequired.png"> An installed package (not required by others)</li>
|
||||
<li><img height="16" width="16" src=":/resources/images/foreign.png"> A foreign package, installed from AUR</li>
|
||||
<li><img height="16" width="16" src=":/resources/images/noninstalled.png"> A non installed package</li>
|
||||
<li><img height="16" width="16" src=":/resources/images/outdated.png"> An outdated package</li>
|
||||
</ul>
|
||||
Basic usage help:
|
||||
<ul>
|
||||
<li>Position the mouse over a package to see its description</li>
|
||||
<li>Double click an installed package to see its contents</li>
|
||||
<li>Right click package to install/reinstall or remove it</li>
|
||||
</ul>
|
||||
Alt+key sequences:
|
||||
<ul>
|
||||
<li>Alt+1 to swtich to "Info" tab</li>
|
||||
<li>Alt+2 to swtich to "Files" tab</li>
|
||||
<li>Alt+3 to swtich to "Transaction" tab</li>
|
||||
<li>Alt+4 to swtich to "Output" tab</li>
|
||||
<li>Alt+5 to swtich to "News" tab</li>
|
||||
<li>Alt+6 or "F1" to show this help page</li>
|
||||
</ul>
|
||||
Control+key sequences:
|
||||
<ul>
|
||||
<li>Ctrl+D or "File/Sync database" to sync the local database with latest remote changes (pacman -Sy)</li>
|
||||
<li>Ctrl+U or "File/System upgrade" to make a full system upgrade (pacman -Su)</li>
|
||||
<li>Ctrl+L to find a package in the package list</li>
|
||||
<li>Ctrl+N or "View/Non installed" to show/hide non installed packages</li>
|
||||
<li>Ctrl+M or "Transaction/Commit" to start installation/removal of selected packages</li>
|
||||
<li>Ctrl+B or "Transaction/Rollback" to clear the selection of to be removed/installed packages</li>
|
||||
<li>Ctrl+G or "File/Get latest distro news" to retrieve the latest RSS based distro news</li>
|
||||
<li>Ctrl+Q or "File/Exit" to exit the application</li>
|
||||
</ul>
|
||||
Control+shift+key sequences:
|
||||
<ul>
|
||||
<li>Ctrl+Shift+C to clean local packages cache (pacman -Sc)</li>
|
||||
<li>Ctrl+Shift+G to display all package groups</li>
|
||||
</ul>
|
||||
F+key sequences:
|
||||
<ul>
|
||||
<li>F1 to show this help page</li>
|
||||
<li>F4 to open a Terminal within the selected directory at Files tab</li>
|
||||
<li>F6 to open a File Manager whitin the selected directory at Files tab</li>
|
||||
<li>F10 to maximize/demaximize package list view</li>
|
||||
<li>F12 to maximize/demaximize Tab's view</li>
|
||||
</ul>
|
||||
<p>
|
||||
<br>
|
||||
<i>Alexandre Albuquerque Arnt - Author</i>
|
||||
|
Before Width: | Height: | Size: 823 B After Width: | Height: | Size: 632 B |
BIN
resources/images/fast_forward.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 540 B After Width: | Height: | Size: 393 B |
|
Before Width: | Height: | Size: 873 B After Width: | Height: | Size: 408 B |
|
Before Width: | Height: | Size: 1.7 KiB |
BIN
resources/images/foreign_green.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/images/foreign_red.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.0 KiB |
BIN
resources/images/mirror-check.png
Normal file
|
After Width: | Height: | Size: 566 B |
BIN
resources/images/newer.png
Normal file
|
After Width: | Height: | Size: 345 B |
|
Before Width: | Height: | Size: 857 B After Width: | Height: | Size: 478 B |
BIN
resources/images/octopi_green.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.2 KiB |
BIN
resources/images/octopi_transparent.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 328 B |
BIN
resources/images/rss.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/images/show_groups.png
Normal file
|
After Width: | Height: | Size: 405 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 917 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 856 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 460 B |
BIN
resources/translations/octopi_ar.qm
Normal file
1046
resources/translations/octopi_ar.ts
Normal file
BIN
resources/translations/octopi_ast.qm
Normal file
1096
resources/translations/octopi_ast.ts
Normal file
BIN
resources/translations/octopi_bg.qm
Normal file
1096
resources/translations/octopi_bg.ts
Normal file
BIN
resources/translations/octopi_ca.qm
Normal file
1096
resources/translations/octopi_ca.ts
Normal file
BIN
resources/translations/octopi_cs.qm
Normal file
1096
resources/translations/octopi_cs.ts
Normal file
BIN
resources/translations/octopi_da.qm
Normal file
1085
resources/translations/octopi_da.ts
Normal file
BIN
resources/translations/octopi_de.qm
Normal file
1096
resources/translations/octopi_de.ts
Normal file
BIN
resources/translations/octopi_el.qm
Normal file
1046
resources/translations/octopi_el.ts
Normal file
840
resources/translations/octopi_en.ts
Normal file
@@ -0,0 +1,840 @@
|
||||
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en" version="2.0">
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<source>Octopi</source>
|
||||
<translation>Octopi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Info</source>
|
||||
<translation>Info</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Files</source>
|
||||
<translation>Files</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction</source>
|
||||
<translation>Transaction</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output</source>
|
||||
<translation>Output</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Help</source>
|
||||
<translation>Help</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>View</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File</source>
|
||||
<translation>File</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search</source>
|
||||
<translation>Search</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation>About</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Non installed</source>
|
||||
<translation>Non installed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+N</source>
|
||||
<translation>Ctrl+N</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Commit</source>
|
||||
<translation>Commit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+M</source>
|
||||
<translation>Ctrl+M</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rollback</source>
|
||||
<translation>Rollback</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+B</source>
|
||||
<translation>Ctrl+B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sync database</source>
|
||||
<translation>Sync database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+D</source>
|
||||
<translation>Ctrl+D</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exit</source>
|
||||
<translation>Exit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>System upgrade</source>
|
||||
<translation>System upgrade</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+U</source>
|
||||
<translation>Ctrl+U</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install</source>
|
||||
<translation>Install</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove</source>
|
||||
<translation>Remove</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Outdated packages</source>
|
||||
<translation>Outdated packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Get latest distro news</source>
|
||||
<translation>Get latest distro news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+G</source>
|
||||
<translation>Ctrl+G</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove group</source>
|
||||
<translation>Remove group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install group</source>
|
||||
<translation>Install group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Collapse item</source>
|
||||
<translation>Collapse item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expand item</source>
|
||||
<translation>Expand item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Collapse all items</source>
|
||||
<translation>Collapse all items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expand all items</source>
|
||||
<translation>Expand all items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open file</source>
|
||||
<translation>Open file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit file</source>
|
||||
<translation>Edit file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open directory</source>
|
||||
<translation>Open directory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open terminal here</source>
|
||||
<translation>Open terminal here</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove item</source>
|
||||
<translation>Remove item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove items</source>
|
||||
<translation>Remove items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>By description</source>
|
||||
<translation>By description</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>By name</source>
|
||||
<translation>By name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Find a file</source>
|
||||
<translation>Find a file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open root terminal</source>
|
||||
<translation>Open root terminal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Usage</source>
|
||||
<translation>Usage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F1</source>
|
||||
<translation>F1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install local package...</source>
|
||||
<translation>Install local package...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>For more information, visit:</source>
|
||||
<translation>For more information, visit:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A Qt-based Pacman frontend,</source>
|
||||
<translation>A Qt-based Pacman frontend,</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>licensed under the terms of</source>
|
||||
<translation>licensed under the terms of</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Package classification:</source>
|
||||
<translation>Package classification:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An installed package</source>
|
||||
<translation>An installed package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An installed package (not required by others)</source>
|
||||
<translation>An installed package (not required by others)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A foreign package, installed from</source>
|
||||
<translation>A foreign package, installed from</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A non installed package</source>
|
||||
<translation>A non installed package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An outdated package</source>
|
||||
<translation>An outdated package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An outdated foreign package</source>
|
||||
<translation>An outdated foreign package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A newer than repository package</source>
|
||||
<translation>A newer than repository package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Basic usage help:</source>
|
||||
<translation>Basic usage help:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position the mouse over a package to see its description</source>
|
||||
<translation>Position the mouse over a package to see its description</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Double click an installed package to see its contents</source>
|
||||
<translation>Double click an installed package to see its contents</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Right click package to install/reinstall or remove it</source>
|
||||
<translation>Right click package to install/reinstall or remove it</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+key sequences:</source>
|
||||
<translation>Alt+key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+1 to switch to 'Info' tab</source>
|
||||
<translation>Alt+1 to switch to 'Info' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+2 to switch to 'Files' tab</source>
|
||||
<translation>Alt+2 to switch to 'Files' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+3 to switch to 'Transaction' tab</source>
|
||||
<translation>Alt+3 to switch to 'Transaction' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+4 to switch to 'Output' tab</source>
|
||||
<translation>Alt+4 to switch to 'Output' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+5 to switch to 'News' tab</source>
|
||||
<translation>Alt+5 to switch to 'News' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+6 or 'F1' to show this help page</source>
|
||||
<translation>Alt+6 or 'F1' to show this help page</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Control+key sequences:</source>
|
||||
<translation>Control+key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+D or 'File/Sync database' to sync the local database with latest remote changes (pacman -Sy)</source>
|
||||
<translation>Ctrl+D or 'File/Sync database' to sync the local database with latest remote changes (pacman -Sy)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+U or 'File/System upgrade' to make a full system upgrade (pacman -Su)</source>
|
||||
<translation>Ctrl+U or 'File/System upgrade' to make a full system upgrade (pacman -Su)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+L to find a package in the package list</source>
|
||||
<translation>Ctrl+L to find a package in the package list</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+F to search for text inside tab Files, News and Usage</source>
|
||||
<translation>Ctrl+F to search for text inside tab Files, News and Usage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+N or 'View/Non installed' to show/hide non installed packages</source>
|
||||
<translation>Ctrl+N or 'View/Non installed' to show/hide non installed packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+M or 'Transaction/Commit' to start installation/removal of selected packages</source>
|
||||
<translation>Ctrl+M or 'Transaction/Commit' to start installation/removal of selected packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+B or 'Transaction/Rollback' to clear the selection of to be removed/installed packages</source>
|
||||
<translation>Ctrl+B or 'Transaction/Rollback' to clear the selection of to be removed/installed packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+G or 'File/Get latest distro news' to retrieve the latest RSS based distro news</source>
|
||||
<translation>Ctrl+G or 'File/Get latest distro news' to retrieve the latest RSS based distro news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Q or 'File/Exit' to exit the application</source>
|
||||
<translation>Ctrl+Q or 'File/Exit' to exit the application</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Control+shift+key sequences:</source>
|
||||
<translation>Control+shift+key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+C to clean local packages cache (pacman -Sc)</source>
|
||||
<translation>Ctrl+Shift+C to clean local packages cache (pacman -Sc)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+G to display all package groups</source>
|
||||
<translation>Ctrl+Shift+G to display all package groups</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+R to remove Pacman's transaction lock file</source>
|
||||
<translation>Ctrl+Shift+R to remove Pacman's transaction lock file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+Y to display Yaourt group</source>
|
||||
<translation>Ctrl+Shift+Y to display Yaourt group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F+key sequences:</source>
|
||||
<translation>F+key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F1 to show this help page</source>
|
||||
<translation>F1 to show this help page</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F4 to open a Terminal whitin the selected directory at Files tab</source>
|
||||
<translation>F4 to open a Terminal whitin the selected directory at Files tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F6 to open a File Manager whitin the selected directory at Files tab</source>
|
||||
<translation>F6 to open a File Manager whitin the selected directory at Files tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F10 to maximize/demaximize package list view</source>
|
||||
<translation>F10 to maximize/demaximize package list view</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F12 to maximize/demaximize Tab's view</source>
|
||||
<translation>F12 to maximize/demaximize Tab's view</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<source>Octopi usage help:</source>
|
||||
<translation>Octopi usage help:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>show application version.</source>
|
||||
<translation>show application version.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>use a different Qt4 style (ex: -style gtk).</source>
|
||||
<translation>use a different Qt4 style (ex: -style gtk).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>use a different remove command (ex: -removecmd R).</source>
|
||||
<translation>use a different remove command (ex: -removecmd R).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>force a system upgrade at startup.</source>
|
||||
<translation>force a system upgrade at startup.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Arch Linux news</source>
|
||||
<translation>Arch Linux news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Chakra news</source>
|
||||
<translation>Chakra news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KaOS news</source>
|
||||
<translation>KaOS news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Manjaro Linux news</source>
|
||||
<translation>Manjaro Linux news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No news could be found! Press Ctrl+G to download the latest news.</source>
|
||||
<translation>No news could be found! Press Ctrl+G to download the latest news.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This Linux distro seems to be incompatible with Octopi!</source>
|
||||
<translation>This Linux distro seems to be incompatible with Octopi!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internet seems unavailable!</source>
|
||||
<translation>Internet seems unavailable!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display all groups</source>
|
||||
<translation>Display all groups</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Usage</source>
|
||||
<translation>Usage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation>About</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation>Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version</source>
|
||||
<translation>Version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Outdated version</source>
|
||||
<translation>Outdated version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Available version</source>
|
||||
<translation>Available version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No description available.</source>
|
||||
<translation>No description available.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL</source>
|
||||
<translation>URL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repository</source>
|
||||
<translation>Repository</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Licenses</source>
|
||||
<translation>Licenses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation>Group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Groups</source>
|
||||
<translation>Groups</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Provides</source>
|
||||
<translation>Provides</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Depends On</source>
|
||||
<translation>Depends On</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Required By</source>
|
||||
<translation>Required By</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Optional For</source>
|
||||
<translation>Optional For</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Optional Deps</source>
|
||||
<translation>Optional Deps</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Conflicts With</source>
|
||||
<translation>Conflicts With</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replaces</source>
|
||||
<translation>Replaces</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download Size</source>
|
||||
<translation>Download Size</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Installed Size</source>
|
||||
<translation>Installed Size</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Packager</source>
|
||||
<translation>Packager</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Package</source>
|
||||
<translation>Package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Packages</source>
|
||||
<translation>Packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Architecture</source>
|
||||
<translation>Architecture</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build Date</source>
|
||||
<translation>Build Date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Description</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Attention</source>
|
||||
<translation>Attention</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>automatic</source>
|
||||
<translation>automatic</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Info</source>
|
||||
<translation>Info</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Files</source>
|
||||
<translation>Files</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction</source>
|
||||
<translation>Transaction</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output</source>
|
||||
<translation>Output</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>News</source>
|
||||
<translation>News</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contents of "%1"</source>
|
||||
<translation>Contents of "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Find</source>
|
||||
<translation>Find</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear</source>
|
||||
<translation>Clear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> (outdated installed version is %1)</source>
|
||||
<translation> (outdated installed version is %1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> (newer installed version is %1)</source>
|
||||
<translation> (newer installed version is %1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Building package list...</source>
|
||||
<translation>Building package list...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Searching for %1 latest news...</source>
|
||||
<translation>Searching for %1 latest news...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There is one outdated package in your system:</source>
|
||||
<translation>There is one outdated package in your system:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are %1 outdated packages in your system:</source>
|
||||
<translation>There are %1 outdated packages in your system:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(version %1 is available)</source>
|
||||
<translation>(version %1 is available)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 (%2) packages</source>
|
||||
<translation>%1 (%2) packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 installed</source>
|
||||
<translation>%1 installed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 outdated</source>
|
||||
<translation>%1 outdated</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 available</source>
|
||||
<translation>%1 available</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cleaning package cache...</source>
|
||||
<translation>Cleaning package cache...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Removing Pacman's transaction lock file...</source>
|
||||
<translation>Removing Pacman's transaction lock file...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Syncing</source>
|
||||
<translation>Syncing</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press any key to continue...</source>
|
||||
<translation>Press any key to continue...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Synchronizing databases...</source>
|
||||
<translation>Synchronizing databases...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is up to date</source>
|
||||
<translation>is up to date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starting full system upgrade...</source>
|
||||
<translation>Starting full system upgrade...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Installing selected packages...</source>
|
||||
<translation>Installing selected packages...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Removing selected packages...</source>
|
||||
<translation>Removing selected packages...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Removing/installing selected packages...</source>
|
||||
<translation>Removing/installing selected packages...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Running command in terminal...</source>
|
||||
<translation>Running command in terminal...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Command finished OK!</source>
|
||||
<translation>Command finished OK!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Command finished with errors!</source>
|
||||
<translation>Command finished with errors!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Retrieving %1</source>
|
||||
<translation>Retrieving %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total download size: %1 KB</source>
|
||||
<translation>Total download size: %1 KB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following target needs to be retrieved</source>
|
||||
<translation>The following target needs to be retrieved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following target will be removed</source>
|
||||
<translation>The following target will be removed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following %1 targets need to be retrieved</source>
|
||||
<translation>The following %1 targets need to be retrieved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following %1 targets will be removed</source>
|
||||
<translation>The following %1 targets will be removed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are forbidden packages in the removal list!</source>
|
||||
<translation>There are forbidden packages in the removal list!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are no new updates available!</source>
|
||||
<translation>There are no new updates available!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There is an update available!</source>
|
||||
<translation>There is an update available!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are %1 updates available!</source>
|
||||
<translation>There are %1 updates available!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm?</source>
|
||||
<translation>Confirm?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning!!!</source>
|
||||
<translation>Warning!!!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation</source>
|
||||
<translation>Confirmation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There has been a transaction error!</source>
|
||||
<translation>There has been a transaction error!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you want to execute this transaction in a Terminal?</source>
|
||||
<translation>Do you want to execute this transaction in a Terminal?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to clean the package cache?</source>
|
||||
<translation>Do you really want to clean the package cache?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to remove Pacman's transaction lock file?</source>
|
||||
<translation>Do you really want to remove Pacman's transaction lock file?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to rollback the transaction?</source>
|
||||
<translation>Do you really want to rollback the transaction?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please, enter the administrator's password</source>
|
||||
<translation>Please, enter the administrator's password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are no means to get administrator's credentials.</source>
|
||||
<translation>There are no means to get administrator's credentials.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You'll need to install a su frontend like gksu or kdesu.</source>
|
||||
<translation>You'll need to install a su frontend like gksu or kdesu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You can not run Octopi with administrator's credentials.</source>
|
||||
<translation>You can not run Octopi with administrator's credentials.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There is a pending transaction</source>
|
||||
<translation>There is a pending transaction</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to quit?</source>
|
||||
<translation>Do you really want to quit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Executing command</source>
|
||||
<translation>Executing command</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run in terminal</source>
|
||||
<translation>Run in terminal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Needs application restart to take effect</source>
|
||||
<translation>Needs application restart to take effect</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These changes need application restart to take effect!</source>
|
||||
<translation>These changes need application restart to take effect!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select the packages you want to install</source>
|
||||
<translation>Select the packages you want to install</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This file does not appear to be a simple text.
|
||||
Are you sure you want to open it?</source>
|
||||
<translation>This file does not appear to be a simple text.
|
||||
Are you sure you want to open it?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To be installed</source>
|
||||
<translation>To be installed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To be removed</source>
|
||||
<translation>To be removed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>remove</source>
|
||||
<translation>remove</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>install</source>
|
||||
<translation>install</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove item</source>
|
||||
<translation>Remove item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove items</source>
|
||||
<translation>Remove items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press Ctrl+A to select/deselect all</source>
|
||||
<translation>Press Ctrl+A to select/deselect all</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SearchBar</name>
|
||||
<message>
|
||||
<source>Previous</source>
|
||||
<translation>Previous</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Next</source>
|
||||
<translation>Next</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Close</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDialog</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<translation>Form</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run in terminal</source>
|
||||
<translation>Run in terminal</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
BIN
resources/translations/octopi_en_GB.qm
Normal file
840
resources/translations/octopi_en_GB.ts
Normal file
@@ -0,0 +1,840 @@
|
||||
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en_GB" version="2.0">
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<source>Octopi</source>
|
||||
<translation>Octopi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Info</source>
|
||||
<translation>Info</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Files</source>
|
||||
<translation>Files</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction</source>
|
||||
<translation>Transaction</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output</source>
|
||||
<translation>Output</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Help</source>
|
||||
<translation>Help</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>View</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File</source>
|
||||
<translation>File</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search</source>
|
||||
<translation>Search</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation>About</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Non installed</source>
|
||||
<translation>Non-installed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+N</source>
|
||||
<translation>Ctrl+N</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Commit</source>
|
||||
<translation>Commit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+M</source>
|
||||
<translation>Ctrl+M</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Rollback</source>
|
||||
<translation>Rollback</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+B</source>
|
||||
<translation>Ctrl+B</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sync database</source>
|
||||
<translation>Sync database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+D</source>
|
||||
<translation>Ctrl+D</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exit</source>
|
||||
<translation>Exit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>System upgrade</source>
|
||||
<translation>System upgrade</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+U</source>
|
||||
<translation>Ctrl+U</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install</source>
|
||||
<translation>Install</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove</source>
|
||||
<translation>Remove</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Outdated packages</source>
|
||||
<translation>Outdated packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Get latest distro news</source>
|
||||
<translation>Get latest distro news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+G</source>
|
||||
<translation>Ctrl+G</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove group</source>
|
||||
<translation>Remove group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install group</source>
|
||||
<translation>Install group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Collapse item</source>
|
||||
<translation>Collapse item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expand item</source>
|
||||
<translation>Expand item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Collapse all items</source>
|
||||
<translation>Collapse all items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expand all items</source>
|
||||
<translation>Expand all items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open file</source>
|
||||
<translation>Open file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit file</source>
|
||||
<translation>Edit file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open directory</source>
|
||||
<translation>Open directory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open terminal here</source>
|
||||
<translation>Open terminal here</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove item</source>
|
||||
<translation>Remove item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove items</source>
|
||||
<translation>Remove items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>By description</source>
|
||||
<translation>By description</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>By name</source>
|
||||
<translation>By name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Find a file</source>
|
||||
<translation>Find a file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open root terminal</source>
|
||||
<translation>Open root terminal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Usage</source>
|
||||
<translation>Usage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F1</source>
|
||||
<translation>F1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install local package...</source>
|
||||
<translation>Install local package...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>For more information, visit:</source>
|
||||
<translation>For more information, visit:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A Qt-based Pacman frontend,</source>
|
||||
<translation>A Qt-based Pacman frontend,</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>licensed under the terms of</source>
|
||||
<translation>licenced under the terms of</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Package classification:</source>
|
||||
<translation>Package classification:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An installed package</source>
|
||||
<translation>An installed package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An installed package (not required by others)</source>
|
||||
<translation>An installed package (not required by others)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A foreign package, installed from</source>
|
||||
<translation>A foreign package, installed from</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A non installed package</source>
|
||||
<translation>A non-installed package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An outdated package</source>
|
||||
<translation>An outdated package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An outdated foreign package</source>
|
||||
<translation>An outdated foreign package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>A newer than repository package</source>
|
||||
<translation>A package newer than repository version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Basic usage help:</source>
|
||||
<translation>Basic usage help:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Position the mouse over a package to see its description</source>
|
||||
<translation>Position the mouse over a package to see its description</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Double click an installed package to see its contents</source>
|
||||
<translation>Double-click an installed package to see its contents</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Right click package to install/reinstall or remove it</source>
|
||||
<translation>Right-click package to install/reinstall or remove it</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+key sequences:</source>
|
||||
<translation>Alt+key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+1 to switch to 'Info' tab</source>
|
||||
<translation>Alt+1 to switch to 'Info' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+2 to switch to 'Files' tab</source>
|
||||
<translation>Alt+2 to switch to 'Files' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+3 to switch to 'Transaction' tab</source>
|
||||
<translation>Alt+3 to switch to 'Transaction' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+4 to switch to 'Output' tab</source>
|
||||
<translation>Alt+4 to switch to 'Output' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+5 to switch to 'News' tab</source>
|
||||
<translation>Alt+5 to switch to 'News' tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Alt+6 or 'F1' to show this help page</source>
|
||||
<translation>Alt+6 or 'F1' to show this help page</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Control+key sequences:</source>
|
||||
<translation>Control+key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+D or 'File/Sync database' to sync the local database with latest remote changes (pacman -Sy)</source>
|
||||
<translation>Ctrl+D or 'File/Sync database' to sync the local database with latest remote changes (pacman -Sy)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+U or 'File/System upgrade' to make a full system upgrade (pacman -Su)</source>
|
||||
<translation>Ctrl+U or 'File/System upgrade' to perform a full system upgrade (pacman -Su)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+L to find a package in the package list</source>
|
||||
<translation>Ctrl+L to find a package in the package list</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+F to search for text inside tab Files, News and Usage</source>
|
||||
<translation>Ctrl+F to search for text inside tab Files, News, and Usage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+N or 'View/Non installed' to show/hide non installed packages</source>
|
||||
<translation>Ctrl+N or 'View/Non-installed' to show/hide non-installed packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+M or 'Transaction/Commit' to start installation/removal of selected packages</source>
|
||||
<translation>Ctrl+M or 'Transaction/Commit' to start installation/removal of selected packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+B or 'Transaction/Rollback' to clear the selection of to be removed/installed packages</source>
|
||||
<translation>Ctrl+B or 'Transaction/Rollback' to clear the selection of packages to be removed/installed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+G or 'File/Get latest distro news' to retrieve the latest RSS based distro news</source>
|
||||
<translation>Ctrl+G or 'File/Get latest distro news' to retrieve the latest distro news from the RSS feed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Q or 'File/Exit' to exit the application</source>
|
||||
<translation>Ctrl+Q or 'File/Exit' to exit the application</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Control+shift+key sequences:</source>
|
||||
<translation>Control+Shift+key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+C to clean local packages cache (pacman -Sc)</source>
|
||||
<translation>Ctrl+Shift+C to clean local package cache (pacman -Sc)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+G to display all package groups</source>
|
||||
<translation>Ctrl+Shift+G to display all package groups</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+R to remove Pacman's transaction lock file</source>
|
||||
<translation>Ctrl+Shift+R to remove Pacman's transaction lock file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+Y to display Yaourt group</source>
|
||||
<translation>Ctrl+Shift+Y to display Yaourt group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F+key sequences:</source>
|
||||
<translation>Function key sequences:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F1 to show this help page</source>
|
||||
<translation>F1 to show this help page</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F4 to open a Terminal whitin the selected directory at Files tab</source>
|
||||
<translation>F4 to open a Terminal within the selected directory at Files tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F6 to open a File Manager whitin the selected directory at Files tab</source>
|
||||
<translation>F6 to open a File Manager within the selected directory at Files tab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F10 to maximize/demaximize package list view</source>
|
||||
<translation>F10 to maximize/restore package list view</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>F12 to maximize/demaximize Tab's view</source>
|
||||
<translation>F12 to maximize/restore Tab's view</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message>
|
||||
<source>Octopi usage help:</source>
|
||||
<translation>Octopi usage help:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>show application version.</source>
|
||||
<translation>show application version.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>use a different Qt4 style (ex: -style gtk).</source>
|
||||
<translation>use a different Qt4 style (eg: -style gtk).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>use a different remove command (ex: -removecmd R).</source>
|
||||
<translation>use a different remove command (ex: -removecmd R).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>force a system upgrade at startup.</source>
|
||||
<translation>force a system upgrade at startup.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Arch Linux news</source>
|
||||
<translation>Arch Linux news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Chakra news</source>
|
||||
<translation>Chakra news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KaOS news</source>
|
||||
<translation>KaOS news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Manjaro Linux news</source>
|
||||
<translation>Manjaro Linux news</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No news could be found! Press Ctrl+G to download the latest news.</source>
|
||||
<translation>No news could be found! Press Ctrl+G to download the latest news.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This Linux distro seems to be incompatible with Octopi!</source>
|
||||
<translation>This Linux distro seems to be incompatible with Octopi!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internet seems unavailable!</source>
|
||||
<translation>Internet seems to be unavailable!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display all groups</source>
|
||||
<translation>Display all groups</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Usage</source>
|
||||
<translation>Usage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation>About</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation>Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version</source>
|
||||
<translation>Version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Outdated version</source>
|
||||
<translation>Outdated version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Available version</source>
|
||||
<translation>Available version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No description available.</source>
|
||||
<translation>No description available.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL</source>
|
||||
<translation>URL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repository</source>
|
||||
<translation>Repository</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Licenses</source>
|
||||
<translation>Licences</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Group</source>
|
||||
<translation>Group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Groups</source>
|
||||
<translation>Groups</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Provides</source>
|
||||
<translation>Provides</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Depends On</source>
|
||||
<translation>Depends On</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Required By</source>
|
||||
<translation>Required By</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Optional For</source>
|
||||
<translation>Optional For</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Optional Deps</source>
|
||||
<translation>Optional Deps</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Conflicts With</source>
|
||||
<translation>Conflicts With</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replaces</source>
|
||||
<translation>Replaces</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download Size</source>
|
||||
<translation>Download Size</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Installed Size</source>
|
||||
<translation>Installed Size</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Packager</source>
|
||||
<translation>Packager</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Package</source>
|
||||
<translation>Package</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Packages</source>
|
||||
<translation>Packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Architecture</source>
|
||||
<translation>Architecture</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Build Date</source>
|
||||
<translation>Build Date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Description</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Attention</source>
|
||||
<translation>Attention</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>automatic</source>
|
||||
<translation>automatic</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Info</source>
|
||||
<translation>Info</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Files</source>
|
||||
<translation>Files</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transaction</source>
|
||||
<translation>Transaction</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output</source>
|
||||
<translation>Output</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>News</source>
|
||||
<translation>News</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contents of "%1"</source>
|
||||
<translation>Contents of "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Find</source>
|
||||
<translation>Find</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear</source>
|
||||
<translation>Clear</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> (outdated installed version is %1)</source>
|
||||
<translation> (outdated installed version is %1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> (newer installed version is %1)</source>
|
||||
<translation> (newer installed version is %1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Building package list...</source>
|
||||
<translation>Building package list...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Searching for %1 latest news...</source>
|
||||
<translation>Searching for %1 latest news...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There is one outdated package in your system:</source>
|
||||
<translation>There is one outdated package on your system:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are %1 outdated packages in your system:</source>
|
||||
<translation>There are %1 outdated packages on your system:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(version %1 is available)</source>
|
||||
<translation>(version %1 is available)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 (%2) packages</source>
|
||||
<translation>%1 (%2) packages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 installed</source>
|
||||
<translation>%1 installed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 outdated</source>
|
||||
<translation>%1 outdated</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 available</source>
|
||||
<translation>%1 available</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cleaning package cache...</source>
|
||||
<translation>Cleaning package cache...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Removing Pacman's transaction lock file...</source>
|
||||
<translation>Removing Pacman's transaction lock file...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Syncing</source>
|
||||
<translation>Syncing</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press any key to continue...</source>
|
||||
<translation>Press any key to continue...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Synchronizing databases...</source>
|
||||
<translation>Synchronising databases...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>is up to date</source>
|
||||
<translation>is up-to-date</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starting full system upgrade...</source>
|
||||
<translation>Starting full system upgrade...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Installing selected packages...</source>
|
||||
<translation>Installing selected packages...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Removing selected packages...</source>
|
||||
<translation>Removing selected packages...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Removing/installing selected packages...</source>
|
||||
<translation>Removing/installing selected packages...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Running command in terminal...</source>
|
||||
<translation>Running command in terminal...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Command finished OK!</source>
|
||||
<translation>Command finished OK!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Command finished with errors!</source>
|
||||
<translation>Command finished with errors!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Retrieving %1</source>
|
||||
<translation>Retrieving %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total download size: %1 KB</source>
|
||||
<translation>Total download size: %1 KB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following target needs to be retrieved</source>
|
||||
<translation>The following target needs to be retrieved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following target will be removed</source>
|
||||
<translation>The following target will be removed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following %1 targets need to be retrieved</source>
|
||||
<translation>The following %1 targets need to be retrieved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The following %1 targets will be removed</source>
|
||||
<translation>The following %1 targets will be removed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are forbidden packages in the removal list!</source>
|
||||
<translation>There are forbidden packages in the removal list!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are no new updates available!</source>
|
||||
<translation>There are no new updates available!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There is an update available!</source>
|
||||
<translation>There is an update available!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are %1 updates available!</source>
|
||||
<translation>There are %1 updates available!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm?</source>
|
||||
<translation>Confirm?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning!!!</source>
|
||||
<translation>Warning!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirmation</source>
|
||||
<translation>Confirmation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There has been a transaction error!</source>
|
||||
<translation>There has been a transaction error!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you want to execute this transaction in a Terminal?</source>
|
||||
<translation>Do you want to execute this transaction in a Terminal?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to clean the package cache?</source>
|
||||
<translation>Do you really want to clean the package cache?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to remove Pacman's transaction lock file?</source>
|
||||
<translation>Do you really want to remove Pacman's transaction lock file?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to rollback the transaction?</source>
|
||||
<translation>Do you really want to rollback the transaction?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please, enter the administrator's password</source>
|
||||
<translation>Please enter the administrator's password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are no means to get administrator's credentials.</source>
|
||||
<translation>There are no means to get an administrator's credentials.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You'll need to install a su frontend like gksu or kdesu.</source>
|
||||
<translation>You'll need to install a su frontend like gksu or kdesu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You can not run Octopi with administrator's credentials.</source>
|
||||
<translation>You can't run Octopi with administrator's credentials.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There is a pending transaction</source>
|
||||
<translation>There is a pending transaction</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to quit?</source>
|
||||
<translation>Do you really want to exit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Executing command</source>
|
||||
<translation>Executing command</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run in terminal</source>
|
||||
<translation>Run in terminal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Needs application restart to take effect</source>
|
||||
<translation>Needs application restart to take effect</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>These changes need application restart to take effect!</source>
|
||||
<translation>These changes need application restart to take effect!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select the packages you want to install</source>
|
||||
<translation>Select the packages you want to install</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This file does not appear to be a simple text.
|
||||
Are you sure you want to open it?</source>
|
||||
<translation>This file does not appear to be simple text.
|
||||
Are you sure you want to open it?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To be installed</source>
|
||||
<translation>To be installed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>To be removed</source>
|
||||
<translation>To be removed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>remove</source>
|
||||
<translation>remove</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>install</source>
|
||||
<translation>install</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove item</source>
|
||||
<translation>Remove item</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove items</source>
|
||||
<translation>Remove items</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press Ctrl+A to select/deselect all</source>
|
||||
<translation>Press Ctrl+A to select/deselect all</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SearchBar</name>
|
||||
<message>
|
||||
<source>Previous</source>
|
||||
<translation>Previous</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Next</source>
|
||||
<translation>Next</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Close</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TransactionDialog</name>
|
||||
<message>
|
||||
<source>Form</source>
|
||||
<translation>Form</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Run in terminal</source>
|
||||
<translation>Run in terminal</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||