Compare commits

...

975 Commits

Author SHA1 Message Date
poixen
2e0944b7cc card completion 2018-05-13 14:36:18 -04:00
ctrlaltca
4cdd17945d Servatrice: make listening host configurable; fix #3241 (#3242)
* fix #3241

* clangify
2018-05-12 23:54:03 +02:00
ctrlaltca
c06fc562a1 Cmake scripts refactoring; fix #3225 (#3230)
* fix #3225

* Servatrice: use websockets as an optional component (for qt < 5.3)

* Attempt++
2018-05-12 23:28:22 +02:00
tooomm
73fb9ee03e update file rules (#3232) 2018-05-10 22:07:22 +02:00
tooomm
4e10ce7473 smaller clear pic button (#3220) 2018-05-04 03:48:53 -04:00
ctrlaltca
a7f4aace9c Extract the xml parser from carddatabase (#3223) 2018-05-04 03:46:08 -04:00
David Szabo
9727699e26 braces are only left for split cards (#3217)
* braces are only left for split cards

* condition for braces modified
2018-05-02 21:20:58 -04:00
Zach H
2520d07ef2 log moderation stats in the uptime table (#3215) 2018-05-02 17:31:54 -04:00
tooomm
661e00f563 log cleanup (#3207) 2018-05-02 16:07:43 -04:00
ctrlaltca
2780270911 macOS: fix qt plugin installation (#3216)
* Osx: fix qt plugin installation

* Add make install step to travis debug build

* only install under osx

* Add "styles" plugins (for native look'n'feel)

* Osx: upgrade qt from 5.5 to current (5.10.1)

* Fix osx on travis

The qt homebrew formula now installs three qt* symlinks (qt, qt5, qt5@5.x) so we can't use/don't need bash globbing anymore
2018-05-02 15:57:35 -04:00
tooomm
8a5baa4637 connect dialog tweaks (#3211) 2018-04-23 14:30:46 -04:00
tooomm
f5eb05b682 bump version number (#3205)
* bump version number

* bump
2018-04-18 19:50:26 -04:00
tooomm
f309ddf28a README updates (#3203) 2018-04-16 20:08:26 -04:00
David Szabo
67a2a8cf08 datetime display fixed for OSs with non-English localization (#3204) 2018-04-16 20:07:30 -04:00
Zach H
1fbdea0f35 translation updates (#3200) 2018-04-16 02:42:58 -04:00
David Szabo
cc2a0fa0d0 server site added to connect window (#3190) 2018-04-10 19:05:13 -04:00
tooomm
034e79dd36 typo (#3187) 2018-04-10 12:51:57 -04:00
tooomm
5c03f18c72 add hint about how to contact server admins (#3186) 2018-04-10 12:40:24 -04:00
Zach H
61e509585f Server List from JSON (#3165) 2018-04-09 22:38:21 -04:00
tooomm
0c10b66a2d prettify spoiler settings (#3180) 2018-04-09 17:15:37 -04:00
tooomm
7758145e71 comment explanation out (#3181) 2018-04-09 16:47:44 -04:00
ctrlaltca
37ab7b8fb1 Add a note about bug #3135 (#3184) 2018-04-09 16:47:08 -04:00
tooomm
42d15c39a0 change vcredist install option from "/quiet" to "/passive" (#3175) 2018-04-07 12:32:20 -04:00
tooomm
a0d84114de fix space (#3172) 2018-04-06 15:01:04 -04:00
tooomm
706054ea96 readme: link update (#3173) 2018-04-06 15:00:46 -04:00
tooomm
7d5a33b12c bump version number (#3174) 2018-04-06 15:00:32 -04:00
tooomm
a056a882c3 flip rename (client side) (#3149) 2018-04-05 22:42:54 -04:00
tooomm
f89f6438c9 Update ISSUE_TEMPLATE.md (#3171) 2018-04-05 22:42:36 -04:00
tooomm
e25b7e9eb8 button label wording (#3168) 2018-04-04 04:45:28 -04:00
Zach H
ca2e05952e add rooster ranges, remove woogerworks (#3163) 2018-04-03 18:41:10 -04:00
David Szabo
2fcb02cadd untranslated string comparison fixed (#3164) 2018-04-02 23:04:52 -04:00
David Szabo
e1394bd851 Feature/3139 new features for tips (#3152)
* "Tip of the Day" option added to Help menu

* Tip of the Day setting moved

* If no new tips are availabe, don't show tip of the day again

* list storing try #1

* first unseen tip shown first

* lastShownTip removed

* fixed next/previous buttons

* spaces > tab

* "Show this window on startup" is not checked by default
2018-04-01 04:52:26 -04:00
ctrlaltca
6374d157fc Fix Appveyor builds (#3151)
* fix appveyor builds
2018-03-24 16:05:08 +01:00
tooomm
5df547ee53 update template (#3150) 2018-03-23 23:37:11 -04:00
David Szabo
2a9d76f090 Colors on split cards sorted in WUBRG order (#3128) 2018-03-07 20:26:47 -05:00
Zach H
5859fa2f20 translation updates (#3124) 2018-03-02 16:50:10 -05:00
David Szabo
312caae062 Tip of the Day (#3118)
* Basic tip of the day with sample widget added

* "Show tips on startup" option added to settings

* tip cycling implemented

* Structure of the tipOfTheDay class and resource created

* tip getter function modified

* Resources added, feature works properly

* clangified

* accidental modification rolled back

* zach cleanup

* tips to spaces; cmake list combined

* cleanup img

* fix copy

* remove TOTD as QObject so we can copy construct it

* prevent mem leaks in dlg

* changed order of 'next' and 'previous' buttons

* Date and tip numbers added; content wraps around

* useless sizepolicy removed

* link support added & clangified

* Initial tips & memory management updates
2018-03-02 03:11:18 -05:00
David Szabo
281e52eaa9 power and toughness values displayed after card flip (#3120) 2018-03-01 12:28:30 -05:00
Zach H
66958b5975 clangify only the different files (#3122) 2018-02-28 13:20:53 -05:00
David Szabo
941a06e107 Custom image file path corrected (#3119) 2018-02-25 23:22:41 -05:00
David Szabo
7cfbf114b7 "Show related card" option added to ingame context menu (#3115) 2018-02-19 01:12:25 -05:00
David Szabo
2409eae940 left, right, and S shortcuts modified to use shift (#3116) 2018-02-19 00:38:51 -05:00
Vafthrudnir
3d2c7b6670 Right-click menu added for card database view (#3113) 2018-02-15 03:25:44 -05:00
Vafthrudnir
65ef66cfa7 Braces left in for split mana costs in xml (#3108) 2018-02-13 22:37:24 -05:00
Zach H
019295931a Merge pull request #3109 from Vafthrudnir/hotfix/oracle_button_text_correction 2018-02-13 20:50:30 -05:00
Vafthrudnir
c8a10a9997 Mnemonic created 2018-02-14 02:40:46 +01:00
Vafthrudnir
4e8a09517c Button text changed to "Save" from "Next" 2018-02-14 02:36:54 +01:00
Vafthrudnir
f302154df7 Hotfix/2950 delete filters with keyboard (#3097)
* Shortcut setting checks for invalid keys

* Different message shown for invalid keys and used keys; warning message is displayed on start if conflic is detected

* Only shortcuts related to deck-builder are checked
2018-02-13 02:51:14 -05:00
Vafthrudnir
11ad677fe8 Sending card name to chat on shift+click (#3106) 2018-02-13 02:50:37 -05:00
Vafthrudnir
8084ab605f Tablerow fixed for non-mana generating artifacts (#3104) 2018-02-12 18:04:11 -05:00
Vafthrudnir
af5a04abf1 "Comment" field made resizable in deck builder window (#3105)
* solution with splitter

* Made prettier

* Useless parameter removed

* clangified

* c++11 cleanup
2018-02-11 13:49:58 -05:00
Vafthrudnir
3426a6b201 'Rarity' property added to split cards in xml (#3102) 2018-02-09 23:45:59 +01:00
Vafthrudnir
51eeac0541 Mana cost filtering for split cards (#3098) 2018-02-08 14:15:42 -05:00
Nick Beeuwsaert
2206328406 Add custom QStyle class to tab bar to fix render issue on macOS. (#3095)
* Add custom QStyle class to tab bar to fix render issue on macOS. fixes #3070

* clangify
2018-02-08 15:39:29 +01:00
Vafthrudnir
501e82f712 Split card handling added to cmc filter (#3090) 2018-02-07 11:37:10 -05:00
tooomm
ab3989aeba Consistent use of 'beta' tag across the project (#3089) 2018-02-07 11:33:14 -05:00
Vafthrudnir
a0d6a342d3 Loyalty filter added (#3087) 2018-02-07 11:33:01 -05:00
Zach H
35159ef61a Clang script (#3085) 2018-02-06 08:45:13 -05:00
Zach H
fcfb2b12b7 remove extra copies (#3081) 2018-02-06 05:06:51 -05:00
Vafthrudnir
4cbec71882 Relation checks added to relevant fields in card filter (#3080)
* comments and <=, >=, == support added
2018-02-06 05:05:30 -05:00
Zach H
b58aa459a4 change file names to end with win32/64 instead of x86/x86_64 (#3079) 2018-02-05 23:39:55 +01:00
Zach H
8a8b580501 translations (#3078) 2018-02-05 12:22:49 -05:00
Zach H
c9525af624 this is backwards (#3077) 2018-02-05 11:39:10 -05:00
tooomm
aba47719b2 properly display logical connectors (#3072)
they should not get transalted as well
2018-02-04 13:47:12 -05:00
Vafthrudnir
b6b4d7e4a0 Automatic focus change after filter selection (#3074) 2018-02-04 13:46:35 -05:00
Vafthrudnir
63d0f5af43 Start in maximized window on first start (#3075) 2018-02-04 13:07:37 -05:00
ctrlaltca
517420cccb Replace CardInfo* and Carset* with smart pointers (#3053)
* Replace CardInfo* and Carset* with smart pointers

* fixes to help memory & c++11 stuff
2018-02-02 12:52:47 -05:00
tooomm
3e418ba3c6 travis: temporary downgrade mac builds to qt5.5 (#3066)
`qt@5.7` is no longer available: https://github.com/Homebrew/homebrew-core/pull/23165#issuecomment-362270835
2018-02-01 19:09:46 +01:00
dino572
c1bd50f186 Fix mwDeck edition tag parsing on deck load (#3057)
* Update decklist.cpp

Changed parsing code, line 565 and 567
2018-01-31 23:29:18 +01:00
tooomm
d13cf65a10 contributing: add toc + little tweaks (#3030) 2018-01-27 13:45:27 -05:00
ctrlaltca
994a643d9c Travis: enable ccache usage under macOS; halves compilation time (#3052) 2018-01-27 13:43:48 -05:00
ctrlaltca
e127cb74b6 Fixed most issues from codacy (#3050) 2018-01-27 13:31:44 -05:00
Dave
3c3e6ae68a Domain change (#3051)
.es es no mas

Server and database from .es is now active on cockatrice.dr4ft.com
2018-01-27 17:30:40 +01:00
ctrlaltca
b29bd9e070 Clang-format (#3028)
* 1/3 Add .clang-format file and travis compilation check

* 2/3 Run clang-format

* 3/3 Fix compilation problems due to include reordering

* 3bis/3 AfterControlStatement: false
2018-01-27 10:41:32 +01:00
tooomm
8dbdd24c8e fix cmake 3.10 (#3048) 2018-01-25 20:39:10 +01:00
tooomm
04ab3d7f13 fix release run on tags (#3046) 2018-01-23 12:58:56 -05:00
tooomm
03d0a84ef5 "edit sets" --> "manage sets" rename (#3044) 2018-01-22 12:42:10 -05:00
tooomm
14a0c53fc1 travis update (osx + linux) (#3041) 2018-01-21 17:07:25 -05:00
woogerboy21
da7c7c1f83 Update Servatrice MySQL Search Path (#3039)
Removed the older versions of the mysql library install paths and updated to reflect the 5.7 product paths.
2018-01-21 11:05:13 -05:00
Zach H
261d3ac591 better null check (#3036) 2018-01-20 14:54:34 -05:00
ctrlaltca
55029b6b68 Travis: remove sudo (#3037) 2018-01-20 16:50:06 +01:00
Zach H
bc52882ac4 Fix Bad Gameplay (#3034) 2018-01-19 20:34:14 -05:00
Zach H
d1b95aad16 move to slot (#3032) 2018-01-19 19:04:48 -05:00
Zach H
691bf36fbe Disable sideboard button w/o deck (#3025) 2018-01-19 10:50:18 -05:00
Zach H
5a823becf1 Contributing Doc Updates (#3009) 2018-01-19 08:38:37 -05:00
Zach H
feeaba1d62 2.4.1 beta -> 2.5.0 beta (#3024)
Big changes so we will go to 2.5.0 for next release
2018-01-18 19:28:51 -05:00
Zach H
ebec30dd1c Add No annotations export option w/ shortcut (#3013) 2018-01-18 19:25:30 -05:00
Zach H
5757d60b1d Smarter Mana Cost sorting & small cleanup (#3008) 2018-01-18 19:25:10 -05:00
skwerlman
81fcc3c11a remove builds for 1610 and 1704 (#3023)
ubuntu turned off the repo servers :(
2018-01-18 19:24:43 -05:00
Zach H
34bec90193 Fix deck loader with spaces (#3007) 2018-01-18 19:23:13 -05:00
Zach H
dcc632e0d4 Fix a crash (#3011) 2018-01-18 11:53:57 -05:00
Zach H
7a150c558d Trim all inputs (except password) (#3018)
* Trim all inputs (except password)

* missed )
2018-01-17 18:57:13 +01:00
ctrlaltca
3a11aebb21 windows/appveyor compilation updates (#3020) 2018-01-17 18:20:05 +01:00
Zach H
8825e2932a fix linux crash (#3014) 2018-01-13 04:20:12 -05:00
ctrlaltca
cd558a9722 Even out db collation to utfmb4_unicode_ci; fix #2835 ; fix #2218 (#2915) 2018-01-13 04:02:22 -05:00
tooomm
cc822dd8df card filter: add clear button and placeholder text (#3003) 2018-01-11 16:43:08 -05:00
Kyle Grammer
6fc1aaef90 Add comp architecture (#2968) 2018-01-10 22:19:07 -05:00
tooomm
c8122c94ef adjust custom naming, clickable commit hash in brackets (#2981) 2018-01-10 13:38:51 -05:00
tooomm
e6e6932dbb card filter: alphabetical ordering for keywords (#2987) 2018-01-10 13:37:39 -05:00
tooomm
d124e6ac22 deck editor: add placeholder text to search (#3000) 2018-01-10 13:33:37 -05:00
tooomm
7efab80d9b token creation context menu improvements (#2999) 2018-01-10 13:32:29 -05:00
Zach H
d19744236e Automatic Spoiler Season (#2991)
* oracle now can be run in spoiler or normal mode

* tests for travis

* only run on relaunch

* spoilers in client (not oracle now) and tray icon shows when done

* spoiler status will be checked before downloading spoiler file

* only download if they care about spoilers

* reload db on spoiler download

* manual update button, code cleanup, and fix enabling sets when new

* cleanup, nullchecks, and fixes to spoiler

* reload DB even if not in spoiler season; necessary as we have a check elsewhere to prevent the reload if spoiler check happens

* Implement changes from 2991#issuecomment-356169374

* Change implicit nullptrs, alert on file deletion, minor changes

* make reload thread safe and minor changes from 2991#issuecomment-356450302

* Fix locking

* Disable update now button while process running
2018-01-10 13:27:43 -05:00
tooomm
51ec593759 fix space (#2990) 2018-01-02 22:57:23 -05:00
Zach H
87c978937d replace beta semvar correctly (#2980) 2017-12-28 21:30:17 -05:00
tooomm
dfaa85847c add tag (#2979) 2017-12-28 20:02:30 -05:00
tooomm
74dbf75c5b fix var call (#2978) 2017-12-28 19:21:42 -05:00
tooomm
f0f73c8f77 ci: deployment config for beta+stable (#2976) 2017-12-28 18:33:16 -05:00
ctrlaltca
3af2be4539 removed win xp support; update qt to 5.9 for win 32bit (#2975) 2017-12-19 09:09:20 +01:00
tooomm
5b8e0dc8ec add group key (#2967)
as announced here: https://blog.travis-ci.com/2017-12-01-new-update-schedule-for-linux-build-images
2017-12-18 18:17:31 -05:00
Zach H
b75882b6b9 Allow non-db cards to be moved around (#2960) 2017-12-18 14:17:54 -05:00
Zach H
2abfd3b4a9 Update Rarity Filters & Refactoring (#2962) 2017-12-17 19:42:54 -05:00
Zach H
014b9947fe clear search bar if all filters cleared (#2961) 2017-12-17 17:48:57 -05:00
Zach H
ec4e6d53df allow backspace button to remove a filter (#2959) 2017-12-17 17:39:41 -05:00
Zach H
0eae4dbe54 add checkbox option to clear log (#2963) 2017-12-17 17:32:31 -05:00
Zach H
297f1f2555 remove untap option, combine w/ tap (#2964) 2017-12-17 17:31:31 -05:00
tooomm
7e80f4b4ae oracle: fix wording for token download (#2946) 2017-12-15 15:42:30 -05:00
Kyle Grammer
6e24f59826 Fixing split card from UNH with wrong name in database (fix #2947) (#2949) 2017-12-15 15:37:32 -05:00
Kyle Grammer
5e00faed5d Fix for Aftermath and Split Cards when sending to Tappedout; fix #2942 (#2944) 2017-12-10 17:56:49 -05:00
John Robe
6c038a91e4 Deck export (#2938)
* Added “export deck” option to export deck to decklist.org for viewing/printing. Implemented using a new menu item, added shortcut ability, and functionality to parse the deck correctly and add main/sideboard cards to decklist. Per issue #2931
2017-12-05 22:34:19 -05:00
tooomm
4d641eb0e7 version number bump to next patch (#2920) 2017-11-19 20:22:12 -05:00
tooomm
59824cf4dd update finish (#2923) 2017-11-19 20:22:02 -05:00
tooomm
b615b5b33e Translation Updates (#2918) 2017-11-19 15:11:37 -05:00
tooomm
3dc2526f0a update download wording (#2912) 2017-11-04 20:17:18 -04:00
tooomm
6bc39a4f6f yml config documentation (#2899)
* little fix

* add config hints

* doc link
2017-11-04 20:16:41 -04:00
John Hill
422c899cdb Sorting by P/T numerically (#2901) 2017-11-04 13:11:46 -04:00
Gavin Bisesi
e96a250bf1 Fix easy changes link in readme (#2897)
Using these two labels because github tells contributors to look for them.
2017-11-02 15:17:29 +01:00
TaylorShiells
563e96e051 Update Readme.md (Style Guide) / FMRM feedback (#2905)
This change establishes the Google Developer Documentation Style Guide as the official style guide for the ReadMe. This will provide a starting point for editors or writers looking to work on documentation. This edit also does an initial patch on the readme based on that style guide
2017-11-01 13:08:17 -04:00
ctrlaltca
4baaf978f5 Deck editor: force default file extension on file save; fix #2829 (#2910) 2017-10-31 15:34:56 -04:00
ctrlaltca
6b6ba9a8f1 Update translations (#2890)
* Translations

* update and test codacy change
2017-10-09 19:16:23 +02:00
tooomm
fcb0daf80f more ignore for appveyor (#2892)
* add dockerfile and license to ignorelist

* fixed space
2017-10-09 19:15:36 +02:00
tooomm
a3ca459526 exclude translation files from codacy (#2891)
* exclude translation files from codacy

* update appveyor ignore config

add codacy.yml
2017-10-09 16:40:05 +02:00
tooomm
17202e8dba AppVeyor: prevent unnecessary builds (#2888)
* prevent unnecessarybuilds

* readd qt5 string

sadly this is needed as of now:
ff6b0f86ec/cockatrice/src/releasechannel.cpp (L59-L68)

* wrap asterisks

* fixed with validator

https://ci.appveyor.com/tools/validate-yaml

* complete link

* add helpful links

this should not trigger a appveyor build

* add space in readme

this should not trigger a appveyor build

* highlight c++ types

this should not trigger a appveyor build

* remove empty line

this should not trigger a appveyor build

* declutter dockerignore

this should not trigger a appveyor build
2017-10-09 11:19:56 +02:00
ctrlaltca
ff6b0f86ec Appveyor updates (#2885)
* Appveyor updates

Remove unused stuff (mysql, choco)
Use MSVC 2015
Upgrade Qt to 5.9, protobuf to 3.4.1

* stick qith qt 5.6 for winxp 32bit compatibility; zlib test

* Appveyor is using a randmon clone path for pulls, get it from an env variable
2017-10-05 08:38:09 +02:00
Zach H
96b30da492 fix deckstats.net regex (#2886) 2017-10-04 23:36:42 -04:00
tooomm
9cbdc4195e change to https (#2863) 2017-10-04 12:46:43 -04:00
tooomm
ada262b826 betaXYZ to betaX (#2882) 2017-10-04 12:45:28 -04:00
Alessandro Marzialetti
78e299fdfd Fixed life points not showing (#2868) (#2881) 2017-10-04 12:44:36 -04:00
skwerlman
cf5cd21c50 Update .gitlab-ci.yml (#2876)
Remove support for Fedora 22 (been EOL for a while)
Add support for Ubuntu 17.04 and 17.10

Note that debug builds for 17.04 and 17.10 are still affected by issue #2343, and so always fail.
2017-10-03 15:28:47 +02:00
woogerboy21
b684c12964 Correct VS2017 Compile Issue (#2878)
A line in the servatrice CMAKE file was removed in a prior commit causing a compile error in newer versions of visual studio.  This returns the line.
2017-10-03 09:23:33 -04:00
tooomm
df8c38b649 add link to project roadmap (#2872) 2017-10-01 00:23:06 -04:00
tooomm
1424de2c54 remove old TODO file (#2870) 2017-09-29 20:51:41 -04:00
ctrlaltca
7875407795 servatrice: case-insensitve check for email and token challenge; fix #2857 (#2860) 2017-09-28 15:34:35 -04:00
tooomm
ef89104503 add colourless keyword to deck filter (#2858)
extends #2737 for missing term (add colourless)
2017-09-27 14:03:58 +02:00
ctrlaltca
ccee0aa3fd Cmake: remove old unneeded POLICIES (fix Appveyor) (#2859) 2017-09-22 17:47:05 +02:00
John Hill
a6d3229e74 If playing online, don't change your life/mana counters if you click on your opponent's (#2839) 2017-08-19 00:43:18 -06:00
tooomm
93d8ac10ff Fix broken README links after #2826
copying --> license
2017-08-14 08:25:20 -04:00
tooomm
04d84f9d9a repo cleanup (#2826) 2017-08-11 21:42:45 -04:00
tooomm
2557a2183d .travis folder (#2805) 2017-08-06 23:56:31 -04:00
John Hill
e694cbe854 add ability to clone from stack (#2824) 2017-08-06 23:56:17 -04:00
John Hill
3963570838 Mana counter shortcut (#2821) 2017-08-06 21:09:25 -04:00
John Hill
dd05b86bc9 initial way of getting rid of warning (#2817) 2017-08-06 21:04:03 -04:00
tooomm
af3423e67d split up string and argument (#2822) 2017-08-06 20:51:54 -04:00
John Hill
7c8daf68ea Add version label to Oracle Importer (#2818) 2017-08-06 14:03:19 -04:00
John Hill
6b1ea9186a Double click token (#2815) 2017-07-31 22:50:32 -04:00
tooomm
e90c389212 remove mention-bot config file (#2814) 2017-07-31 18:08:25 -04:00
John Hill
556d19ff70 Clone in exile and graveyard (#2813) 2017-07-31 00:34:24 -04:00
Lee Matos
838ab888db clarify docker build happens inside of the repo folder (#2807)
I intuited that this was the case, but being more explicit might help other docker newbies to understand what's happening.
2017-07-15 13:51:02 -04:00
tooomm
1cb3d88e35 flag updates (#2804) 2017-07-14 21:30:27 -04:00
ctrlaltca
1366e5970e Portable mode for windows (#2794)
* Portable mode for windows

* fix start menu in portable mode

* Make gcc an happy puppy

* Clean old installation if we are installing over an old portable mode installation

* Default to Desktop\CockatricePortable

* Settings dialog fixes

* wording
2017-07-08 11:22:29 +02:00
tooomm
1565309146 enable caching for ci (#2799)
* enable cache

* caching on mac

* fix ci caching on mac

* fix

* add mac cache

* added homebrew cache and pretty print yaml (+ structural ordering)

* cleanup

* fix ccache on mac

* testing workaround

https://github.com/travis-ci/travis-ci/issues/7456#issuecomment-296505058

* try xcode7.3 instead of workaround

* cache timout value

more time for cache to upload
2017-07-07 16:17:18 +02:00
Psithief
b05ed0376a Fixes #2712 (#2797)
When checking unknown sets, consider sets with an empty long name, 
set type and release date as 'incomplete'/'partial' sets.
Do not mark partial sets as known, or ask the user to enable them.
Instead, silently enable partial sets.
When a partial set becomes complete, the user is prompted to enable the
set as before. If they choose not to enable, those partial sets are 
disabled, as we can no longer assume they are disabled by default.
2017-07-07 00:45:46 -04:00
Psithief
61893faf3b Slightly more accurate XSD. (#2787)
XML 1.0 does not provide a method that allows elements with minimum
occurances and variable occurances in any order, so we are stuck
with xs:sequence.
2017-06-29 20:52:44 -04:00
Zach H
e8dbdc3c6d Add token creation for opponent board items (#2744) 2017-06-28 23:09:10 -04:00
tritoch
5abfda49be Import spoiler.xml as spoiler.xml and overwrite existing (#2784) 2017-06-28 22:54:09 -04:00
tritoch
bcda502b46 Loyalty now string, xsd fix (#2785)
Card with `X` loyalty was printed, loyalty now string
2017-06-28 21:42:08 -04:00
Psithief
03bb02f75b Improved XSD (#2781) 2017-06-26 14:42:13 -04:00
Psithief
bfcc48f5bf Check for .xlhq (CCGHQ naming scheme) files (#2778) 2017-06-22 22:59:33 -04:00
Psithief
ae15f5df06 Handling of tokens/related cards improved. (#2773) 2017-06-20 18:35:06 -04:00
tooomm
029a4a39ad readme: https link + layout tweak (#2768) 2017-06-13 15:34:50 +02:00
Zach H
9ddb18a35e Make deck list appear if deck loaded (#2745) 2017-06-12 12:25:52 +02:00
woogerboy21
2094910b7a More descriptive reason for "to many requests" when registering (#2760)
* More descriptive reason for "to many requests" when registering

Currently the only way for a user to get a response of "to many registration attempts"  is by the servers configuration to restrict the number of registration attempts but the error message presented to the user is very vague as to why they have been denied.  This PR updates the reasoning.  I'm open for suggestions on any clarity recommendations.

* Added more clarity

Updated error message to include email address information for even greater clarity.
2017-06-12 12:12:36 +02:00
tooomm
b36c349f9b remove unused define (#2757) 2017-06-11 00:42:09 -04:00
Zach H
99e7458f9b make not set to untap normally more distinct (#2746) 2017-06-04 14:02:35 -04:00
Zach H
0a57229886 keep client version persistant (#2750) 2017-06-04 13:59:37 -04:00
Zach H
f3f83882e0 Model col widths off deck editor & disable button if no tokens in deck (#2751) 2017-06-04 13:58:34 -04:00
Zach H
d970b9e50f fix card not showing correctly in games (#2752) 2017-06-04 13:57:47 -04:00
Zach H
b0d8a31a2e remove invalid connect (#2753) 2017-06-04 13:57:21 -04:00
ctrlaltca
03a7a9fafb Webclient: fix some bugs (#2742)
* Handle room join and leave events + case sensitive userlist sort; fix #2307

* Webclient: add autoscroll, but only if already at the bottom; fix #2306
2017-05-31 23:04:59 -04:00
tooomm
4c953acebc exchange dl stat page (#2743) 2017-05-30 08:32:58 +02:00
tritoch
c5ac61c797 Colorless for color filter (#2737)
* Colorless for color filter

Add 'colorless' as an option for color filter in deck editor / card list.

* Remove empty quote check

Empty quote does not work here. Add 'none' as optional string instead.

* Add C to colorless filters
2017-05-30 08:19:11 +02:00
ctrlaltca
f75caa7245 Webclient overhaul (#2735)
Migrate from protobuf.js 5.x to 6.x (remove long.js and bytebuffer.js)
Upgrade jQuery from 1.x to 3.x
Upgrade jQueryUI to 1.12.x
Use minimized version of js libraries
Disable debug messages
Fix default value for Event_RoomSay’s RoomMessageType field
2017-05-29 14:12:36 +02:00
tooomm
87060dc5c7 created_at to published_at (#2723) 2017-05-22 16:00:38 +02:00
backendr
62681f7f8d contect menu fix (#2719) 2017-05-18 17:03:21 -04:00
Zach H
b53cd33eed Smarter Clipboard Pasting/Parsing (#2706) 2017-05-14 14:35:40 -04:00
backendr
405a719412 Better scrolling in reveal zones (#2716) 2017-05-14 19:01:50 +02:00
Zach H
aca6917d42 Merge pull request #2672 from Cockatrice/tooomm-update_msg_rework
update msg rework
2017-05-13 16:06:53 -04:00
tooomm
73e2c3d32f Publish --> Release 2017-05-13 14:49:35 +02:00
tooomm
7f273b547b add missing tr() 2017-05-13 13:24:04 +02:00
backendr
77e0cddbae counter context sensative (#2714) 2017-05-13 11:48:26 +02:00
backendr
d9230d6c6b Message Log Widget changes (#2709)
* Message Log Widget changes

* Gravard now logs as before

* removed redundant QString()
2017-05-13 11:47:43 +02:00
Zach H
f00bcc9179 Merge pull request #2691 from Cockatrice/tooomm-dl_badges
github dl badges in README
2017-05-10 14:23:33 -04:00
skwerlman
b47e262e7f limit gitlab builds to master (#2711) 2017-05-10 08:53:11 +02:00
woogerboy21
1811bad835 Fix room chat history (#2698)
Looks like an addition to the table shifted things.  We probably  should look into some how use the actual column names (if it can be done).  But for now this should fix the server room chat history.
2017-05-09 23:22:48 -04:00
tooomm
41ebf7a9ad space 2017-05-09 12:47:19 +02:00
tooomm
7f01f921f7 added dl count for latest release 2017-05-09 12:46:41 +02:00
Zach H
d347e54526 Merge pull request #2688 from backendr/ignore_first_server_message
Prevent emitting initial server message event
2017-05-08 19:46:17 -04:00
tooomm
256e40a9ee Merge branch 'master' into tooomm-dl_badges 2017-05-08 10:05:24 +02:00
Zach H
5f4490ec4e Merge pull request #2695 from Cockatrice/tooomm-hq_badges
updated badges (gitter+licence)
2017-05-07 18:54:45 -04:00
tooomm
2fb2481211 updated badges 2017-05-07 12:45:53 +02:00
tooomm
d585b9f1d6 http --> https 2017-05-06 21:47:22 +02:00
Zach H
c745f41cb9 Merge pull request #2692 from Cockatrice/tooomm-cmake_2.3.18
cmake - bump version number
2017-05-06 12:54:50 -04:00
tooomm
5b07f6d6d8 bump version number 2017-05-06 18:21:31 +02:00
tooomm
39779be7bb add alltime dl count 2017-05-06 16:03:27 +02:00
tooomm
70f1c97a27 github dl badges 2017-05-06 15:46:11 +02:00
Zach H
a49373eded Merge pull request #2686 from backendr/log_changes
Log Colors
2017-05-05 21:48:02 -04:00
backendr
55dcf4a845 Log refresh 2017-05-06 00:40:41 +02:00
backendr
b140721d50 Add flag for checking inital server message 2017-05-06 00:18:49 +02:00
Zach H
c96f234b6d Merge pull request #2683 from ctrlaltca/fix_2682
Remove unneeded debug
2017-05-05 13:42:02 -04:00
Fabio Bas
a4e78bbfa2 remove debug 2017-05-05 15:23:59 +02:00
Zach H
fd3d62284d Merge pull request #2670 from ctrlaltca/load_tokens
Improved token loading, removed card price code
2017-05-05 00:24:48 -04:00
Zach H
16bc8b764b remove all of pricing 2017-05-04 23:29:43 -04:00
Fabio Bas
36f6907fa3 Improved token loading 2017-05-04 23:28:51 -04:00
tooomm
339945e089 fix custom build + displaying name (#2668)
* fix custom build name

* remove html and argument from tr()
2017-04-30 16:20:29 +02:00
tooomm
faeb3f8daf fix 2017-04-30 15:17:03 +02:00
tooomm
e04010f00b further tweaks and uniform style 2017-04-30 15:06:32 +02:00
tooomm
cbd9d2c4fc better wording (#2674) 2017-04-29 22:15:43 -04:00
tooomm
fdc82708c6 extend updater description in menu (#2673) 2017-04-29 20:13:33 -04:00
tooomm
8f7691b47a next round 2017-04-29 22:55:49 +02:00
tooomm
ca2e3e5eab trial_error 2017-04-29 22:45:25 +02:00
tooomm
da42d9e049 fix 2017-04-29 22:32:07 +02:00
tooomm
f18679bfff fix attempt 2017-04-29 22:06:53 +02:00
tooomm
970b67cdb6 update message rework 2017-04-29 20:57:52 +02:00
ctrlaltca
3c5e38bd14 Hide some icons for spectators; fix #2589 (#2656)
* fix #2589

* Additional fix
2017-04-29 15:06:30 +02:00
ctrlaltca
b20c60e603 fix #2332 (#2650) 2017-04-29 12:21:37 +02:00
Zach H
12c9e4b81a allow placement below top X cards (#2666)
Close #2666
2017-04-27 20:32:24 -04:00
Zach H
7c1a18da5e Add "Random card from graveyard" (#2652) 2017-04-26 18:12:56 -04:00
ctrlaltca
df211748ca Add clear button to deck editor (#2654) 2017-04-26 15:20:35 -04:00
ctrlaltca
ce77d51a8f Fix crash on logger; make log window modalless (#2659) 2017-04-26 15:05:24 -04:00
tooomm
9dd3a04a08 improve provided info in "edit sets" (#2641) 2017-04-25 15:46:37 -04:00
Zach H
62d8f5a039 change cards from sb<->mb with double-click (#2606) 2017-04-25 14:05:25 -04:00
Fabio Bas
2c551bdd35 Revert "fix #2332"
This reverts commit 0fd77346df.
2017-04-25 19:35:07 +02:00
Fabio Bas
0fd77346df fix #2332 2017-04-25 18:58:01 +02:00
ctrlaltca
a46c7156dd fix_crash (#2649) 2017-04-25 18:13:45 +02:00
ctrlaltca
3c54499a40 sort edit sets better (#2648) 2017-04-25 11:40:47 -04:00
ctrlaltca
160d66d890 show tokens all sets (#2646) 2017-04-25 11:32:51 -04:00
ctrlaltca
3f3839d70a fix deck card backs (#2645) 2017-04-25 11:32:00 -04:00
ctrlaltca
ab94d2c91d Token Dialog Revamp (#2639) 2017-04-25 00:29:57 -04:00
ctrlaltca
8ad448a23c fix #2600 (#2638) 2017-04-25 00:29:32 -04:00
ctrlaltca
acb40bc738 Fix #2608; fix #2609; fix #2611 (#2636) 2017-04-24 22:20:44 +02:00
ctrlaltca
f2a887a6a4 fix #2623 (#2634) 2017-04-24 22:20:19 +02:00
ctrlaltca
29904c49da Specify reason when on game leave; fix #2624 (#2633)
* fix #2624

* feedback++
2017-04-24 22:20:08 +02:00
Fabio Bas
38ad71b06a fix ox compilation 2017-04-24 21:59:09 +02:00
Fabio Bas
7f057612bf possibily fix osx shortcut problem 2017-04-24 20:39:11 +02:00
ctrlaltca
9d2494e6e2 Update README.md adding link to guidelines; fix #2627 (#2635) 2017-04-24 15:52:30 +02:00
tritoch
23d27cff77 Handle 'aftermath' cards like 'split' cards (#2626) 2017-04-22 14:36:22 -04:00
Zach H
176ea444ba revert clear focus (#2619) 2017-04-21 17:52:14 +02:00
ctrlaltca
3e12a5f67f Update CONTRIBUTING.md (#2613)
* Update CONTRIBUTING.md

* Update CONTRIBUTING.md

"wait for CI upload" should be "wait for CI to upload"
"update again the version number" should be "update the version number again"
2017-04-21 14:26:55 +02:00
ctrlaltca
3356b2ede7 Change version in about window and installer name (#2570)
* Change version in about window and installer name

* Change version in about window and installer name

* Cmake get version updates

* dev snapshot format changed

* alignment changes
2017-04-20 13:41:18 +02:00
Zach H
5f3a3f535a clear focus only if needed (#2604) 2017-04-20 05:21:30 -04:00
Zach H
e2e9c5ab96 disable join if spec disabled (#2605) 2017-04-20 03:01:28 -04:00
skwerlman
dd36187864 fix header markdown in TODO.md (#2592) 2017-04-16 21:38:55 -04:00
Zach H
dc6c375220 clear focus when changing phases (#2583) 2017-04-15 14:37:01 -04:00
tritoch
2e9a0bdd4d Fix Pre-release / Dev build link (#2584) 2017-04-11 18:06:13 -04:00
Zach H
1413337b24 Add CONTRIBUTING note on making prereleases (#2576) 2017-04-07 20:59:06 -04:00
Zach H
3b7990b569 fix travis build (#2575)
* fix travis build

* rename dir
2017-04-07 14:41:33 +02:00
Zach H
657e1ac9e6 fix c style casting (#2561) 2017-04-05 15:45:58 -04:00
tooomm
ee154da598 clean transifex translations up (#2566) 2017-04-03 16:35:10 -04:00
Zach H
b3c1a87f60 better bool checking (#2564) 2017-04-01 21:29:23 -04:00
Mark McDonald
9cbae8c707 Decklist testing (#2537) 2017-04-01 01:24:16 -04:00
Zach H
ef7670a1e6 translation file updates (#2559)
* translation file updates

* translation updates
2017-03-31 15:29:43 -04:00
Zach H
d7e5b29d41 Dev channel to GitHub (#2557) 2017-03-31 14:47:49 -04:00
skwerlman
6d07709174 add .gitlab-ci.yml (#2345)
* add .gitlab-ci.yml

* Update to fix issues

fix artifact selection
fix rpm builds
mostly fix debian builds (still have cmake issue)
update to conform with #2373
combined rc and debug stages (more efficient as one stage)
add unused deploy section (can be finished/configured later)

* remove old bintray bits

* fix issues

simplify `mkdir` command
remove bintray deploy
2017-03-31 09:53:00 +02:00
Zach H
51230ade1a correct key (#2553) 2017-03-30 03:35:48 -04:00
tooomm
0e6c3c9561 better description for issue template (#2541)
* more general description for issue template

* fix

* rephrase

* remove part about filename

* fix typos
2017-03-29 11:12:31 -04:00
Zach H
56ec219808 appveyor key change (#2551) 2017-03-28 15:02:34 -04:00
Zach H
fab3d24757 Travis/Appveyor publish to GitHub Releases (#2550) 2017-03-28 13:37:59 -04:00
Zach H
87ebea7b0f fix memory leak (#2549) 2017-03-28 13:13:42 -04:00
tooomm
a273f55b6f exchange tr() for QString() (#2547) 2017-03-27 15:07:17 -04:00
Zach H
06c3edf4c6 cancel downloads from updater (#2534)
* cancel downloads from updater - fix #2534

* fix double popup
2017-03-25 16:35:43 -04:00
Gavin Bisesi
6f30304271 Change stable channel downloads to use only github api and links (#2515)
* Change stable channel downloads to use only github api and links

Ref #2502
2017-03-25 16:35:04 -04:00
tooomm
3374576831 fix toc (#2538) 2017-03-25 16:17:47 -04:00
Gavin Bisesi
54911eebc1 Merge pull request #2536 from Cockatrice/ReadmeUpdate-ZZ
Update README.md

[skip ci]
2017-03-24 16:42:22 -04:00
Zach H
b3563a897e Update README.md
Remove bintray
2017-03-24 16:40:08 -04:00
Gavin Bisesi
1879b906e5 Merge pull request #2532 from ZeldaZach/listover
Temp fix for crash on logging - QList instead of QVector hides whatever double-free bug we're causing
2017-03-24 15:51:26 -04:00
Zach H
559d4bd47f use list over vector 2017-03-23 00:45:52 -04:00
Gavin Bisesi
b99ae7f463 Merge pull request #2501 from Cockatrice/refactor-chatview
Remove direct usages of TabSupervisor from Chatview
2017-03-22 22:22:19 -04:00
Gavin Bisesi
f5a5ea0434 ChatView: Initialize fields in declared order 2017-03-22 21:52:15 -04:00
woogerboy21
2f23a9cb2f Smarter rooms (#2484)
* Added VIP only room

* Added DONATOR room.

* Extended Room to include privilege level.

* Updated room join logic

* Updated server tab permissions column display based on perm+privlevel definitions

* Fixed new client -> old server blank permissions column on server tab

Added the ability for registered user - VIP/DONATOR/PRIVILEGED room.
2017-03-22 21:45:16 -04:00
Zach H
317ac05919 logbuffer crash fix (#2524) 2017-03-22 21:39:16 -04:00
Zach H
f688c046ab Size constraints for Settings Dialog (#2513) 2017-03-22 21:25:40 -04:00
Zach H
141e6df50a Updater dialog changes (#2504) 2017-03-22 21:23:25 -04:00
Gavin Bisesi
8ac2a5870d Un-const non-pointer return types 2017-03-22 21:12:42 -04:00
Gavin Bisesi
a3f4012d1a Reduce TabSupervisor direct usage in UserContextMenu 2017-03-22 20:44:05 -04:00
Gavin Bisesi
c5aa75d4d1 Reduce data dependency for GamesProxyModel 2017-03-22 20:44:05 -04:00
Gavin Bisesi
d65a444ac5 Remove direct usages of TabSupervisor from Chatview
- There still might be inherited usages
- It's still used in the ctor

Areas to test
- Mentions
- Chat notifications
- Username clickable links
2017-03-22 20:44:05 -04:00
tooomm
2c3b85aed3 fix translators link (#1987) 2017-03-22 16:26:59 -04:00
Zach H
85985a9433 Add support for multi-selection in set editor (#2441) 2017-03-22 15:49:38 -04:00
woogerboy21
33e8a2ea95 Fix mysql appveyor (#2529) 2017-03-21 16:42:14 -04:00
Zach H
5ebc9ca360 allow auto connect (#2522) 2017-03-20 18:21:20 -04:00
Zach H
4feb43cdcc changes to connection dialog (#2503) 2017-03-19 20:24:58 -04:00
Zach H
b5b9527c13 Font size defaults (#2521) 2017-03-19 20:20:06 -04:00
Zach H
a2a7561613 allow max font size to be defined by user (#2488) 2017-03-19 14:13:20 -04:00
tooomm
1cc50b2793 remove travis deployment to bintray (#2516) 2017-03-19 12:58:31 -04:00
Zach H
2d401e4aba remove bintray deploy (#2511) 2017-03-19 12:56:16 -04:00
Zach H
0da2bdd7aa additional null checks in player, gameselector, remoteclient, log (#2514) 2017-03-19 12:55:55 -04:00
Zach H
212a7d00db better null checking decklist (#2510) 2017-03-18 20:56:49 -04:00
Zach H
3b2eff2551 file filenames so window updater works (#2500)
* file filenames so window updater works
2017-03-18 18:48:40 -04:00
Zach H
fb194db766 additional null checks & parsing (#2506)
* additional null checks & parsing
2017-03-18 18:48:23 -04:00
Zach H
127a91147c rename from update to check (#2505) 2017-03-18 18:46:19 -04:00
Zach H
2048aac387 STDout debugging (#2499) 2017-03-17 20:45:13 -04:00
Zach H
a8a4557738 auto_connect toggle fix (#2485) 2017-03-16 16:59:48 -04:00
Zach H
a7dbc2e1f6 Fix token window resize (#2480) 2017-03-15 15:53:57 -04:00
Zach H
4cfcca33db Server Connect Remade (#2452)
* Save multiple server configurations
* Each server has its own password/port storage

Close #2452
2017-03-14 17:51:51 -04:00
Zach H
37b43f9916 make settings size vary based on sizeHint() (#2472) 2017-03-14 17:48:02 -04:00
ctrlaltca
6e723b2a99 translations (#2469) 2017-03-14 00:04:26 +01:00
ctrlaltca
2817f54c96 Fix issues with new updater; fix #2465 (#2468)
* fix #2465
2017-03-13 23:21:15 +01:00
ctrlaltca
f9a025081a fix #2445 (#2458) 2017-03-12 18:23:58 +01:00
ctrlaltca
877a5ca3b1 fix_2449 (#2459) 2017-03-12 18:21:49 +01:00
ctrlaltca
0d34fc5df2 fix_2424 (#2461) 2017-03-12 18:21:30 +01:00
tooomm
72825c43ec rephrase missing feature setting (#2462) 2017-03-12 13:20:15 -04:00
woogerboy21
bf154559eb Reset idle timer when a message is sent. (#2456) 2017-03-12 11:52:43 +01:00
Zach H
bd850fa3ff create related token if you press the 'Token:' button (#2455)
* create related token if you press the 'Token:' button

* function set
2017-03-12 11:51:59 +01:00
Zach H
b2f2e9db8a make sure xml file is uploaded (#2440) 2017-03-07 12:48:07 -05:00
tooomm
88b4e768c4 Create pr template (#2447) 2017-03-05 16:44:29 -05:00
Zach H
638c5e25fa temp fix to downloading folders (#2442) 2017-03-04 22:36:35 -05:00
Mark McDonald
ba0029f448 Add note about opening issue before PR (#2443) 2017-03-04 13:45:16 -05:00
Zach H
c850ae98d8 add player numbers to in game (#2435) 2017-03-04 11:03:39 -05:00
Zach H
12539026c5 Webtrice set targets (#2439) 2017-03-04 11:03:22 -05:00
Zach H
18b8a0ef5c fix folder names (#2432) 2017-03-04 00:49:09 -05:00
tritoch
ab19a89cd2 Enable "Show Games" for Self Context Menu (#2437) 2017-03-04 00:48:35 -05:00
Zach H
6619612c30 fix buddy checkbox bug (#2434) 2017-03-04 00:48:16 -05:00
Zach H
b8334d0cd5 fix incorrect pawn icons (#2436)
* fix incorrect pawn icons
2017-03-02 22:26:10 -05:00
Zach H
cf08d1d267 Revert "Condensed Card Counter Context Menu" (#2433) 2017-03-02 17:47:15 -05:00
Zach H
2bad56f6b6 removal of p server (#2438) 2017-03-02 16:41:08 -05:00
ctrlaltca
160c4cea6b Translations (#2430) 2017-03-01 10:18:56 +01:00
ctrlaltca
7373819c32 Add release channels for autoupdater (#2362)
Fetch releases from github and find corresponding installers on bintray
2017-03-01 09:43:09 +01:00
Mark McDonald
b9cd942308 Add keybaord shortcut for creating related cards (#2426)
* Extract createCard from actCreateRelatedCard

* Merge related cards and reverse related cards before handling

* Add "Create all related cards" action to a card

* Stop displaying all related tokens if only one token is available

* Add shortcut for Creating all tokens related to selected card

* Extract method for adding related card actions

* Prefer foreach to index based iteration

* Guard against null cards, card menus, or cardInfos

* Remove QRegExp dependency from commonly depended header
2017-02-27 08:50:10 +01:00
Name Temporarily Hidden
c0e7d0c7c7 Removed font-size cap for on-card text (fixes bug: #2368) (#2427) 2017-02-26 23:20:54 -05:00
woogerboy21
d0088f6a18 Server audit table (#2423)
* Creating of server side audit table for auditing actions such as password resets, account registrations and log queries.

* Add migration script

Add migration script for database

* Update database script

Update database script to reflect new audit table

* Creating of server side audit table for auditing actions such as password resets, account registrations and log queries.

* Add migration script

Add migration script for database

* Update database script

Update database script to reflect new audit table

* Corrected results column possible value(s).

* Fixed migration script.

* Added boolean audit logic

Added enable/disable audit options
Added audit functionality for forgot password

* Added registration auditing

Added registration auditing

* Updated ActivateAccount Function

Created clientid variable and used it in preporation for future
potential protocol expansion.

* Extended activation protocol

Added clientid to activation command protocol

* Typo correction

Fix typo's

* Missed type fix

Found the infamous E!

* Updated database function syntax

Updated if/else syntax in db add audit function

* Untabify content

Untab files changed in PR
2017-02-25 13:48:31 -05:00
tritoch
3c2063df40 Update Custom PIcture URL to match wiki (#2422)
Wiki page was moved, link in settings points to old page.
2017-02-24 01:13:26 -05:00
Zach H
47cafde521 fix lowercase (#2419)
* fix lowercase

* fix changes

* fix .desktop

* servatrice .desktop
2017-02-23 08:53:18 +01:00
tritoch
884e604909 Reverse wording on logfilters description (#2421)
The `logfilters` setting was inverted.
Previously said it logged everything *except* listed strings,
but it actually logs *only* listed strings.
2017-02-21 14:39:00 -05:00
Mitchell Rosen
9ba3f21730 Fix indentation (and Debug build) (#2418)
* Fix indentation (and Debug build)

* More indentation fixes
2017-02-20 08:48:12 +01:00
skwerlman
24c95e00ed add RPM support to make package (#2373)
use like `cmake .. -DPACKAGE_GENERATOR=RPM`
defaults to DEB
2017-02-19 15:08:25 +01:00
ctrlaltca
651128257f Webclient: make account fields more user friendly (#2363)
* fix_2310

* Remove Gender

Removes gender
2017-02-19 15:07:51 +01:00
Zach H
172fc79327 fix crash if no trayicon found (#2415) 2017-02-19 14:52:44 +01:00
tritoch
90c62c8ab8 Add cockatric.es server (#2414) 2017-02-16 15:06:30 -05:00
woogerboy21
0cfa6863d5 Simpler forgot password functionality (#2393)
* Simpler forgot password functionality (Server/Client)
2017-02-15 17:41:40 -05:00
woogerboy21
b64eab204c Added custom notify user event (#2398)
* Added custom notify user event.

* Untabbify
2017-02-08 18:00:53 -05:00
woogerboy21
0fdb9b7c83 Added registration email blacklist (#2352)
* Added registration email blacklist

Added the ability to define email blacklist for user registration.  Now
server operators can prevent users from registering accounts that
contain providers they do not wish users to use.

* Update ini option for clarity

Updated servatrice ini option name for clarity.

* Updated description for clarity

Added implicit explination
2017-02-08 15:25:27 -05:00
tooomm
dab731656d updated mac wording (#2359) 2017-01-19 23:36:37 -05:00
ctrlaltca
ae5fc1fe2c Fix use of uninitalized value (#2364) 2017-01-16 21:06:35 +01:00
ctrlaltca
d45293489f Git: Force short commit hash length to 7 chars (#2361) 2017-01-15 08:12:05 -05:00
tritoch
bdb8e931b4 Registered + VIP + Buddy Gummy Update (#2336)
* Reg + Buddy + VIP

* Registered VIP Gold de-Star

Removed the star from VIP.  Changed gummy to all-gold.
2017-01-14 13:17:03 -05:00
poixen
784a75db02 Merge pull request #2349 from Cockatrice/priv_level
Added privlevel to User Details
2017-01-11 19:33:35 +01:00
poixen
cdeb1a7f9a Merge branch 'master' into priv_level 2017-01-08 09:40:21 +01:00
woogerboy21
a85b0dcbba Add email registration restriction (#2350)
* Add ability to limit number of account registrations with same email address

This commit adds server side functionality that will allow operators to
limit the number of accounts that can be registered to the server with
the same email address.

* Updated ini wording

Updated configuration file wording for better description.
2017-01-07 11:26:23 -05:00
poixen
93c7b1b846 Added priv level to user details
added priv level to user details

Fix #1881
This change allows the server operator to enable or disable the internal
SMTP client that sends activation emails.  With this new configuration
option server operators can choose to require email activation yet use
an external method of account verification and/or account token
notification.
2017-01-07 08:16:21 +01:00
woogerboy21
3e39432ccc Add configuration to enable/disable internal smtp client (#2337)
Fix #1881
This change allows the server operator to enable or disable the internal
SMTP client that sends activation emails.  With this new configuration
option server operators can choose to require email activation yet use
an external method of account verification and/or account token
notification.
2017-01-06 17:02:52 -05:00
woogerboy21
dbf7d7f748 Fix replay chatview with new gummys (#2340)
Fix #2334
This update fixes the violation that happens when watching replays to
determin the proper user privlevel in order to generate the correct
gummy.
2017-01-06 15:28:30 -05:00
poixen
847d959326 Merge pull request #2348 from Cockatrice/counters
Condensed Card Counter Context Menu
2017-01-06 20:07:52 +01:00
poixen
2d216807c7 Condensed counter menu 2017-01-06 19:07:31 +01:00
woogerboy21
f7c8651d51 Added privilege level start/end columns (#2328)
* Added privilege level start/end columns

Added 2 new columns to the users table to indicate when a users
privilege level date / time was recognised and when the privilege level
should end.

* Updated database header

Always forget about the database header file...

* Added priv level maintenance script

Added a bash maintenance script that can be run on a scheduled basis
that will demote privileged users that have the end times on the
accounts that are prior to the date/time the script is executed.

* Added donations table

Added donations table to db for tracking user donations
2016-12-30 16:45:28 -08:00
tooomm
62dc6dcb86 move docker instructions to 'running' (#2323) 2016-12-21 21:02:09 +01:00
woogerboy21
36e6da2abd Fix idle timeout warning on registration / login (#2322)
Fix #2319
This should resolve the issue of users getting the popup immediately when logging in and the time out value is set to 0.
This needs tested, its a quick fix put in with the web editor.
2016-12-20 16:15:16 -08:00
Zach H
3d0600b516 Tokens in sub menu (#2320) 2016-12-17 13:05:29 -05:00
Zach H
04779c2a77 protobuf warnings fixed (#2313) 2016-12-11 19:22:39 +01:00
tritoch
42fb17bdd2 Document '--config' parameter (#2311)
servatrice.ini can be passed to servatrice via the --config parameter.  I don't think this is documented anywhere.
2016-12-10 01:11:44 +01:00
woogerboy21
960ecaaeda New privuser gummys (#2305)
* New user gummys based on account privilege level

This change add's new user gummy icons for vip/donator priv levels that
are now available.

YaY for Zach!
2016-12-08 22:52:25 -05:00
Zach H
e0636db60d Recursively search CUSTOM folder for images (i.e. subdirectories) (#2251) 2016-12-08 11:00:44 +01:00
woogerboy21
c9a8dafd01 Update sessions table columns for consistency (#2299)
* Update sessions table columns for consistency

Fix #2276
This update changes two columns in the sessions table to match the
column declartations in the users table.

* Update servatrice.sql

Update servatrice.sql to reflect new db schema version
2016-12-08 10:43:11 +01:00
woogerboy21
c78eed576f Fix store replays (#2301)
* Fix Store Replays Functionality

For whatever reason we have a variable in the servers ini to
enable/disable the storing of replays but there is no code that uses
that variable.  At one time there was but in light of it being removed
some were along the line this add's the ability back in for server
owners to disable the storing of game replay data.

* Added code

* Moved store replay check

Moved the check for storing replay information into existing routine.

* Updated Per Request

Combined lines per request
2016-12-07 07:52:39 -05:00
woogerboy21
f86b9e0be7 Remedy connection type query at every login (#2298)
Fix #2285
This change adds an internal counter for each tcp/web socket connection
that the server makes and queries the stored memory count at login
rather than the previous way that quired the database during each login.
Each login that quired the DB put a significant load on the server as
the user base grew.
2016-12-07 01:35:35 -05:00
woogerboy21
a6f1f4c01d Add enable/disable log query functionality (#2294)
* Add enable/disable log query functionality

This change adds the ability for server owners to allow log querying
from inside the client.  In the event the functionality is not allowed a
result is returned indicating the functionality is disabled.

* Added translation

Added the ability for the disabled messages to be translated.
2016-12-06 15:37:36 -05:00
skwerlman
c90c4ea41f Delete aps file (#2296)
* Delete aps file

This is a VS cache file, and was probably committed accidentally.

* add aps to gitignore
2016-12-06 02:52:23 -05:00
woogerboy21
d039c9b6bd Add missing feature rememberance to client (#2275)
Fix #2249
Add the ability for the client to remember the missing features that it
received from the server it last connected to and not display the
"missing/optional feature" message at every login.
2016-11-29 15:50:00 -05:00
woogerboy21
f6e4ee9a4a Fix #2270 (#2271)
Fix #2270
Check userinfo first before trying to use it.
2016-11-09 14:40:18 +01:00
woogerboy21
6962777ded Rework idle timeout, now server side (#2259)
* Server side idle timeout

Initial commit for server side idle timeout counter.  This adds a new
int value that is updated when room/game/mod/admin commands occur and is
checked during the regular ping timout function that if the users new
"idle" value exceeds the idleclienttimeout value defined in the servers
configuration file the user is logged out.  The user will receive a
warning at the 90% time frame mark about being idle.

* Use round instead of ceil

Travis fix for older xcode issue's.

* Fixed requested items

Mis-spelleed function, added header, added warning message sent check
value.  Also corrected the protobuf declaration file for
event_notifyuser

* Moved bool to protected

* Re-Ordered Declarations

* Removed most stylistic items

Resolved most noted things.

* Remove client side idle timeout

Removed client side idle timeout functionality
2016-11-08 22:18:12 -05:00
woogerboy21
1cebe030f6 Fix one to many zero's (#2260)
Looks like I typo'd the default value for the number of seconds in 1
hour for the default client side idle time out.  This fixes it.
2016-11-02 01:26:00 -04:00
Jeff
a2f4fa916e Adds !corrected_name! and !corrected_name_lower! to customURL (#2255) 2016-11-01 00:13:39 -04:00
Zach H
9ebbd0c3ca travis osx 10.10 min (#2252) 2016-10-31 10:45:52 +01:00
woogerboy21
21a34eaaa1 Cleanup server running variable information (#2239)
* Created first round of helper functions

Started to go through server init function and move statically defined
variables that the server uses into helper functions to allow for
dynamic changing while the server is up rather than requiring a restart.

* Completed Helper Function Creation

Completed adding all the helper functions along with updated the virtual
server function calls and renamed helper functions to match settings
cached ini value names for clarity.

* Comment Cleanup

Removed lines commented out throughout previous changes as well as
cleaned up variable declarations that are no longer needed with helper
functions that query the settingsCache

* Added featureset dynamic refreshing

Added slots/functions/calls for updating the required feature sets
dynamically.

* Created first round of helper functions

Started to go through server init function and move statically defined
variables that the server uses into helper functions to allow for
dynamic changing while the server is up rather than requiring a restart.
2016-10-31 10:30:12 +01:00
Zach H
3498b16e01 update wordings (#2246) 2016-10-30 03:54:43 -04:00
ctrlaltca
a1840ea9d3 translations galore (#2245) 2016-10-29 11:31:35 +02:00
woogerboy21
63a4f147f4 Add client UI setting for idleclientdisconnect (#2244)
* Add client UI setting for idleclientdisconnect

Added disabled option in client UI for client disconnect.

* Updated settings text

Updated settings text for clarity.

* Updated descripton text (again)

Per request for clarity
2016-10-29 04:24:18 -04:00
Gavin Bisesi
dfc4d9937b Merge pull request #2243 from Cockatrice/remote-client-timer-from-featureset
Remove client idle timer flag from feature set
2016-10-28 18:08:07 -04:00
Gavin Bisesi
e67dfe05db Remove client idle timer flag from feature set
There's no protocol item at hand here so this isn't a protocol 'feature'
2016-10-28 18:04:29 -04:00
woogerboy21
f17a0da434 Added user privilege level (#2228)
* Update log path example when running under windows

Added example of log path syntax when running servatrice under windows.

* Missed example bra cket

* Added user privilege level

Added a enum column in the users table named "privilevel" with the
current values of "none", "vip", and "donator".  Also allowed anyone
with a higher privilege level than "none" to log in even if the server
is set to limit the user total and the user limit is reached.  This
change add's the new user information into the users container that gets
populated and passed between client and server.

* Added user privilege level

Added a enum column in the users table named "privilevel" with the
current values of "none", "vip", and "donator".  Also allowed anyone
with a higher privilege level than "none" to log in even if the server
is set to limit the user total and the user limit is reached.  This
change add's the new user information into the users container that gets
populated and passed between client and server.

* don't use corrected name when downloading card (#2164)

* Fix dynamic user limit settings

PR #2220 removed the ability to be able to change the max user limit
count while the server is running requiring a restart to make the
settings change.  This PR reverts the behavior back to how it operated
prior to the PR.

* Call class functions for consistency

Updated code to call functions for consistency.

* don't use corrected name when downloading card (#2164)

* Added user privilege level

Added a enum column in the users table named "privilevel" with the
current values of "none", "vip", and "donator".  Also allowed anyone
with a higher privilege level than "none" to log in even if the server
is set to limit the user total and the user limit is reached.  This
change add's the new user information into the users container that gets
populated and passed between client and server.

* Corrected Typo

Corrected typo in DB Migration Script

* Git fuckup?

* Added word column

Added the word column to migration script for backwards compatibility
2016-10-26 02:07:42 -04:00
woogerboy21
1197c10a70 Merge pull request #2236 from woogerboy21/fix_dynamic_user_limit
Fix dynamic user limit settings
2016-10-25 18:04:56 -04:00
woogerboy21
b060f4ea6b Call class functions for consistency
Updated code to call functions for consistency.
2016-10-24 08:05:33 -04:00
woogerboy21
749bc5d6f5 Fix dynamic user limit settings
PR #2220 removed the ability to be able to change the max user limit
count while the server is running requiring a restart to make the
settings change.  This PR reverts the behavior back to how it operated
prior to the PR.
2016-10-24 00:30:58 -04:00
ctrlaltca
b808d3824b don't use corrected name when downloading card (#2164) 2016-10-22 19:07:58 -04:00
woogerboy21
2dd7158802 Merge pull request #2227 from Cockatrice/servatricelogpathsyntaxexample
Update log path example when running under windows
2016-10-19 23:34:27 -04:00
woogerboy21
32d2fa13f6 Missed example bra cket 2016-10-19 19:26:06 -04:00
woogerboy21
05f90a74a4 Update log path example when running under windows
Added example of log path syntax when running servatrice under windows.
2016-10-19 19:24:44 -04:00
ctrlaltca
989c91f1d1 [ci skip] Don't send connection form when enter is pressed on the host autocompleter (#2225) 2016-10-18 14:47:54 +02:00
ctrlaltca
c3ef53d6fd Removed unused class (#2222) 2016-10-18 14:34:11 +02:00
woogerboy21
632a2db18e Merge pull request #2220 from woogerboy21/CleanupMaxUserCheck
Cleanup max user check at login
2016-10-17 09:38:30 -04:00
ctrlaltca
40468a79ea Merge branch 'master' into CleanupMaxUserCheck 2016-10-17 12:27:20 +02:00
Kevin Boxhoorn
0b7f4c134c Disallow usernames that contain certain words and RegExp (#2200)
* Add `disallowedwords` setting and perform check

Check if any of the words in `disallowedwords` are contained in the username. If
so, return false like other checks.

NOTE: Needs testing for advanced bugs.

* Remove "administrator" from `disallowedwords`

"administrator" contains "admin" anyway, so it is not needed.

* Add error message if username contains a disallowed word

* Add `disallowedregexp` setting and perform check

Check if each expression in `disallowedregexp` exactly matches the username. If
so, return false.

TODO: Add specific error to dialog in `window_main.cpp`.

* Add error message for username matching RegExp

* Fix indentation

* Compile `disallowedregexp` into a QList upon initialization

Reduces system load with each registration request.

* Clean up `isUsernameValid` function

* Fix indentation

* Add backwards compatibility to client

Client can accept either 7 or 9 rules to maintain compatibility with older
versions of server.

* Add examples and warnings to `servatrice.ini`
2016-10-17 12:24:42 +02:00
woogerboy21
10b677acdf Cleanup max user check at login
This change accomplishes two goals.  The first is it moves the checking
for if the servers set user limit is reached out of the socket interface
and into the protocol handler portion of the code (were it should live).
It also eleminates the need for a DB query at login to check the user
count.  The user account is actually already maintained by the server
and a function already existed to get the user count total.
2016-10-16 12:48:39 -04:00
ctrlaltca
f20e2ce2bd Merge pull request #2185 from tritoch/pending-mtgjson-Ae
Pending mtgjson/gatherer Æ-->Ae conversion
2016-10-14 14:07:19 +02:00
tritoch
696b11475e Merge pull request #2 from Cockatrice/master
Bring current
2016-10-13 16:05:40 -05:00
woogerboy21
a4b1a79cd4 Merge pull request #2195 from wincinderith/login-error-fix
Prevent login error handler being incorrectly called
2016-10-11 11:33:48 -04:00
Kevin Boxhoorn
1cbf67ab57 Merge branch 'master' of https://github.com/Cockatrice/Cockatrice into login-error-fix 2016-10-10 20:52:58 +11:00
woogerboy21
89ceb889e0 Merge pull request #2209 from woogerboy21/inactivetimeout
Idle Client Timeout Functionality
2016-10-09 14:40:53 -04:00
woogerboy21
7af2f3f057 Idle Client Timeout Functionality
Added the functionality client side to log users out of servers if they
are idle for more than 1 hour without joining either a game or room.
Sending a message (room/game/private) or performing a game action.
2016-10-09 13:55:07 -04:00
Kevin Boxhoorn
000f6ea2c0 Merge branch 'master' into login-error-fix 2016-10-06 20:39:46 +11:00
ctrlaltca
e4127fead3 Merge pull request #2199 from wincinderith/load-remote-fix
Disable "Load remote deck..." button in local game
2016-10-05 14:25:50 +02:00
ctrlaltca
d8f7c57eff Fixed travis build on osx 2016-10-05 14:24:50 +02:00
Kevin Boxhoorn
2376a7dbc0 Make isLocalGame const 2016-10-05 09:43:22 +11:00
Kevin Boxhoorn
c1aebc1af5 Fix member variable initialization order 2016-10-03 13:16:16 +11:00
Kevin Boxhoorn
3680f40981 Disable "Load remote deck..." button in local game 2016-10-03 12:36:18 +11:00
Kevin Boxhoorn
2a7fc827f4 Add getIsLocalGame to TabGame 2016-10-03 12:33:40 +11:00
Kevin Boxhoorn
6825486776 Prevent login error handler being incorrectly called (#2176)
In some situations, when the server disconnects the client during a login,
multiple dialogs will be shown. This is undesirable behavior, and hence
`loginError` should only be called when the client is actually connected
(`response.response_code() != Response::RespNotConnected`).
2016-09-29 12:21:06 +10:00
tooomm
a7a0ea23ca removed tr() for URLs (#2190) 2016-09-25 19:28:34 -04:00
tritoch
85063859e0 Pending mtgjson/gatherer Æ-->Ae conversion
This is to prepare for when mtgjson converts all Æ cards to 'Ae'.  Formerly it was 'AE'.
2016-09-23 09:23:47 -05:00
tritoch
b23a53eb1e No "Ae" --> "AE" translate (#2182) 2016-09-23 00:03:38 -04:00
Zach H
6c7ba06930 add pow/toughness filters (#2169) 2016-09-20 18:17:53 -04:00
ctrlaltca
65c98c8422 Merge pull request #2179 from ctrlaltca/fix_gtest
fix google tests
2016-09-20 22:39:35 +02:00
ctrlaltca
c4bb16e74b Merge pull request #2175 from Cockatrice/add_new_pub_server
add mtg.tetrarch.co server
2016-09-20 22:28:54 +02:00
ctrlaltca
54cc0c2af6 Merge pull request #2178 from ctrlaltca/translations
Updated translations
2016-09-20 22:27:17 +02:00
Fabio Bas
0e8206a36f Updates translations 2016-09-20 22:23:36 +02:00
Fabio Bas
018a4736c6 fix google tests 2016-09-20 21:50:32 +02:00
tooomm
8b1aaea79d add mtg.tetrarch.co server
added `mtg.tetrarch.co` server hosted by @skwerlman to the in-client default list
2016-09-20 21:18:58 +02:00
ctrlaltca
7f28a7e844 Fix #601; Fix #725 (#2126)
Analyze deck on tappedout
Fix small bug in deckstats interface
2016-09-02 01:34:56 -04:00
ctrlaltca
680277ad6a fix #2129 (#2132)
Remove selection move at all
2016-08-31 14:13:30 -04:00
Gavin Bisesi
bf4fba6bc5 Readme: Reference "easy" changes issue tickets (#2157) 2016-08-31 14:13:13 -04:00
ctrlaltca
8571815cbd Merge pull request #2134 from ctrlaltca/fix_1992
Renamed !setnumber! to !collectornumber!
2016-08-27 10:02:58 +02:00
Fabio Bas
ae456a5bc3 Renamed !setnumber! to !collectornumber! 2016-08-20 10:27:23 +02:00
ctrlaltca
da2eb97c7b Merge pull request #2125 from ctrlaltca/fix_1762
Fix clipboard behavior in deck editor and game
2016-08-10 09:23:33 +02:00
ctrlaltca
ac841ee2c6 Merge pull request #2117 from ctrlaltca/fix_2088
Webclient: misc improvements (was: parse html in server message)
2016-08-09 11:14:01 +02:00
Fabio Bas
c321227fa7 Fix clipboard behavior in deck editor and game 2016-08-09 11:13:36 +02:00
Fabio Bas
a68df3611b Fix #2088
Add an autocomplete with known server names to the connect dialog;
Added support for server messages (identification, shutdown, user
warning and promotion)
Connection dialog’s inputs are now wider
Only declare implemented client features
Added check for protocol version on connect before login
Avoid listbox being rendered as dropdown on mobiles
2016-08-09 10:39:03 +02:00
ctrlaltca
0f0f9a1246 fix #2118 (#2119) 2016-08-02 21:58:56 -04:00
ctrlaltca
1834e09c0f Merge pull request #2115 from Cockatrice/single_game_types
Radio buttons for game types
2016-07-30 10:31:04 +02:00
poixen
0df4b34fe4 radio buttons for game types 2016-07-27 21:21:28 +02:00
ctrlaltca
8644016d3c Merge pull request #2114 from ctrlaltca/fix_2107
Webclient: Fix room closing on disconnect
2016-07-26 12:50:39 +02:00
Fabio Bas
8eb36fa2f1 fix #2107 2016-07-26 12:49:07 +02:00
woogerboy21
deb6d4dec6 Merge pull request #2111 from woogerboy21/fix_serv_sql_file
Corrected servatrice.sql file room table entries that were missed
2016-07-25 01:19:14 -04:00
woogerboy21
5002c293c7 Corrected servatrice.sql file room table entries that were missed 2016-07-25 01:01:35 -04:00
ctrlaltca
2cbfc5a8e6 Merge pull request #2096 from ctrlaltca/fix_2091
Fix infinite loop on local game close
2016-07-24 12:29:03 +02:00
mlowe
f87f677cad Merge pull request #2103 from Cockatrice/space
More screen space
2016-07-22 15:07:54 +02:00
woogerboy21
569ae87cbe Merge pull request #2101 from woogerboy21/remove_news_table
Remove news table (cleanup)
2016-07-21 23:29:53 -04:00
poixen
f2cd276e5f more screen space 2016-07-21 20:06:45 +02:00
woogerboy21
1c1192c525 Update maint script files 2016-07-21 10:38:46 -04:00
woogerboy21
b39a18b446 Remove unused news database table 2016-07-21 10:30:38 -04:00
woogerboy21
c04298fb43 Merge pull request #2087 from woogerboy21/client_id_nametoip_fix
Client id nametoip fix
2016-07-21 10:20:16 -04:00
woogerboy21
8060c8f37b Merge pull request #2099 from woogerboy21/serverid_roomdbgtable_fix
Servatrice rooms table respect Server ID
2016-07-21 09:54:20 -04:00
woogerboy21
63bf0029aa Updated client id generation to use host ip rather than name 2016-07-21 09:20:28 -04:00
woogerboy21
600a8e8c60 Update servatrice to respect server id when doing room information lookups 2016-07-21 09:09:06 -04:00
mlowe
a83816f858 Merge pull request #2100 from Cockatrice/connect_dlg
Updated connect dlg
2016-07-21 14:35:34 +02:00
poixen
8d989ca7fb updated connect dlg 2016-07-21 11:45:11 +02:00
Fabio Bas
d61d9c98a0 Avoid locking on local server shutdown 2016-07-20 16:53:57 +02:00
ctrlaltca
b28b174056 Merge pull request #2097 from ctrlaltca/fix_shutdown
Remove additional minute in server shutdown
2016-07-19 13:21:33 +02:00
Fabio Bas
36e62df67d Remove additional minute 2016-07-19 11:57:11 +02:00
Zach H
d82564d84c Shutdown timer changes (#2084)
* change msg popup time from 10min to 30min

* countdown at half time

* simplify math

* move shutdown after checks
2016-07-15 14:02:40 -04:00
mlowe
3365e0461c Merge pull request #2083 from Cockatrice/connect_dlg
updated login
2016-07-15 16:46:39 +02:00
poixen
69e8db441c updated login 2016-07-15 15:41:51 +02:00
ctrlaltca
0939cd8b21 Merge pull request #2082 from ctrlaltca/fix_2081
Remove newlines from Deck name in TabDeckEditor
2016-07-15 11:14:13 +02:00
Fabio Bas
b0efcf9f89 Remove newlines from Deck name in TabDeckEditor 2016-07-15 10:57:42 +02:00
Zach
81006d5342 Merge pull request #2080 from ZeldaZach/fix_reset
show buddyOnly on filter clear
2016-07-14 17:39:25 -04:00
Zach H
edd50a7571 show buddyOnly on filter clear 2016-07-14 16:56:17 -04:00
ctrlaltca
cbff59ae59 Merge pull request #2078 from skwerlman/patch-1
fix typo in sample servatrice ini
2016-07-14 09:06:47 +02:00
skwerlman
deb8a2c954 fix typo in sample servatrice ini 2016-07-14 03:01:11 -04:00
ctrlaltca
0c731e378a Merge pull request #2077 from ctrlaltca/webclient_ui
Some web client UI fixes
2016-07-13 09:01:33 +02:00
Fabio Bas
1a38e4ef98 Some web client UI fixes 2016-07-12 23:15:42 +02:00
mlowe
8cd5803556 Merge pull request #2071 from Cockatrice/game_view_time
Game Viewer Update
2016-07-12 11:34:44 +02:00
poixen
a729b1c966 updated game created coloumn text 2016-07-12 09:31:27 +02:00
tooomm
8ac1469fdb typo fix 2016-07-10 11:05:54 +02:00
ctrlaltca
a11e57503e CONTRIBUTING: Syntax highlight, protobuf 2016-07-10 11:01:15 +02:00
ctrlaltca
35df6485ab CONTRIBUTING: C++11, nullptr, Database migrations 2016-07-10 10:47:19 +02:00
ctrlaltca
d4ced6f6af Merge pull request #2067 from ctrlaltca/fix_2066
Fix compilation warning
2016-07-09 10:31:55 +02:00
Fabio Bas
430f1baf2f make gcc an happy puppy 2016-07-09 10:18:12 +02:00
tooomm
e29230953d Changes to recommended DL + chat link (#2064)
* Changes to recommended DL + chat link
* wording update
2016-07-08 21:07:41 +02:00
ctrlaltca
6a152ffbac Merge pull request #1991 from ctrlaltca/websockets
Implementation of websockets in servatrice and test js client
2016-07-05 14:45:31 +02:00
ctrlaltca
07bc215b3e Merge pull request #2021 from ZeldaZach/color_list
Colors to deck editor
2016-07-05 14:45:09 +02:00
mlowe
b64ff6f930 Merge pull request #2052 from Cockatrice/metion_fix
Fixed mention bug
2016-07-04 21:06:19 +02:00
poixen
3717c7440a Fixed mention bug 2016-07-04 20:23:32 +02:00
ctrlaltca
066aff96d7 Merge pull request #2049 from Cockatrice/filterBuddiesOnly
filter buddies only
2016-07-03 23:08:44 +02:00
poixen
089edc53d0 filter buddies only 2016-07-03 21:48:21 +02:00
Gavin Bisesi
e038534a51 Merge pull request #2045 from Cockatrice/timestamps
added additional timestamps in game
2016-07-02 19:49:34 -04:00
Gavin Bisesi
b61e023267 Merge pull request #2047 from Cockatrice/autoadmin
Enable admin features on login and remove "are you sure" prompt
2016-07-02 19:49:02 -04:00
poixen
2a11466779 auto admin 2016-07-02 22:34:45 +02:00
poixen
60f457827f added more in game timestamps 2016-07-02 21:45:38 +02:00
Zach
277d7e2173 Merge pull request #2039 from Cockatrice/tooomm-log_dlg_title
log ui window: title change
2016-06-30 11:32:28 -04:00
tooomm
c095daa282 log ui window title change
While translating I realized that `View Debug Log` for the menu is perfectly fine, the dialog window should just say `Debug Log` though...
2016-06-30 17:15:37 +02:00
ctrlaltca
7f2e39500e Merge pull request #2038 from ctrlaltca/translations
Translations update
2016-06-30 15:27:55 +02:00
Fabio Bas
670f55bc28 Translations update 2016-06-30 15:26:52 +02:00
ctrlaltca
a045cf1c41 Merge pull request #2037 from Cockatrice/tooomm-tx_charts
readme: fix transifex charts
2016-06-30 11:22:38 +02:00
tooomm
b032f71b22 fix transifex charts 2016-06-30 10:33:48 +02:00
ctrlaltca
9807bcb48f Merge pull request #2025 from ctrlaltca/logui
Log UI
2016-06-29 13:56:46 +02:00
ctrlaltca
60ada0c278 Merge pull request #2036 from ctrlaltca/fix_2031
Fix openssl detection on win64
2016-06-29 13:54:59 +02:00
Fabio Bas
204f351a61 Fix openssl detection on win64 2016-06-29 09:53:50 +02:00
Fabio Bas
8db10be892 Log UI 2016-06-27 22:18:39 +02:00
Fabio Bas
5b21dc8cde Implementation of websockets in servatrice and test js client 2016-06-26 19:38:53 +02:00
ctrlaltca
c19f225806 Merge pull request #2015 from Cockatrice/tooomm-tr_tags
fix hardcoded strings
2016-06-26 18:52:37 +02:00
ctrlaltca
7282aa7eea Merge pull request #2014 from Cockatrice/tooomm-patch-1
properly differentiate between singular and plural
2016-06-26 18:52:17 +02:00
Gavin Bisesi
e81a6d497b Don't mention-bot Psithief
per request
2016-06-21 08:49:32 -04:00
Zach H
79fc24769a Colors to list 2016-06-21 00:48:03 -04:00
ctrlaltca
287bed7e6d Merge pull request #2016 from Cockatrice/tooomm-fix_travis_compile
fix travis debug error
2016-06-17 18:12:16 +02:00
tooomm
85c6bcdfa7 fix travis debug error
introduced in https://github.com/Cockatrice/Cockatrice/pull/2011
2016-06-17 17:34:07 +02:00
tooomm
57f9b2c200 add tr() tags 2016-06-17 17:03:42 +02:00
tooomm
1782096805 add tr() tags 2016-06-17 16:56:08 +02:00
tooomm
bfbbedd604 pluralisation 2016-06-17 16:12:41 +02:00
ctrlaltca
f6a3551168 Merge pull request #2011 from ctrlaltca/fix_2010
Fix some translation issues
2016-06-15 22:18:34 +02:00
Fabio Bas
1bc56e1c86 Fix some translation issues
Fix #2010
2016-06-15 22:17:31 +02:00
ctrlaltca
b40d9da01d Merge pull request #2002 from Cockatrice/1977-version-check
Check for x86/x86_64 update version on windows.
2016-06-13 08:49:35 +02:00
Gavin Bisesi
82742bbd47 Require Qt >= 5.4 on Windows 2016-06-11 15:53:52 -04:00
Gavin Bisesi
f7d1802390 Check for x86/x86_64 update version on windows.
Fix #1977
2016-06-08 18:13:01 -04:00
Gavin Bisesi
0baccd3c00 Merge pull request #2000 from ZeldaZach/fix_1946
Add set names to dialog
2016-06-04 16:36:10 -04:00
ctrlaltca
d51a6c1ae7 Merge pull request #2003 from ctrlaltca/appveyor_nsis
Appveyor updates
2016-06-04 17:26:46 +02:00
Fabio Bas
016601bdc2 Appveyor updates 2016-06-04 15:24:17 +02:00
tooomm
4e198bdf70 Merge pull request #2001 from tooomm/tooomm-patch-1
typo fix
2016-06-03 21:25:29 +02:00
tooomm
32f8eb308a typo fix
`Toogle untap` --> `Toggle untap`
2016-06-03 20:22:03 +02:00
Zach
47de7beac1 Merge pull request #1999 from ZeldaZach/fix_1476
Prevent no games from showing
2016-06-01 02:25:41 -04:00
Zach H
1ff98cfcb4 Add set names to dialog 2016-05-31 20:29:00 -04:00
Zach H
c25eae9d23 Prevent no games from showing 2016-05-31 19:16:05 -04:00
Zach
e50c2014d1 Merge pull request #1998 from ZeldaZach/rarity_filter
Add rarity filter to deck editor
2016-05-31 10:10:23 -04:00
Zach H
829c96673b Add rarity filter to deck editor 2016-05-31 03:33:56 -04:00
Gavin Bisesi
4ffec331dc Merge pull request #1995 from tooomm/tx_logo
new tx logo
2016-05-28 12:27:38 -04:00
tooomm
dff5d89beb new tx logo
overall redesign of the page and their logo and colors
see https://www.transifex.com/blog/2016/new-transifex/
2016-05-28 17:28:23 +02:00
ctrlaltca
cf3e172d25 Merge pull request #1981 from MarkyMarkMcDonald/feature/create-token-dialog-uses-name-as-search
Create token dialog uses name as search
2016-05-17 21:49:49 +02:00
ctrlaltca
575376403f Merge pull request #1985 from ctrlaltca/p_1405
Use QCommandLineParser instead of by-hand parsing.
2016-05-16 22:09:22 +02:00
Gavin Bisesi
089acfd84a Use QCommandLineParser instead of by-hand parsing.
This will be more flexible for future CLI options
2016-05-16 22:07:29 +02:00
ctrlaltca
36470c5061 Merge pull request #1979 from ctrlaltca/make_qt5_great_again
Drop Qt4 and other dependencies
2016-05-16 21:48:24 +02:00
Gavin Bisesi
fffc3e7e00 Merge pull request #1982 from Cockatrice/mention-bot-config
Update mention-bot config to remove comments
2016-05-12 10:14:46 -04:00
Gavin Bisesi
114537445d Update mention-bot config to remove comments
It doesn't seem to be respecting the `userBlacklist` field, judging by https://github.com/Cockatrice/Cockatrice/pull/1981#issuecomment-218639352

Ref https://github.com/facebook/mention-bot/issues/117
2016-05-12 10:12:22 -04:00
Mark McDonald
8dd8b434b2 Make "create token" dialog's card name a filter
* There is a circular update loop I had to cut off where the name field
  updates the filter and then the currentRowChanged signal is firing without a row.

* I chose to make a private method to show intent instead of relying on
  other QLineEdit methods (textEdited) that don't fire signals.

* Some other shenanigans may be at hand that are causing this
  workaround, but my familiarity with Qt is pretty low.
2016-05-11 21:42:52 -04:00
Mark McDonald
7bc14b594d Include card name criteria when filtering token database model. 2016-05-11 21:42:52 -04:00
Mark McDonald
d12c86d89c Separate search's card name matching out from token filter check
* Trying to eventually reuse card name filtering in "create token"
  dialog
2016-05-11 21:42:52 -04:00
Fabio Bas
bb5292aa8d Drop Qt4, libgcrypt, qtmobility dependencies 2016-05-11 12:45:58 +02:00
Zach
e3fb308ea1 Merge pull request #1974 from ZeldaZach/fix_updater
fix updater from bintray api issue
2016-05-08 15:08:50 -04:00
Zach H
0163d7af99 fix if/else 2016-05-08 03:35:18 -04:00
Zach H
449982553a remove qt4 check, not needed 2016-05-07 21:51:37 -04:00
Zach H
d46cdd8044 fix updater from bintray api issue 2016-05-07 21:28:45 -04:00
ctrlaltca
2ab320923f Merge pull request #1970 from ctrlaltca/translationz
Updated translations
2016-05-06 13:19:43 +02:00
Fabio Bas
01e467fa98 Updated translations 2016-05-06 13:17:20 +02:00
Zach
7d0d0f4ea9 Merge pull request #1969 from tooomm/patch-3
remove numbers from the dice roll translatable strings
2016-05-05 02:10:20 -04:00
tooomm
a42ef63ec4 removed bracket leftovers 2016-05-04 23:41:09 +02:00
tooomm
a93bef1de5 fix #1833
remove numbers from the dice roll translatable strings
2016-05-04 23:21:52 +02:00
Gavin Bisesi
ff1091ac02 Merge pull request #1962 from Cockatrice/mention-bot-config
Create .mention-bot
2016-04-27 14:50:49 -04:00
Gavin Bisesi
a4359244bc Create .mention-bot
Don't tag brukie for code review
2016-04-27 14:48:40 -04:00
ctrlaltca
c213b67fc4 Merge pull request #1959 from ctrlaltca/translations
Update translations
2016-04-25 18:47:08 +02:00
Fabio Bas
af3b4ded22 Update translations 2016-04-25 18:45:24 +02:00
ctrlaltca
6bebbf284f Merge pull request #1955 from leematos/gender-neutral
Make client gender neutral
2016-04-25 17:18:25 +02:00
Lee Matos
c01d526161 make client gender neutral 2016-04-21 03:44:39 -04:00
Zach
2e3966afce Merge pull request #1949 from tooomm/patch-3
changed issue link + new user explanation
2016-04-16 19:59:15 -04:00
tooomm
5b4a774725 changed issue link + new user explanation 2016-04-16 10:40:57 +02:00
Zach
11dfee404d Merge pull request #1948 from ctrlaltca/deb_svg 2016-04-15 12:39:16 -04:00
Fabio Bas
a92b2ba600 CMake: add Qt-Svg to dependencies 2016-04-15 17:56:04 +02:00
Zach
d75d69400f Merge pull request #1944 from ctrlaltca/fix_1942 2016-04-14 15:10:52 -04:00
Fabio Bas
a340d25077 Fix #1942 2016-04-14 14:36:46 +02:00
ctrlaltca
768a1c5fb4 Merge pull request #1939 from ctrlaltca/fix_appveyor
Appveyor: stick with a known working nsis version
2016-04-12 23:08:49 +02:00
Fabio Bas
993cbf5ae9 Appveyor: stick with a known working nsis version 2016-04-12 22:05:30 +02:00
ctrlaltca
6f84f921f3 Merge pull request #1933 from tooomm/patch-3
docker - tweaks and link to wiki
2016-04-11 19:46:49 +02:00
tooomm
44d34673f4 docker - tweaks and link to wiki
added paragraphs for better readability
link to wiki on how to use docker

(also reordered the running part, call it alphabetically or most important part on top... both apply :P )
2016-04-11 19:38:45 +02:00
ctrlaltca
03af9afe17 Merge pull request #1930 from ctrlaltca/fix_1929
Fix calculation of card info popup size
2016-04-11 19:22:20 +02:00
ctrlaltca
cb29e0a057 Merge pull request #1931 from ctrlaltca/docker
Updated Dockerfile and doc
2016-04-11 19:04:06 +02:00
Fabio Bas
a72f9af984 Updated Dockerfile and doc 2016-04-11 18:51:44 +02:00
Fabio Bas
14d731da98 fix calculation of card info popup size 2016-04-11 17:07:07 +02:00
ctrlaltca
4f30b5cd31 Merge pull request #1921 from ctrlaltca/number
Implemented !setnumber!
2016-04-11 15:16:25 +02:00
ctrlaltca
73da10e485 Merge pull request #1919 from ctrlaltca/fix_1918
Fix english language in options
2016-04-11 15:16:02 +02:00
Gavin Bisesi
b4d572158d Merge pull request #1926 from tooomm/issue_template
Update ISSUE_TEMPLATE.md
2016-04-09 21:56:36 -04:00
tooomm
963e5d7f33 Update ISSUE_TEMPLATE.md
see https://github.com/Cockatrice/Cockatrice/pull/1914
2016-04-09 20:54:51 +02:00
Fabio Bas
8c17e2d12a Implemented !setnumber!
fix #1741
2016-04-08 22:22:22 +02:00
ctrlaltca
8d67c75028 Merge pull request #1920 from ctrlaltca/fix_1915
Fix card mention in chat
2016-04-08 21:54:22 +02:00
Fabio Bas
c7061523e6 fix #1915 2016-04-08 19:48:29 +02:00
Fabio Bas
2e7298d064 Fix english language in options 2016-04-08 19:34:28 +02:00
ctrlaltca
948a5c62ef Merge pull request #1910 from ctrlaltca/translations
Translations update
2016-04-05 19:36:24 +02:00
Fabio Bas
e9736d298e Translations update 2016-04-05 19:35:24 +02:00
ctrlaltca
4691f3e2c5 Merge pull request #1906 from ctrlaltca/fix_1903
Token dialog: disable progressive loading
2016-04-05 08:30:32 +02:00
ctrlaltca
2b138cce93 Merge pull request #1900 from ctrlaltca/dbview
Save deck editor's database view columns state
2016-04-05 08:29:46 +02:00
ctrlaltca
ef62261e43 Merge pull request #1901 from ctrlaltca/carddb_loading
CardDb: be permissive when loading xmls
2016-04-05 08:29:06 +02:00
Fabio Bas
2a3701b036 fix #1903 2016-04-03 18:33:10 +02:00
Fabio Bas
ce56e5f1a4 CardDb: be permissive when loading xmls 2016-04-03 11:15:16 +02:00
Fabio Bas
58f85e7ebd Save deck editor's database view columns state 2016-04-02 09:38:34 +02:00
ctrlaltca
f217551f5f Merge pull request #1877 from Psithief/patch-2
Prevent PTColumn from being the last column shown.
2016-03-30 22:55:49 +02:00
ctrlaltca
55f3e9314b Merge pull request #1859 from ctrlaltca/carddb
Rework some parts of the card database
2016-03-30 22:55:36 +02:00
ctrlaltca
830a4c2f56 Merge pull request #1894 from woogerboy21/clientid_update
Updated ClientID Functionality
2016-03-30 22:55:17 +02:00
woogerboy21
44123b9b0b Untabify
Yay!  Figured out how to do this in VS2015!
2016-03-30 15:30:58 -04:00
woogerboy21
506ad91b03 Privatized Function
Moved the updated hashing function out of the settingscache and into the
remoteclient and privatized the function for proper use.
2016-03-29 22:00:42 -04:00
woogerboy21
ee849f6379 Updated ClientID Functionality
ClientID is now generated on startup and stored in settings cache.  Then
upon connect there is a new SrvClientID generated from the ClientID +
servername being connected to
2016-03-29 17:05:25 -04:00
Fabio Bas
e94f59d7c2 Crash fix 2016-03-22 17:07:45 +01:00
Gavin Bisesi
3c58003a3d Merge pull request #1880 from leematos/patch-1
Remove "Ghost" Toolbar
2016-03-22 08:14:36 -04:00
Lee Matos
9f3b50086d Remove "Ghost" Toolbar
I'm working on a theme and realized we have a toolbar that used to be used for price, which we no longer display. I removed the code (and the unused price code action) as we weren't using either.
2016-03-21 21:27:38 -04:00
Fabio Bas
2d2958e931 cmake: Enable c++11 for all targets 2016-03-21 13:09:56 +01:00
Fabio Bas
a55b3784eb cmake: Enable c++11 for all targets 2016-03-21 11:42:38 +01:00
Fabio Bas
18993b397b First test for card database: loading and clear 2016-03-21 11:08:14 +01:00
Psithief
ba3a9f83bc Prevent PTColumn from being the last column shown.
P/T column is really narrow. It should go before Card Type, so Card Type can expand into the remaining space.

Improves #1671, assuming I got this correct.

Untested!
2016-03-19 19:55:57 +08:00
Fabio Bas
df393638ed Small Fix 2016-03-18 21:18:48 +01:00
ctrlaltca
535e19f8b8 Merge pull request #1866 from ZeldaZach/fix_1860
Prevent trayIcon Null Crash
2016-03-18 21:03:54 +01:00
Zach H
27969b6752 prevent null crash 2016-03-18 14:25:29 -04:00
ctrlaltca
41494b49dd Merge pull request #1873 from ctrlaltca/serva_emailz
Servatrice: Split requireemail into requireemail and requireemailaction
2016-03-18 18:59:17 +01:00
Fabio Bas
68e2fb912f Servatrice: Split requireemail into requireemail and requireemailactivation 2016-03-17 16:22:42 +01:00
Fabio Bas
1e3fb6c6e1 Rework "paths" settings loading and card database loading
* main.cpp: removed path checking and db loading
 * card database: merge card loading methods into a single one
 * settings cache: take care of returning safe paths for decks,
replays, etc..
 * main window: if db loading fails (eg. first run), propose to run
oracle

NSIS: propose to run cockatrice instead of oracle

Rework card database loading

 * Move carddatabase-related method out of deckeditor tab
 * Load cards in another thread and render them progressively
 * Optimize database reload after enabled sets change

Fix deck editor column width

 * removed the noCard hack.
 * getCard() no more creates cards instead of just returning existing
ones
 * Fix the “edit tokens” dialog.
 * PictureLoader: avoid trying to download twice the same card
 * PictureLoader: correct return of card background
 * AbstractCardItem: avoid recalculating card color at every paint

Use a different file to save custom tokens

Misc required improvements

 * Use nullptr;
 * Refactor CardInfoWidget to use CardInfoPicture and CardInfoText
instead of duplicating code;
 * Added CardInfo::getColorChar()
 * Fixed some potential crashes
 * removed dead code related to CardInfoWidget
 * Don't require a restart after adding a new custom sets file
 * Bump CMake requirements to 3.1
2016-03-15 22:27:55 +01:00
ctrlaltca
cbea43267e Merge pull request #1850 from ctrlaltca/fix_win_mysql
Fix mysql plugin deploy on windows
2016-03-08 16:12:22 +01:00
Fabio Bas
62cb89d224 Fix mysql plugin deploy on windows 2016-03-08 12:54:04 +01:00
woogerboy21
0b8f52e084 Merge pull request #1836 from Cockatrice/mysql57update
Added MySQL 5.7 lib path to servatrice CMAKE
2016-02-28 17:48:09 -05:00
woogerboy21
3ba3f1e2a7 Added MySQL 5.7 lib path to servatrice CMAKE
Added default search path for most recent version of MySQL
2016-02-27 15:13:59 -05:00
ctrlaltca
49c22f3810 Merge pull request #1834 from ctrlaltca/fix_server
Warning/ban notifications: null check userInfo pointer before dereferencing it
2016-02-25 00:47:13 +01:00
Fabio Bas
b462f95343 Warning/ban notifications: null check userInfo pointer before dereferencing it 2016-02-24 23:47:35 +01:00
ctrlaltca
f31a89ebbb Merge pull request #1828 from ctrlaltca/fix_mysqlconnector
Fix libmysqlclient detection on 64-bit linux
2016-02-24 21:38:37 +01:00
ctrlaltca
b2c1ae264b Merge pull request #1832 from tooomm/restructure
move sounds+themes folder inside cockatrice
2016-02-24 21:38:09 +01:00
tooomm
754e666eaa updated to new folder locations
- `sounds` and `themes` moved into `cockatrice/`

moved subdirectory reference
`/cmakelists` to `/cockatrice/cmakelists`
2016-02-24 15:41:04 +01:00
Gavin Bisesi
bc79d9e2f8 Merge pull request #1796 from zebington/feat/custom-set-import
Add "Import custom set" function
2016-02-24 09:12:31 -05:00
Fabio Bas
ac06544849 Added 64bit libraries each path for libmysqlclient 2016-02-23 08:56:47 +01:00
ctrlaltca
66634c9b3d Merge pull request #1808 from ctrlaltca/innodb
Move schema to Innodb and add FKs
2016-02-22 16:39:03 +01:00
woogerboy21
108ec145b7 Merge pull request #1604 from woogerboy21/mod_notify_onbanwarn
Re-Implemented the moderator notification upon user warning/ban
2016-02-22 09:02:39 -05:00
woogerboy21
4e78d6ec95 Merge remote-tracking branch 'refs/remotes/origin/master' into mod_notify_onbanwarn 2016-02-21 16:36:20 -05:00
Gavin Bisesi
bf42319296 Merge pull request #1820 from tooomm/patch-2
add template for issues
2016-02-20 07:45:08 -05:00
Gavin Bisesi
4f1d3c3269 Merge pull request #1821 from tooomm/patch-3
todo file - removed usermanual part
2016-02-20 07:44:26 -05:00
tooomm
e3064727c3 add template for issues
https://github.com/blog/2111-issue-and-pull-request-templates

move to .github folder + prompt for date
2016-02-18 19:23:35 +01:00
tooomm
2418b8017d moved usermanual part to wiki 2016-02-18 18:32:17 +01:00
ctrlaltca
2d43ab9f50 Merge pull request #1819 from ctrlaltca/fix_xp
Cmake: build Windows Xp compatible packages
2016-02-17 21:25:46 +01:00
Fabio Bas
aac2d09f48 Move schema to Innodb and add FKs
Fix #1805
2016-02-17 21:24:28 +01:00
Fabio Bas
195ab9a150 Try to build windowsxp compatible packages 2016-02-17 15:08:56 +01:00
Zach
5b22187a3d Merge pull request #1794 from zebington/master
Fixes for create game dialogue.
2016-02-16 17:07:28 -05:00
Zach
36f1536b09 Merge pull request #1807 from ctrlaltca/game_sizes
Correctly save and retrieve docks size in game tabs
2016-02-14 20:46:29 -05:00
Fabio Bas
a8c723326d Game tab: use short title for undocked wdgets
fix #1777
2016-02-12 14:49:37 +01:00
Fabio Bas
ae8296a50e Game tab: reset docks sizes on "reset layout" 2016-02-11 18:29:50 +01:00
woogerboy21
93d4f78715 Merge pull request #1803 from Cockatrice/replay-maint-update
Update replay maintenance script
2016-02-10 15:16:41 -05:00
woogerboy21
8f819dfa66 Update replay maintenance script
Update the replay maintenance script to allow for rolling replay maintenance along with cleanup of the two associated db tables (replay access and games).  This updated script will now allow players to see the past X days (8 by default) of replays rather than loosing all replays from the point in the the script gets run.
2016-02-10 10:53:18 -05:00
Ira Aspen
aa658f95f6 Gave error dlg a description of the error for the user. 2016-02-09 03:10:57 +00:00
Ira Aspen
d078cf52c9 Removed unnecessary confirmClose() call. 2016-02-09 02:57:23 +00:00
Ira Aspen
96fbad1f0c Moved get next set index code to own function 2016-02-09 02:55:52 +00:00
Ira Aspen
829f84fe50 Moved from using hex QT version checks to QT_VERSION_CHECK(). 2016-02-09 01:56:24 +00:00
Ira Aspen
0ef2b48902 Refactored DlgAddSet class/functions to DlgAddSetResult 2016-02-09 01:52:09 +00:00
Ira Aspen
5a975831d4 Renamed "dlg_add_set.*" to "dlg_add_set_result.*" and updated references. 2016-02-09 01:40:21 +00:00
Fabio Bas
058b913455 Game: save and restore dock sizes 2016-02-07 21:58:51 +01:00
Zach
cddb45085c Merge pull request #1799 from tooomm/patch-2
shortcut tab adjustments (settings)
2016-02-07 01:40:08 -05:00
Ira Aspen
9d3c4f20a1 Changed strings referencing a set to say sets/cards. 2016-02-07 01:41:35 +00:00
tooomm
802ccd7f14 shortcut tabs adjustments
- typo fix
- improved description of some shortcuts
2016-02-06 19:29:57 +01:00
Ira Aspen
b5363f47ab Updated message. 2016-02-06 12:42:45 +00:00
Ira Aspen
927226633d Moved menu item decleration to work on all OSs. 2016-02-06 02:37:34 +00:00
Ira Aspen
de388a74bd Moved exec statement. 2016-02-06 02:32:04 +00:00
Ira Aspen
54a759497f Added confirmation dialogue when set added. 2016-02-06 02:29:09 +00:00
Ira Aspen
c914395236 Finished add set functionality. 2016-02-06 01:33:43 +00:00
Ira Aspen
2960cba12b Added a file picker to the add set menu item. 2016-02-05 21:09:24 +00:00
Ira Aspen
646c4b4197 Added functionless menu button for adding a set. 2016-02-05 20:32:40 +00:00
Ira Aspen
9846fb1d8e Made reseting the create game dialogue box only select 'Only regeistered users' if player is a registered user. 2016-02-05 19:32:27 +00:00
Ira Aspen
154da4452d Made create game box prevent only buddies can join being selected for unregistered users. 2016-02-05 19:29:19 +00:00
ctrlaltca
323fc06885 Merge pull request #1787 from ctrlaltca/speak_this
Some updated translations from transfix
2016-02-02 22:05:30 +01:00
Fabio Bas
50dde5dde1 Some updated translations from transfix 2016-02-02 22:04:49 +01:00
woogerboy21
54ebb6a508 Merge branch 'master' into mod_notify_onbanwarn 2016-01-31 18:43:24 -05:00
ctrlaltca
f35c047dee Merge pull request #1779 from ctrlaltca/translations
Updated translations
2016-01-29 00:31:19 +01:00
Fabio Bas
7c128f69b0 Updated translations 2016-01-29 00:30:54 +01:00
Gavin Bisesi
7de8e8a6a7 Merge pull request #1747 from tooomm/about_url
[WAIT] added webpage to about window
2016-01-28 18:02:37 -05:00
ctrlaltca
5dd20181fd Merge pull request #1753 from ctrlaltca/pr_1544
Re-Dockified the game & replay review areas
2016-01-28 22:44:32 +01:00
ctrlaltca
14e94f1f8b Merge pull request #1767 from Fizztastic/fix_1764
Sounds on buddy login & logout.
2016-01-28 22:33:10 +01:00
ctrlaltca
5fcd8a73ff Merge pull request #1776 from ctrlaltca/button_fix
Updater: Disable download button when download starts
2016-01-28 22:27:49 +01:00
Fabio Bas
ee42d547bf Disable downlod button when download starts 2016-01-28 22:27:14 +01:00
ctrlaltca
5577d618bd Merge pull request #1727 from TMiguelT/target
Client update implementation
2016-01-28 22:25:54 +01:00
ctrlaltca
b6f3630cbf Merge pull request #1774 from ctrlaltca/fix_1773
Remove unneeded debug in servatrice
2016-01-24 23:03:08 +01:00
Fabio Bas
d79d65797f Remove unneeded debug 2016-01-24 23:02:25 +01:00
ctrlaltca
7ec3968c02 Merge pull request #1770 from ctrlaltca/fix_pixmaps
Fix pixmap usage in pictureloader
2016-01-23 18:23:55 +01:00
Fabio Bas
133693d9ce Fix pixmap usage in pictureloader
fix #1765
2016-01-23 11:00:10 +01:00
Jeff
9767b1f69d Fix #1764
Add Sounds on buddy login & logout.
Add Files: buddy_join.wav; buddy_leave.wav
2016-01-22 15:03:01 -05:00
Gavin Bisesi
d2e731bb2b Merge pull request #1766 from tooomm/patch-2
new description (match io page)
2016-01-20 21:05:28 -05:00
Michael Milton
66fda086c3 Client update implementation 2016-01-20 22:26:17 +01:00
tooomm
f0be9f7f9b Update README.md
match new description wording from io page
2016-01-19 17:01:42 +01:00
woogerboy21
00afe74a3b Merge remote-tracking branch 'refs/remotes/Cockatrice/master' into mod_notify_onbanwarn 2016-01-16 12:50:19 -05:00
woogerboy21
f57e0454bb Dockified the game & replay review areas 2016-01-16 00:54:14 +01:00
Zach
36c3536e0c Merge pull request #1721 from ctrlaltca/speedup
Misc speedups in card database
2016-01-15 18:43:01 -05:00
ctrlaltca
2789e0df19 Merge pull request #1756 from tooomm/patch-2
reworked parts of readme
2016-01-16 00:11:49 +01:00
Zach
5146db7a17 Merge pull request #1763 from ctrlaltca/oracle_redirects
Oracle: follow redirects
2016-01-15 17:10:25 -05:00
Fabio Bas
bacb289eff Oracle: follow redirects 2016-01-15 16:07:26 +01:00
ctrlaltca
f7f9827b91 Merge pull request #1761 from ZeldaZach/oracle_secure
mtgjson now secure
2016-01-15 09:27:57 +01:00
ctrlaltca
0318ae8087 Merge pull request #1758 from ctrlaltca/replay_overflow
fix replay progress bar
2016-01-15 09:01:32 +01:00
Zach H
ad0334e734 mtgjson now secure 2016-01-14 17:32:25 -05:00
Gavin Bisesi
fc59a33b84 Merge pull request #1760 from Cockatrice/proto-syntax-marker-removal
Remove 'syntax = proto2' from .proto files.
2016-01-14 15:20:00 -05:00
tooomm
e337775d72 Update README.md
- added small 'new user guide' at top
- reworked 'downloads' part
- changed layout of 'translation' part
- removed server list in favor of gh pages link (server list can be found there)
- switched to https everywhere (zlib not supported yet --> added hint)
2016-01-14 16:59:43 +01:00
Gavin Bisesi
0734b81e6e Remove 'syntax = proto2' from .proto files.
That marker is only recognized by pb3-compatible compilers, meaning that
tools which are otherwise compatible with our files break on them.
Notably, this includes hprotoc (for haskell).
2016-01-14 08:09:40 -05:00
Fabio Bas
3605cc55b7 fix replay progress bar 2016-01-13 00:17:02 +01:00
Gavin Bisesi
5350302969 Merge pull request #1755 from tooomm/patch-2
Updated ToC with 'Downloads'
2016-01-11 08:27:57 -05:00
tooomm
c415d4d70e Updated ToC with 'Downloads' 2016-01-11 00:17:08 +01:00
tooomm
953b183dab added url to about
added gh pages url
2016-01-09 22:53:54 +01:00
woogerboy21
3ed3919349 Merge branch 'master' into mod_notify_onbanwarn 2015-12-30 12:58:29 -05:00
Zach
924bbb2245 Merge pull request #1736 from ZeldaZach/token_loc
Token coordinates
2015-12-30 11:54:59 -05:00
Zach H
e0a25e74ac fix merge issues 2015-12-30 11:54:30 -05:00
Zach H
f568a4e865 todo 2015-12-30 11:51:53 -05:00
Zach
9efa9cda71 Merge pull request #1734 from ZeldaZach/tokenpt
Token PT shown in create related dialog
2015-12-30 11:44:10 -05:00
Zach H
703ff7905c token coordinates 2015-12-29 23:43:03 -05:00
Zach H
da0e3292d3 Token PT shown in create related dialog 2015-12-29 18:28:41 -05:00
Gavin Bisesi
2bf998b7d3 Merge pull request #1728 from Cockatrice/leematos-hidpi-support
Enable HiDpiPixmaps for Qt5
2015-12-28 22:12:12 -05:00
Lee Matos
8a6d63265f Enable HiDpiPixmaps for Qt5 2015-12-28 22:03:38 -05:00
Fabio Bas
fddcbb8296 Lazy loading of card database view => faster startup times 2015-12-28 15:26:10 +01:00
ctrlaltca
c917a6c272 Merge pull request #1722 from ctrlaltca/rev-related
Implement reverse-related tag for cards
2015-12-27 18:44:05 +01:00
Zach
c4508cd055 Merge pull request #1723 from ZeldaZach/fix_1710
Coin Flips
2015-12-27 12:38:06 -05:00
Zach H
137d7328b5 coin flip
remove male/female as it's same

male/female fixes

translate
2015-12-27 12:34:11 -05:00
ctrlaltca
04797eaf48 Merge pull request #1724 from ctrlaltca/windows_merda
Fix win32 package creation
2015-12-27 18:04:10 +01:00
Fabio Bas
49b22b7d2f Try to fix package creation 2015-12-27 16:03:32 +01:00
Fabio Bas
4b1c59424e Implement reverse-related tag for cards 2015-12-26 19:57:20 +01:00
ctrlaltca
f03051b6cf Merge pull request #1642 from ctrlaltca/dont_merge_this_yet
Split PictureLoader out of CardDatabase
2015-12-26 17:13:21 +01:00
Fabio Bas
e721280bc0 Implemented proposed changes 2015-12-26 16:40:17 +01:00
Fabio Bas
4d7795ca3a Split pictuloader out of carddatabase 2015-12-26 16:40:17 +01:00
ctrlaltca
aebc18fc3f Merge pull request #1717 from ctrlaltca/fix_1716
Possibly fix server crash #1716
2015-12-26 16:24:10 +01:00
ctrlaltca
4e17014ebf Merge pull request #1714 from ctrlaltca/fix_1598
Possible fix for server crash
2015-12-20 14:45:06 +01:00
Fabio Bas
81cad7cefd Possibly fix #1716 2015-12-20 14:38:27 +01:00
ctrlaltca
0e1c26a071 Merge pull request #1715 from ctrlaltca/pr_1668
Add gear icon to settings menu entry
2015-12-19 14:21:32 +01:00
Fabio Bas
696ae7e85f Add gear icon to settings menu entry 2015-12-19 11:48:54 +01:00
Fabio Bas
25d77fb64a Possibly fix #1598 2015-12-15 16:58:44 +01:00
ctrlaltca
7e6972a358 Merge pull request #1713 from ctrlaltca/translations
Small typos + reextracted strings
2015-12-15 16:32:16 +01:00
Fabio Bas
5093ea4170 Small typos + reextracted strings 2015-12-15 16:31:58 +01:00
ctrlaltca
f5749886ee Merge pull request #1712 from ctrlaltca/translations
Extracted new translation strings
2015-12-15 15:59:39 +01:00
Fabio Bas
2712dd4248 Extracted new translation strings 2015-12-15 15:59:20 +01:00
ctrlaltca
ade0a4b7e2 Merge pull request #1708 from ctrlaltca/appveyor_deploy
Deploy from Appveyor to Bintray
2015-12-14 16:29:36 +01:00
Fabio Bas
5636b43e67 Test appveyor deploy 2015-12-14 15:06:16 +01:00
ctrlaltca
db8548521c Merge pull request #1707 from ctrlaltca/fix_1703
Add correct encrypted api key to deploy to bintray
2015-12-14 09:53:21 +01:00
Fabio Bas
1a6a1171e6 Add bintray badges 2015-12-14 09:47:03 +01:00
Fabio Bas
a637ff7cfa Add correct encrypted api key to deploy to bintray 2015-12-14 09:32:31 +01:00
ctrlaltca
0e229ad1fd Merge pull request #1705 from ctrlaltca/fix_1683
Add .txt to the common deck file types
2015-12-13 12:10:15 +01:00
Fabio Bas
ed4149fa7b Add .txt to the common deck file types
fix #1683
2015-12-13 12:00:39 +01:00
ctrlaltca
ea7db15597 Merge pull request #1704 from ctrlaltca/fix_1670
Whoops: Fix db schema number
2015-12-13 11:54:07 +01:00
Fabio Bas
53191fcb99 Whoops: Fix db schema number 2015-12-13 11:53:30 +01:00
ctrlaltca
ce6c97bcef Merge pull request #1670 from jedinerd/sql_fix_for_token_disabled_option
Having token set to not null breaks the use of requireemail=false
2015-12-13 11:46:23 +01:00
ctrlaltca
a17c300a41 Merge pull request #1688 from Cockatrice/check-schema-ver
Add script to validate schema changes.
2015-12-13 11:04:02 +01:00
Fabio Bas
93566840b9 install bc package on linux for the check_schema_version script 2015-12-13 10:48:45 +01:00
Gavin Bisesi
3aac8930cc Add script to validate schema changes.
Basic assertions about version updates
2015-12-13 10:47:39 +01:00
ctrlaltca
586d580864 Merge pull request #1650 from ctrlaltca/test_travis_deploy
Travis updates
2015-12-13 10:39:10 +01:00
ctrlaltca
8167448284 Merge pull request #1654 from ctrlaltca/facedown
Server-size fixes for card stacking
2015-12-13 10:37:47 +01:00
ctrlaltca
0c137e8a10 Merge pull request #1662 from BrandonGriffin/SetFocusOnDescriptionWhenLoadingGameDialog
Added set focus to description anytime a create dialog is opened
2015-12-12 18:17:12 +01:00
ctrlaltca
de6235f69c Merge pull request #1698 from ctrlaltca/fix_1694
Improved login error message
2015-12-12 09:15:01 +01:00
ctrlaltca
a07b72a031 Merge pull request #1699 from ctrlaltca/fix_1687
Fix column widths in rooms list
2015-12-12 09:14:51 +01:00
ctrlaltca
7e63f44c04 Merge pull request #1700 from ctrlaltca/fix_1675
Avoid crash on dereferencing null pointer
2015-12-12 09:14:24 +01:00
Fabio Bas
deec7cdc14 Avoid crash on dereferencing null pointer 2015-12-11 19:32:08 +01:00
Fabio Bas
803589264d Fix column widths in rooms list 2015-12-11 18:51:40 +01:00
Fabio Bas
beecc0f970 Improved login error message 2015-12-11 18:42:29 +01:00
ctrlaltca
0286cd3df0 Merge pull request #1697 from ctrlaltca/fix_1695
Fix velvet marble theme
2015-12-11 17:55:13 +01:00
Fabio Bas
91bb2b2954 Fix velvet marble theme
fix #1695
2015-12-11 16:34:46 +01:00
Gavin Bisesi
a6ff54ae0e Merge pull request #1682 from tooomm/patch-2
link renaming
2015-11-22 10:01:05 -05:00
tooomm
bc44f8ce2a link renaming
-`Linking FAQ` --> `How to set a custom picture url`
-updated define accordingly
2015-11-17 16:04:29 +01:00
Michael Hogg
d9c0c97ae7 Updating schema version to 12 and adding migration script. 2015-11-08 03:05:12 -08:00
Michael Hogg
9963e9dfe7 Having token set to not null breaks the use of requireemail=false in the servatrice.ini as token will be null in this use case. 2015-11-07 12:57:58 -08:00
Brandon Griffin
813a0c2070 Added set focus to description anytime a create dialong is opened 2015-10-27 08:58:29 -04:00
Zach
77b9aa7c36 Merge pull request #1658 from BrandonGriffin/PlayToStackDefault
Changed the default setting to play cards to the stack
2015-10-24 12:01:23 -04:00
Brandon Griffin
64c15d1fdc Changed the default setting to play cards to the stack 2015-10-23 20:11:13 -04:00
Fabio Bas
ea5666c443 fix #1652 ; fix #467 2015-10-20 19:29:04 +02:00
Fabio Bas
fc8aa32d7f Bintray package updates 2015-10-19 22:09:24 +02:00
Fabio Bas
8001b05ce7 Travis - deploy to bintray 2015-10-18 16:58:07 +02:00
ctrlaltca
613f712974 Merge pull request #1646 from ctrlaltca/debian_package
CPack: Debian package
2015-10-17 09:33:06 +02:00
ctrlaltca
75eb779826 Merge pull request #1637 from ctrlaltca/cmdjoin_handler
Handle more Command_JoinRoom return values
2015-10-16 11:48:40 +02:00
Fabio Bas
23e84273ed If the user request to join a room and we are already in, just focus the correct tab
Also, handle all the Command_JoinRoom return values
2015-10-15 19:17:02 +02:00
Fabio Bas
8f674bd18c Updated to qt 5.4.2 2015-10-14 18:45:10 +02:00
Fabio Bas
4dba476ab6 modernize bash dialect 2015-10-14 15:45:54 +02:00
Fabio Bas
bab4a51ebb CPack: Debian package 2015-10-13 22:16:00 +02:00
ctrlaltca
0c67cb6cb3 Merge pull request #1641 from ctrlaltca/pr_1600
CMake: Add "test" target
2015-10-09 18:53:01 +02:00
Fabio Bas
5fed8d04d6 Updated docs 2015-10-09 18:51:30 +02:00
Fabio Bas
b63475829b Revert option from WITH_TESTS to TEST 2015-10-09 15:47:34 +02:00
Fabio Bas
7fe60279de Fix PR #1600 2015-10-09 14:59:42 +02:00
Gavin Bisesi
3ebe42c400 Add dummy googletest
Uses the built in cmake -Dtest=ON

It should download googletest on the fly if needed.

Adds a new make target, `make test`

Ref #167
2015-10-09 14:58:46 +02:00
woogerboy21
cd02df78a1 Merge pull request #1627 from ctrlaltca/no_jom_no_cry
Fix appveyor builds
2015-10-05 15:13:43 -04:00
Fabio Bas
784148e158 try fixing appveyor
dropping jom and using plain nmake
2015-10-02 18:14:54 +02:00
ctrlaltca
43262b294d Merge pull request #1620 from ctrlaltca/fix_rpath
Fix qt libraries bundling on osx
2015-10-02 17:54:10 +02:00
ctrlaltca
b0e9e0fb3a Merge pull request #1603 from ctrlaltca/fix_audio
Fix volume control
2015-10-02 14:46:30 +02:00
Fabio Bas
74c58cc2b0 fix qt libraries bundling on osx
fix #1547
2015-10-01 23:35:54 +02:00
Zach
d09b75a3c0 Merge pull request #1608 from ctrlaltca/travis_package
Travis changes for package creation
2015-10-01 14:32:24 -04:00
Zach
30531683f4 Merge pull request #1615 from Psithief/patch-1
Revert focus policy change
2015-10-01 14:17:06 -04:00
Zach
56f8ddc1f6 Merge pull request #1619 from tooomm/patch-2
added appveyor badge to README
2015-10-01 14:11:33 -04:00
tooomm
ab2a6867b5 added appveyor badge
badge for master branch
2015-10-01 18:37:11 +02:00
ctrlaltca
9d4882415a Merge pull request #1618 from ctrlaltca/fix_artifacts
Appveyor: fix artifact names
2015-10-01 15:08:45 +02:00
Fabio Bas
3e9610a084 Fix artifact names 2015-10-01 10:14:50 +02:00
Psithief
ca9bfc9ff2 Revert focus policy change in tab_game
Fixes #1529.

Completely untested, because I don't think this could possibly interfere with anything. It's a straight revert.
2015-10-01 12:00:30 +08:00
ctrlaltca
6a869906d9 Merge pull request #1589 from ctrlaltca/appveyor
Added appveyor script
2015-09-30 09:46:35 +02:00
Fabio Bas
35815a894a Make travis build a package 2015-09-29 23:38:30 +02:00
woogerboy21
acbe2b0b3c Re-Implemented the moderator notification upon user warning/ban 2015-09-28 18:21:39 -04:00
Fabio Bas
a9f2cd73de Fix volume control
fix #1528
2015-09-28 12:24:22 +02:00
Fabio Bas
8e348455f9 Added appveyor script 2015-09-27 10:36:53 +02:00
woogerboy21
9c4bd8ebed Merge pull request #1593 from woogerboy21/remove_mod_notify
Crash Fix: Removed mod notification code that causes crashes
2015-09-26 23:36:50 -04:00
woogerboy21
7d7151135e Removed mod notification code that causes crashes 2015-09-26 23:19:49 -04:00
woogerboy21
c1663d578a Merge pull request #1588 from Cockatrice/servatrice.sql_warntable_syntaxfix
Corrected mod_name column syntax in warnings table
2015-09-25 18:40:09 -04:00
woogerboy21
7a4cabaf67 Corrected mod_name column syntax in warnings table
It was missing a comma at the end of the line.
2015-09-25 18:19:44 -04:00
woogerboy21
291b262b64 Merge pull request #1569 from woogerboy21/correct_warn_schema
Updated cockatrice_warnings table to use id column as primary key
2015-09-25 08:09:56 -04:00
woogerboy21
b65882f7ce Updated cockatrice_warnings table to use id column as primary key 2015-09-25 07:35:23 -04:00
Zach
d55e44ea60 Merge pull request #1558 from Cockatrice/revert-1556-carddatabase_changes
Revert "Reimplemented PictureLoader as a singleton"
2015-09-23 03:17:49 -04:00
Zach
d5adec53a2 Revert "Reimplemented PictureLoader as a singleton" 2015-09-23 03:17:33 -04:00
Zach
064c89ba5c Merge pull request #1556 from ctrlaltca/carddatabase_changes
Reimplemented PictureLoader as a singleton
2015-09-23 01:21:37 -04:00
Zach
ad55c3e198 Merge pull request #1541 from woogerboy21/log_tab
Added logs tab to allow moderators the ability to review log history
2015-09-23 01:01:20 -04:00
woogerboy21
62ffcde6bd Added logs tab to allow moderators the ability to review log history/details 2015-09-23 00:50:01 -04:00
Zach
e68b8b314a Merge pull request #1522 from woogerboy21/offical_warnings
Added official warning messages moderators can use to inform users
2015-09-22 23:29:12 -04:00
woogerboy21
6ad2a59367 Added official warning messages moderators can use to inform users 2015-09-22 22:27:46 -04:00
Fabio Bas
e0383af6dd workaround "Signals are protected in qt4" 2015-09-22 23:57:39 +02:00
Fabio Bas
ac16602f08 Fix crash on null pointer dereference 2015-09-22 23:46:41 +02:00
Fabio Bas
f6c7f3355f Reimplemented PictureLoader as a singleton
* Removed remaining picture handling from card database and cardinfo
 * removed the “noCard object” hack
2015-09-22 23:09:53 +02:00
Zach
3f70513096 Merge pull request #1555 from ctrlaltca/cards_crash
Fix crash on loading invalid cards.xml
2015-09-22 16:19:12 -04:00
Zach
8125358052 Merge pull request #1523 from marcofernandezheras/Restore-Shortcuts
Restore shortcuts
2015-09-22 16:00:49 -04:00
Fabio Bas
7a4bf9a313 Fix crash on loading invalid cards.xml
Additionally, move the custom database load after the LoadStatus check,
so that they don't bring up the “fix your card database path” settings
dialog
2015-09-22 21:56:02 +02:00
Zach
aacbe93d04 Merge pull request #1540 from ctrlaltca/remove_unused_sounds
Removed unused sound names
2015-09-22 15:51:05 -04:00
Zach
b8732a54bb Merge pull request #1550 from Cockatrice/server_mess_i_pm
Fix #1542
2015-09-22 15:50:26 -04:00
woogerboy21
cd7b25f712 Fix #1542
This should fix #1542 (please test)
2015-09-22 01:19:31 -04:00
Fabio Bas
2df50f5766 Removed unused sound names 2015-09-20 12:08:55 +02:00
marco
599ef0ae62 Confirmation to clear/restore shortcuts 2015-09-20 00:21:07 +02:00
Zach
1409b97490 Merge pull request #1530 from ZeldaZach/fix_1527
Minors Fixes for #1527
2015-09-18 10:18:12 -04:00
Zach
1182ee191c Merge pull request #1516 from ctrlaltca/default_shortcuts
Changed problematic shortcuts
2015-09-18 10:05:24 -04:00
Zach H
ccc8ac4826 minor fixes 2015-09-18 09:56:32 -04:00
Fabio Bas
2a20b6028e Changed problematic shortcuts 2015-09-18 08:38:54 +02:00
Zach
ead6ab3ad6 Merge pull request #1527 from woogerboy21/ban_mod_notify
Moderator ban notifications + Server PM functionality
2015-09-17 22:53:07 -04:00
woogerboy21
b0693299c7 Added server private message functionality to allow server based PM notifications.
Ban based notification to other online moderators is the first form implemented by this PR.
2015-09-17 22:40:29 -04:00
Zach
afc425e6a5 Merge pull request #1524 from tooomm/Update-README.md
readme / added license badge + link
2015-09-16 08:49:38 -04:00
tooomm
0dc8fe9e73 added licence badge + link 2015-09-16 13:35:40 +02:00
marco
0ce38ea88e Reset & Clear all shortcuts
This closes #1517
2015-09-16 13:35:26 +02:00
marco
8eacd85d68 Link to wiki: how to set shortcuts 2015-09-16 12:30:32 +02:00
ctrlaltca
c7c84bca8f Merge pull request #1521 from tooomm/patch-2
remove debug code; fix #1520
2015-09-16 08:42:48 +02:00
Zach
04a96e96bb Merge pull request #1492 from tooomm/patch-1
shortcut text adjustments
2015-09-15 13:11:16 -04:00
tooomm
1bec6dc37a shortcut tabs adjustments
- `|` over `/` to make `P/T` better readable
- Game play --> Gameplay
- Player - Playing Area
2015-09-15 18:56:53 +02:00
tooomm
814553dae6 remove debug code
fixes #1520
2015-09-15 18:53:06 +02:00
Zach
385455e77c Merge pull request #1510 from woogerboy21/room_message_history
Added chat history to a room that is displayed on join
2015-09-15 12:10:37 -04:00
woogerboy21
87a64da1bc Added chat history to a room that is displayed on join.
With this update a new chat history definition is added on a per
room bases which allows operators to specify the number of chat
messages to store and present to the user on join.  Please see
the sample ini for room definitions.
2015-09-14 17:54:04 -04:00
Zach
3412ce2f7d Merge pull request #1501 from marcofernandezheras/Fix-Shortcut-Detection
Fix shortcuts detection on settings & game
2015-09-14 16:02:45 -04:00
marco
4c6b543cbe Fix shortcuts detection on settings & game
Fix #1499, Fix #1493, Fix #1477
Fix typo
2015-09-14 16:56:51 +02:00
Zach
f97a7e8370 Merge pull request #1512 from ctrlaltca/sound_themes
sound themes
2015-09-13 15:37:00 -04:00
Fabio Bas
6257ea701e Revert "remove qtmobility from apt packages"
This reverts commit 669568b918.
2015-09-13 19:44:37 +02:00
Fabio Bas
a6bc709583 merged master 2015-09-13 19:39:42 +02:00
Fabio Bas
5aaae5279c revert to using QAudioOutput 2015-09-13 19:37:49 +02:00
Zach
f2864ce569 Merge pull request #1511 from ctrlaltca/theme_extensions
Themes: don't use hardcoded extensions on images
2015-09-13 13:26:12 -04:00
Fabio Bas
f78c01fa88 Avoid multiple sounds playing at the same time 2015-09-13 17:22:58 +02:00
Zach
59da62d240 Merge pull request #1502 from woogerboy21/fix_ban_crash
Fix server crash on banning
2015-09-13 01:12:29 -04:00
woogerboy21
46f78fcead Fix server crash on banning 2015-09-13 00:52:52 -04:00
Fabio Bas
85aa866e02 sound themes 2015-09-13 02:01:50 +02:00
Fabio Bas
28df389ea6 Fixed flags size: they're not squared 2015-09-13 00:53:11 +02:00
Fabio Bas
dfe9719637 Removed unused parameter 2015-09-13 00:26:28 +02:00
Fabio Bas
00e3e63f41 Themes: remove all hardcoded extensions 2015-09-13 00:14:36 +02:00
ctrlaltca
d5afd97ff4 Merge pull request #1509 from Fizztastic/1505_fix
Fix library, grave, exile crash on windows
2015-09-12 23:38:22 +02:00
Jeff
32df2c29ed Fix library, grave, exile crash on windows 2015-09-12 17:24:36 -04:00
Jeff
73677e16f6 Merge remote-tracking branch 'Cockatrice/master' into 1505_fix 2015-09-12 17:23:40 -04:00
Zach
226a8cc017 Merge pull request #1498 from ctrlaltca/sound_whatever
Reworked SoundEngine overhaul
2015-09-12 00:35:20 -04:00
Zach
4c9555bb59 Merge pull request #1496 from ctrlaltca/clamp_zoneview
Clamp zone view widget's titlebar inside the viewable area
2015-09-12 00:34:12 -04:00
Zach
29446d80d4 Merge pull request #1469 from woogerboy21/request_ban
Added the ability or moderation staff to request user ban history
2015-09-10 21:34:16 -04:00
Zach
e4470acb84 Merge pull request #1497 from ctrlaltca/settings_icons
fix settings icon spacing
2015-09-10 21:33:43 -04:00
Fabio Bas
669568b918 remove qtmobility from apt packages 2015-09-11 00:45:35 +02:00
Fabio Bas
a06c7b2f9d Rework the sound engine to use QSound
plus misc fixes
2015-09-11 00:43:22 +02:00
Fabio Bas
6d56e0dfd6 fix wav file names 2015-09-11 00:42:50 +02:00
Fabio Bas
0b072e2d60 Remove dependency to qt multimedia/mobility under qt4 and unused phonon plugins 2015-09-11 00:42:37 +02:00
Fabio Bas
b2f855aeb0 fix settings icon spacing 2015-09-10 23:37:16 +02:00
Fabio Bas
a7616835e3 Clamp zone view widget's titlebar inside the viewable area 2015-09-10 23:29:01 +02:00
woogerboy21
90cb890cc2 Added the ability or moderation staff to request user ban history 2015-09-10 16:02:45 -04:00
Jeff
badbcf2753 Fix sound test button 2015-09-09 16:47:09 -04:00
Zach
3bc61eb2e9 Merge pull request #1473 from woogerboy21/user_stats_table
Added user analytics table to database
2015-09-09 08:46:52 -04:00
Jeff
d6398477ae SoundEngine overhaul 2015-09-09 02:24:02 -04:00
Zach
05aa8b2c92 Merge pull request #1474 from woogerboy21/no_tab_close
Do not close message tabs on disconnect
2015-09-09 00:04:06 -04:00
woogerboy21
d7d50def51 Added user analytics table to database 2015-09-08 14:56:10 -04:00
woogerboy21
7bfea03af8 Do not close message tabs on disconnect 2015-09-08 14:38:48 -04:00
ctrlaltca
c984a7c962 Merge pull request #1488 from ctrlaltca/translations
Translations update
2015-09-08 19:25:34 +02:00
Fabio Bas
fcc5370082 Fetched new translations 2015-09-08 19:12:41 +02:00
Fabio Bas
5951c95e81 extracted new translatable strings 2015-09-08 19:10:57 +02:00
Fabio Bas
c214234bb2 fix typo 2015-09-08 19:08:34 +02:00
Fabio Bas
09b926a7ac Added transifex cli configuration 2015-09-08 19:08:04 +02:00
Zach
aac980a8cb Merge pull request #1485 from ctrlaltca/fix_notification_click
Don't change window maximized state when clicking a notification
2015-09-08 12:49:00 -04:00
Zach
601ada8473 Merge pull request #1484 from ctrlaltca/fix_f12
Fix loading of "increase life counter" shortcut in settings
2015-09-08 12:43:27 -04:00
Zach
b47aa86c84 Merge pull request #1483 from ctrlaltca/deckeditor_filter_buttons
Add back "remove" buttons to deck editor's filter
2015-09-08 12:33:15 -04:00
Zach
73f2d2b0e5 Merge pull request #1478 from ctrlaltca/fix_replay_crash
Fix replay crash due to completer
2015-09-08 12:31:59 -04:00
Zach
433c5703e7 Merge pull request #1479 from ctrlaltca/fix_autoconnect
Fix autoconnect
2015-09-08 12:29:53 -04:00
Fabio Bas
4ee12f0b69 Don't change window maximized state when clicking a notification 2015-09-08 17:49:31 +02:00
Fabio Bas
db18c7da10 Fix loading of "increase life counter" shortcut in settings 2015-09-08 17:13:47 +02:00
Fabio Bas
3be1bcd356 Add back "remove" buttons to deck editor's filter 2015-09-08 10:25:33 +02:00
Fabio Bas
50aa6e3a4d Fix autoconnect 2015-09-08 08:37:19 +02:00
Fabio Bas
f14ebb0028 Fix replay crash due to completer 2015-09-08 08:12:00 +02:00
Zach
2a83f6dd4b Merge pull request #1472 from marcofernandezheras/Fix-Portable-Paths
Fix thememanager on portable build
2015-09-07 18:03:46 -04:00
marco
36f19be06a Fix thememanager on portable build 2015-09-06 18:29:48 +02:00
woogerboy21
dd4900b038 Merge pull request #1471 from ctrlaltca/deckeditor_theme_cardback
get cardback image from theme
2015-09-06 08:25:48 -04:00
Fabio Bas
e50d0c6db2 get cardback image from theme 2015-09-06 11:44:19 +02:00
woogerboy21
15e8121cf2 Merge pull request #1468 from woogerboy21/fix_old_gcc
Fix older gcc nested pre-def with portable builds
2015-09-05 18:01:31 -04:00
woogerboy21
9dc77d674f Fix older gcc nested pre-def with portable builds 2015-09-05 17:44:51 -04:00
Zach
60ed9fd1ff Add slash 2015-09-03 14:56:23 -04:00
Zach
4eb708c3b0 Merge pull request #1458 from marcofernandezheras/Fix-Portable
fix Decks, Pics replays & sounds paths on Portable build
2015-09-03 14:52:17 -04:00
marco
44fefc20c2 Fix portable on OSX 2015-09-03 19:47:07 +02:00
Zach
d97a9bdb15 Merge pull request #1459 from Cockatrice/portable_readme
Add portable info
2015-09-03 13:32:46 -04:00
Zach
48f68343a2 Add portable info
Portable info
2015-09-03 13:11:42 -04:00
marco
b4c5729bf5 fix Decks, Pics replays & sounds paths on Portable build 2015-09-03 18:31:11 +02:00
Gavin Bisesi
dbbfa82977 Merge pull request #1456 from Cockatrice/restore-python-register-script
Restore register.py script removed in 5ace0dd892
2015-09-03 09:14:54 -04:00
Gavin Bisesi
ebc4011559 Restore register.py script removed in 5ace0dd892
This is intended to be an example of using the protocol from something
other than C++ and to be a building block for future test clients.
2015-09-03 09:13:31 -04:00
Zach
f4ae08f8b1 Merge pull request #1439 from woogerboy21/feature_check
Added server/client feature set communication
2015-09-02 23:38:53 -04:00
woogerboy21
044c2356ff Added server/client feature set communication 2015-09-02 17:54:06 -04:00
Zach
3188ef4cde Merge pull request #1444 from woogerboy21/fix_blank_ban
Detect if a use is trying to place an invalid ban
2015-09-01 22:20:05 -04:00
marco
baa61d0571 Merge branch 'master' into Refactor-settings
Conflicts:
	oracle/CMakeLists.txt
2015-09-01 21:28:53 +02:00
ctrlaltca
0a9057d1b8 Merge pull request #1451 from ctrlaltca/fix_1449
Let git track the empty dir "themes/Default"
2015-09-01 10:29:35 +02:00
Fabio Bas
d9ecb5db8b Let git track this empty dir 2015-09-01 08:57:30 +02:00
Zach
f5f5074023 Merge pull request #1081 from ctrlaltca/themes_clean
Theme manager
2015-08-31 18:50:36 -04:00
Fabio Bas
6d7baec37b Merge with master 2015-08-31 22:55:46 +02:00
Fabio Bas
5cfb034452 merged with master 2015-08-31 22:48:14 +02:00
ctrlaltca
949b0183c8 Merge pull request #1448 from woogerboy21/log_session_mismatch
Log inconsistent session / session table situation
2015-08-31 21:45:55 +02:00
woogerboy21
de073a51d6 Log inconsistent session / session table situation 2015-08-31 08:29:26 -04:00
woogerboy21
66c19ab727 Detect if a use is trying to place an invalid ban 2015-08-31 01:00:13 -04:00
woogerboy21
13e536013e Merge pull request #1442 from woogerboy21/fix_oldsession
Fix bug that crashes server when old session is logged out during login
2015-08-30 23:51:33 -04:00
woogerboy21
66dce1bf46 Fix bug that crashes server when old session is logged out during login 2015-08-30 23:33:11 -04:00
woogerboy21
8bb6bb04d7 Merge pull request #1441 from woogerboy21/fix_check
Fix ban issue
2015-08-30 19:45:04 -04:00
woogerboy21
d8b53f9345 Update ban check to exclude empty client id's 2015-08-30 18:48:57 -04:00
Gavin Bisesi
c0a0775323 Merge pull request #1434 from Cockatrice/restore-xsd
Restore xsd files removed in #1428
2015-08-28 18:25:14 -04:00
Gavin Bisesi
3c1a7bc760 Restore xsd files removed in #1428
ಠ_ಠ
2015-08-28 18:24:25 -04:00
Zach
6a64e4a2e1 Merge pull request #1432 from ZeldaZach/fix_1427
Remove docs in favor of wiki
2015-08-28 15:39:00 -04:00
Zach H
854e0a764c remove docs in favor of wiki 2015-08-28 14:59:49 -04:00
Zach
e6a8fa59e3 Merge pull request #1428 from tooomm/patch-1
text adjustments in oracle
2015-08-27 12:39:00 -04:00
ctrlaltca
885edc8953 Merge pull request #1429 from ctrlaltca/translations
Fetched new translations. Arrr!
2015-08-27 18:32:54 +02:00
Fabio Bas
fcff6301ed Fetched new translations. Arrr! 2015-08-27 18:32:14 +02:00
tooomm
5d8d2f277c oxford compliance
@ZeldaZach grammar nazi :) 👍
2015-08-27 15:55:22 +02:00
tooomm
17665aad60 fixed alignment
nice alignment over strict tabbing
2015-08-27 14:55:19 +02:00
tooomm
f18f136d2b text adjustments
- removed some info text since oracle imports all cards now and no longer offers sets selection
- added info about token
- `<br/>` --> `\n`
- capitalized `URL` --> http://www.oxforddictionaries.com/definition/english/URL
2015-08-27 14:43:34 +02:00
Zach
311536d1aa Merge pull request #1423 from tooomm/patch-1 2015-08-26 10:26:57 -04:00
tooomm
83e9f9deba typos resolved
@marcofernandezheras ok?
2015-08-26 15:33:05 +02:00
woogerboy21
fdea69cfed Merge pull request #1421 from woogerboy21/fix_proto_warnings
Corrected proto warnings & spacing
2015-08-26 08:22:50 -04:00
woogerboy21
cfebd53d5d Corrected proto warnings 2015-08-25 23:40:08 -04:00
marco
0b94b47f72 Servatrice portable + cmake options
Use -DPORTABLE=1 to build a portable version
2015-08-25 21:25:13 +02:00
marco
4125d690fa Fix merge & relative path for portable build 2015-08-25 20:22:31 +02:00
woogerboy21
7453385903 Merge pull request #1417 from woogerboy21/send_clientver
Extend the login protocol to send the client version (as optional)
2015-08-24 11:54:04 -04:00
woogerboy21
364df4daf0 Extend the login protocol to send the client id (as optional) 2015-08-24 11:38:24 -04:00
Zach
324ddda4dd Merge pull request #1416 from ZeldaZach/fix_1411
Define URLs
2015-08-23 23:00:22 -04:00
Zach
14da4efe6d Merge pull request #1414 from ZeldaZach/fix_1412
Prevent bad flags
2015-08-23 17:59:52 -04:00
Zach H
a8727d5a50 define URLs 2015-08-23 17:57:26 -04:00
Zach
4d2fdaec08 Merge pull request #1407 from Fizztastic/fix_1396
Option to opt-out of remember game settings
2015-08-23 16:28:01 -04:00
Zach H
8ffe310855 prevent bad flags 2015-08-23 16:27:18 -04:00
ctrlaltca
ab33258ce9 Merge pull request #1415 from ctrlaltca/translations
Translations: extracted new strings
2015-08-23 20:54:50 +02:00
Fabio Bas
b335bc5e7d Translations: extracted new strings 2015-08-23 20:54:11 +02:00
marco
be7efa98cf Fix relative path for image download & settings 2015-08-23 15:54:52 +02:00
marco
1e2d5b0693 Fix translate setting + Mod oracle to portable build 2015-08-23 14:14:11 +02:00
Jeff
ca82fd867a Option to opt-out of remember game settings 2015-08-22 15:52:03 -04:00
Zach
432c856f0d Merge pull request #1400 from woogerboy21/logout_old_session
Log old session out of server if logging in from a second location
2015-08-22 15:37:50 -04:00
woogerboy21
b0630b81ca Log old session out of server if logging in from a second location 2015-08-22 13:41:02 -04:00
Gavin Bisesi
0c0413f056 Merge pull request #1404 from Cockatrice/docker-tweak
Use servatrice as docker entrypoint
2015-08-22 09:57:10 -04:00
Gavin Bisesi
34c78b3113 Use servatrice as docker entrypoint
This lets you "docker run servatrice" and pass command line arguments
2015-08-22 08:43:44 -04:00
ctrlaltca
18ec8e20b6 Merge pull request #1381 from ZeldaZach/flags_to_lower
Country to lower (fix win bug)
2015-08-22 11:53:22 +02:00
Zach
e9156ecd62 Merge pull request #1391 from woogerboy21/admin_adjustmods
Allows admins to promote users to mod and demote mod to user
2015-08-22 00:03:46 -04:00
woogerboy21
2a0197a7ab Merge pull request #2 from Cockatrice/admin_adjustmods
Address PR feedback
2015-08-21 23:08:29 -04:00
Gavin Bisesi
66f14c1168 Address PR feedback 2015-08-21 23:03:15 -04:00
Zach
a6a62b3334 Merge pull request #1354 from Cockatrice/fix-1351
Fix #1351 - Server ignores only-reg if in "none" auth mode.
2015-08-21 22:15:32 -04:00
Daenyth
6170c9037f Fix #1351 - Server ignores only-reg if in "none" auth mode.
When in none auth mode, registered users don't exist; hence the setting
makes the game impossible to join.

Normally the setting would be greyed out when the user is unregistered,
but commit 475c54bf introduced a new edge case where the stored setting
would apply to the field even if the user is unregistered, making the
setting possible to apply in no-reg mode. Regardless, any client could
have done this, not just the default cockatrice.

The server side fix should prevent all issues in the future.
2015-08-21 20:30:46 -04:00
Zach H
41b10308ba country to lower (fix win bug) 2015-08-21 20:05:49 -04:00
marco
c8d59eec5e Refactred settings to use settingscache & ini files 2015-08-22 01:05:15 +02:00
Zach
9c28cdd1f5 Merge pull request #1394 from Fizztastic/fix_1387
Add LineEditCompleter to Tab_Game
2015-08-20 23:46:19 -04:00
Jeff
50e0b6dd35 Merge lines 2015-08-20 23:33:06 -04:00
Jeff
97d0cfa3d9 Fix first word completion 2015-08-20 23:01:32 -04:00
woogerboy21
39fcabe921 Allows moderators to promote users to mod and demote mod to user 2015-08-20 22:42:10 -04:00
Jeff
05f2bc8392 Fix Conflicts 2015-08-20 22:27:46 -04:00
Jeff
e9bad2cacb Merge branch 'master' into fix_1387
Conflicts:
	cockatrice/CMakeLists.txt
	cockatrice/src/tab_game.h
	cockatrice/src/tab_room.cpp
2015-08-20 22:23:47 -04:00
Jeff
b3d96cc5da Merge remote-tracking branch 'Cockatrice/master' into fix_1387 2015-08-20 22:17:06 -04:00
Zach
b2ab2c6eba Merge pull request #1382 from marcofernandezheras/Customizable-shortcuts
Customizable shortcuts
2015-08-20 21:44:05 -04:00
marco
c6aba5a6d0 Renamed file + reduced window size + resfresh on change 2015-08-20 20:23:08 +02:00
Jeff
a64ea17357 Add LineEditCompleter to Tab_Game 2015-08-19 18:46:08 -04:00
woogerboy21
1ef9041815 Merge pull request #1389 from Cockatrice/schema_level_correction
Corrected miss-matched schema versions
2015-08-18 08:04:29 -04:00
woogerboy21
65635bcdd8 Corrected miss-matched schema versions
Schema version should be 7 (not 6) for current commit level.  Not sure exactly why it wasn't updated.
2015-08-18 07:40:12 -04:00
Zach
8c0722953f Merge pull request #1386 from Fizztastic/fix_1383
Fix linked cardwidget not showing PT/Loyalty
2015-08-17 17:14:30 -04:00
Jeff
f3c43cb50f Fix linked cardwidget not showing PT/Loyalty 2015-08-16 19:02:55 -04:00
marco
d3d6f70496 Removed 2nd arg from ShortcutsSettings::getShortcut 2015-08-16 21:53:59 +02:00
marco
1ca89e0b09 Moved counters to a new tab 2015-08-16 15:38:23 +02:00
woogerboy21
487cbb23cb Merge pull request #1379 from woogerboy21/room_userlevel
Add permission levels to rooms
2015-08-16 08:57:34 -04:00
marco
713a8148d3 Customizable shorcuts 2015-08-16 14:24:04 +02:00
marco
be82472f35 Merge branch 'master' into Customizable-shortcuts 2015-08-16 14:01:48 +02:00
marco
4cb53ccaed Merge branch 'master' into Customizable-shortcuts 2015-08-16 13:52:34 +02:00
marco
beaa4e9383 Configurable shortcuts 2015-08-16 13:46:57 +02:00
woogerboy21
702f949196 Updated response block to look better 2015-08-15 21:17:32 -04:00
woogerboy21
3e94c9d283 Define permission levels for rooms 2015-08-15 21:00:51 -04:00
woogerboy21
5634b564e8 Merge pull request #1378 from woogerboy21/last_login
Add last_login column to user table and populate upon login
2015-08-15 20:24:18 -04:00
Zach
98fa9eb159 Merge pull request #1356 from Fizztastic/ChatRoomCompleter
Username Completer in server room
2015-08-15 20:08:34 -04:00
woogerboy21
bb0b626cee Add last_login column to user table and populate upon login 2015-08-15 03:00:34 -04:00
woogerboy21
0f4dc18074 Merge pull request #1374 from woogerboy21/ban_by_clientid
Ban by client ID
2015-08-14 11:25:01 -04:00
Zach
4b0ccc30ec Merge pull request #1376 from Fizztastic/customsets_option 2015-08-14 11:04:06 -04:00
woogerboy21
b102a05a36 Add ability to ban by client id 2015-08-14 00:06:37 -04:00
Jeff
386716b8db Add option to open customsets folder 2015-08-13 23:52:38 -04:00
Jeff
50d67467dc Username Completer in server room
Adds QCompleter in server room and a setting to enable/disable it.
2015-08-13 23:51:39 -04:00
Zach
26e63a9a3a Merge pull request #1343 from tooomm/readme-toc-change
readme adjustments
2015-08-13 21:17:07 -04:00
tooomm
d5c00b0cb5 remove arrows with link to top 2015-08-13 16:21:10 +02:00
woogerboy21
8bf58af727 Merge pull request #1365 from woogerboy21/add_clientid_tosessions
Add clientid field to sessions table.
2015-08-12 08:07:01 -04:00
poixen
9bf3178b2f Merge pull request #1307 from poixen/hostselection
Previous server connection history
2015-08-12 12:59:23 +02:00
Zach
54ff4ef417 Merge pull request #1369 from ZeldaZach/fix_1360
remove max screen default
2015-08-11 17:41:13 -04:00
Zach H
b57a316bfd remove max screen default 2015-08-11 17:10:05 -04:00
Zach
1c3e13109f Merge pull request #1361 from woogerboy21/servatrice_disable_replaystorage
Add option to servatrice to disable replay storage.
2015-08-11 16:32:37 -04:00
Zach
26b9560753 Merge pull request #1367 from woogerboy21/add_script_maintcountrycodes
Added lower case country code on correction.
2015-08-11 16:05:56 -04:00
woogerboy21
7c81f8a610 Added lower case country code on correction. 2015-08-11 15:46:59 -04:00
Zach
bf230f2c86 Merge pull request #1366 from woogerboy21/add_script_maintcountrycodes
Add script to validate/clear invalid country codes in the DB.
2015-08-11 15:18:11 -04:00
woogerboy21
f636c0ee19 Add script to validate/clear invalid country codes in the DB. 2015-08-11 14:20:40 -04:00
woogerboy21
d52cf379ee Updated servatrice.sql to reflect new sessions table field. 2015-08-11 12:53:56 -04:00
woogerboy21
eb5833609a Add clientid field to sessions table. 2015-08-11 12:45:04 -04:00
Zach
e9478ff99c Merge pull request #1362 from woogerboy21/rem_clientid_protoreq
Removed clientid requirements from the protocol handler.
2015-08-10 17:36:31 -04:00
woogerboy21
fa77cdf3b5 Removed clientid requirements from the protocol handler. 2015-08-10 16:07:20 -04:00
woogerboy21
fefceac2c6 Add option to servatrice to disable replay storage. 2015-08-10 15:29:30 -04:00
marco
b0bf94e378 Shorcut read from settings 2015-08-09 12:16:52 +02:00
tooomm
8ebd8532d6 readme adjustments
- toc changed (removed DocToc)
- relinks to the toc on top under every category
- image included on top
- added other servers in community ressources
2015-08-06 23:21:51 +02:00
Matt Lowe
1ca24b2597 Previous server connection history
This adds the ability to select previous servers from a list to connect
to.

You can remove items from the drop down by selecting them and pressing
delete.

If you connect to a new host it will be added to the previous hosts.

It will remember the last host connected to in the dropdown.
2015-07-28 20:04:01 +02:00
Fabio Bas
38486b2248 updated 2015-06-15 15:01:17 +02:00
Fabio Bas
166d8db4ca rebased 2015-06-15 14:40:54 +02:00
Fabio Bas
f17dec29f6 Reorganized images in subfolders
As per @daenyth’s comment:
https://github.com/Cockatrice/Cockatrice/pull/792#issuecomment-76593730
2015-06-15 14:37:19 +02:00
Fabio Bas
092b0eaed6 removed empty version.txt files 2015-06-15 14:35:58 +02:00
Fabio Bas
6b8ebe54e9 Theme manager
This is the first implementation of a theme manager. It’s a rebased and
revisited version of #792.
2015-06-15 14:35:58 +02:00
Fabio Bas
9965d85864 Reorganized images in subfolders
As per @daenyth’s comment:
https://github.com/Cockatrice/Cockatrice/pull/792#issuecomment-76593730
2015-05-20 19:18:49 +02:00
Fabio Bas
8eb1be46b4 removed empty version.txt files 2015-05-17 23:33:28 +02:00
Fabio Bas
bdd55db549 Theme manager
This is the first implementation of a theme manager. It’s a rebased and
revisited version of #792.
2015-05-17 23:30:14 +02:00
769 changed files with 179079 additions and 68658 deletions

135
.appveyor.yml Normal file
View File

@@ -0,0 +1,135 @@
version: 2.5.2-branch-{branch}-build-{build}
# Skipping commits affecting specific files (GitHub only).
# More details here: https://www.appveyor.com/docs/appveyor-yml and https://www.appveyor.com/docs/how-to/filtering-commits
skip_commits:
files:
- .ci/travis-*
- .github/
- .tx/
- webclient/
- .clang-format
- .*ignore
- .codacy.yml
- .gitlab-ci.yml
- .travis.yml
- '**/*.md'
- Dockerfile
- LICENSE
image: Visual Studio 2017
cache:
- c:\openssl-release
- c:\protobuf-release
- c:\zlib-release
environment:
matrix:
- qt_ver: 5.9\msvc2017_64
openssl_ver: 1.0.2n-x64_86-win64
protobuf_ver: 3.5.1
zlib_ver: 1.2.11
cmake_generator: Visual Studio 15 2017 Win64
cmake_toolset: v141,host=x64
target_arch: win64
vc_arch: amd64
- qt_ver: 5.9\msvc2015 # Qt doesn't provide a msvc2017_32
openssl_ver: 1.0.2n-i386-win32
protobuf_ver: 3.5.1
zlib_ver: 1.2.11
cmake_generator: Visual Studio 15 2017
cmake_toolset: v141
target_arch: win32
vc_arch: amd64_x86
install:
- ps: |
if (Test-Path c:\openssl-release) {
echo "using openssl from cache"
} else {
Invoke-WebRequest "https://indy.fulgan.com/SSL/openssl-$env:openssl_ver.zip" -OutFile c:\openssl-$env:openssl_ver.zip
Expand-Archive -Path c:\openssl-$env:openssl_ver.zip -DestinationPath c:\openssl-release
Set-Location -Path C:\openssl-release
}
if (Test-Path c:\protobuf-release) {
echo "using protobuf from cache"
} else {
Invoke-WebRequest "https://github.com/google/protobuf/releases/download/v$env:protobuf_ver/protobuf-cpp-$env:protobuf_ver.zip" -OutFile c:\protobuf-cpp-$env:protobuf_ver.zip
Expand-Archive -Path c:\protobuf-cpp-$env:protobuf_ver.zip -DestinationPath c:\
Set-Location -Path C:\protobuf-$env:protobuf_ver\cmake
cmake . -G "$env:cmake_generator" -T "$env:cmake_toolset" -Dprotobuf_BUILD_TESTS=0 -Dprotobuf_MSVC_STATIC_RUNTIME=0 -DCMAKE_INSTALL_PREFIX=c:/protobuf-release
msbuild INSTALL.vcxproj /p:Configuration=Release
}
if (Test-Path c:\zlib-release) {
echo "using zlib from cache"
} else {
Invoke-WebRequest "https://github.com/madler/zlib/archive/v$env:zlib_ver.zip" -OutFile c:\zlib-$env:zlib_ver.zip
Expand-Archive -Path c:\zlib-$env:zlib_ver.zip -DestinationPath c:\
Set-Location -Path C:\zlib-$env:zlib_ver
cmake . -G "$env:cmake_generator" -T "$env:cmake_toolset" -DCMAKE_INSTALL_PREFIX=c:/zlib-release
msbuild INSTALL.vcxproj /p:Configuration=Release
}
services:
- mysql
build_script:
- ps: |
New-Item -ItemType directory -Path $env:APPVEYOR_BUILD_FOLDER\build
Set-Location -Path $env:APPVEYOR_BUILD_FOLDER\build
$zlibdir = "c:\zlib-release"
$openssldir = "C:\openssl-release"
$protodir = "c:\protobuf-release"
$protoc = "c:\protobuf-release\bin\protoc.exe"
$mysqldll = "c:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.dll"
cmake .. -G "$env:cmake_generator" -T "$env:cmake_toolset" "-DCMAKE_PREFIX_PATH=c:/Qt/$env:qt_ver;$protodir;$zlibdir;$openssldir" "-DWITH_SERVER=1" "-DPROTOBUF_PROTOC_EXECUTABLE=$protoc" "-DMYSQLCLIENT_LIBRARIES=$mysqldll"
- msbuild PACKAGE.vcxproj /p:Configuration=Release
- ps: |
$exe = dir -name *.exe
$new_name = $exe.Replace(".exe", "-${env:target_arch}.exe")
Push-AppveyorArtifact $exe -FileName $new_name
$cmake_name = $exe.Replace(".exe", "-${env:target_arch}.cmake.txt")
Push-AppveyorArtifact CMakeCache.txt -FileName $cmake_name
$json = New-Object PSObject
(New-Object PSObject | Add-Member -PassThru NoteProperty bin $new_name | Add-Member -PassThru NoteProperty cmake $cmake_name | Add-Member -PassThru NoteProperty commit $env:APPVEYOR_REPO_COMMIT) | ConvertTo-JSON | Out-File -FilePath "latest-$env:target_arch" -Encoding ASCII
Push-AppveyorArtifact "latest-$env:target_arch"
$version = $matches['content']
test: off
# Builds for pull requests skip the deployment step altogether
deploy:
# Deploy configuration for "beta" releases
- provider: GitHub
auth_token:
secure: p+7wPVry2XEa6TBm9XH8IaQZbBmXQ/J2ldbGmcIxUZD3NkkPrSRRlmE7Of1CBBIO
tag: "$(APPVEYOR_REPO_TAG_NAME)"
release: "Cockatrice $(APPVEYOR_REPO_TAG_NAME)"
description: "Beta release of Cockatrice"
artifact: /.*\.exe/
force_update: true
draft: false
prerelease: true
on:
APPVEYOR_REPO_TAG: true
APPVEYOR_REPO_TAG_NAME: /([0-9]|[1-9][0-9])(\.([0-9]|[1-9][0-9])){2}-beta(\.([2-9]|[1-9][0-9]))?$/ # regex to match semver naming convention for beta pre-releases
# Deploy configuration for "stable" releases
- provider: GitHub
auth_token:
secure: p+7wPVry2XEa6TBm9XH8IaQZbBmXQ/J2ldbGmcIxUZD3NkkPrSRRlmE7Of1CBBIO
tag: "$(APPVEYOR_REPO_TAG_NAME)"
release: "Cockatrice $(APPVEYOR_REPO_TAG_NAME)"
artifact: /.*\.exe/
force_update: true
draft: false
prerelease: false
on:
APPVEYOR_REPO_TAG: true
APPVEYOR_REPO_TAG_NAME: /([0-9]|[1-9][0-9])(\.([0-9]|[1-9][0-9])){2}$/ # regex to match semver naming convention for stable full releases
# official validator for ".appveyor.yml" config file: https://ci.appveyor.com/tools/validate-yaml
# appveyor config documentation: https://www.appveyor.com/docs/build-configuration/

56
.ci/travis-compile.sh Normal file
View File

@@ -0,0 +1,56 @@
#!/bin/bash
set -e
./servatrice/check_schema_version.sh
mkdir -p build
cd build
prefix=""
if [[ $TRAVIS_OS_NAME == "osx" ]]; then
export PATH="/usr/local/opt/ccache/bin:$PATH"
prefix="-DCMAKE_PREFIX_PATH=$(echo /usr/local/opt/qt5/)"
fi
if [[ $TRAVIS_OS_NAME == "linux" ]]; then
prefix="-DCMAKE_PREFIX_PATH=$(echo /opt/qt5*/lib/cmake/)"
fi
if [[ $BUILDTYPE == "Debug" ]]; then
cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=$BUILDTYPE $prefix -DTEST=1
make -j2
make test
if [[ $TRAVIS_OS_NAME == "osx" ]]; then
make install
fi
if [[ $TRAVIS_OS_NAME == "linux" ]]; then
cd ..
clang-format -i \
common/*.h \
common/*.cpp \
cockatrice/src/*.h \
cockatrice/src/*.cpp \
oracle/src/*.h \
oracle/src/*.cpp \
servatrice/src/*.h \
servatrice/src/*.cpp
git clean -f
git diff --quiet || (
echo "*****************************************************";
echo "*** This PR is not clean against our code style ***";
echo "*** Run clang-format and fix up any differences ***";
echo "*** Check our CONTRIBUTING.md file for details! ***";
echo "*** Thank you ♥ ***";
echo "*****************************************************";
)
git diff --exit-code
fi
fi
if [[ $BUILDTYPE == "Release" ]]; then
cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=$BUILDTYPE $prefix
make package -j2
fi

View File

@@ -0,0 +1,9 @@
#!/bin/bash
if [[ $TRAVIS_OS_NAME == "osx" ]] ; then
brew update
brew install ccache clang-format protobuf qt
fi
if [[ $TRAVIS_OS_NAME == "linux" ]] ; then
echo Skipping... packages are installed with the Travis apt addon for sudo disabled container builds
fi

25
.clang-format Normal file
View File

@@ -0,0 +1,25 @@
IndentWidth: 4
AccessModifierOffset: -4
ColumnLimit: 120
---
Language: Cpp
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
AllowShortFunctionsOnASingleLine: None
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: false
IndentCaseLabels: true
PointerAlignment: Right

5
.codacy.yml Normal file
View File

@@ -0,0 +1,5 @@
---
exclude_paths:
- '**/translations/*.ts'
# codacy config documentation: https://support.codacy.com/hc/en-us/articles/115002130625-Codacy-Configuration-File

View File

@@ -1,12 +1,9 @@
.git/
CONTRIBUTING.md
Dockerfile
TODO.md
build/
.github/
.travis/
.tx/
cockatrice/
doc/
oracle/
sounds/
travis-compile.sh
travis-dependencies.sh
zonebg/
Dockerfile

305
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,305 @@
&nbsp; [Introduction](#contributing-to-cockatrice) | [Code Style Guide](#code-style-guide) | [Translations](#translations) | [Release Management](#release-management)
----
<br>
# Contributing to Cockatrice #
First off, thanks for taking the time to contribute to our project! 🎉 ❤ ️✨
The following is a set of guidelines for contributing to Cockatrice. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
# Recommended Setups #
For those developers who like the Linux or MacOS environment, many of our developers like working with a nifty program called [CLion](https://www.jetbrains.com/clion/). The program's a great asset and one of the best tools you'll find on these systems, but you're welcomed to use any IDE you most enjoy.
Developers who like Windows development tend to find [Visual Studio](https://www.visualstudio.com/) the best tool for the job.
If you have any questions on IDEs, feel free to chat with us on [Gitter](https://gitter.im/Cockatrice/Cockatrice) and we would love to help answer your questions!
# Code Style Guide #
### Compatibility ###
Cockatrice is currently compiled on all platforms using <kbd>C++11</kbd>. You'll notice <kbd>C++03</kbd> code throughout the codebase. Please feel free to help convert it over!
For consistency, we use Qt data structures where possible. For example, `QString` over
`std::string` and `QList` over `std::vector`.
### Header files ###
Use header files with the extension `.h` and source files with the extension
`.cpp`.
Use header guards in the form of `FILE_NAME_H`.
Simple functions, such as getters, may be written inline in the header file,
but other functions should be written in the source file.
Keep library includes and project includes grouped together. So this is okay:
```c++
// Good
#include <QList>
#include <QString>
#include "card.h"
#include "deck.h"
// Good
#include "card.h"
#include "deck.h"
#include <QList>
#include <QString>
// Bad:
#include <QList>
#include "card.h"
#include <QString>
#include "deck.h"
```
### Naming ###
Use `UpperCamelCase` for classes, structs, enums, etc. and `lowerCamelCase` for
function and variable names.
Member variables aren't decorated in any way. Don't prefix or suffix with
underscores, etc.
For arguments to constructors which have the same names as member variables,
prefix those arguments with underscores:
```c++
MyClass::MyClass(int _myData) : myData(_myData)
{
}
```
Pointers and references should be denoted with the `*` or `&` going with the
variable name:
```c++
// Good
Foo *foo1 = new Foo;
Foo &foo2 = *foo1;
// Bad
Bar* bar1 = new Bar;
Bar& bar2 = *bar1;
```
Use `nullptr` instead of `NULL` (or `0`) for null pointers.
If you find any usage of the old keywords, we encourage you to fix it.
### Braces ###
Braces should almost always go on their own line:
```c++
int main()
{
if (someCondition)
{
doSomething();
}
else if (someOtherCondition1)
{
for (int i = 0; i < 100; i++)
{
doSomethingElse();
}
}
else
{
while (someOtherCondition2)
{
doSomethingElse();
}
}
}
```
Braces should never be omitted for single-statement. Keeping the code legibile is a high priority of ours and we hope you share a similar belief :)
### Tabs vs Spaces ###
We _highly_ encourate the use of spaces. If you use tabs, please readjust them to 4 spaces per tab before submitting.
### Lines ###
Do not have trailing whitespace in your lines, if possible. Most IDEs check for this nowadays and clean it up for you.
Lines should be 120 characters or less, but you can exceed this if you find it necessary.
### Memory Management ###
New code should be written using references over pointers and stack allocation
over heap allocation wherever possible.
```c++
// Good: uses stack allocation and references
void showCard(const Card &card);
int main()
{
Card card;
showCard(card);
}
// Bad: relies on manual memory management and doesn't give us much
// null-safety.
void showCard(const Card *card);
int main()
{
Card *card = new Card;
showCard(card);
delete card;
}
```
(Remember to pass by `const` reference wherever possible, to avoid accidentally
mutating objects.)
When pointers can't be avoided, try to use a smart pointer of some sort, such
as `QScopedPointer`, or, less preferably, `QSharedPointer`.
### Database migrations ###
The servatrice database's schema can be found at `servatrice/servatrice.sql`.
Everytime the schema gets modified, some other steps are due:
1. Increment the value of `cockatrice_schema_version` in `servatrice.sql`;
2. Increment the value of `DATABASE_SCHEMA_VERSION` in `servatrice_database_interface.h` accordingly;
3. Create a new migration file inside the `servatrice/migrations` directory named after the new schema version.
4. Run the `servatrice/check_schema_version.sh` script to ensure everything is fine.
The migration file should include the sql statements needed to migrate the database schema and data from the previous to the new version, and an additional statement that updates `cockatrice_schema_version` to the correct value.
### Protocol buffer ###
Cockatrice and Servatrice exchange data using binary messages. The syntax of these messages is defined in the `proto` files in the `common/pb` folder. These files defines the way data contained in each message is serialized using Google's [protocol buffer](https://developers.google.com/protocol-buffers/).
Any change to the `proto` file should be taken with caution and tested intensively before being merged, becaus a change to the protocol could make new clients incompatible to the old server and vice versa.
You can find more information on how we use Protobuf on [our wiki!](https://github.com/Cockatrice/Cockatrice/wiki/Client-server-protocol)
# Translations #
**Basic workflow for translations:**
1. Developer adds a `tr("foo")` string in the code;
2. Every few days, a maintainer updates the `*_en.ts files` with the new strings;
3. Transifex picks up the new files from github every 24 hours;
4. Translators translate the new untraslated strings on Transifex;
5. Before a release, a maintainer fetches the updated translations from Transifex.
### Translations (for developers) ###
**Step 1: Adding translatable strings to the code (`tr("foo")`)**
All the user-interface strings inside Cockatrice's source code must be written in
english language.<br>
Translations to other languages are managed using [Transifex](https://www.transifex.com/projects/p/cockatrice/).
If you're about to propose a change that adds or modifies any translatable string
in the code, you don't need to take care of adding the new strings to the
translation files. Every few days, or when a lot of new strings have been added,
someone from the development team will take care of extracing all the new strings,
adding them to the english translation files and making them available to
translators on Transifex.
### Translations (for maintainers) ###
**Step 2: Updating `*_en.ts` files with new strings**
When new translatable strings have been added to the code, it would be nice to
make them available to translators on Transifex. Every few days, or when a lot
of new strings have been added, a maintainer should take care of extracing all
the new strings and add them to the english translation files.
To update the english translation files, re-run cmake enabling the appropriate
parameter and then run make:
```sh
cd cockatrice/build
cmake .. -DUPDATE_TRANSLATIONS=ON
make
```
If the parameter has been enabled correctly, when running "make" you should see
a line similar to this one (the numbers may vary):
```sh
[ 76%] Generating ../../cockatrice/translations/cockatrice_en.ts
Updating '../../cockatrice/translations/cockatrice_en.ts'...
Found 857 source text(s) (8 new and 849 already existing)
```
You should then notice that the following files have uncommitted changes:
cockatrice/translations/cockatrice_en.ts
oracle/translations/oracle_en.ts
It's now suggested to disable the parameter using:
```sh
cmake .. -DUPDATE_TRANSLATIONS=OFF
```
Now you are ready to propose your change.
**Step 3: Automatic pushing to Transifex**
Once your change gets merged, Transifex will pick up the modified files automatically (checks every 24 hours)
and update the interface where translators will be able to translate the new strings.
**Step 5: Fetching new translations from Transifex**
Before rushing out a new release, it would be nice to fetch the most up to date
translations from Transifex and commit them into the Cockatrice source code.
This can be done manually from the Transifex web interface, but it's quite time
consuming.
As an alternative, you can install the Transifex CLI:
http://docs.transifex.com/developer/client/
You'll then be able to use a git-like cli command to push and pull translations
from Transifex to the source code and vice versa.
### Translations (for translators) ###
**Step 4: Editing translations at Transifex**
Please have a look at the specific [FAQ for translators](https://github.com/Cockatrice/Cockatrice/wiki/Translation-FAQ).
# Release Management #
### Publishing A New Beta Release ###
Travis and AppVeyor have been configured to upload files to GitHub Releases whenever a <kbd>tag</kbd> is pushed.<br>
Usually, tags are created through publishing a (pre-)release, but there's a way around that.
To trigger Travis and AppVeyor, simply do the following:
```bash
cd $COCKATRICE_REPO
git checkout master
git remote update -p
git pull
git tag $TAG_NAME
git push upstream $TAG_NAME
```
You should define the variables as such:
```
upstream - git@github.com:Cockatrice/Cockatrice.git
$COCKATRICE_REPO - /Location/of/repository/cockatrice.git
`$TAG_NAME` should be:
- `YYYY-MM-DD-Release-MAJ.MIN.PATCH` for **stable releases**
- `YYYY-MM-DD-Development-MAJ.MIN.PATCH-beta.X` for **beta releases**<br>
With *MAJ.MIN.PATCH* being the NEXT release version!
```
This will cause a tagged release to be established on the GitHub repository, which will then lead to the upload of binaries. If you use this method, the tags (releases) that you create will be marked as a "Pre-release". The `/latest` URL will not be impacted (for stable release downloads) so that's good.
If you accidentally push a tag incorrectly (the tag is outdated, you didn't pull in the latest branch accidentally, you named the tag wrong, etc.) you can revoke the tag by doing the following:
```bash
git push --delete upstream $TAG_NAME
git tag -d $TAG_NAME
```
**NOTE:** Unfortunately, due to the method of how Travis and AppVeyor work, to publish a stable release you will need to make a copy of the release notes locally and then paste them into the GitHub GUI once the binaries have been uploaded by them. These CI services will automatically overwrite the name of the release (to "Cockatrice $TAG_NAME"), the status of the release (to "Pre-release"), and the release body (to "Beta build of Cockatrice").
**NOTE 2:** In the first lines of https://github.com/Cockatrice/Cockatrice/blob/master/CMakeLists.txt there's an hardcoded version number used when compiling custom (not tagged) versions. While on tagged versions these numbers are overriden by the version numbers coming from the tag title, it's a good practice to keep them aligned with the real ones.
The preferred flow of operations is:
* just before a release, update the version number in CMakeLists.txt to "next release version";
* tag the release following the previously described syntax in order to get it built by CI;
* wait for CI to upload the binaries, double check if everything is in order
* after the release is complete, update the version number again to "next targeted beta version", typically increasing `PROJECT_VERSION_PATCH` by one.
**NOTE 3:** When releasing a new stable version, all the previous beta versions should be deleted. This is needed for Cockatrice to pick up the stable release also for users that chose the "beta" release channel.

14
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,14 @@
<b>System Information:</b>
<!-- Go to "Help → View Debug Log" and copy all lines above the separation here! -->
<!-- If you can't install Cockatrice to access that information, make
sure to include your OS and the app version from the setup file here -->
__________________________________________________________________________________________
<!-- Explain your issue/request/suggestion in detail here! -->
<!-- This repository is ONLY about development of the Cockatrice app.
If you have any problems with a server (e.g. registering, connecting, ban...)
you have to contact that server's owner/admin.
Check this list of public servers with webpage links and contact details:
https://github.com/Cockatrice/Cockatrice/wiki/Public-Servers -->

12
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,12 @@
## Related Ticket(s)
- Fixes #IssueNumber
## Short roundup of the initial problem
## What will change with this Pull Request?
- this
- and this
## Screenshots
<!-- simply drag & drop image files directly into this description! -->

3
.gitignore vendored
View File

@@ -5,4 +5,5 @@ build*
mysql.cnf
.DS_Store
.idea/
.tx/
*.aps
cmake-build-debug/

139
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,139 @@
---
stages:
- build
.artifacts: &artifacts
artifacts:
paths:
- build/
.cache: &cache
cache:
key: "$CI_BUILD_NAME"
paths:
- cache/
.branches: &branches
only:
- master
.tags: &tags
tags:
- linux
- docker
#================================ DEBIAN-BASED ================================
.build_rc_package_deb: &build_rc_package_deb
stage: build
script:
- mkdir -p build
- cd build
- cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=Release -DCPACK_GENERATOR=DEB
- make package -j2
.build_debug_package_deb: &build_debug_package_deb
stage: build
script:
- mkdir -p build
- cd build
- cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=Debug -DCPACK_GENERATOR=DEB
- make package -j2
.deb-artifacts: &artifacts_deb
artifacts:
paths:
- build/*.deb
- build/CMakeFiles/*.log
when: always
#----------------------------------- UBUNTU -----------------------------------
.requirements_16xx: &install_requirements_16xx
before_script:
- apt-get -o dir::cache::archives="cache" update -qq
- apt-get -o dir::cache::archives="cache" install -y build-essential g++ cmake git
- apt-get -o dir::cache::archives="cache" install -y libprotobuf-dev protobuf-compiler
- apt-get -o dir::cache::archives="cache" install -y qt5-default qttools5-dev qttools5-dev-tools
- apt-get -o dir::cache::archives="cache" install -y qtmultimedia5-dev libqt5multimedia5-plugins
- apt-get -o dir::cache::archives="cache" install -y libqt5svg5-dev libqt5sql5-mysql
- apt-get -o dir::cache::archives="cache" install -y libqt5websockets5-dev
.requirements_17xx: &install_requirements_17xx
before_script:
- apt-get -o dir::cache::archives="cache" update -qq
- apt-get -o dir::cache::archives="cache" install -y build-essential g++ cmake git
- apt-get -o dir::cache::archives="cache" install -y libprotobuf-dev protobuf-compiler
- apt-get -o dir::cache::archives="cache" install -y qt5-default qttools5-dev qttools5-dev-tools
- apt-get -o dir::cache::archives="cache" install -y qtmultimedia5-dev libqt5multimedia5-plugins
- apt-get -o dir::cache::archives="cache" install -y libqt5svg5-dev libqt5sql5-mysql
- apt-get -o dir::cache::archives="cache" install -y libqt5websockets5-dev
.build_1604: &1604
image: ubuntu:16.04
<<: *tags
<<: *branches
<<: *install_requirements_16xx
<<: *artifacts_deb
<<: *cache
.build_1710: &1710
image: ubuntu:17.10
<<: *tags
<<: *branches
<<: *install_requirements_17xx
<<: *artifacts_deb
<<: *cache
build_rc_1604:
<<: *1604
<<: *build_rc_package_deb
when: always
build_debug_1604:
<<: *1604
<<: *build_debug_package_deb
when: always
build_rc_1710:
<<: *1710
<<: *build_rc_package_deb
when: always
build_debug_1710:
<<: *1710
<<: *build_debug_package_deb
when: always
allow_failure: true
#----------------------------------- DEBIAN -----------------------------------
.requirements_stretch: &install_requirements_stretch
before_script:
- apt-get -o dir::cache::archives="cache" update -qq
- apt-get -o dir::cache::archives="cache" install -y build-essential g++ cmake git
- apt-get -o dir::cache::archives="cache" install -y qt5-default qtbase5-dev-tools
- apt-get -o dir::cache::archives="cache" install -y qttools5-dev-tools qtmultimedia5-dev
- apt-get -o dir::cache::archives="cache" install -y libqt5svg5-dev libqt5websockets5-dev
- apt-get -o dir::cache::archives="cache" install -y libprotobuf-dev protobuf-compiler
.build_stretch: &stretch
image: debian:stretch
<<: *tags
<<: *branches
<<: *install_requirements_stretch
<<: *artifacts_deb
<<: *cache
build_rc_stretch:
<<: *stretch
<<: *build_rc_package_deb
when: always
build_debug_stretch:
<<: *stretch
<<: *build_debug_package_deb
when: always
allow_failure: true

View File

@@ -1,23 +1,98 @@
language: cpp
env:
- QT4=1
- QT4=0
os:
- linux
- osx
compiler:
- gcc
- clang
script: ./travis-compile.sh
install: ./travis-dependencies.sh
cache: apt
notifications:
slack: cockatrice:dNA81maCU8SAHB7pYrCWiQg9
webhooks:
urls:
- https://webhooks.gitter.im/e/d94969c3b01b22cbdcb7
on_success: change
on_failure: change
on_start: false
cache: ccache
matrix:
fast_finish: true
include:
- os: linux
dist: trusty
group: stable
env: BUILDTYPE=Debug
- os: linux
dist: trusty
group: stable
env: BUILDTYPE=Release
if: (branch = master AND NOT type = pull_request) OR tag IS present
- os: osx
osx_image: xcode8
env: BUILDTYPE=Debug
- os: osx
osx_image: xcode8
env: BUILDTYPE=Release
if: (branch = master AND NOT type = pull_request) OR tag IS present
#install dependencies for container-based "linux" builds
addons:
apt:
sources:
- sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main'
key_url: 'http://llvm.org/apt/llvm-snapshot.gpg.key'
packages:
- bc
- clang-format-5.0
- cmake
- libprotobuf-dev
- protobuf-compiler
- qt5-default
- qttools5-dev
- qttools5-dev-tools
- qtmultimedia5-dev
- libqt5multimedia5-plugins
- libqt5svg5-dev
- libqt5sql5-mysql
before_install: bash ./.ci/travis-dependencies.sh
script: bash ./.ci/travis-compile.sh
# Builds for pull requests skip the deployment step altogether
deploy:
# Deploy configuration for "beta" releases
- provider: releases
api_key:
secure: mLMF41q7xgOR1sjczsilEy7HQis2PkZCzhfOGbn/8FoOQnmmPOZjrsdhn06ZSl3SFsbfCLuClDYXAbFscQmdgjcGN5AmHV+JYfW650QEuQa/f4/lQFsVRtEqUA1O3FQ0OuRxdpCfJubZBdFVH8SbZ93GLC5zXJbkWQNq+xCX1fU=
skip_cleanup: true
name: "Cockatrice $TRAVIS_TAG"
body: "Beta release of Cockatrice"
file_glob: true
file: "build/Cockatrice-*"
overwrite: true
draft: false
prerelease: true
on:
tags: true
repo: Cockatrice/Cockatrice
condition: $BUILDTYPE = Release && $TRAVIS_TAG =~ ([0-9]|[1-9][0-9])(\.([0-9]|[1-9][0-9])){2}-beta(\.([2-9]|[1-9][0-9]))?$ # regex to match semver naming convention for beta pre-releases
# Deploy configuration for "stable" releases
- provider: releases
api_key:
secure: mLMF41q7xgOR1sjczsilEy7HQis2PkZCzhfOGbn/8FoOQnmmPOZjrsdhn06ZSl3SFsbfCLuClDYXAbFscQmdgjcGN5AmHV+JYfW650QEuQa/f4/lQFsVRtEqUA1O3FQ0OuRxdpCfJubZBdFVH8SbZ93GLC5zXJbkWQNq+xCX1fU=
skip_cleanup: true
file_glob: true
file: "build/Cockatrice-*"
overwrite: true
draft: false
prerelease: false
on:
tags: true
repo: Cockatrice/Cockatrice
condition: $BUILDTYPE = Release && $TRAVIS_TAG =~ ([0-9]|[1-9][0-9])(\.([0-9]|[1-9][0-9])){2}$ # regex to match semver naming convention for stable full releases
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/d94969c3b01b22cbdcb7
on_success: change
on_failure: change
on_start: never
on_cancel: change
on_error: change
# official validator for ".travis.yml" config file: https://yaml.travis-ci.org
# travis config documentation: https://docs.travis-ci.com/user/customizing-the-build

12
.tx/config Normal file
View File

@@ -0,0 +1,12 @@
[main]
host = https://www.transifex.com
[cockatrice.cockatrice]
file_filter = cockatrice/translations/cockatrice_<lang>.ts
source_file = cockatrice/translations/cockatrice_en.ts
source_lang = en
[cockatrice.oracle]
file_filter = oracle/translations/oracle_<lang>.ts
source_file = oracle/translations/oracle_en.ts
source_lang = en

View File

@@ -5,22 +5,17 @@
# This file sets all the variables shared between the projects
# like the installation path, compilation flags etc..
cmake_minimum_required(VERSION 2.6)
# Cmake 3.1 is required to enable C++11 support correctly
cmake_minimum_required(VERSION 3.1)
if(POLICY CMP0020)
cmake_policy(SET CMP0020 OLD)
if(POLICY CMP0064)
cmake_policy(SET CMP0064 NEW)
endif()
if(POLICY CMP0043)
cmake_policy(SET CMP0043 OLD)
if(POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
endif()
if(POLICY CMP0048)
cmake_policy(SET CMP0048 OLD)
endif()
set(PROJECT_NAME "Cockatrice")
# Default to "Release" build type
# User-provided value for CMAKE_BUILD_TYPE must be checked before the PROJECT() call
IF(DEFINED CMAKE_BUILD_TYPE)
@@ -29,9 +24,21 @@ ELSE()
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Type of build")
ENDIF()
# A project name is needed for CPack
PROJECT("${PROJECT_NAME}")
# Early detect ccache
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
# Support Unix Makefiles and Ninja
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
MESSAGE(STATUS "Found CCache ${CCACHE_PROGRAM}")
endif()
# A project name is needed for CPack
# Version can be overriden by git tags, see cmake/getversion.cmake
PROJECT("Cockatrice" VERSION 2.5.2)
# Use c++11 for all targets
set(CMAKE_CXX_STANDARD 11 CACHE STRING "C++ ISO Standard")
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Set conventional loops
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
@@ -48,10 +55,28 @@ include(createversionfile)
# Define a proper install path
if(UNIX)
if(APPLE)
# MacOS X
# macOS
# Due to the special bundle structure ignore
# the prefix eventually set by the user.
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/release)
# Force ccache usage if available
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
if(RULE_LAUNCH_COMPILE)
MESSAGE(STATUS "Force enabling CCache usage under macOS")
# Set up wrapper scripts
configure_file(${CMAKE_MODULE_PATH}/launch-c.in launch-c)
configure_file(${CMAKE_MODULE_PATH}/launch-cxx.in launch-cxx)
execute_process(COMMAND chmod a+rx
"${CMAKE_BINARY_DIR}/launch-c"
"${CMAKE_BINARY_DIR}/launch-cxx")
# Set Xcode project attributes to route compilation through our scripts
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/launch-cxx")
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/launch-cxx")
endif()
else()
# Linux / BSD
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
@@ -69,10 +94,10 @@ endif()
# Define proper compilation flags
IF(MSVC)
# Visual Studio:
# Maximum optimization
set(CMAKE_CXX_FLAGS_RELEASE "/Ox")
# Generate complete debugging information
# Visual Studio:
# Maximum optimization
set(CMAKE_CXX_FLAGS_RELEASE "/Ox /MD")
# Generate complete debugging information
#set(CMAKE_CXX_FLAGS_DEBUG "/Zi")
ELSEIF (CMAKE_COMPILER_IS_GNUCXX)
# linux/gcc, bsd/gcc, windows/mingw
@@ -100,58 +125,31 @@ IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
ADD_DEFINITIONS("-DSFMT_MEXP=19937")
ENDIF()
# Find Qt and enable the needed features
# Default is Qt5 unless WITH_QT4 option is enabled
option(WITH_QT4 "Force the use of Qt4 libraries" OFF)
# Find Qt5
OPTION(UPDATE_TRANSLATIONS "Update translations on compile" OFF)
MESSAGE("UPDATE TRANSLATIONS: ${UPDATE_TRANSLATIONS}")
MESSAGE(STATUS "UPDATE TRANSLATIONS: ${UPDATE_TRANSLATIONS}")
IF(NOT WITH_QT4)
# First known not-broken Qt5 version (5.0.2 available on old ubuntus is buggy).
FIND_PACKAGE(Qt5Widgets 5.0.3)
IF(WIN32)
FIND_PACKAGE(Qt5Core 5.4.0 REQUIRED) # For QSysInfo::buildAbi()
ELSE()
FIND_PACKAGE(Qt5Core 5.0.3 REQUIRED)
ENDIF()
IF(Qt5Widgets_FOUND)
MESSAGE(STATUS "Found Qt ${Qt5Widgets_VERSION_STRING}")
IF(Qt5Core_FOUND)
MESSAGE(STATUS "Found Qt ${Qt5Core_VERSION_STRING}")
# FIX: Qt was built with -reduce-relocations
if (Qt5_POSITION_INDEPENDENT_CODE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
FIND_PACKAGE(Qt5LinguistTools)
IF(UPDATE_TRANSLATIONS)
IF(NOT Qt5_LUPDATE_EXECUTABLE)
MESSAGE(WARNING "Qt's lupdate not found.")
ENDIF()
ENDIF()
IF(NOT Qt5_LRELEASE_EXECUTABLE)
MESSAGE(WARNING "Qt's lrelease not found.")
ENDIF()
# guess plugins and libraries directory
set(QT_PLUGINS_DIR "${Qt5Core_DIR}/../../../plugins")
get_target_property(QT_LIBRARY_DIR Qt5::Core LOCATION)
get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} PATH)
ELSE()
FIND_PACKAGE(Qt4 4.8.0 REQUIRED)
IF(QT4_FOUND)
# Old FindQt4.cmake modules used the same flag with different case
SET(Qt4_FOUND TRUE)
ENDIF()
IF(Qt4_FOUND)
MESSAGE(STATUS "Found Qt ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
IF(UPDATE_TRANSLATIONS)
IF(NOT QT_LUPDATE_EXECUTABLE)
MESSAGE(WARNING "Qt's lupdate not found.")
ENDIF()
ENDIF()
IF(NOT QT_LRELEASE_EXECUTABLE)
MESSAGE(WARNING "Qt's lrelease not found.")
ENDIF()
ELSE()
MESSAGE(FATAL_ERROR "No Qt4 or Qt5 found!")
ENDIF()
MESSAGE(FATAL_ERROR "No Qt5 found!")
ENDIF()
set(CMAKE_AUTOMOC TRUE)
@@ -165,19 +163,15 @@ IF(WIN32)
ENDIF()
# Package builder
set(CPACK_PACKAGE_CONTACT "Daenyth+github@gmail.com")
set(CPACK_PACKAGE_CONTACT "Gavin Bisesi <Daenyth+github@gmail.com>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME})
set(CPACK_PACKAGE_VENDOR "Cockatrice Development Team")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
# Create a version string suitable for file names
string(REPLACE " " "_" PROJECT_VERSION_SAFE "${PROJECT_VERSION}")
string(REPLACE "(" "" PROJECT_VERSION_SAFE "${PROJECT_VERSION_SAFE}")
string(REPLACE ")" "" PROJECT_VERSION_SAFE "${PROJECT_VERSION_SAFE}")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_VERSION_FILENAME}")
if(UNIX)
if(APPLE)
@@ -186,24 +180,39 @@ if(UNIX)
set(CPACK_DMG_FORMAT "UDBZ")
set(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME}")
set(CPACK_SYSTEM_NAME "OSX")
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-osx_git-${PROJECT_VERSION_SAFE}")
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/cockatrice/resources/appicon.icns")
else()
# linux
set(CPACK_GENERATOR DEB ${CPACK_GENERATOR})
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}/${PROJECT_VERSION_SAFE}")
set(CPACK_STRIP_FILES "bin/${PROJECT_NAME}")
set(CPACK_SOURCE_STRIP_FILES "")
IF(CPACK_GENERATOR STREQUAL "RPM")
set(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
set(CPACK_RPM_PACKAGE_REQUIRES "protobuf, qt5-qttools, qt5-qtsvg, qt5-qtmultimedia")
set(CPACK_RPM_PACKAGE_GROUP "Amusements/Games")
set(CPACK_RPM_PACKAGE_URL "http://github.com/Cockatrice/Cockatrice")
ELSE()
set(CPACK_GENERATOR DEB)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_SECTION "games")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://github.com/Cockatrice/Cockatrice")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5multimedia5-plugins, libqt5svg5")
ENDIF()
endif()
elseif(WIN32)
set(CPACK_GENERATOR NSIS ${CPACK_GENERATOR})
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}_win32_git-${PROJECT_VERSION_SAFE}")
# Configure file with custom definitions for NSIS.
configure_file(
${CMAKE_MODULE_PATH}/NSIS.definitions.nsh.in
${PROJECT_BINARY_DIR}/NSIS.definitions.nsh
)
# include vcredist into the package; NSIS will take care of running it
IF(MSVC)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
INSTALL(FILES "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/redist/MSVC/14.13.26020/vc_redist.x64.exe" DESTINATION ./)
else()
INSTALL(FILES "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/redist/MSVC/14.13.26020/vc_redist.x86.exe" DESTINATION ./)
endif()
ENDIF()
endif()
include(CPack)
@@ -213,21 +222,26 @@ option(WITH_SERVER "build servatrice" OFF)
add_subdirectory(common)
if(WITH_SERVER)
add_subdirectory(servatrice)
SET(CPACK_INSTALL_CMAKE_PROJECTS "servatrice;servatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
SET(CPACK_INSTALL_CMAKE_PROJECTS "Servatrice;Servatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
endif()
# Compile cockatrice (default on)
option(WITH_CLIENT "build cockatrice" ON)
if(WITH_CLIENT)
add_subdirectory(cockatrice)
add_subdirectory(sounds)
add_subdirectory(zonebg)
SET(CPACK_INSTALL_CMAKE_PROJECTS "cockatrice;cockatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
SET(CPACK_INSTALL_CMAKE_PROJECTS "Cockatrice;Cockatrice;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
endif()
# Compile oracle (default on)
option(WITH_ORACLE "build oracle" ON)
if(WITH_ORACLE)
add_subdirectory(oracle)
SET(CPACK_INSTALL_CMAKE_PROJECTS "release/oracle.app;oracle;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
SET(CPACK_INSTALL_CMAKE_PROJECTS "Oracle;Oracle;ALL;/" ${CPACK_INSTALL_CMAKE_PROJECTS})
endif()
# Compile tests (default off)
option(TEST "build tests" OFF)
if(TEST)
include(CTest)
add_subdirectory(tests)
endif()

View File

@@ -1,210 +0,0 @@
# Style Guide #
### Compatibility ###
Cockatrice is written in C++-03, so do not use C++11 constructs such as `auto`.
Cockatrice support both Qt 4 and Qt 5, so make sure that your code compiles
with both. If there have been breaking changes between Qt 4 and 5, use a
statement such as
#if QT_VERSION >= 0x500000
doSomethingWithQt5();
#else
doSomethingWithQt4();
#endif
For consistency, use Qt data structures where possible, such as `QString` over
`std::string` or `QList` over `std::vector`.
### Header files ###
Use header files with the extension `.h` and source files with the extension
`.cpp`.
Use header guards in the form of `FILE_NAME_H`.
Simple functions, such as getters, may be written inline in the header file,
but other functions should be written in the source file.
Keep library includes and project includes grouped together. So this is okay:
// Good:
#include <QList>
#include <QString>
#include "card.h"
#include "deck.h"
// Good:
#include "card.h"
#include "deck.h"
#include <QList>
#include <QString>
// Bad:
#include <QList>
#include "card.h"
#include <QString>
#include "deck.h"
### Naming ###
Use `UpperCamelCase` for classes, structs, enums, etc. and `lowerCamelCase` for
function and variable names.
Member variables aren't decorated in any way. Don't prefix or suffix with
underscores, etc.
For arguments to constructors which have the same names as member variables,
prefix those arguments with underscores:
MyClass::MyClass(int _myData)
: myData(_myData)
{}
Pointers and references should be denoted with the `*` or `&` going with the
variable name:
// Good:
Foo *foo1 = new Foo;
Foo &foo2 = *foo1;
// Bad:
Bar* bar1 = new Bar;
Bar& bar2 = *bar1;
Use `0` instead of `NULL` (or `nullptr`) for null pointers.
### Braces ###
Use K&R-style braces. Braces for function implementations go on their own
lines, but they go on the same line everywhere else:
int main()
{
if (someCondition) {
doSomething();
} else {
while (someOtherCondition) {
doSomethingElse();
}
}
}
Braces can be omitted for single-statement if's and the like, as long as it is
still legible.
### Tabs ###
Use only spaces. Four spaces per tab.
### Lines ###
Do not have trailing whitespace in your lines.
Lines should be 80 characters or less, as a soft limit.
### Memory Management ###
New code should be written using references over pointers and stack allocation
over heap allocation wherever possible.
// Good: uses stack allocation and references
void showCard(const Card &card);
int main()
{
Card card;
showCard(card);
}
// Bad: relies on manual memory management and doesn't give us much
// null-safety.
void showCard(const Card *card);
int main()
{
Card *card = new Card;
showCard(card);
delete card;
}
(Remember to pass by `const` reference wherever possible, to avoid accidentally
mutating objects.)
When pointers can't be avoided, try to use a smart pointer of some sort, such
as `QScopedPointer`, or, less preferably, `QSharedPointer`.
### Translations: introduction ###
Basic workflow for translations:
1. developer adds a `tr("foo")` string in the code;
2. every few days, a maintainer updates the `*_en.ts files` adding the new strings;
3. Transifex picks up the new files from github every 24 hours;
4. translators translate the new untraslated strings on Transifex;
5. before a release, a maintainer fetches the updated translations from Transifex.
### Translations (for developers) ###
All the user-interface strings inside Cockatrice's source code must be written in
english language. Translations to other languages are managed using [Transifex](https://www.transifex.com/projects/p/cockatrice/).
If you're about to propose a change that adds or modifies any translatable string
in the code, you don't need to take care of adding the new strings to the
translation files. Every few days, or when a lot of new strings have been added,
someone from the development team will take care of extracing all the new strings,
adding them to the english translation files and making them available to
translators on Transifex.
### Translations (for maintainers) ###
#### Step 2: updating *_en.ts files ####
When new translatable strings have been added to the code, it would be nice to
make them available to translators on Transifex. Every few days, or when a lot
of new strings have been added, a maintainer should take care of extracing all
the new strings and add them to the english translation files.
To update the english translation files, re-run cmake enabling the appropriate
parameter and then run make:
cd cockatrice/build
cmake .. -DUPDATE_TRANSLATIONS=ON
make
If the parameter has been enabled correctly, when running "make" you should see
a line similar to this one (the numbers may vary):
[ 76%] Generating ../../cockatrice/translations/cockatrice_en.ts
Updating '../../cockatrice/translations/cockatrice_en.ts'...
Found 857 source text(s) (8 new and 849 already existing)
You should then notice that the following files have uncommitted changes:
cockatrice/translations/cockatrice_en.ts
oracle/translations/oracle_en.ts
It's now suggested to disable the parameter using:
cmake .. -DUPDATE_TRANSLATIONS=OFF
Now you are ready to propose your change. Once your change gets merged,
Transifex will pick up the modified files automatically (checks every 24 hours)
and update the interface where translators will be able to translate the new
strings.
#### Step 5: fetch new translations from Transifex ####
Before rushing out a new release, it would be nice to fetch the most up to date
translations from Transifex and commit them into the Cockatrice source code.
This can be done manually from the Transifex web interface, but it's quite time
consuming.
As an alternative, you can install the Transifex CLI:
http://docs.transifex.com/developer/client/
You'll then be able to use a git-like cli command to push and pull translations
from Transifex to the source code and vice versa.
### Translations (for translators) ###
Please have a look at the specific [FAQ for translators](https://github.com/Cockatrice/Cockatrice/wiki/Translation-FAQ).

View File

@@ -3,25 +3,23 @@ MAINTAINER Gavin Bisesi <Daenyth@gmail.com>
RUN apt-get update && apt-get install -y software-properties-common
RUN apt-add-repository ppa:ubuntu-sdk-team/ppa
RUN add-apt-repository -y ppa:smspillaz/cmake-master
RUN apt-get update && apt-get install -y\
build-essential g++\
cmake\
git\
libprotobuf-dev\
libqt5svg5-dev\
libqt5webkit5-dev\
libsqlite3-dev\
protobuf-compiler\
qt5-default\
qtbase5-dev\
qtdeclarative5-dev\
qtmultimedia5-dev\
qttools5-dev-tools\
qttools5-dev
qttools5-dev\
libqt5sql5-mysql
ENV dir /home/servatrice/code
WORKDIR $dir
RUN mkdir oracle
COPY COPYING COPYING
COPY LICENSE LICENSE
COPY CMakeLists.txt CMakeLists.txt
COPY cmake/ cmake/
COPY common/ common/
@@ -29,7 +27,7 @@ COPY servatrice/ servatrice/
COPY README.md README.md
WORKDIR build
RUN cmake .. -DWITH_QT4=0 -DWITH_SERVER=1 -DWITH_CLIENT=0 -DWITH_ORACLE=0 &&\
RUN cmake .. -DWITH_SERVER=1 -DWITH_CLIENT=0 -DWITH_ORACLE=0 &&\
make &&\
make install
@@ -37,4 +35,4 @@ WORKDIR /home/servatrice
EXPOSE 4747
CMD servatrice
ENTRYPOINT [ "servatrice" ]

View File

157
README.md
View File

@@ -1,62 +1,94 @@
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
<p align='center'><img src=https://cloud.githubusercontent.com/assets/9874850/7516775/b00b8e36-f4d1-11e4-8da4-3df294d01f86.png></p>
- [Cockatrice](#cockatrice)
- [Get Involved [![Gitter chat](https://badges.gitter.im/Cockatrice/Cockatrice.png)](https://gitter.im/Cockatrice/Cockatrice)](#get-involved-)
- [Community Resources](#community-resources)
- [Translation Status [![Cockatrice on Transiflex](https://ds0k0en9abmn1.cloudfront.net/static/charts/images/tx-logo-micro.646b0065fce6.png)](https://www.transifex.com/projects/p/cockatrice/)](#translation-status-)
- [Building [![Build Status](https://travis-ci.org/Cockatrice/Cockatrice.svg?branch=master)](https://travis-ci.org/Cockatrice/Cockatrice)](#building-)
- [Building servatrice Docker container](#building-servatrice-docker-container)
- [Running](#running)
- [License](#license)
---
<p align='center'>
<a href="#cockatrice"><b>Cockatrice</b></a> <b>|</b>
<a href="#download-">Download</a> <b>|</b>
<a href="#get-involved-">Get Involved</a> <b>|</b>
<a href="#community-resources">Community</a> <b>|</b>
<a href="#translations-">Translations</a> <b>|</b>
<a href="#build--">Build</a> <b>|</b>
<a href="#run">Run</a> <b>|</b>
<a href="#license-">License</a>
</p>
---
<br><pre>
<b>To get started, &#8674; [view our webpage](https://cockatrice.github.io/)</b><br>
<b>To get support or suggest changes &#8674; [file an issue](https://github.com/Cockatrice/Cockatrice/issues) ([How?](https://github.com/Cockatrice/Cockatrice/wiki/How-to-Create-a-GitHub-Ticket-Regarding-Cockatrice))</b>
<b>To help with development, see how to [get involved](#get-involved-)</b>
</pre><br>
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# Cockatrice
Cockatrice is an open-source multiplatform software for playing card games,
such as Magic: The Gathering, over a network. It is fully client-server based
to prevent any kind of cheating, though it supports single-player games without
a network interface as well. Both client and server are written in Qt, supporting both Qt4 and Qt5.
Cockatrice is an open-source, multiplatform program for playing tabletop card games over a network. The program's server design prevents users from manipulating the game for unfair advantage. The client also provides a single-player mode, which allows users to brew while offline. This project uses C++ and the Qt5 libraries.<br>
# Get Involved [![Gitter chat](https://badges.gitter.im/Cockatrice/Cockatrice.png)](https://gitter.im/Cockatrice/Cockatrice)
Chat with the Cockatrice developers on Gitter. Come here to talk about the application, features, or just to hang out. For support regarding specific servers, please contact that server's admin or forum for support rather than asking here.
# Download [![Cockatrice Eternal Download Count](https://img.shields.io/github/downloads/cockatrice/cockatrice/total.svg)](https://tooomm.github.io/github-release-stats/?username=Cockatrice&repository=Cockatrice)
Downloads are available for full releases and the current beta version in development.<br>
Full releases are checkpoints featuring major feature or UI enhancements - we recommend to use those. There is no strict schedule for new full releases.
The beta release contains the most recently added features and bugfixes, but can be unstable. They are released as we feel need.
- Latest `stable` release (**recommended**): [![Download from GitHub Releases](https://img.shields.io/github/release/cockatrice/cockatrice.svg)](https://github.com/cockatrice/cockatrice/releases/latest) [![DL Count on Latest Release](https://img.shields.io/github/downloads/cockatrice/cockatrice/latest/total.svg)](https://tooomm.github.io/github-release-stats/?username=Cockatrice&repository=Cockatrice)<br>
- Latest `beta` release: [![Download from GitHub Pre-Releases](https://img.shields.io/github/release/cockatrice/cockatrice/all.svg)](https://github.com/cockatrice/cockatrice/releases) [![DL Count on Latest Pre-Release](https://img.shields.io/github/downloads-pre/cockatrice/cockatrice/latest/total.svg)](https://tooomm.github.io/github-release-stats/?username=Cockatrice&repository=Cockatrice)
- Beta versions may be unstable and contain bugs.
- To be a Cockatrice Beta Tester, use this version. Find more information [here](https://github.com/Cockatrice/Cockatrice/wiki/Release-Channels)!
# Get Involved [![Gitter Chat](https://img.shields.io/gitter/room/Cockatrice/Cockatrice.svg)](https://gitter.im/Cockatrice/Cockatrice)
[Chat](https://gitter.im/Cockatrice/Cockatrice) with the Cockatrice developers on Gitter. Come here to talk about the application, features, or just to hang out. For support regarding specific servers, please contact that server's admin or forum for support rather than asking here.<br>
To contribute code to the project, please review [the guidelines](https://github.com/Cockatrice/Cockatrice/blob/master/.github/CONTRIBUTING.md).
We maintain two tags for contributors to find issues to work on:
- [Good first issue](https://github.com/Cockatrice/Cockatrice/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3A%22Good%20first%20issue%22%20): issues tagged in this way provide a simple way to get started. They don't require much experience to be worked on.
- [Help wanted](https://github.com/Cockatrice/Cockatrice/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3A%22Help%20Wanted%22%20): This tag is used for issues that we are looking for a contributor to work on. Often this is for feature suggestions we are willing to accept, but don't have the time to work on ourselves.
For both tags, we're willing to provide help to contributors in showing them where and how they can make changes, as well as code review for changes they submit.
Read the long-term project **roadmap** to see planned edits and milestones [here](https://docs.google.com/document/d/1Ewe5uSaRE2nR2pNPMaGmP6gVZdqgFbBgwSscGqIr4W0/edit).
We try to be responsive to new issues. We'll provide advice on how best to implement a feature; alternately, we can show you where the codebase is doing something similar before you get too far along.
Cockatrice uses the [Google Developer Documentation Style Guide](https://developers.google.com/style/) to ensure consistent documentation. We encourage you to improve the documentation by suggesting edits based on this guide.
# Community Resources
- [reddit r/Cockatrice](http://reddit.com/r/cockatrice)
- [Woogerworks Server & Forums](http://www.woogerworks.com)
- [Cockatrice Official Site](https://cockatrice.github.io)
- [Cockatrice Official Wiki](https://github.com/Cockatrice/Cockatrice/wiki)
- [Cockatrice Official Discord](https://discord.gg/3Z9yzmA)
- [reddit r/Cockatrice](https://reddit.com/r/cockatrice)
# Translation Status [![Cockatrice on Transiflex](https://ds0k0en9abmn1.cloudfront.net/static/charts/images/tx-logo-micro.646b0065fce6.png)](https://www.transifex.com/projects/p/cockatrice/)
Cockatrice uses Transifex for translations. You can help us bring Cockatrice/Oracle to your language or edit single wordings by clicking on the associated charts below.<br>
Our [project page](https://www.transifex.com/projects/p/cockatrice/) offers a detailed overview for contributors.
# Translations [![Cockatrice on Transiflex](https://tx-assets.scdn5.secure.raxcdn.com/static/charts/images/tx-logo-micro.c5603f91c780.png)](https://www.transifex.com/projects/p/cockatrice/)
Language statistics for `Cockatrice` *(on the left)* and `Oracle` *(on the right)*:
Cockatrice uses Transifex for translations. You can help us bring Cockatrice and Oracle to your language or just edit single wordings right from within your browser by visiting our [Transifex project page](https://www.transifex.com/projects/p/cockatrice/).<br>
| Cockatrice | Oracle |
|:-:|:-:|
| [![Cockatrice Translation Status](https://www.transifex.com/projects/p/cockatrice/resource/cockatrice/chart/image_png/)](https://www.transifex.com/projects/p/cockatrice/) | [![Oracle Translation Status](https://www.transifex.com/projects/p/cockatrice/resource/oracle/chart/image_png/)](https://www.transifex.com/projects/p/cockatrice/) |
[![Cockatrice translations](https://www.transifex.com/projects/p/cockatrice/resource/cockatrice/chart/image_png)](https://www.transifex.com/projects/p/cockatrice/resource/cockatrice/)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[![Oracle translations](https://www.transifex.com/projects/p/cockatrice/resource/oracle/chart/image_png)](https://www.transifex.com/projects/p/cockatrice/resource/oracle/)
Check out our [Translator FAQ](https://github.com/Cockatrice/Cockatrice/wiki/Translation-FAQ) for more information about contributing!<br>
Check out our [Translator FAQ](https://github.com/Cockatrice/Cockatrice/wiki/Translation-FAQ) for more information!
# Building [![Build Status](https://travis-ci.org/Cockatrice/Cockatrice.svg?branch=master)](https://travis-ci.org/Cockatrice/Cockatrice)
# Build [![Travis Build Status - master](https://travis-ci.org/Cockatrice/Cockatrice.svg?branch=master)](https://travis-ci.org/Cockatrice/Cockatrice) [![Appveyor Build Status - master](https://ci.appveyor.com/api/projects/status/lp5h0dhk4mhmeps7/branch/master?svg=true)](https://ci.appveyor.com/project/Daenyth/cockatrice/branch/master)
**Detailed compiling instructions are on the Cockatrice wiki under [Compiling Cockatrice](https://github.com/Cockatrice/Cockatrice/wiki/Compiling-Cockatrice)**
Dependencies:
- [Qt](http://qt-project.org/)
- [protobuf](http://code.google.com/p/protobuf/)
- [CMake](http://www.cmake.org/)
- [Qt](https://www.qt.io/developers/)
- [protobuf](https://github.com/google/protobuf)
- [CMake](https://www.cmake.org/)
Oracle can optionally use zlib to load zipped files:
- [zlib](http://www.zlib.net/)
The server requires an additional dependency when compiled under Qt4:
- [libgcrypt](http://www.gnu.org/software/libgcrypt/)
- [zlib](https://www.zlib.net/)
To compile:
@@ -64,26 +96,49 @@ To compile:
cd build
cmake ..
make
You can then run
make install
to get a cockatrice installation inside the `release` folder, or:
make package
to create a system-specific installation package.
The following flags can be passed to `cmake`:
- `-DWITH_SERVER=1` Build the server
- `-DWITH_CLIENT=0` Do not build the client
- `-DWITH_ORACLE=0` Do not build Oracle
- `-DWITH_QT4=1` Force compilation to use Qt4 instead of Qt5.
- `-DCMAKE_BUILD_TYPE=Debug` Compile in debug mode. Enables extra logging output, debug symbols, and much more verbose compiler warnings.
- `-DUPDATE_TRANSLATIONS=1` Configure `make` to update the translation .ts files for new strings in the source code. Note: Running `make clean` will remove the .ts files.
- `-DWITH_SERVER=1` Whether to build the server (default 0 = no).
- `-DWITH_CLIENT=0` Whether to build the client (default 1 = yes).
- `-DWITH_ORACLE=0` Whether to build oracle (default 1 = yes).
- `-DCMAKE_BUILD_TYPE=Debug` Compile in debug mode. Enables extra logging output, debug symbols, and much more verbose compiler warnings (default `Release`).
- `-DUPDATE_TRANSLATIONS=1` Configure `make` to update the translation .ts files for new strings in the source code. Note: Running `make clean` will remove the .ts files (default 0 = no).
- `-DTEST=1` Enable regression tests (default 0 = no). Note: needs googletest, will be downloaded on the fly if unavailable. To run tests: ```make test```.
# Building servatrice Docker container
`docker build -t servatrice .`
# Running
# Run
`oracle` fetches card data
`cockatrice` is the game client
`servatrice` is the server
`Cockatrice` is the game client
`Oracle` fetches card data
`Servatrice` is the server<br>
# License
Cockatrice is free software, licensed under the GPLv2; see COPYING for details.
**Servatrice Docker container**
You can run an instance of Servatrice (the Cockatrice server) using [Docker](https://www.docker.com/what-docker) and the Cockatrice Dockerfile.<br>
First, create an image from the Dockerfile<br>
`cd /path/to/Cockatrice-Repo/`
`docker build -t servatrice .`<br>
And then run it<br>
`docker run -i -p 4747:4747/tcp -t servatrice:latest`<br>
>Note: Running this command exposes the TCP port 4747 of the docker container<br>
to permit connections to the server.
Find more information on how to use Servatrice with Docker in our [wiki](https://github.com/Cockatrice/Cockatrice/wiki/Setting-up-Servatrice#using-docker).
# License [![GPLv2 License](https://img.shields.io/github/license/Cockatrice/Cockatrice.svg)](https://github.com/Cockatrice/Cockatrice/blob/master/LICENSE)
Cockatrice is free software, licensed under the [GPLv2](https://github.com/Cockatrice/Cockatrice/blob/master/LICENSE).

34
TODO.md
View File

@@ -1,34 +0,0 @@
#TODOs
This is an unordered list of possible todo items for Cockatrice.
Note that "improve" and "write" always also means: "document and comment"
##Improve packaging:
* Improve nsis file git hash extraction, it only works if the build directory is cleared as version_string.cpp does not seem to get updated by git pull/cmake
* Create script/... for creating Linux packages (deb, rpm, ebuild, ...) or at least an official tarball/git tags; package maintainers dislike using git snapshots so much that they rather ignore software without stable tarballs.
##Scripts
* Write example init script for servatrice.
##Improve usermanual:
* Improve Layout, Text, Screenshots; nearly everything is still quick n dirty copy and paste.
* Add missing TODOs
* Translate the Documentation
* Rename the picture filenames to something more meaningful.
* Create an index, lists of tables/figures/...
##Create developer documentation:
* Create developer manual
* Add comments to code
* Describe which components exist and how they work and interact
* Describe the *.proto files
* Comment and document servatrice.sql
* Document everything!1!!
##Else
* Update SFMT library (http://www.math.sci.hiroshima-u.ac.jp/~m-mat@math.sci.hiroshima-u.ac.jp/MT/SFMT/) in common/sfmt and adapt common/rng_sfmt.cpp
* Move hardcoded URLs (especially from oracle and cockatrice) into a config file.
* Search git log for useful information/problems/bugs/...

22
clangify.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
# This script will run clang-format on all modified, non-3rd-party C++/Header files.
set -e
if hash clang-format 2>/dev/null && hash git 2>/dev/null; then
files_to_clean=($(git diff --name-only $(git merge-base origin/master HEAD)))
printf "%s\n" ${files_to_clean[@]} | \
xargs -I{} find '{}' \( -name "*.cpp" -o -name "*.h" \) \
-not -path "./cockatrice/src/qt-json/*" \
-not -path "./servatrice/src/smtp/*" \
-not -path "./common/sfmt/*" \
-not -path "./oracle/src/zip/*" \
-not -path "./build*/*" \
-exec clang-format -style=file -i {} \;
echo "Successfully formatted following files:"
printf "%s\n" ${files_to_clean[@]}
else
echo "Please install clang-format and git to use this program"
fi

View File

@@ -1,46 +0,0 @@
# -*- cmake -*-
# Copied from http://code.google.com/p/emeraldviewer/
# - Find libgcrypt
# Find the libgcrypt includes and library
# This module defines
# LIBGCRYPT_INCLUDE_DIR, where to find gcrypt.h, etc.
# LIBGCRYPT_LIBRARIES, the libraries needed to use libgcrypt.
# LIBGCRYPT_FOUND, If false, do not try to use libgcrypt.
# also defined, but not for general use are
# LIBGCRYPT_LIBRARY, where to find the libgcrypt library.
FIND_PATH(LIBGCRYPT_INCLUDE_DIR gcrypt.h)
SET(LIBGCRYPT_NAMES ${LIBGCRYPT_NAMES} gcrypt)
FIND_LIBRARY(LIBGCRYPT_LIBRARY
NAMES ${LIBGCRYPT_NAMES}
)
IF (LIBGCRYPT_LIBRARY AND LIBGCRYPT_INCLUDE_DIR)
SET(LIBGCRYPT_LIBRARIES ${LIBGCRYPT_LIBRARY})
SET(LIBGCRYPT_FOUND "YES")
ELSE (LIBGCRYPT_LIBRARY AND LIBGCRYPT_INCLUDE_DIR)
SET(LIBGCRYPT_FOUND "NO")
ENDIF (LIBGCRYPT_LIBRARY AND LIBGCRYPT_INCLUDE_DIR)
IF (LIBGCRYPT_FOUND)
IF (NOT LIBGCRYPT_FIND_QUIETLY)
MESSAGE(STATUS "Found libgcrypt: '${LIBGCRYPT_LIBRARIES}' and header in '${LIBGCRYPT_INCLUDE_DIR}'")
ENDIF (NOT LIBGCRYPT_FIND_QUIETLY)
ELSE (LIBGCRYPT_FOUND)
IF (LIBGCRYPT_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find libgcrypt library")
ENDIF (LIBGCRYPT_FIND_REQUIRED)
ENDIF (LIBGCRYPT_FOUND)
# Deprecated declarations.
SET (NATIVE_LIBGCRYPT_INCLUDE_PATH ${LIBGCRYPT_INCLUDE_DIR} )
GET_FILENAME_COMPONENT (NATIVE_LIBGCRYPT_LIB_PATH ${LIBGCRYPT_LIBRARY} PATH)
MARK_AS_ADVANCED(
LIBGCRYPT_LIBRARY
LIBGCRYPT_INCLUDE_DIR
)

View File

@@ -1,158 +0,0 @@
INCLUDE(FindQt4)
set(MOBILITY_CONFIG_MKSPECS_FILE "")
IF(EXISTS "${QT_MKSPECS_DIR}/features/mobilityconfig.prf")
set(MOBILITY_CONFIG_MKSPECS_FILE "${QT_MKSPECS_DIR}/features/mobilityconfig.prf")
ELSEIF(EXISTS "${QT_MKSPECS_DIR}/features/mobility.prf")
set(MOBILITY_CONFIG_MKSPECS_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/mobilityconfig.prf")
ENDIF()
macro(export_component component)
IF(NOT ${MOBILITY_CONFIG_MKSPECS_FILE} STREQUAL "")
FILE(READ ${MOBILITY_CONFIG_MKSPECS_FILE} MOBILITY_FILE_CONTENTS)
STRING(TOLOWER ${component} _COMPONENT)
IF(${MOBILITY_FILE_CONTENTS} MATCHES "MOBILITY_CONFIG=.*${_COMPONENT}.*")
STRING(TOUPPER ${component} _COMPONENT)
SET(QT_MOBILITY_${_COMPONENT}_FOUND 1)
SET(QT_MOBILITY_${_COMPONENT}_INCLUDE_DIR ${QT_MOBILITY_PARENT_INCLUDE_DIR}/Qt${component})
SET(QT_MOBILITY_${_COMPONENT}_LIBRARY Qt${component})
ENDIF()
ENDIF()
endmacro()
set(VERSION_INFO "")
set(FEATURE_FILE_PREFIX "${QT_MKSPECS_DIR}/features/mobility")
if(DEFINED MOBILITY_VERSION)
if(MOBILITY_VERSION STREQUAL "1.1" AND EXISTS "${FEATURE_FILE_PREFIX}11.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}11.prf")
set(VERSION_INFO "1.1")
elseif(MOBILITY_VERSION STREQUAL "1.2" AND EXISTS "${FEATURE_FILE_PREFIX}12.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}12.prf")
set(VERSION_INFO "1.2")
elseif(MOBILITY_VERSION STREQUAL "default" AND EXISTS "${FEATURE_FILE_PREFIX}.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}.prf")
set(VERSION_INFO "system's default")
else()
message(STATUS "Couldn't find QtMobility version: ${MOBILITY_VERSION}")
endif()
endif()
if(NOT DEFINED MOBILITY_PRF_FILE)
if(EXISTS "${FEATURE_FILE_PREFIX}.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}.prf")
set(VERSION_INFO "system's default")
elseif(EXISTS "${FEATURE_FILE_PREFIX}12.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}12.prf")
set(VERSION_INFO "1.2")
elseif(EXISTS "${FEATURE_FILE_PREFIX}11.prf")
set(MOBILITY_PRF_FILE "${FEATURE_FILE_PREFIX}11.prf")
set(VERSION_INFO "1.1")
else()
message(FATAL_ERROR "Couldn't find any version of QtMobility.")
endif()
endif()
message(STATUS "Using QtMobility version: ${VERSION_INFO}")
IF(DEFINED MOBILITY_PRF_FILE)
FILE(READ ${MOBILITY_PRF_FILE} MOBILITY_FILE_CONTENTS)
STRING(REGEX MATCH "MOBILITY_PREFIX=([^\n]+)" QT_MOBILITY_PREFIX "${MOBILITY_FILE_CONTENTS}")
SET(QT_MOBILITY_PREFIX ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_INCLUDE=([^\n]+)" QT_MOBILITY_INCLUDE_DIR "${MOBILITY_FILE_CONTENTS}")
SET(QT_MOBILITY_INCLUDE_DIR ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_LIB=([^\n]+)" "\\1" QT_MOBILITY_LIBRARY "${MOBILITY_FILE_CONTENTS}")
SET(QT_MOBILITY_LIBRARY_DIR ${CMAKE_MATCH_1})
#VERSION
IF(NOT ${MOBILITY_CONFIG_MKSPECS_FILE} STREQUAL "")
FILE(READ ${MOBILITY_CONFIG_MKSPECS_FILE} MOBILITY_CONFIG_FILE_CONTENTS)
STRING(REGEX MATCH "MOBILITY_VERSION = ([^\n]+)" QT_MOBILITY_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_VERSION ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_MAJOR_VERSION = ([^\n]+)" QT_MOBILITY_MAJOR_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_MAJOR_VERSION ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_MINOR_VERSION = ([^\n]+)" QT_MOBILITY_MINOR_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_MINOR_VERSION ${CMAKE_MATCH_1})
STRING(REGEX MATCH "MOBILITY_PATCH_VERSION = ([^\n]+)" QT_MOBILITY_PATCH_VERSION "${MOBILITY_CONFIG_FILE_CONTENTS}")
SET(QT_MOBILITY_PATCH_VERSION ${CMAKE_MATCH_1})
ELSE()
SET(QT_MOBILITY_VERSION 1.0.0)
SET(QT_MOBILITY_MAJOR_VERSION 1)
SET(QT_MOBILITY_MINOR_VERSION 0)
SET(QT_MOBILITY_PATCH_VERSION 0)
ENDIF()
SET(QT_MOBILITY_PARENT_INCLUDE_DIR ${QT_MOBILITY_INCLUDE_DIR})
SET(QT_MOBILITY_INCLUDE_DIR ${QT_MOBILITY_INCLUDE_DIR}/QtMobility)
IF(QtMobility_FIND_VERSION_EXACT)
IF(QT_MOBILITY_VERSION VERSION_EQUAL QtMobility_FIND_VERSION)
SET(QT_MOBILITY_FOUND TRUE)
ELSE()
SET(QT_MOBILITY_FOUND FALSE)
IF(QT_MOBILITY_VERSION VERSION_LESS QtMobility_FIND_VERSION)
SET(QT_MOBILITY_TOO_OLD TRUE)
ELSE()
SET(QT_MOBILITY_TOO_NEW TRUE)
ENDIF()
ENDIF()
ELSE()
IF(QT_MOBILITY_VERSION VERSION_LESS QtMobility_FIND_VERSION)
SET(QT_MOBILITY_FOUND FALSE)
SET(QT_MOBILITY_TOO_OLD TRUE)
ELSE()
SET(QT_MOBILITY_FOUND TRUE)
ENDIF()
ENDIF()
ELSE()
SET(QT_MOBILITY_FOUND NOTFOUND)
SET(QT_MOBILITY_PREFIX NOTFOUND)
SET(QT_MOBILITY_INCLUDE NOTFOUND)
SET(QT_MOBILITY_LIB NOTFOUND)
ENDIF()
IF(NOT QT_MOBILITY_FOUND)
if(QT_MOBILITY_TOO_OLD)
MESSAGE(FATAL_ERROR "The installed QtMobility version ${QT_MOBILITY_VERSION} it too old, version ${QtMobility_FIND_VERSION} is required.")
ELSEIF(QT_MOBILITY_TOO_NEW)
MESSAGE(FATAL_ERROR "The installed QtMobility version ${QT_MOBILITY_VERSION} it too new, version ${QtMobility_FIND_VERSION} is required.")
ELSE()
MESSAGE(FATAL_ERROR "QtMobility not found.")
ENDIF()
ELSE()
export_component(Bearer)
export_component(Feedback)
export_component(Gallery)
export_component(PublishSubscribe)
export_component(Location)
export_component(Organizer)
export_component(ServiceFramework)
export_component(SystemInfo)
export_component(Contacts)
export_component(Messaging)
export_component(Versit)
export_component(Sensors)
# VersitOrganizer
if(${QT_MOBILITY_CONTACTS_FOUND} AND ${QT_MOBILITY_VERSIT_FOUND})
SET(QT_MOBILITY_VERSITORGANIZER_FOUND 1)
SET(QT_MOBILITY_VERSITORGANIZER_INCLUDE_DIR ${QT_MOBILITY_PARENT_INCLUDE_DIR}/QtVersitOrganizer)
SET(QT_MOBILITY_VERSITORGANIZER_LIBRARY QtVersitOrganizer)
endif()
# MultimediaKit - it's just 'multimedia' in the .prf file.
IF(NOT ${MOBILITY_CONFIG_MKSPECS_FILE} STREQUAL "")
FILE(READ ${MOBILITY_CONFIG_MKSPECS_FILE} MOBILITY_FILE_CONTENTS)
IF(${MOBILITY_FILE_CONTENTS} MATCHES "MOBILITY_CONFIG=.*multimedia.*")
SET(QT_MOBILITY_MULTIMEDIAKIT_FOUND 1)
SET(QT_MOBILITY_MULTIMEDIAKIT_INCLUDE_DIR ${QT_MOBILITY_PARENT_INCLUDE_DIR}/QtMultimediaKit)
SET(QT_MOBILITY_MULTIMEDIAKIT_LIBRARY QtMultimediaKit)
ENDIF()
ENDIF()
ENDIF()

View File

@@ -5,22 +5,37 @@ if (WIN32)
# Get standard installation paths for OpenSSL under Windows
# http://www.slproweb.com/products/Win32OpenSSL.html
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
ENV OPENSSL_ROOT_DIR
)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
set(_OPENSSL_ROOT_PATHS
"${_programfiles}/OpenSSL"
"${_programfiles}/OpenSSL-Win32"
"${_programfiles}/OpenSSL-Win64"
"C:/OpenSSL/"
"C:/OpenSSL-Win32/"
"C:/OpenSSL-Win64/"
)
unset(_programfiles)
if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
# target win64
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
ENV OPENSSL_ROOT_DIR
)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
set(_OPENSSL_ROOT_PATHS
"${_programfiles}/OpenSSL-Win64"
"C:/OpenSSL-Win64/"
)
unset(_programfiles)
else( CMAKE_SIZEOF_VOID_P EQUAL 8 )
# target win32
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
ENV OPENSSL_ROOT_DIR
)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
set(_OPENSSL_ROOT_PATHS
"${_programfiles}/OpenSSL"
"${_programfiles}/OpenSSL-Win32"
"C:/OpenSSL/"
"C:/OpenSSL-Win32/"
)
unset(_programfiles)
endif( CMAKE_SIZEOF_VOID_P EQUAL 8 )
else ()
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
@@ -33,8 +48,10 @@ set(_OPENSSL_ROOT_HINTS_AND_PATHS
PATHS ${_OPENSSL_ROOT_PATHS}
)
FIND_FILE(WIN32SSLRUNTIME_LIBEAY NAMES libeay32.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
FIND_FILE(WIN32SSLRUNTIME_SSLEAY NAMES ssleay32.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
# For OpenSSL < 1.1, they are named libeay32 and ssleay32 and even if the dll is 64bit, it's still suffixed as *32.dll
# For OpenSSL >= 1.1, they are named libcrypto and libssl with no suffix
FIND_FILE(WIN32SSLRUNTIME_LIBEAY NAMES libeay32.dll libcrypto.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
FIND_FILE(WIN32SSLRUNTIME_SSLEAY NAMES ssleay32.dll libssl.dll ${_OPENSSL_ROOT_HINTS_AND_PATHS})
IF(WIN32SSLRUNTIME_LIBEAY AND WIN32SSLRUNTIME_SSLEAY)

View File

@@ -1,14 +1,24 @@
!include ..\..\..\NSIS.definitions.nsh
!include "MUI2.nsh"
!include "FileFunc.nsh"
Name "@CPACK_PACKAGE_NAME@"
BrandingText "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION_MAJOR@"
BrandingText "@CPACK_PACKAGE_FILE_NAME@"
OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
SetCompressor /SOLID lzma
InstallDir "$PROGRAMFILES\Cockatrice"
!define UNINSTKEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice"
!define DEFAULTNORMALDESTINATON "$ProgramFiles\Cockatrice"
!define DEFAULTPORTABLEDESTINATON "$Desktop\CockatricePortable"
!define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@"
RequestExecutionlevel highest
SetCompressor LZMA
Var NormalDestDir
Var PortableDestDir
Var PortableMode
!include LogicLib.nsh
!include FileFunc.nsh
!include MUI2.nsh
!define MUI_ABORTWARNING
!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\leftimage.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\leftimage.bmp"
@@ -16,12 +26,13 @@ InstallDir "$PROGRAMFILES\Cockatrice"
!define MUI_HEADERIMAGE_BITMAP "${NSIS_SOURCE_PATH}\cmake\headerimage.bmp"
!define MUI_HEADERIMAGE_UNBITMAP "${NSIS_SOURCE_PATH}\cmake\headerimage.bmp"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Cockatrice.$\r$\n$\r$\nClick Next to continue."
!define MUI_FINISHPAGE_RUN "$INSTDIR/oracle.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Run 'Oracle' now to update your card database"
!define MUI_FINISHPAGE_RUN_PARAMETERS "-dlsets"
!define MUI_FINISHPAGE_RUN "$INSTDIR/cockatrice.exe"
!define MUI_FINISHPAGE_RUN_TEXT "Run 'Cockatrice' now"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "${NSIS_SOURCE_PATH}\COPYING"
!insertmacro MUI_PAGE_LICENSE "${NSIS_SOURCE_PATH}\LICENSE"
Page Custom PortableModePageCreate PortableModePageLeave
!define MUI_PAGE_CUSTOMFUNCTION_PRE componentsPagePre
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
@@ -32,15 +43,150 @@ InstallDir "$PROGRAMFILES\Cockatrice"
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE English
Function .onInit
StrCpy $NormalDestDir "${DEFAULTNORMALDESTINATON}"
StrCpy $PortableDestDir "${DEFAULTPORTABLEDESTINATON}"
${GetParameters} $9
ClearErrors
${GetOptions} $9 "/?" $8
${IfNot} ${Errors}
MessageBox MB_ICONINFORMATION|MB_SETFOREGROUND "\
/PORTABLE : Install in portable mode$\n\
/S : Silent install$\n\
/D=%directory% : Specify destination directory$\n"
Quit
${EndIf}
ClearErrors
${GetOptions} $9 "/PORTABLE" $8
${IfNot} ${Errors}
StrCpy $PortableMode 1
StrCpy $0 $PortableDestDir
${Else}
StrCpy $PortableMode 0
StrCpy $0 $NormalDestDir
${If} ${Silent}
Call RequireAdmin
${EndIf}
${EndIf}
${If} $InstDir == ""
; User did not use /D to specify a directory,
; we need to set a default based on the install mode
StrCpy $InstDir $0
${EndIf}
Call SetModeDestinationFromInstdir
FunctionEnd
Function RequireAdmin
UserInfo::GetAccountType
Pop $8
${If} $8 != "admin"
MessageBox MB_ICONSTOP "You need administrator rights to install Cockatrice"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Abort
${EndIf}
FunctionEnd
Function SetModeDestinationFromInstdir
${If} $PortableMode = 0
StrCpy $NormalDestDir $InstDir
${Else}
StrCpy $PortableDestDir $InstDir
${EndIf}
FunctionEnd
Function PortableModePageCreate
Call SetModeDestinationFromInstdir ; If the user clicks BACK on the directory page we will remember their mode specific directory
!insertmacro MUI_HEADER_TEXT "Install Mode" "Choose how you want to install Cockatrice."
nsDialogs::Create 1018
Pop $0
${NSD_CreateLabel} 0 10u 100% 24u "Select install mode:"
Pop $0
${NSD_CreateRadioButton} 30u 50u -30u 8u "Normal installation"
Pop $1
${NSD_CreateRadioButton} 30u 70u -30u 8u "Portable mode (all files in a single folder)"
Pop $2
${If} $PortableMode = 0
SendMessage $1 ${BM_SETCHECK} ${BST_CHECKED} 0
${Else}
SendMessage $2 ${BM_SETCHECK} ${BST_CHECKED} 0
${EndIf}
nsDialogs::Show
FunctionEnd
Function PortableModePageLeave
${NSD_GetState} $1 $0
${If} $0 <> ${BST_UNCHECKED}
StrCpy $PortableMode 0
StrCpy $InstDir $NormalDestDir
Call RequireAdmin
${Else}
StrCpy $PortableMode 1
StrCpy $InstDir $PortableDestDir
${EndIf}
FunctionEnd
Function componentsPagePre
${If} $PortableMode = 0
SetShellVarContext all
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "UninstallString"
StrCmp $R0 "" done
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "A previous version of Cockatrice must be uninstalled before installing the new one." IDOK uninst
Abort
uninst:
ClearErrors
ExecWait "$R0"
done:
${Else}
Abort
${EndIf}
FunctionEnd
Section "Application" SecApplication
SetShellVarContext all
SetOutPath "$INSTDIR"
@CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@
@CPACK_NSIS_FULL_INSTALL@
SetShellVarContext all
SetOutPath "$INSTDIR"
${If} $PortableMode = 1
${AndIf} ${FileExists} "$INSTDIR\portable.dat"
; upgrade portable mode
RMDir /r "$INSTDIR\plugins"
RMDir /r "$INSTDIR\sounds"
RMDir /r "$INSTDIR\themes"
RMDir /r "$INSTDIR\translations"
Delete "$INSTDIR\uninstall.exe"
Delete "$INSTDIR\cockatrice.exe"
Delete "$INSTDIR\oracle.exe"
Delete "$INSTDIR\servatrice.exe"
Delete "$INSTDIR\Qt*.dll"
Delete "$INSTDIR\libmysql.dll"
Delete "$INSTDIR\icu*.dll"
Delete "$INSTDIR\libeay32.dll"
Delete "$INSTDIR\ssleay32.dll"
Delete "$INSTDIR\qt.conf"
Delete "$INSTDIR\qdebug.txt"
Delete "$INSTDIR\servatrice.sql"
Delete "$INSTDIR\servatrice.ini.example"
Delete "$INSTDIR\zlib*.dll"
RMDir "$INSTDIR"
${EndIf}
@CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@
@CPACK_NSIS_FULL_INSTALL@
${If} $PortableMode = 0
WriteUninstaller "$INSTDIR\uninstall.exe"
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
IntFmt $0 "0x%08X" $0
@@ -50,48 +196,47 @@ Section "Application" SecApplication
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "InstallLocation" "$INSTDIR"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "DisplayIcon" "$INSTDIR\cockatrice.exe"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "EstimatedSize" "$0"
SectionEnd
Section "Update configuration" SecUpdateConfig
SetShellVarContext current
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "carddatabase" "$LOCALAPPDATA\Cockatrice\cards.xml"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "tokendatabase" "$LOCALAPPDATA\Cockatrice\tokens.xml"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "decks" "$LOCALAPPDATA\Cockatrice\decks"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\paths" "pics" "$LOCALAPPDATA\Cockatrice\pics"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\replays" "pics" "$LOCALAPPDATA\Cockatrice\replays"
WriteRegStr HKCU "Software\Cockatrice\Cockatrice\sound" "path" "$INSTDIR\sounds"
IfFileExists "$INSTDIR\vc_redist.x86.exe" VcRedist86Exists PastVcRedist86Check
VcRedist86Exists:
ExecWait '"$INSTDIR\vc_redist.x86.exe" /passive /norestart'
PastVcRedist86Check:
IfFileExists "$INSTDIR\vc_redist.x64.exe" VcRedist64Exists PastVcRedist64Check
VcRedist64Exists:
ExecWait '"$INSTDIR\vc_redist.x64.exe" /passive /norestart'
PastVcRedist64Check:
${Else}
; Create the file the application uses to detect portable mode
FileOpen $0 "$INSTDIR\portable.dat" w
FileWrite $0 "PORTABLE"
FileClose $0
${EndIf}
SectionEnd
Section "Start menu item" SecStartMenu
${If} $PortableMode = 0
SetShellVarContext all
createDirectory "$SMPROGRAMS\Cockatrice"
createShortCut "$SMPROGRAMS\Cockatrice\Cockatrice.lnk" "$INSTDIR\cockatrice.exe"
createShortCut "$SMPROGRAMS\Cockatrice\Oracle.lnk" "$INSTDIR\oracle.exe"
createShortCut "$SMPROGRAMS\Cockatrice\Servatrice.lnk" "$INSTDIR\servatrice.exe"
createShortCut "$SMPROGRAMS\Cockatrice\Usermanual.lnk" "$INSTDIR\Usermanual.pdf"
${EndIf}
SectionEnd
Section "un.Application" UnSecApplication
SetShellVarContext all
RMDir /r "$INSTDIR\zonebg"
RMDir /r "$INSTDIR\plugins"
RMDir /r "$INSTDIR\sounds"
RMDir /r "$INSTDIR\themes"
RMDir /r "$INSTDIR\translations"
Delete "$INSTDIR\uninstall.exe"
Delete "$INSTDIR\cockatrice.exe"
Delete "$INSTDIR\oracle.exe"
Delete "$INSTDIR\servatrice.exe"
Delete "$INSTDIR\Usermanual.pdf"
Delete "$INSTDIR\libprotobuf.lib"
Delete "$INSTDIR\Qt*.dll"
Delete "$INSTDIR\icu*.dll"
Delete "$INSTDIR\libeay32.dll"
Delete "$INSTDIR\ssleay32.dll"
Delete "$INSTDIR\*.exe"
Delete "$INSTDIR\*.dll"
Delete "$INSTDIR\qt.conf"
Delete "$INSTDIR\qdebug.txt"
Delete "$INSTDIR\servatrice.sql"
Delete "$INSTDIR\servatrice.ini.example"
Delete "$INSTDIR\zlib1.dll"
RMDir "$INSTDIR"
RMDir "$SMPROGRAMS\Cockatrice"
@@ -108,11 +253,9 @@ Section /o "un.Configurations, decks, cards, pics" UnSecConfiguration
SectionEnd
LangString DESC_SecApplication ${LANG_ENGLISH} "Cockatrice program files"
LangString DESC_SecUpdateConfig ${LANG_ENGLISH} "Update the paths in the application settings according to the installation paths."
LangString DESC_SecStartMenu ${LANG_ENGLISH} "Create start menu items for Cockatrice and Oracle."
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecApplication} $(DESC_SecApplication)
!insertmacro MUI_DESCRIPTION_TEXT ${SecUpdateConfig} $(DESC_SecUpdateConfig)
!insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenu} $(DESC_SecStartMenu)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
@@ -121,21 +264,4 @@ LangString DESC_UnSecConfiguration ${LANG_ENGLISH} "Configurations, decks, card
!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${UnSecApplication} $(DESC_UnSecApplication)
!insertmacro MUI_DESCRIPTION_TEXT ${UnSecConfiguration} $(DESC_UnSecConfiguration)
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
Function .onInit
SetShellVarContext all
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cockatrice" "UninstallString"
StrCmp $R0 "" done
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "A previous version of Cockatrice must be uninstalled before installing the new one." IDOK uninst
Abort
uninst:
ClearErrors
ExecWait "$R0"
done:
FunctionEnd
!insertmacro MUI_UNFUNCTION_DESCRIPTION_END

View File

@@ -2,8 +2,12 @@ set(VERSION_STRING_CPP "${PROJECT_BINARY_DIR}/version_string.cpp")
set(VERSION_STRING_H "${PROJECT_BINARY_DIR}/version_string.h")
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR})
set( hstring "extern const char *VERSION_STRING\;\n" )
set( cppstring "const char * VERSION_STRING = \"${PROJECT_VERSION}\"\;\n")
set( hstring "extern const char *VERSION_STRING\;
extern const char *VERSION_COMMIT\;
extern const char *VERSION_DATE\;\n" )
set( cppstring "const char *VERSION_STRING = \"${PROJECT_VERSION_FRIENDLY}\"\;
const char *VERSION_COMMIT = \"${GIT_COMMIT_ID}\"\;
const char *VERSION_DATE = \"${GIT_COMMIT_DATE_FRIENDLY}\"\;\n")
file(WRITE ${PROJECT_BINARY_DIR}/version_string.cpp.txt ${cppstring} )
file(WRITE ${PROJECT_BINARY_DIR}/version_string.h.txt ${hstring} )

View File

@@ -1,20 +1,223 @@
find_package(Git)
if(GIT_FOUND)
# HELPER FUNCTIONS
function(get_commit_id)
# get last commit hash
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --date=short "--pretty=%h (%cd)"
COMMAND ${GIT_EXECUTABLE} log -1 --abbrev=7 --date=short "--pretty=%h"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE res_var
OUTPUT_VARIABLE GIT_COM_ID
)
if( NOT ${res_var} EQUAL 0 )
set( GIT_COMMIT_ID "git commit id unknown")
message( WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info." )
if(NOT ${res_var} EQUAL 0)
message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.")
return()
endif()
string( REPLACE "\n" "" GIT_COMMIT_ID "${GIT_COM_ID}" )
string(REPLACE "\n" "" GIT_COM_ID "${GIT_COM_ID}")
set(GIT_COMMIT_ID "${GIT_COM_ID}" PARENT_SCOPE)
set(PROJECT_VERSION_LABEL "custom(${GIT_COM_ID})" PARENT_SCOPE)
endfunction()
function(get_commit_date)
# get last commit date
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --date=short "--pretty=%cd"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE res_var
OUTPUT_VARIABLE GIT_COM_DATE
)
if(NOT ${res_var} EQUAL 0)
message(WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info.")
return()
endif()
string(REPLACE "\n" "" GIT_COM_DATE "${GIT_COM_DATE}")
set(GIT_COMMIT_DATE_FRIENDLY "${GIT_COM_DATE}" PARENT_SCOPE)
string(REPLACE "-" "" GIT_COM_DATE "${GIT_COM_DATE}")
set(GIT_COMMIT_DATE "${GIT_COM_DATE}" PARENT_SCOPE)
endfunction()
function(clean_release_name name)
# "name": "Cockatrice: Thopter Pie Network, Revision 2"
# Remove all double quotes
STRING(REPLACE "\"" "" name "${name}")
# Remove json prefix "name: "
STRING(REPLACE " name: " "" name "${name}")
# Remove "cockatrice" name
STRING(REPLACE "Cockatrice" "" name "${name}")
# Remove all unwanted chars
STRING(REGEX REPLACE "[^A-Za-z0-9_ ]" "" name "${name}")
# Strip (trim) whitespaces
STRING(STRIP "${name}" name)
# Replace all spaces with underscores
STRING(REPLACE " " "_" name "${name}")
set(GIT_TAG_RELEASENAME "${name}" PARENT_SCOPE)
endfunction()
function(get_tag_name commit)
if(${commit} STREQUAL "unknown")
return()
endif()
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --exact-match --tags ${commit}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE res_var
OUTPUT_VARIABLE GIT_TAG
ERROR_VARIABLE GIT_TAG_ERR
)
if((NOT ${res_var} EQUAL 0) OR (${GIT_TAG_ERR} MATCHES "fatal: no tag exactly matches.*"))
message(STATUS "Commit is not a release or prerelease (no git tag found)")
return()
endif()
string(REPLACE "\n" "" GIT_TAG "${GIT_TAG}")
message(STATUS "Commit is a release or prerelease, git tag: ${GIT_TAG}")
# Extract information from tag:
# YYYY-MM-DD-Release-MAJ.MIN.PATCH
# YYYY-MM-DD-Development-MAJ.MIN.PATCH-beta.X
string(REPLACE "-" ";" GIT_TAG_EXPLODED "${GIT_TAG}")
string(REPLACE "." ";" GIT_TAG_EXPLODED "${GIT_TAG_EXPLODED}")
# Sanity checks: length
list(LENGTH GIT_TAG_EXPLODED GIT_TAG_LISTCOUNT)
if(${GIT_TAG_LISTCOUNT} LESS 7 OR ${GIT_TAG_LISTCOUNT} GREATER 9)
message(WARNING "Invalid tag format, got ${GIT_TAG_LISTCOUNT} tokens")
return()
endif()
# Year
list(GET GIT_TAG_EXPLODED 0 GIT_TAG_YEAR)
if(${GIT_TAG_YEAR} LESS 2017 OR ${GIT_TAG_LISTCOUNT} GREATER 2100)
message(WARNING "Invalid tag year ${GIT_TAG_YEAR}")
return()
endif()
# Month
list(GET GIT_TAG_EXPLODED 1 GIT_TAG_MONTH)
if(${GIT_TAG_MONTH} LESS 1 OR ${GIT_TAG_MONTH} GREATER 12)
message(WARNING "Invalid tag month ${GIT_TAG_MONTH}")
return()
endif()
# Day
list(GET GIT_TAG_EXPLODED 2 GIT_TAG_DAY)
if(${GIT_TAG_DAY} LESS 1 OR ${GIT_TAG_DAY} GREATER 31)
message(WARNING "Invalid tag day ${GIT_TAG_DAY}")
return()
endif()
# Type
list(GET GIT_TAG_EXPLODED 3 GIT_TAG_TYPE)
if(NOT(${GIT_TAG_TYPE} STREQUAL "Release" OR ${GIT_TAG_TYPE} STREQUAL "Development"))
message(WARNING "Invalid tag type ${GIT_TAG_TYPE}")
return()
endif()
# Major
list(GET GIT_TAG_EXPLODED 4 GIT_TAG_MAJOR)
if(${GIT_TAG_MAJOR} LESS 0 OR ${GIT_TAG_MAJOR} GREATER 99)
message(WARNING "Invalid tag major version ${GIT_TAG_MAJOR}")
return()
endif()
# Minor
list(GET GIT_TAG_EXPLODED 5 GIT_TAG_MINOR)
if(${GIT_TAG_MINOR} LESS 0 OR ${GIT_TAG_MINOR} GREATER 99)
message(WARNING "Invalid tag minor version ${GIT_TAG_MINOR}")
return()
endif()
# Patch
list(GET GIT_TAG_EXPLODED 6 GIT_TAG_PATCH)
if(${GIT_TAG_PATCH} LESS 0 OR ${GIT_TAG_PATCH} GREATER 99)
message(WARNING "Invalid tag patch version ${GIT_TAG_PATCH}")
return()
endif()
# Label
# 7 = Stable release
# 8 = Dev release, first beta so only "beta" attached
# 9 = Dev release, subsequent beta so "beta.N" attached (N>=2)
if(${GIT_TAG_LISTCOUNT} EQUAL 8)
list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL)
elseif(${GIT_TAG_LISTCOUNT} EQUAL 9)
list(GET GIT_TAG_EXPLODED 7 GIT_TAG_LABEL)
list(GET GIT_TAG_EXPLODED 8 GIT_TAG_LABEL_NUM)
set(GIT_TAG_LABEL ${GIT_TAG_LABEL} ${GIT_TAG_LABEL_NUM})
string(REPLACE ";" "." GIT_TAG_LABEL "${GIT_TAG_LABEL}")
else()
SET(GIT_TAG_LABEL "")
endif()
# Override hardcoded version with the informations from the tag
set(PROJECT_VERSION_MAJOR ${GIT_TAG_MAJOR} PARENT_SCOPE)
set(PROJECT_VERSION_MINOR ${GIT_TAG_MINOR} PARENT_SCOPE)
set(PROJECT_VERSION_PATCH ${GIT_TAG_PATCH} PARENT_SCOPE)
set(PROJECT_VERSION_LABEL ${GIT_TAG_LABEL} PARENT_SCOPE)
if(${GIT_TAG_TYPE} STREQUAL "Development")
set(PROJECT_VERSION_LABEL ${GIT_TAG_LABEL} PARENT_SCOPE)
elseif(${GIT_TAG_TYPE} STREQUAL "Release")
set(PROJECT_VERSION_LABEL "" PARENT_SCOPE)
# get version name from github
set(GIT_TAG_TEMP_FILE "${PROJECT_BINARY_DIR}/tag_informations.txt")
set(GIT_TAG_TEMP_URL "https://api.github.com/repos/Cockatrice/Cockatrice/releases/tags/${GIT_TAG}")
message(STATUS "Fetching tag informations from ${GIT_TAG_TEMP_URL}")
file(REMOVE "${GIT_TAG_TEMP_FILE}")
file(DOWNLOAD "${GIT_TAG_TEMP_URL}" "${GIT_TAG_TEMP_FILE}" STATUS status LOG log INACTIVITY_TIMEOUT 30 TIMEOUT 300 SHOW_PROGRESS)
list(GET status 0 err)
list(GET status 1 msg)
if(err)
message(WARNING "Download failed with error ${msg}: ${log}")
return()
endif()
file(STRINGS "${GIT_TAG_TEMP_FILE}" GIT_TAG_RAW_RELEASENAME REGEX "\"name\": \"" LIMIT_COUNT 1)
clean_release_name("${GIT_TAG_RAW_RELEASENAME}")
set(PROJECT_VERSION_RELEASENAME "${GIT_TAG_RELEASENAME}" PARENT_SCOPE)
endif()
endfunction()
# START OF MAIN
# fallback defaults
set(GIT_COMMIT_ID "unknown")
set(GIT_COMMIT_DATE "unknown")
set(GIT_COMMIT_DATE_FRIENDLY "unknown")
set(PROJECT_VERSION_LABEL "custom(unknown)")
set(PROJECT_VERSION_RELEASENAME "")
find_package(Git)
if(GIT_FOUND)
get_commit_id()
get_commit_date()
get_tag_name(${GIT_COMMIT_ID})
else()
set( GIT_COMMIT_ID "unknown (git not found!)")
message( WARNING "Git not found. Build will not contain git revision info." )
endif()
set(PROJECT_VERSION_MAJOR ${GIT_COMMIT_ID})
set(PROJECT_VERSION ${GIT_COMMIT_ID} )
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
if(PROJECT_VERSION_LABEL)
set(PROJECT_VERSION "${PROJECT_VERSION}-${PROJECT_VERSION_LABEL}")
endif()
set(PROJECT_VERSION_FRIENDLY "${PROJECT_VERSION} (${GIT_COMMIT_DATE_FRIENDLY})")
# Format: <program name>[-ReleaseName]-MAJ.MIN.PATCH[-prerelease_label]
set(PROJECT_VERSION_FILENAME "${PROJECT_NAME}")
if(PROJECT_VERSION_RELEASENAME)
set(PROJECT_VERSION_FILENAME "${PROJECT_VERSION_FILENAME}-${PROJECT_VERSION_RELEASENAME}")
endif()
set(PROJECT_VERSION_FILENAME "${PROJECT_VERSION_FILENAME}-${PROJECT_VERSION}")
message(STATUS "Project version: ${PROJECT_VERSION}")
message(STATUS "Friendly project version: ${PROJECT_VERSION_FRIENDLY}")
message(STATUS "Project version filename: ${PROJECT_VERSION_FILENAME}")

View File

@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.2)
project(gtest-download LANGUAGES NONE)
include(ExternalProject)
ExternalProject_Add(googletest
URL https://github.com/google/googletest/archive/release-1.7.0.zip
URL_HASH SHA1=f89bc9f55477df2fde082481e2d709bfafdb057b
SOURCE_DIR "${CMAKE_BINARY_DIR}/gtest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/gtest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)

3
cmake/launch-c.in Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
export CCACHE_CPP2=true
exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_C_COMPILER}" "$@"

3
cmake/launch-cxx.in Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
export CCACHE_CPP2=true
exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_CXX_COMPILER}" "$@"

View File

@@ -2,44 +2,51 @@
#
# provides the cockatrice binary
PROJECT(cockatrice)
PROJECT(Cockatrice)
SET(cockatrice_SOURCES
src/abstractcounter.cpp
src/counter_general.cpp
src/dlg_creategame.cpp
src/abstractcounter.cpp
src/counter_general.cpp
src/dlg_creategame.cpp
src/dlg_filter_games.cpp
src/dlg_connect.cpp
src/dlg_create_token.cpp
src/dlg_connect.cpp
src/dlg_create_token.cpp
src/dlg_edit_avatar.cpp
src/dlg_edit_password.cpp
src/dlg_edit_tokens.cpp
src/dlg_edit_user.cpp
src/dlg_register.cpp
src/abstractclient.cpp
src/remoteclient.cpp
src/main.cpp
src/window_main.cpp
src/gamesmodel.cpp
src/player.cpp
src/playertarget.cpp
src/cardzone.cpp
src/selectzone.cpp
src/cardlist.cpp
src/abstractcarditem.cpp
src/carditem.cpp
src/tablezone.cpp
src/handzone.cpp
src/handcounter.cpp
src/carddatabase.cpp
src/dlg_forgotpasswordrequest.cpp
src/dlg_forgotpasswordreset.cpp
src/dlg_forgotpasswordchallenge.cpp
src/dlg_register.cpp
src/dlg_tip_of_the_day.cpp
src/tip_of_the_day.cpp
src/dlg_update.cpp
src/dlg_viewlog.cpp
src/abstractclient.cpp
src/remoteclient.cpp
src/main.cpp
src/window_main.cpp
src/gamesmodel.cpp
src/player.cpp
src/playertarget.cpp
src/cardzone.cpp
src/selectzone.cpp
src/cardlist.cpp
src/abstractcarditem.cpp
src/carditem.cpp
src/tablezone.cpp
src/handzone.cpp
src/handcounter.cpp
src/carddatabase.cpp
src/keysignals.cpp
src/gameview.cpp
src/gameselector.cpp
src/decklistmodel.cpp
src/deck_loader.cpp
src/dlg_load_deck_from_clipboard.cpp
src/dlg_load_remote_deck.cpp
src/cardinfowidget.cpp
src/gameview.cpp
src/gameselector.cpp
src/decklistmodel.cpp
src/deck_loader.cpp
src/dlg_load_deck_from_clipboard.cpp
src/dlg_load_remote_deck.cpp
src/cardinfowidget.cpp
src/cardframe.cpp
src/cardinfopicture.cpp
src/cardinfotext.cpp
@@ -47,65 +54,84 @@ SET(cockatrice_SOURCES
src/cardfilter.cpp
src/filtertreemodel.cpp
src/filtertree.cpp
src/messagelogwidget.cpp
src/zoneviewzone.cpp
src/zoneviewwidget.cpp
src/pilezone.cpp
src/stackzone.cpp
src/carddragitem.cpp
src/carddatabasemodel.cpp
src/setsmodel.cpp
src/window_sets.cpp
src/abstractgraphicsitem.cpp
src/abstractcarddragitem.cpp
src/dlg_settings.cpp
src/dlg_cardsearch.cpp
src/phasestoolbar.cpp
src/gamescene.cpp
src/arrowitem.cpp
src/arrowtarget.cpp
src/tab.cpp
src/tab_server.cpp
src/tab_room.cpp
src/tab_message.cpp
src/tab_game.cpp
src/tab_deck_storage.cpp
src/tab_replays.cpp
src/tab_supervisor.cpp
src/tab_admin.cpp
src/tab_userlists.cpp
src/messagelogwidget.cpp
src/zoneviewzone.cpp
src/zoneviewwidget.cpp
src/pilezone.cpp
src/stackzone.cpp
src/carddragitem.cpp
src/carddatabasemodel.cpp
src/setsmodel.cpp
src/window_sets.cpp
src/abstractgraphicsitem.cpp
src/abstractcarddragitem.cpp
src/dlg_settings.cpp
src/phasestoolbar.cpp
src/gamescene.cpp
src/arrowitem.cpp
src/arrowtarget.cpp
src/tab.cpp
src/tab_server.cpp
src/tab_room.cpp
src/tab_message.cpp
src/tab_game.cpp
src/tab_deck_storage.cpp
src/tab_replays.cpp
src/tab_supervisor.cpp
src/tab_admin.cpp
src/tab_userlists.cpp
src/tab_deck_editor.cpp
src/tab_logs.cpp
src/replay_timeline_widget.cpp
src/deckstats_interface.cpp
src/chatview.cpp
src/userlist.cpp
src/userinfobox.cpp
src/tappedout_interface.cpp
src/chatview/chatview.cpp
src/chatview/userlistProxy.h
src/userlist.cpp
src/userinfobox.cpp
src/user_context_menu.cpp
src/remotedecklist_treewidget.cpp
src/remotereplaylist_treewidget.cpp
src/deckview.cpp
src/playerlistwidget.cpp
src/pixmapgenerator.cpp
src/settingscache.cpp
src/localserver.cpp
src/localserverinterface.cpp
src/localclient.cpp
src/priceupdater.cpp
src/remotedecklist_treewidget.cpp
src/remotereplaylist_treewidget.cpp
src/deckview.cpp
src/playerlistwidget.cpp
src/pixmapgenerator.cpp
src/settingscache.cpp
src/thememanager.cpp
src/localserver.cpp
src/localserverinterface.cpp
src/localclient.cpp
src/qt-json/json.cpp
src/soundengine.cpp
src/pending_command.cpp
src/pictureloader.cpp
src/shortcutssettings.cpp
src/sequenceEdit/sequenceedit.cpp
src/sequenceEdit/shortcutstab.cpp
src/lineeditcompleter.cpp
src/settings/settingsmanager.cpp
src/settings/carddatabasesettings.cpp
src/settings/serverssettings.cpp
src/settings/messagesettings.cpp
src/settings/gamefilterssettings.cpp
src/settings/layoutssettings.cpp
src/update_downloader.cpp
src/logger.cpp
src/releasechannel.cpp
src/userconnection_information.cpp
src/spoilerbackgroundupdater.cpp
src/handle_public_servers.cpp
src/carddbparser/cockatricexml3.cpp
${VERSION_STRING_CPP}
)
if (UNIX AND NOT APPLE)
set_source_files_properties(src/main.cpp PROPERTIES COMPILE_FLAGS -DTRANSLATION_PATH=\\"${CMAKE_INSTALL_PREFIX}/share/cockatrice/translations\\")
endif (UNIX AND NOT APPLE)
add_subdirectory(sounds)
add_subdirectory(themes)
set(cockatrice_RESOURCES cockatrice.qrc)
IF(UPDATE_TRANSLATIONS)
FILE(GLOB_RECURSE translate_cockatrice_SRCS ${CMAKE_SOURCE_DIR}/cockatrice/src/*.cpp ${CMAKE_SOURCE_DIR}/cockatrice/src/*.h)
FILE(GLOB_RECURSE translate_common_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/common/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/common/*.h)
FILE(GLOB_RECURSE translate_common_SRCS ${CMAKE_SOURCE_DIR}/common/*.cpp ${CMAKE_SOURCE_DIR}/common/*.h)
SET(translate_SRCS ${translate_cockatrice_SRCS} ${translate_common_SRCS})
SET(cockatrice_TS "${CMAKE_CURRENT_SOURCE_DIR}/translations/cockatrice_en.ts")
ELSE()
@@ -122,94 +148,33 @@ if(APPLE)
set(cockatrice_SOURCES ${cockatrice_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/resources/appicon.icns)
ENDIF(APPLE)
set(COCKATRICE_LIBS)
# Qt5
find_package(Qt5 COMPONENTS Concurrent Multimedia Network PrintSupport Svg Widgets REQUIRED)
include_directories(${Qt5Concurrent_INCLUDE_DIRS} ${Qt5Multimedia_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5PrintSupport_INCLUDE_DIRS} ${Qt5Svg_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS})
set(COCKATRICE_QT_MODULES Concurrent Multimedia Network PrintSupport Svg Widgets)
# Qt4 stuff
if(Qt4_FOUND)
if (NOT QT_QTMULTIMEDIA_FOUND)
FIND_PACKAGE(QtMobility REQUIRED)
# Qt5LinguistTools
find_package(Qt5LinguistTools)
if(Qt5LinguistTools_FOUND)
include_directories(${Qt5LinguistTools_INCLUDE_DIRS})
list(APPEND COCKATRICE_LIBS LinguistTools)
if(NOT Qt5_LRELEASE_EXECUTABLE)
MESSAGE(WARNING "Qt's lrelease not found.")
endif()
SET(QT_USE_QTNETWORK TRUE)
SET(QT_USE_QTMULTIMEDIA TRUE)
SET(QT_USE_QTSVG TRUE)
# Include directories
INCLUDE(${QT_USE_FILE})
INCLUDE_DIRECTORIES(${QT_INCLUDES})
INCLUDE_DIRECTORIES(${QT_MOBILITY_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${QT_MOBILITY_MULTIMEDIAKIT_INCLUDE_DIR})
LIST(APPEND COCKATRICE_LIBS ${QT_LIBRARIES})
LIST(APPEND COCKATRICE_LIBS ${QT_QTMAIN_LIBRARY})
LIST(APPEND COCKATRICE_LIBS ${QT_MOBILITY_MULTIMEDIAKIT_LIBRARY})
# Let cmake chew Qt4's translations and resource files
# Note: header files are MOC-ed automatically by cmake
IF(UPDATE_TRANSLATIONS)
QT4_CREATE_TRANSLATION(cockatrice_QM ${translate_SRCS} ${cockatrice_TS})
ELSE(UPDATE_TRANSLATIONS)
QT4_ADD_TRANSLATION(cockatrice_QM ${cockatrice_TS})
ENDIF(UPDATE_TRANSLATIONS)
QT4_ADD_RESOURCES(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
endif()
# qt5 stuff
if(Qt5Widgets_FOUND)
include_directories(${Qt5Widgets_INCLUDE_DIRS})
list(APPEND COCKATRICE_LIBS Widgets)
# QtNetwork
find_package(Qt5Network)
if(Qt5Network_FOUND)
include_directories(${Qt5Network_INCLUDE_DIRS})
list(APPEND COCKATRICE_LIBS Network)
endif()
# QtMultimedia
find_package(Qt5Multimedia)
if(Qt5Multimedia_FOUND)
include_directories(${Qt5Multimedia_INCLUDE_DIRS})
list(APPEND COCKATRICE_LIBS Multimedia)
endif()
# QtPrinter
find_package(Qt5PrintSupport)
if(Qt5PrintSupport_FOUND)
include_directories(${Qt5PrintSupport_INCLUDE_DIRS})
list(APPEND COCKATRICE_LIBS PrintSupport)
endif()
# QtSvg
find_package(Qt5Svg)
if(Qt5Svg_FOUND)
include_directories(${Qt5Svg_INCLUDE_DIRS})
list(APPEND COCKATRICE_LIBS Svg)
endif()
# Qt5LinguistTools
find_package(Qt5LinguistTools)
if(Qt5LinguistTools_FOUND)
include_directories(${Qt5LinguistTools_INCLUDE_DIRS})
list(APPEND COCKATRICE_LIBS LinguistTools)
endif()
# Let cmake chew Qt5's translations and resource files
# Note: header files are MOC-ed automatically by cmake
IF(UPDATE_TRANSLATIONS)
if(UPDATE_TRANSLATIONS)
if(NOT Qt5_LUPDATE_EXECUTABLE)
MESSAGE(WARNING "Qt's lupdate not found.")
endif()
QT5_CREATE_TRANSLATION(cockatrice_QM ${translate_SRCS} ${cockatrice_TS})
ELSE()
else()
QT5_ADD_TRANSLATION(cockatrice_QM ${cockatrice_TS})
ENDIF()
QT5_ADD_RESOURCES(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
# guess plugins and libraries directory
set(QT_PLUGINS_DIR "${Qt5Widgets_DIR}/../../../plugins")
get_target_property(QT_LIBRARY_DIR Qt5::Core LOCATION)
get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} PATH)
endif()
endif()
QT5_ADD_RESOURCES(cockatrice_RESOURCES_RCC ${cockatrice_RESOURCES})
# Declare path variables
set(ICONDIR share/icons CACHE STRING "icon dir")
set(DESKTOPDIR share/applications CACHE STRING "desktop file destination")
@@ -222,30 +187,16 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
# Build cockatrice binary and link it
ADD_EXECUTABLE(cockatrice WIN32 MACOSX_BUNDLE ${cockatrice_SOURCES} ${cockatrice_QM} ${cockatrice_RESOURCES_RCC} ${cockatrice_MOC_SRCS})
set_property(TARGET cockatrice PROPERTY CXX_STANDARD 11)
set_property(TARGET cockatrice PROPERTY CXX_STANDARD_REQUIRED ON)
if(Qt4_FOUND)
if(MSVC)
set(QT_USE_QTMAIN true)
endif()
TARGET_LINK_LIBRARIES(cockatrice cockatrice_common ${COCKATRICE_LIBS})
endif()
if(Qt5Widgets_FOUND)
if(MSVC)
TARGET_LINK_LIBRARIES(cockatrice cockatrice_common Qt5::WinMain)
else()
TARGET_LINK_LIBRARIES(cockatrice cockatrice_common)
endif()
qt5_use_modules(cockatrice ${COCKATRICE_LIBS})
endif()
TARGET_LINK_LIBRARIES(cockatrice cockatrice_common)
qt5_use_modules(cockatrice ${COCKATRICE_QT_MODULES})
if(UNIX)
if(APPLE)
set(MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.cockatrice.${PROJECT_NAME}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME}-${PROJECT_VERSION}")
set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
set(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
set_target_properties(cockatrice PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/Info.plist)
@@ -269,13 +220,20 @@ if(APPLE)
# these needs to be relative to CMAKE_INSTALL_PREFIX
set(plugin_dest_dir cockatrice.app/Contents/Plugins)
set(qtconf_dest_dir cockatrice.app/Contents/Resources)
get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/.." ABSOLUTE)
# qt4: codecs, iconengines, imageformats, phonon_backend
# qt5: audio, iconengines, imageformats, platforms, printsupport
# qt5 plugins: audio, iconengines, imageformats, platforms, printsupport
install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime
FILES_MATCHING REGEX "(audio|codecs|iconengines|imageformats|phonon_backend|platforms|printsupport)/.*\\.dylib"
REGEX ".*_debug\\.dylib" EXCLUDE)
FILES_MATCHING
PATTERN "*.dSYM" EXCLUDE
PATTERN "*_debug.dylib" EXCLUDE
PATTERN "audio/*.dylib"
PATTERN "iconengines/*.dylib"
PATTERN "imageformats/*.dylib"
PATTERN "platforms/*.dylib"
PATTERN "printsupport/*.dylib"
PATTERN "styles/*.dylib"
)
install(CODE "
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
@@ -298,11 +256,9 @@ if(WIN32)
set(plugin_dest_dir Plugins)
set(qtconf_dest_dir .)
# qt4: codecs, iconengines, imageformats, phonon_backend
# qt5: audio, iconengines, imageformats, platforms, printsupport
# qt5 plugins: audio, iconengines, imageformats, platforms, printsupport
install(DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} COMPONENT Runtime
FILES_MATCHING REGEX "(audio|codecs|iconengines|imageformats|phonon_backend|platforms|printsupport)/.*[^d]\\.dll")
FILES_MATCHING REGEX "(audio|iconengines|imageformats|platforms|printsupport)/.*[^d]\\.dll")
install(CODE "
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"[Paths]
@@ -316,7 +272,7 @@ Data = Resources\")
\"\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/*.dll\")
set(BU_CHMOD_BUNDLE_ITEMS ON)
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/cockatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/Cockatrice.exe\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIR}\")
" COMPONENT Runtime)
if(WIN32SSLRUNTIME_FOUND)

View File

@@ -1,337 +1,360 @@
<RCC>
<qresource prefix="/" >
<file alias="back.svg" >resources/back.svg</file>
<file>resources/lock.svg</file>
<file>resources/icon_delete.svg</file>
<file>resources/icon_tab_changed.svg</file>
<file>resources/icon_config_general.svg</file>
<file>resources/icon_config_appearance.svg</file>
<file>resources/icon_config_interface.svg</file>
<file>resources/icon_config_messages.svg</file>
<file>resources/icon_config_deckeditor.svg</file>
<file>resources/icon_config_sound.svg</file>
<file>resources/phases/icon_phase_untap.svg</file>
<file>resources/phases/icon_phase_upkeep.svg</file>
<file>resources/phases/icon_phase_draw.svg</file>
<file>resources/phases/icon_phase_main1.svg</file>
<file>resources/phases/icon_phase_combat_start.svg</file>
<file>resources/phases/icon_phase_combat_attackers.svg</file>
<file>resources/phases/icon_phase_combat_blockers.svg</file>
<file>resources/phases/icon_phase_combat_damage.svg</file>
<file>resources/phases/icon_phase_combat_end.svg</file>
<file>resources/phases/icon_phase_main2.svg</file>
<file>resources/phases/icon_phase_cleanup.svg</file>
<file>resources/phases/icon_phase_nextturn.svg</file>
<file>resources/icon_settings.svg</file>
<file>resources/hand.svg</file>
<file>resources/pencil.svg</file>
<file>resources/icon_search_black.svg</file>
<file>resources/icon_clearsearch.svg</file>
<file>resources/icon_update.png</file>
<file>resources/icon_view.svg</file>
<file>resources/hr.jpg</file>
<file alias="resources/appicon.svg">resources/cockatrice.svg</file>
<file>resources/add_to_sideboard.svg</file>
<file>resources/decrement.svg</file>
<file>resources/increment.svg</file>
<file>resources/remove_row.svg</file>
<file>resources/arrow_left_green.svg</file>
<file>resources/arrow_right_green.svg</file>
<qresource prefix="/" >
<file>resources/cardback.svg</file>
<file>resources/cockatrice.svg</file>
<file>resources/hand.svg</file>
<file>resources/hr.jpg</file>
<file>resources/arrow_top_green.svg</file>
<file>resources/arrow_up_green.svg</file>
<file>resources/arrow_down_green.svg</file>
<file>resources/arrow_bottom_green.svg</file>
<file>resources/icon_ready_start.svg</file>
<file>resources/icon_not_ready_start.svg</file>
<file>resources/icon_conceded.svg</file>
<file>resources/icon_player.svg</file>
<file>resources/icon_spectator.svg</file>
<file>resources/icons/arrow_bottom_green.svg</file>
<file>resources/icons/arrow_down_green.svg</file>
<file>resources/icons/arrow_left_green.svg</file>
<file>resources/icons/arrow_right_blue.svg</file>
<file>resources/icons/arrow_right_green.svg</file>
<file>resources/icons/arrow_top_green.svg</file>
<file>resources/icons/arrow_up_green.svg</file>
<file>resources/icons/clearsearch.svg</file>
<file>resources/icons/conceded.svg</file>
<file>resources/icons/decrement.svg</file>
<file>resources/icons/delete.svg</file>
<file>resources/icons/increment.svg</file>
<file>resources/icons/lock.svg</file>
<file>resources/icons/not_ready_start.svg</file>
<file>resources/icons/pencil.svg</file>
<file>resources/icons/player.svg</file>
<file>resources/icons/ready_start.svg</file>
<file>resources/icons/remove_row.svg</file>
<file>resources/icons/search.svg</file>
<file>resources/icons/settings.svg</file>
<file>resources/icons/spectator.svg</file>
<file>resources/icons/tab_changed.svg</file>
<file>resources/icons/update.png</file>
<file>resources/icons/view.svg</file>
<file>resources/replay_start.svg</file>
<file>resources/replay_fastforward.svg</file>
<file>resources/replay_pause.svg</file>
<file>resources/config/general.svg</file>
<file>resources/config/appearance.svg</file>
<file>resources/config/interface.svg</file>
<file>resources/config/messages.svg</file>
<file>resources/config/deckeditor.svg</file>
<file>resources/config/shorcuts.svg</file>
<file>resources/config/sound.svg</file>
<file>resources/genders/male.svg</file>
<file>resources/genders/female.svg</file>
<file>resources/genders/unknown.svg</file>
<file>resources/counters/w.svg</file>
<file>resources/counters/w_highlight.svg</file>
<file>resources/counters/u.svg</file>
<file>resources/counters/u_highlight.svg</file>
<file>resources/counters/b.svg</file>
<file>resources/counters/b_highlight.svg</file>
<file>resources/counters/r.svg</file>
<file>resources/counters/r_highlight.svg</file>
<file>resources/counters/g.svg</file>
<file>resources/counters/g_highlight.svg</file>
<file>resources/counters/storm.svg</file>
<file>resources/counters/storm_highlight.svg</file>
<file>resources/counters/general.svg</file>
<file>resources/counters/general_highlight.svg</file>
<file>resources/countries/ad.svg</file>
<file>resources/countries/ae.svg</file>
<file>resources/countries/af.svg</file>
<file>resources/countries/ag.svg</file>
<file>resources/countries/ai.svg</file>
<file>resources/countries/al.svg</file>
<file>resources/countries/am.svg</file>
<file>resources/countries/ao.svg</file>
<file>resources/countries/aq.svg</file>
<file>resources/countries/ar.svg</file>
<file>resources/countries/as.svg</file>
<file>resources/countries/at.svg</file>
<file>resources/countries/au.svg</file>
<file>resources/countries/aw.svg</file>
<file>resources/countries/ax.svg</file>
<file>resources/countries/az.svg</file>
<file>resources/countries/ba.svg</file>
<file>resources/countries/bb.svg</file>
<file>resources/countries/bd.svg</file>
<file>resources/countries/be.svg</file>
<file>resources/countries/bf.svg</file>
<file>resources/countries/bg.svg</file>
<file>resources/countries/bh.svg</file>
<file>resources/countries/bi.svg</file>
<file>resources/countries/bj.svg</file>
<file>resources/countries/bl.svg</file>
<file>resources/countries/bm.svg</file>
<file>resources/countries/bn.svg</file>
<file>resources/countries/bo.svg</file>
<file>resources/countries/bq.svg</file>
<file>resources/countries/br.svg</file>
<file>resources/countries/bs.svg</file>
<file>resources/countries/bt.svg</file>
<file>resources/countries/bv.svg</file>
<file>resources/countries/bw.svg</file>
<file>resources/countries/by.svg</file>
<file>resources/countries/bz.svg</file>
<file>resources/countries/ca.svg</file>
<file>resources/countries/cc.svg</file>
<file>resources/countries/cd.svg</file>
<file>resources/countries/cf.svg</file>
<file>resources/countries/cg.svg</file>
<file>resources/countries/ch.svg</file>
<file>resources/countries/ci.svg</file>
<file>resources/countries/ck.svg</file>
<file>resources/countries/cl.svg</file>
<file>resources/countries/cm.svg</file>
<file>resources/countries/cn.svg</file>
<file>resources/countries/co.svg</file>
<file>resources/countries/cr.svg</file>
<file>resources/countries/cu.svg</file>
<file>resources/countries/cv.svg</file>
<file>resources/countries/cw.svg</file>
<file>resources/countries/cx.svg</file>
<file>resources/countries/cy.svg</file>
<file>resources/countries/cz.svg</file>
<file>resources/countries/de.svg</file>
<file>resources/countries/dj.svg</file>
<file>resources/countries/dk.svg</file>
<file>resources/countries/dm.svg</file>
<file>resources/countries/do.svg</file>
<file>resources/countries/dz.svg</file>
<file>resources/countries/ec.svg</file>
<file>resources/countries/ee.svg</file>
<file>resources/countries/eg.svg</file>
<file>resources/countries/eh.svg</file>
<file>resources/countries/er.svg</file>
<file>resources/countries/es.svg</file>
<file>resources/countries/et.svg</file>
<file>resources/countries/fi.svg</file>
<file>resources/countries/fj.svg</file>
<file>resources/countries/fk.svg</file>
<file>resources/countries/fm.svg</file>
<file>resources/countries/fo.svg</file>
<file>resources/countries/fr.svg</file>
<file>resources/countries/ga.svg</file>
<file>resources/countries/gb.svg</file>
<file>resources/countries/gd.svg</file>
<file>resources/countries/ge.svg</file>
<file>resources/countries/gf.svg</file>
<file>resources/countries/gg.svg</file>
<file>resources/countries/gh.svg</file>
<file>resources/countries/gi.svg</file>
<file>resources/countries/gl.svg</file>
<file>resources/countries/gm.svg</file>
<file>resources/countries/gn.svg</file>
<file>resources/countries/gp.svg</file>
<file>resources/countries/gq.svg</file>
<file>resources/countries/gr.svg</file>
<file>resources/countries/gs.svg</file>
<file>resources/countries/gt.svg</file>
<file>resources/countries/gu.svg</file>
<file>resources/countries/gw.svg</file>
<file>resources/countries/gy.svg</file>
<file>resources/countries/hk.svg</file>
<file>resources/countries/hm.svg</file>
<file>resources/countries/hn.svg</file>
<file>resources/countries/hr.svg</file>
<file>resources/countries/ht.svg</file>
<file>resources/countries/hu.svg</file>
<file>resources/countries/id.svg</file>
<file>resources/countries/ie.svg</file>
<file>resources/countries/il.svg</file>
<file>resources/countries/im.svg</file>
<file>resources/countries/in.svg</file>
<file>resources/countries/io.svg</file>
<file>resources/countries/iq.svg</file>
<file>resources/countries/ir.svg</file>
<file>resources/countries/is.svg</file>
<file>resources/countries/it.svg</file>
<file>resources/countries/je.svg</file>
<file>resources/countries/jm.svg</file>
<file>resources/countries/jo.svg</file>
<file>resources/countries/jp.svg</file>
<file>resources/countries/ke.svg</file>
<file>resources/countries/kg.svg</file>
<file>resources/countries/kh.svg</file>
<file>resources/countries/ki.svg</file>
<file>resources/countries/km.svg</file>
<file>resources/countries/kn.svg</file>
<file>resources/countries/kp.svg</file>
<file>resources/countries/kr.svg</file>
<file>resources/countries/kw.svg</file>
<file>resources/countries/ky.svg</file>
<file>resources/countries/kz.svg</file>
<file>resources/countries/la.svg</file>
<file>resources/countries/lb.svg</file>
<file>resources/countries/lc.svg</file>
<file>resources/countries/li.svg</file>
<file>resources/countries/lk.svg</file>
<file>resources/countries/lr.svg</file>
<file>resources/countries/ls.svg</file>
<file>resources/countries/lt.svg</file>
<file>resources/countries/lu.svg</file>
<file>resources/countries/lv.svg</file>
<file>resources/countries/ly.svg</file>
<file>resources/countries/ma.svg</file>
<file>resources/countries/mc.svg</file>
<file>resources/countries/md.svg</file>
<file>resources/countries/me.svg</file>
<file>resources/countries/mf.svg</file>
<file>resources/countries/mg.svg</file>
<file>resources/countries/mh.svg</file>
<file>resources/countries/mk.svg</file>
<file>resources/countries/ml.svg</file>
<file>resources/countries/mm.svg</file>
<file>resources/countries/mn.svg</file>
<file>resources/countries/mo.svg</file>
<file>resources/countries/mp.svg</file>
<file>resources/countries/mq.svg</file>
<file>resources/countries/mr.svg</file>
<file>resources/countries/ms.svg</file>
<file>resources/countries/mt.svg</file>
<file>resources/countries/mu.svg</file>
<file>resources/countries/mv.svg</file>
<file>resources/countries/mw.svg</file>
<file>resources/countries/mx.svg</file>
<file>resources/countries/my.svg</file>
<file>resources/countries/mz.svg</file>
<file>resources/countries/na.svg</file>
<file>resources/countries/nc.svg</file>
<file>resources/countries/ne.svg</file>
<file>resources/countries/nf.svg</file>
<file>resources/countries/ng.svg</file>
<file>resources/countries/ni.svg</file>
<file>resources/countries/nl.svg</file>
<file>resources/countries/no.svg</file>
<file>resources/countries/np.svg</file>
<file>resources/countries/nr.svg</file>
<file>resources/countries/nu.svg</file>
<file>resources/countries/nz.svg</file>
<file>resources/countries/om.svg</file>
<file>resources/countries/pa.svg</file>
<file>resources/countries/pe.svg</file>
<file>resources/countries/pf.svg</file>
<file>resources/countries/pg.svg</file>
<file>resources/countries/ph.svg</file>
<file>resources/countries/pk.svg</file>
<file>resources/countries/pl.svg</file>
<file>resources/countries/pm.svg</file>
<file>resources/countries/pn.svg</file>
<file>resources/countries/pr.svg</file>
<file>resources/countries/ps.svg</file>
<file>resources/countries/pt.svg</file>
<file>resources/countries/pw.svg</file>
<file>resources/countries/py.svg</file>
<file>resources/countries/qa.svg</file>
<file>resources/countries/re.svg</file>
<file>resources/countries/ro.svg</file>
<file>resources/countries/rs.svg</file>
<file>resources/countries/ru.svg</file>
<file>resources/countries/rw.svg</file>
<file>resources/countries/sa.svg</file>
<file>resources/countries/sb.svg</file>
<file>resources/countries/sc.svg</file>
<file>resources/countries/sd.svg</file>
<file>resources/countries/se.svg</file>
<file>resources/countries/sg.svg</file>
<file>resources/countries/sh.svg</file>
<file>resources/countries/si.svg</file>
<file>resources/countries/sj.svg</file>
<file>resources/countries/sk.svg</file>
<file>resources/countries/sl.svg</file>
<file>resources/countries/sm.svg</file>
<file>resources/countries/sn.svg</file>
<file>resources/countries/so.svg</file>
<file>resources/countries/sr.svg</file>
<file>resources/countries/ss.svg</file>
<file>resources/countries/st.svg</file>
<file>resources/countries/sv.svg</file>
<file>resources/countries/sx.svg</file>
<file>resources/countries/sy.svg</file>
<file>resources/countries/sz.svg</file>
<file>resources/countries/tc.svg</file>
<file>resources/countries/td.svg</file>
<file>resources/countries/tf.svg</file>
<file>resources/countries/tg.svg</file>
<file>resources/countries/th.svg</file>
<file>resources/countries/tj.svg</file>
<file>resources/countries/tk.svg</file>
<file>resources/countries/tl.svg</file>
<file>resources/countries/tm.svg</file>
<file>resources/countries/tn.svg</file>
<file>resources/countries/to.svg</file>
<file>resources/countries/tr.svg</file>
<file>resources/countries/tt.svg</file>
<file>resources/countries/tv.svg</file>
<file>resources/countries/tw.svg</file>
<file>resources/countries/tz.svg</file>
<file>resources/countries/ua.svg</file>
<file>resources/countries/ug.svg</file>
<file>resources/countries/um.svg</file>
<file>resources/countries/us.svg</file>
<file>resources/countries/uy.svg</file>
<file>resources/countries/uz.svg</file>
<file>resources/countries/va.svg</file>
<file>resources/countries/vc.svg</file>
<file>resources/countries/ve.svg</file>
<file>resources/countries/vg.svg</file>
<file>resources/countries/vi.svg</file>
<file>resources/countries/vn.svg</file>
<file>resources/countries/vu.svg</file>
<file>resources/countries/wf.svg</file>
<file>resources/countries/ws.svg</file>
<file>resources/countries/ye.svg</file>
<file>resources/countries/yt.svg</file>
<file>resources/countries/za.svg</file>
<file>resources/countries/zm.svg</file>
<file>resources/countries/zw.svg</file>
<file>resources/countries/ad.svg</file>
<file>resources/countries/ae.svg</file>
<file>resources/countries/af.svg</file>
<file>resources/countries/ag.svg</file>
<file>resources/countries/ai.svg</file>
<file>resources/countries/al.svg</file>
<file>resources/countries/am.svg</file>
<file>resources/countries/ao.svg</file>
<file>resources/countries/aq.svg</file>
<file>resources/countries/ar.svg</file>
<file>resources/countries/as.svg</file>
<file>resources/countries/at.svg</file>
<file>resources/countries/au.svg</file>
<file>resources/countries/aw.svg</file>
<file>resources/countries/ax.svg</file>
<file>resources/countries/az.svg</file>
<file>resources/countries/ba.svg</file>
<file>resources/countries/bb.svg</file>
<file>resources/countries/bd.svg</file>
<file>resources/countries/be.svg</file>
<file>resources/countries/bf.svg</file>
<file>resources/countries/bg.svg</file>
<file>resources/countries/bh.svg</file>
<file>resources/countries/bi.svg</file>
<file>resources/countries/bj.svg</file>
<file>resources/countries/bl.svg</file>
<file>resources/countries/bm.svg</file>
<file>resources/countries/bn.svg</file>
<file>resources/countries/bo.svg</file>
<file>resources/countries/bq.svg</file>
<file>resources/countries/br.svg</file>
<file>resources/countries/bs.svg</file>
<file>resources/countries/bt.svg</file>
<file>resources/countries/bv.svg</file>
<file>resources/countries/bw.svg</file>
<file>resources/countries/by.svg</file>
<file>resources/countries/bz.svg</file>
<file>resources/countries/ca.svg</file>
<file>resources/countries/cc.svg</file>
<file>resources/countries/cd.svg</file>
<file>resources/countries/cf.svg</file>
<file>resources/countries/cg.svg</file>
<file>resources/countries/ch.svg</file>
<file>resources/countries/ci.svg</file>
<file>resources/countries/ck.svg</file>
<file>resources/countries/cl.svg</file>
<file>resources/countries/cm.svg</file>
<file>resources/countries/cn.svg</file>
<file>resources/countries/co.svg</file>
<file>resources/countries/cr.svg</file>
<file>resources/countries/cu.svg</file>
<file>resources/countries/cv.svg</file>
<file>resources/countries/cw.svg</file>
<file>resources/countries/cx.svg</file>
<file>resources/countries/cy.svg</file>
<file>resources/countries/cz.svg</file>
<file>resources/countries/de.svg</file>
<file>resources/countries/dj.svg</file>
<file>resources/countries/dk.svg</file>
<file>resources/countries/dm.svg</file>
<file>resources/countries/do.svg</file>
<file>resources/countries/dz.svg</file>
<file>resources/countries/ec.svg</file>
<file>resources/countries/ee.svg</file>
<file>resources/countries/eg.svg</file>
<file>resources/countries/eh.svg</file>
<file>resources/countries/er.svg</file>
<file>resources/countries/es.svg</file>
<file>resources/countries/et.svg</file>
<file>resources/countries/fi.svg</file>
<file>resources/countries/fj.svg</file>
<file>resources/countries/fk.svg</file>
<file>resources/countries/fm.svg</file>
<file>resources/countries/fo.svg</file>
<file>resources/countries/fr.svg</file>
<file>resources/countries/ga.svg</file>
<file>resources/countries/gb.svg</file>
<file>resources/countries/gd.svg</file>
<file>resources/countries/ge.svg</file>
<file>resources/countries/gf.svg</file>
<file>resources/countries/gg.svg</file>
<file>resources/countries/gh.svg</file>
<file>resources/countries/gi.svg</file>
<file>resources/countries/gl.svg</file>
<file>resources/countries/gm.svg</file>
<file>resources/countries/gn.svg</file>
<file>resources/countries/gp.svg</file>
<file>resources/countries/gq.svg</file>
<file>resources/countries/gr.svg</file>
<file>resources/countries/gs.svg</file>
<file>resources/countries/gt.svg</file>
<file>resources/countries/gu.svg</file>
<file>resources/countries/gw.svg</file>
<file>resources/countries/gy.svg</file>
<file>resources/countries/hk.svg</file>
<file>resources/countries/hm.svg</file>
<file>resources/countries/hn.svg</file>
<file>resources/countries/hr.svg</file>
<file>resources/countries/ht.svg</file>
<file>resources/countries/hu.svg</file>
<file>resources/countries/id.svg</file>
<file>resources/countries/ie.svg</file>
<file>resources/countries/il.svg</file>
<file>resources/countries/im.svg</file>
<file>resources/countries/in.svg</file>
<file>resources/countries/io.svg</file>
<file>resources/countries/iq.svg</file>
<file>resources/countries/ir.svg</file>
<file>resources/countries/is.svg</file>
<file>resources/countries/it.svg</file>
<file>resources/countries/je.svg</file>
<file>resources/countries/jm.svg</file>
<file>resources/countries/jo.svg</file>
<file>resources/countries/jp.svg</file>
<file>resources/countries/ke.svg</file>
<file>resources/countries/kg.svg</file>
<file>resources/countries/kh.svg</file>
<file>resources/countries/ki.svg</file>
<file>resources/countries/km.svg</file>
<file>resources/countries/kn.svg</file>
<file>resources/countries/kp.svg</file>
<file>resources/countries/kr.svg</file>
<file>resources/countries/kw.svg</file>
<file>resources/countries/ky.svg</file>
<file>resources/countries/kz.svg</file>
<file>resources/countries/la.svg</file>
<file>resources/countries/lb.svg</file>
<file>resources/countries/lc.svg</file>
<file>resources/countries/li.svg</file>
<file>resources/countries/lk.svg</file>
<file>resources/countries/lr.svg</file>
<file>resources/countries/ls.svg</file>
<file>resources/countries/lt.svg</file>
<file>resources/countries/lu.svg</file>
<file>resources/countries/lv.svg</file>
<file>resources/countries/ly.svg</file>
<file>resources/countries/ma.svg</file>
<file>resources/countries/mc.svg</file>
<file>resources/countries/md.svg</file>
<file>resources/countries/me.svg</file>
<file>resources/countries/mf.svg</file>
<file>resources/countries/mg.svg</file>
<file>resources/countries/mh.svg</file>
<file>resources/countries/mk.svg</file>
<file>resources/countries/ml.svg</file>
<file>resources/countries/mm.svg</file>
<file>resources/countries/mn.svg</file>
<file>resources/countries/mo.svg</file>
<file>resources/countries/mp.svg</file>
<file>resources/countries/mq.svg</file>
<file>resources/countries/mr.svg</file>
<file>resources/countries/ms.svg</file>
<file>resources/countries/mt.svg</file>
<file>resources/countries/mu.svg</file>
<file>resources/countries/mv.svg</file>
<file>resources/countries/mw.svg</file>
<file>resources/countries/mx.svg</file>
<file>resources/countries/my.svg</file>
<file>resources/countries/mz.svg</file>
<file>resources/countries/na.svg</file>
<file>resources/countries/nc.svg</file>
<file>resources/countries/ne.svg</file>
<file>resources/countries/nf.svg</file>
<file>resources/countries/ng.svg</file>
<file>resources/countries/ni.svg</file>
<file>resources/countries/nl.svg</file>
<file>resources/countries/no.svg</file>
<file>resources/countries/np.svg</file>
<file>resources/countries/nr.svg</file>
<file>resources/countries/nu.svg</file>
<file>resources/countries/nz.svg</file>
<file>resources/countries/om.svg</file>
<file>resources/countries/pa.svg</file>
<file>resources/countries/pe.svg</file>
<file>resources/countries/pf.svg</file>
<file>resources/countries/pg.svg</file>
<file>resources/countries/ph.svg</file>
<file>resources/countries/pk.svg</file>
<file>resources/countries/pl.svg</file>
<file>resources/countries/pm.svg</file>
<file>resources/countries/pn.svg</file>
<file>resources/countries/pr.svg</file>
<file>resources/countries/ps.svg</file>
<file>resources/countries/pt.svg</file>
<file>resources/countries/pw.svg</file>
<file>resources/countries/py.svg</file>
<file>resources/countries/qa.svg</file>
<file>resources/countries/re.svg</file>
<file>resources/countries/ro.svg</file>
<file>resources/countries/rs.svg</file>
<file>resources/countries/ru.svg</file>
<file>resources/countries/rw.svg</file>
<file>resources/countries/sa.svg</file>
<file>resources/countries/sb.svg</file>
<file>resources/countries/sc.svg</file>
<file>resources/countries/sd.svg</file>
<file>resources/countries/se.svg</file>
<file>resources/countries/sg.svg</file>
<file>resources/countries/sh.svg</file>
<file>resources/countries/si.svg</file>
<file>resources/countries/sj.svg</file>
<file>resources/countries/sk.svg</file>
<file>resources/countries/sl.svg</file>
<file>resources/countries/sm.svg</file>
<file>resources/countries/sn.svg</file>
<file>resources/countries/so.svg</file>
<file>resources/countries/sr.svg</file>
<file>resources/countries/ss.svg</file>
<file>resources/countries/st.svg</file>
<file>resources/countries/sv.svg</file>
<file>resources/countries/sx.svg</file>
<file>resources/countries/sy.svg</file>
<file>resources/countries/sz.svg</file>
<file>resources/countries/tc.svg</file>
<file>resources/countries/td.svg</file>
<file>resources/countries/tf.svg</file>
<file>resources/countries/tg.svg</file>
<file>resources/countries/th.svg</file>
<file>resources/countries/tj.svg</file>
<file>resources/countries/tk.svg</file>
<file>resources/countries/tl.svg</file>
<file>resources/countries/tm.svg</file>
<file>resources/countries/tn.svg</file>
<file>resources/countries/to.svg</file>
<file>resources/countries/tr.svg</file>
<file>resources/countries/tt.svg</file>
<file>resources/countries/tv.svg</file>
<file>resources/countries/tw.svg</file>
<file>resources/countries/tz.svg</file>
<file>resources/countries/ua.svg</file>
<file>resources/countries/ug.svg</file>
<file>resources/countries/um.svg</file>
<file>resources/countries/us.svg</file>
<file>resources/countries/uy.svg</file>
<file>resources/countries/uz.svg</file>
<file>resources/countries/va.svg</file>
<file>resources/countries/vc.svg</file>
<file>resources/countries/ve.svg</file>
<file>resources/countries/vg.svg</file>
<file>resources/countries/vi.svg</file>
<file>resources/countries/vn.svg</file>
<file>resources/countries/vu.svg</file>
<file>resources/countries/wf.svg</file>
<file>resources/countries/ws.svg</file>
<file>resources/countries/ye.svg</file>
<file>resources/countries/yt.svg</file>
<file>resources/countries/za.svg</file>
<file>resources/countries/zm.svg</file>
<file>resources/countries/zw.svg</file>
<file>resources/counters/w.svg</file>
<file>resources/counters/w_highlight.svg</file>
<file>resources/counters/u.svg</file>
<file>resources/counters/u_highlight.svg</file>
<file>resources/counters/b.svg</file>
<file>resources/counters/b_highlight.svg</file>
<file>resources/counters/r.svg</file>
<file>resources/counters/r_highlight.svg</file>
<file>resources/counters/g.svg</file>
<file>resources/counters/g_highlight.svg</file>
<file>resources/counters/storm.svg</file>
<file>resources/counters/storm_highlight.svg</file>
<file>resources/counters/general.svg</file>
<file>resources/counters/general_highlight.svg</file>
<file>resources/genders/male.svg</file>
<file>resources/genders/female.svg</file>
<file>resources/genders/unknown.svg</file>
<file>resources/userlevels/normal.svg</file>
<file>resources/userlevels/registered.svg</file>
<file>resources/userlevels/registered_buddy.svg</file>
<file>resources/userlevels/moderator.svg</file>
<file>resources/userlevels/moderator_buddy.svg</file>
<file>resources/userlevels/admin.svg</file>
<file>resources/userlevels/admin_buddy.svg</file>
<file>resources/phases/untap.svg</file>
<file>resources/phases/upkeep.svg</file>
<file>resources/phases/draw.svg</file>
<file>resources/phases/main1.svg</file>
<file>resources/phases/combat_start.svg</file>
<file>resources/phases/combat_attackers.svg</file>
<file>resources/phases/combat_blockers.svg</file>
<file>resources/phases/combat_damage.svg</file>
<file>resources/phases/combat_end.svg</file>
<file>resources/phases/main2.svg</file>
<file>resources/phases/cleanup.svg</file>
<file>resources/phases/nextturn.svg</file>
<file>resources/news/exclamation_mark.svg</file>
<file>resources/news/question_mark.svg</file>
</qresource>
<file>resources/replay/start.svg</file>
<file>resources/replay/fastforward.svg</file>
<file>resources/replay/pause.svg</file>
<file>resources/userlevels/normal.svg</file>
<file>resources/userlevels/registered.svg</file>
<file>resources/userlevels/registered_buddy.svg</file>
<file>resources/userlevels/registered_vip.svg</file>
<file>resources/userlevels/registered_vip_buddy.svg</file>
<file>resources/userlevels/registered_donator.svg</file>
<file>resources/userlevels/registered_donator_buddy.svg</file>
<file>resources/userlevels/moderator.svg</file>
<file>resources/userlevels/moderator_buddy.svg</file>
<file>resources/userlevels/moderator_vip.svg</file>
<file>resources/userlevels/moderator_vip_buddy.svg</file>
<file>resources/userlevels/admin.svg</file>
<file>resources/userlevels/admin_buddy.svg</file>
<file>resources/userlevels/admin_vip.svg</file>
<file>resources/userlevels/admin_vip_buddy.svg</file>
<!-- ADD TIP OF THE DAY IMAGES HERE -->
<file>resources/tips/tips_of_the_day.xml</file>
<file>resources/tips/images/accounts_tab.png</file>
<file>resources/tips/images/arrows.png</file>
<file>resources/tips/images/cockatrice_register.png</file>
<file>resources/tips/images/cockatrice_wiki.png</file>
<file>resources/tips/images/coin_flip.png</file>
<file>resources/tips/images/face_down.png</file>
<file>resources/tips/images/filter_games.png</file>
<file>resources/tips/images/github_logo.png</file>
<file>resources/tips/images/gitter.png</file>
<file>resources/tips/images/themes.png</file>
<file>resources/tips/images/tip_of_the_day.png</file>
</qresource>
</RCC>

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="500"
height="500"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="icon_config_shorcuts.svg">
<defs
id="defs4">
<inkscape:path-effect
effect="bend_path"
id="path-effect3618"
is_visible="true"
bendpath="m 142.49072,814.69439 c 81.91729,17.90777 153.31508,14.77655 218.89021,0"
prop_scale="1"
scale_y_rel="false"
vertical="false"
bendpath-nodetypes="cc" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective4226"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6464"
id="linearGradient6470"
x1="32.090908"
y1="1.8181819"
x2="31.09091"
y2="62.909088"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-0.1818182)" />
<linearGradient
id="linearGradient6464">
<stop
style="stop-color:#0061ff;stop-opacity:1;"
offset="0"
id="stop6466" />
<stop
style="stop-color:#001c4c;stop-opacity:1;"
offset="1"
id="stop6468" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6482"
id="linearGradient6488"
x1="32.18182"
y1="3.2835093"
x2="32.18182"
y2="13.02554"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0281354,0,0,1.0429299,-0.9963584,-0.6864152)" />
<linearGradient
id="linearGradient6482">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6484" />
<stop
style="stop-color:#00ff00;stop-opacity:0;"
offset="1"
id="stop6486" />
</linearGradient>
<linearGradient
y2="13.02554"
x2="32.18182"
y1="3.2835093"
x1="32.18182"
gradientTransform="matrix(1.0281354,0,0,1.0429299,-0.9963584,-0.6864152)"
gradientUnits="userSpaceOnUse"
id="linearGradient4241"
xlink:href="#linearGradient6482"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.42293617"
inkscape:cx="401.93458"
inkscape:cy="251.13063"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="745"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-552.36218)">
<g
transform="matrix(7.8163235,0,0,7.8163235,-0.83292805,550.81868)"
id="g4214">
<rect
ry="5.6363635"
y="1.6363637"
x="1.2727273"
height="61.090908"
width="61.636364"
id="rect6462"
style="fill:url(#linearGradient6470);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-opacity:1" />
<rect
ry="4.7325583"
y="2.7380548"
x="2.1926003"
height="13.251164"
width="59.796619"
id="rect6472"
style="fill:url(#linearGradient4241);fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<image
width="330.20697"
height="335.80368"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAAB4CAYAAAAnrQZhAAAABmJLR0QA/wD/AP+gvaeTAAALCklE QVR4nO2dbWgcZR7Af/Oyu91umlfTNtFYxabVbg4xGmkqGAiUXoViWq4UvFMOPxz4wfOoekhR6CEn fqig/eCHgyLY3kXxgzmLePZDvdpcyhlSriW2tmI0TXurl43ZtG422ezO3Ic44+xm9mWyEyedPD94 2Hl2Zp59dn77f55nXleiPCLANmAtUAtUlbmewD2mgQQwAZwBJhdbUAD4LfBPYBbQRVo2KQP8G/gD sNpenz17gG+WwRcQqXT6H/A7QLIKzMkwH6V/YT5SF6AoCqtWrUKWZbvZBZFlGVVVkWXZ8bp26Lpe cRlLUZZd2Zqmoes62Wy24s9KpVJkMplCs/8B7AOuQ65YFegFfmVduq6ujnvuuYeWlhaqq6vLroQs y2zfvp27774bVVWd1N8WYwOVSj/Hck4IhUI0NDSwbt06rl27xuDgIMPDwyXLURQFVVXNFAgEUFWV VCrF119/zeDgIFeuXMlfrR/4JZC0iv0zcMBaoW3btrFx40ZHXwSgra2NHTt2OF6vGDerWANJkmhq auKuu+7i22+/5Z133iEWi5nzDZGGwPxXu+mLFy/y1ltvMTExYf2ovwK/McT+AhhivikmEomwa9cu 1qxZ4/gLdHV10dHR4XoTd7OLNaiurqatrQ1d1+nt7WV0dLSkwPxp6+v09DQvvPACIyMj1o/ZaYg9 Bvwa5pvQ3bt3U19f77jSnZ2dPPTQQ0vSb/lFLEBVVRXt7e1omsb7779PPB4vKdCuWTZeJycn2bt3 L9evXzc+4l8KsAY4wo/RGo1G2bRpk+PK1tbWsnv37iWRCuUPcrxazgnpdJq5uTkaGxu58847icVi rF69mqqqKqqqqohEIkQiEXO60HvhcJhgMEhNTQ3BYJD+/n7jI1pUoB3LvtDmzZsXVdk9e/agaVrF X3qlEIvFuPXWW4lEIrS3tzM6Olq0Xw0EAkhS/k7MTzz66KMcOnTIGDVLKrDBmCnLMnV1dY4rGQqF qK+vX7Jo9SO6rnPt2jU2bdpES0sLyWQSRVFypBYTmU9NTQ1NTU2MjY0BIAM1xsxQKOSoMIOtW7cK qYsgHo+j6zqqqrJ+/Xqqq6sJh8Mlo7MQDQ0N5nTlRwuADRs2lF5IsIB0Os3s7CwAwWCw4vKsPwZX xK5e7ehwpcCCIVZRFFfLdUWsG0eWVipzc3MArhxqteJuaYJlgxDrU4RYnyLE+hQh1qcsq+Gspmmc Pn2agYEBhoaGiMfjfP/99yiKQm1tLa2trdx3333s3LmT5uZmr6u7rFk2Yk+cOMHrr7+ef/rJJJVK EYvF+PTTTzl8+DAPP/wwzz77LLfffvvPXNObA8/FZrNZXn31VY4ePZrzfnV1NdFo1Dx9GI/HuXTp EolEAl3XOXXqFAMDA3z88ceLOr7tdzwXe/DgQd577z0z39HRwdNPP80DDzyQs9OuaRrZbJbz58/z 9ttvc+LECebm5swdfEEung6e+vr6cqQ+9dRTHD16lAcffND2SIwsy9x7770cOnSI3t5eWlpafs7q 3lR4FrHpdJrXXnvNzPf09PDMM8+Uvf6WLVt49913XT/G6hc8E9vX18f4+DgA4XCYAwcOlFhjIZFI xLXLVfyGZ03xyZMnzeldu3Y5urRVUBpPxGqaxtDQkJnv7Oz0ohq+xhOx4+Pj3Lhxw8xHo1EvquFr PBGbSCRy8rW1tV5Uw9d4IjaZTObkI5GIF9XwNZ6IzReZL1pQOZ6IzW9685tmQeV4IraxsTHnvqDP P//ci2r4Gk/EyrLM/fffb+bPnDnjRTV8jWcHKLq7u83p48ePW28oEriAZ2J7enq45ZZbgPlzra+8 8orjMpLJpHldriAXz8QGg0Gee+45M9/X18fhw4fLXv/ChQvs27dPDLwK4Olpu56eHvbu3Wvm33zz TZ544gkGBwdt79zTNI1z587x/PPP89hjj5k3IAkWsixOtIdCIY4dOwbAZ599xuOPP05NTQ3RaNS8 OmJiYoIvvvgiJ0JDoZAr97z4Ec/FKorCiy++SEdHB2+88YZ5zdPU1BQDAwO268iyTHd3N/v376eu rk6ctrPBc7EGO3bsYPv27Zw+fZr+/n7Onj3L+Pg4iUTCvG+3tbWV9vZ2HnnkEdavXy/OxRZh2YiF +Ujs6uqiq6trwbyleBaEnxEXjPsUIdanCLE+RYj1KUKsTxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1 KUKsTxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1KUKsTxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1KUKs TxFifYoQ61OEWJ8ixPoUIdanCLE+RYj1KUKsTxFifYorYiVJcqMYgYu4InZmZsaNYlYkoVAImP/z RjdxRewPP/zgRjErkmUtdnh42I1iVhxVVVXmQz7dbvUqFitJEpcuXRL97CIwHsS9FH+XWrFY4+9A L1++XHFlVhLBYND8m9R4PE4mk3G1/IrEyrJsplOnTokHVzrgjjvuQFEUkskkU1NTZLNZV+UuWqwk STliNU2jr69PNMll0NTURHNzM7Ozs4yMjJhSs9msa4OoRYu1SjVSIpHgk08+EXKL0NzcTGtrK8lk kosXL5JOp02pmUyGTCZj+9h8pyxKrKIotmJlWebq1at88MEHpFIpIdhCKBRiy5YtbNy4katXr3L2 7FmSyWSOVCNis9lsxd2a4wdR5zfBdml6epoPP/yQ2267jba2NtasWbMi+99AIEBNTQ21tbWEw2HG x8cZHh4mnU4TCARQVRVJknISYE6r6uKfE+5oTUmSikZrfvruu++Ix+MoioKiKKxatcocRS8li/0R uf3j03WdK1eukMlkUFXVlBkIBBYItUvAouU6WssQ5lSwIXOlHXq0dkXZbLakRGve2M7GtnZK2WKt kpxKlWV5RTbFVjRNKyk3X7Lxaoh2Qlli7fpVJ1ErmKccsdZILSS9HMoSayerXKliZJxLJpNxFKnW 5KS/LblkKXGlBIP7g5KbBV3XbX/YxeSWSuX2t0XFltq1KTVfYI+u6zlyofDAqVBzXYqiYsuNVruo FU3wPIWiVtO0HLnWbVasOZYkydxdKkZBseWOdgtFreAnCsktd5RcSG4xbMWWamJL9bH5X0pQGEMu 5EZqqea41GDKdo7TfVTrrk/+L1OSJCG3CLquF4xcKNwclxpMLRDrVGp+1NpVXFAca39bTqTmi7fb 7q6IFf1qaQr1swZWuVA6Uu1G0FZcEyuonEoGU/n9bU7OyaBJ7No4p1TUgnO5YH/BvisRK3CPYoOp Us2x9coLFbhuZGZnZx1HrcAZ5URtOWeCYOGBjMnJSbMMFRgzMtlslqmpKRobG0UT7DFOzwRNT08T i8XM9WXgLGCeAb9w4YKI1mVC/vVQ+Re9Wa+T+uijj3IuOpeBBHDceGNoaIhEIuGKVLEPa4+T7VJI rlXwxMQER44csa42aBy2+AZ4EpA1TWNkZIRoNEo4HDavV7ImEa3uUG5Xlt8vW5vjmZkZXnrpJcbG xqyr/N4Q+1+gHtgKkEqlGB4eZt26daxdu3aBWIE7OBFrLG8dPH355Ze8/PLLjIyMWBfvAw5aSw4B fwd2WJfasGEDnZ2dbN68mYaGBkcDJtEUF8fp4FNVVVKpFF999RX9/f2cP38+fxv/B+gGJvNLDgN/ A3rsCg6Hw0QikbIqIaSWhxO5MzMzxe5FHmDe23ixMp78cQFdpGWfbgB/BMruIyPAfuAcoC2DLyBS broM/AlosJNXbjuwDugC1jIvXOANKWAC6AdGiy34f92AFnOZ6uyjAAAAAElFTkSuQmCC "
id="image4221"
x="89.958641"
y="628.24109" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="640"
height="480"
id="svg2"
inkscape:version="0.91 r13725"
sodipodi:docname="eu.svg">
<metadata
id="metadata43">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview41"
showgrid="false"
inkscape:zoom="0.35308642"
inkscape:cx="405"
inkscape:cy="229.84832"
inkscape:window-x="695"
inkscape:window-y="86"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<desc
id="desc4">European flag</desc>
<defs
id="defs6">
<g
id="s">
<g
id="c">
<path
id="t"
d="M 0,0 0,1 0.5,1 Z"
transform="matrix(0.95105652,0.30901699,-0.30901699,0.95105652,0,-1)"
inkscape:connector-curvature="0" />
<use
xlink:href="#t"
transform="scale(-1,1)"
id="use11"
x="0"
y="0"
width="100%"
height="100%" />
</g>
<g
id="a">
<use
xlink:href="#c"
transform="matrix(0.30901699,0.95105652,-0.95105652,0.30901699,0,0)"
id="use14"
x="0"
y="0"
width="100%"
height="100%" />
<use
xlink:href="#c"
transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,0,0)"
id="use16"
x="0"
y="0"
width="100%"
height="100%" />
</g>
<use
xlink:href="#a"
transform="scale(-1,1)"
id="use18"
x="0"
y="0"
width="100%"
height="100%" />
</g>
</defs>
<rect
width="642.9021"
height="483.35666"
id="rect20"
x="2.8321679"
y="2.3076911"
style="fill:#003399" />
<g
transform="matrix(23.811189,0,0,23.981809,322.28322,245.88665)"
id="g22"
style="fill:#ffcc00">
<use
xlink:href="#s"
y="-6"
id="use24"
x="0"
width="100%"
height="100%" />
<use
xlink:href="#s"
y="6"
id="use26"
x="0"
width="100%"
height="100%" />
<g
id="l">
<use
xlink:href="#s"
x="-6"
id="use29"
y="0"
width="100%"
height="100%" />
<use
xlink:href="#s"
transform="matrix(-0.80901699,-0.58778525,0.58778525,-0.80901699,-3,-5.1961524)"
id="use31"
x="0"
y="0"
width="100%"
height="100%" />
<use
xlink:href="#s"
transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,-5.1961524,-3)"
id="use33"
x="0"
y="0"
width="100%"
height="100%" />
<use
xlink:href="#s"
transform="matrix(0.30901699,0.95105652,-0.95105652,0.30901699,-5.1961524,3)"
id="use35"
x="0"
y="0"
width="100%"
height="100%" />
<use
xlink:href="#s"
transform="matrix(0.30901699,0.95105652,-0.95105652,0.30901699,-3,5.1961524)"
id="use37"
x="0"
y="0"
width="100%"
height="100%" />
</g>
<use
xlink:href="#l"
transform="scale(-1,1)"
id="use39"
x="0"
y="0"
width="100%"
height="100%" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="100"
id="svg2858"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="icon_tab_changed.svg">
<defs
id="defs2860">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective2866" />
<inkscape:perspective
id="perspective2853"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5"
inkscape:cx="4.1"
inkscape:cy="49.523097"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="949"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1" />
<metadata
id="metadata2863">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-952.36218)">
<path
style="font-size:253.89010620000001950px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#e50000;fill-opacity:1;stroke:#000000;stroke-width:2.39700006999999982;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;font-family:Century Schoolbook L;-inkscape-font-specification:Century Schoolbook L Medium"
d="m 53.225642,1018.5513 c 0.486911,-13.2677 1.704142,-22.64046 4.016877,-30.55249 3.895149,-13.38951 4.138607,-14.48503 4.138607,-19.23224 0,-7.66855 -4.260334,-12.17232 -11.320268,-12.17232 -7.181659,0 -11.441984,4.50377 -11.441984,12.17232 0,3.16481 0.60863,7.18167 1.704135,10.83336 4.868924,16.06746 5.720972,21.30157 6.45134,38.95137 l 6.451293,0 m -3.286511,6.8165 c -6.207884,0 -11.320257,5.1124 -11.320257,11.3204 0,6.2079 5.112373,11.4419 11.198528,11.4419 6.451342,0 11.563724,-5.1124 11.563724,-11.4419 0,-6.208 -5.112382,-11.3204 -11.441995,-11.3204"
id="text3838" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1,105 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="100"
id="svg2858"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="exclamation_mark.svg">
<defs
id="defs2860">
<linearGradient
inkscape:collect="always"
id="linearGradient3795">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3797" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3799" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective2866" />
<inkscape:perspective
id="perspective2853"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3795"
id="linearGradient3801"
x1="29.834375"
y1="999.20284"
x2="72.173357"
y2="999.20284"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5"
inkscape:cx="24.413577"
inkscape:cy="49.523097"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="949"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1" />
<metadata
id="metadata2863">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-952.36218)">
<text
xml:space="preserve"
style="font-size:129.98471069px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#e00000;fill-opacity:1;stroke:#000000;stroke-width:1.78699994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Rachana;-inkscape-font-specification:Rachana"
x="18.646267"
y="1045.775"
id="text3791"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3793"
x="18.646267"
y="1045.775"
style="fill:#e00000;fill-opacity:1;stroke-width:1.78699994;stroke-miterlimit:4;stroke-dasharray:none">?</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -1,100 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32px"
height="32px"
id="svg3320"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="replay_stop.svg">
<defs
id="defs3322">
<linearGradient
id="linearGradient2237">
<stop
style="stop-color:#006000;stop-opacity:1;"
offset="0"
id="stop2239" />
<stop
style="stop-color:#48ff00;stop-opacity:1;"
offset="1"
id="stop2241" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3207"
id="linearGradient3998"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.8996584,0,0,0.8996584,543.08369,-117.97095)"
x1="293.33597"
y1="423.03891"
x2="330.00668"
y2="472.74878" />
<linearGradient
id="linearGradient3207">
<stop
id="stop3209"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop3211"
offset="1"
style="stop-color:#48ff00;stop-opacity:0;" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.395604"
inkscape:cx="12.669812"
inkscape:cy="27.464311"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1099"
inkscape:window-height="800"
inkscape:window-x="128"
inkscape:window-y="20"
inkscape:window-maximized="0">
<inkscape:grid
type="xygrid"
id="grid2990" />
</sodipodi:namedview>
<metadata
id="metadata3325">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<rect
style="fill:#b60000;fill-opacity:1;fill-rule:nonzero;stroke:#3f0000;stroke-opacity:1;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2994"
width="20.271835"
height="20.271835"
x="5.8940139"
y="5.2983313" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@@ -0,0 +1,86 @@
<tips>
<tip>
<title>Tip of the Day</title>
<text>Tip of the Day is a new feature to Cockatrice that allows users to get information about the newest features of the program and some of the most commonly asked questions!</text>
<image>tip_of_the_day.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Suggesting New Tips</title>
<text>You can suggest new Tips of the Day by reaching out to the development team on &lt;a href="https://gitter.im/cockatrice/cockatrice"&gt;Gitter&lt;/a&gt;!</text>
<image>gitter.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Reporting Bugs</title>
<text>If you encounter a bug while using Cockatrice, you can report the bug to the development team via &lt;a href="https://github.com/cockatrice/cockatrice/issues"&gt;GitHub&lt;a&gt;</text>
<image>github_logo.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>FAQ/Troubleshooting Wiki</title>
<text>You can find answers to the most common questions and some helpful Cockatrice toubleshooting over on the &lt;a href="https://github.com/cockatrice/cockatrice/wiki"&gt;GitHub wiki&lt;a&gt;</text>
<image>cockatrice_wiki.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Register for a Server</title>
<text>Click on either Cockatrice (Windows) or Actions (Mac) and then Register to server... When the dialogue appears, fill out the desired server information.</text>
<image>cockatrice_register.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Drawing Arrows</title>
<text>You can draw arrows of different color by holding a combination of keys!
Right Click: Red Arrow
Shift + Right Click: Green Arrow
Alt + Right Click: Blue Arrow
Cmd + Right Click: Yellow Arrow
</text>
<image>arrows.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Filtering Games</title>
<text>Don't see all the active games? Want to see a smaller selection? Use the Game Filters to change your horizon</text>
<image>filter_games.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Upload Custom Avatar</title>
<text>Want to show off your hippo avatar? Need to update your password? Check out the Accounts Tab for more info!</text>
<image>accounts_tab.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Common Shortcuts</title>
<text>You can find a full list of shortcuts &lt;a href="https://github.com/Cockatrice/Cockatrice/wiki/Custom-Keyboard-Shortcuts"&gt;on the wiki&lt;/a&gt;, but a short list:
&lt;br&gt;Roll a die: CTRL + I
&lt;br&gt;Mulligan: CTRL + M
&lt;br&gt;Draw a card: CTRL + D
&lt;br&gt;Undo a draw: CTRL + SHIFT + D
&lt;br&gt;View Sideboard: CTRL + F3
&lt;br&gt;Change Life: CTRL + L
&lt;br&gt;All shortcuts can be customized via Settings->Shortcuts!
</text>
<date>2018-03-01</date>
</tip>
<tip>
<title>Changing Themes</title>
<text>Did you know Cockatrice has custom themes? You can either &lt;a href="https://github.com/Cockatrice/Cockatrice/wiki/Themes"&gt;create one yourself&lt;/a&gt; or use one of the several pre-loaded ones! Go to Settings->Appearance and try them out!</text>
<image>themes.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Flip of the Coin</title>
<text>You can flip a coin instead of rolling a die by rolling a 2 sided die instead!</text>
<image>coin_flip.png</image>
<date>2018-03-01</date>
</tip>
<tip>
<title>Face Down Cards</title>
<text>You can hold Shift while dragging or clicking on a card to have it enter play face down</text>
<image>face_down.png</image>
<date>2018-03-01</date>
</tip>
</tips>

View File

@@ -0,0 +1,363 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="100"
id="svg5322"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="admin_vip.svg">
<defs
id="defs3">
<linearGradient
inkscape:collect="always"
id="linearGradient3419">
<stop
style="stop-color:#ffec79;stop-opacity:1"
offset="0"
id="stop3421" />
<stop
style="stop-color:#f2c15b;stop-opacity:1"
offset="1"
id="stop3423" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective5328" />
<inkscape:perspective
id="perspective5305"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
id="linearGradient5181">
<stop
style="stop-color:#0fbb00;stop-opacity:1;"
offset="0"
id="stop5183" />
<stop
style="stop-color:#064400;stop-opacity:1;"
offset="1"
id="stop5185" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-2"
id="radialGradient3606-7"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)" />
<linearGradient
id="linearGradient3600-2">
<stop
style="stop-color:#ffc33d;stop-opacity:1;"
offset="0"
id="stop3602-4" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604-9" />
</linearGradient>
<inkscape:perspective
id="perspective5478"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
id="linearGradient5189">
<stop
style="stop-color:#000ec9;stop-opacity:1;"
offset="0"
id="stop5191" />
<stop
style="stop-color:#000657;stop-opacity:1;"
offset="1"
id="stop5193" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-4"
id="radialGradient3606-1"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)" />
<linearGradient
id="linearGradient3600-4">
<stop
style="stop-color:#ffc33d;stop-opacity:1;"
offset="0"
id="stop3602-3" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604-5" />
</linearGradient>
<inkscape:perspective
id="perspective5559"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5173"
id="linearGradient5179"
x1="167.33386"
y1="178.83276"
x2="244.78181"
y2="178.83276"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient5173">
<stop
style="stop-color:#f50000;stop-opacity:1;"
offset="0"
id="stop5175" />
<stop
style="stop-color:#950000;stop-opacity:1;"
offset="1"
id="stop5177" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600"
id="radialGradient5169"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276" />
<linearGradient
id="linearGradient3600">
<stop
style="stop-color:#ffc13d;stop-opacity:1;"
offset="0"
id="stop3602" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604" />
</linearGradient>
<radialGradient
r="25.501276"
fy="131.40274"
fx="324.32715"
cy="131.40274"
cx="324.32715"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)"
gradientUnits="userSpaceOnUse"
id="radialGradient5574"
xlink:href="#linearGradient3600"
inkscape:collect="always" />
<inkscape:perspective
id="perspective5663"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-7"
id="radialGradient3606-8"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)" />
<linearGradient
id="linearGradient3600-7">
<stop
style="stop-color:#ffc13d;stop-opacity:1;"
offset="0"
id="stop3602-7" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604-6" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-7"
id="radialGradient5254"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5189-1"
id="linearGradient5394"
gradientUnits="userSpaceOnUse"
x1="385.03503"
y1="180.09546"
x2="462.48297"
y2="180.09546"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-360.365,847.52359)" />
<linearGradient
id="linearGradient5189-1">
<stop
style="stop-color:#000ec9;stop-opacity:1;"
offset="0"
id="stop5191-0" />
<stop
style="stop-color:#000657;stop-opacity:1;"
offset="1"
id="stop5193-4" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5173-1"
id="linearGradient5581"
gradientUnits="userSpaceOnUse"
x1="167.33386"
y1="178.83276"
x2="244.78181"
y2="178.83276"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-149.54484,848.74636)" />
<linearGradient
id="linearGradient5173-1">
<stop
style="stop-color:#f50000;stop-opacity:1;"
offset="0"
id="stop5175-5" />
<stop
style="stop-color:#950000;stop-opacity:1;"
offset="1"
id="stop5177-3" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5181-9"
id="linearGradient5782"
gradientUnits="userSpaceOnUse"
x1="282.50455"
y1="181.61069"
x2="359.95248"
y2="181.61069"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-261.07526,846.05625)" />
<linearGradient
id="linearGradient5181-9">
<stop
style="stop-color:#80d600;stop-opacity:1;"
offset="0"
id="stop5183-3" />
<stop
style="stop-color:#80d600;stop-opacity:1;"
offset="1"
id="stop5185-0" />
</linearGradient>
<linearGradient
y2="181.61069"
x2="359.95248"
y1="181.61069"
x1="282.50455"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-175.71812,893.2775)"
gradientUnits="userSpaceOnUse"
id="linearGradient5799"
xlink:href="#linearGradient5181-9"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3419"
id="linearGradient3425"
x1="-126.90256"
y1="941.52618"
x2="-125.73831"
y2="984.13751"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(154.2532,0.90556908)" />
</defs>
<sodipodi:namedview
inkscape:document-units="mm"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4.2946338"
inkscape:cx="0.39222903"
inkscape:cy="65.175571"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1440"
inkscape:window-height="792"
inkscape:window-x="11"
inkscape:window-y="0"
inkscape:window-maximized="0" />
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-952.36218)">
<path
style="fill:#ff0000;fill-opacity:1;stroke:black;stroke-width:2.78220296;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 49.84375 1.71875 C 36.719738 1.71875 26.0625 12.375988 26.0625 25.5 C 26.0625 32.977454 29.538325 39.612734 34.9375 43.96875 C 24.439951 49.943698 17.919149 62.196126 14.3125 75.65625 C 9.0380874 95.34065 30.224013 98.21875 49.84375 98.21875 C 69.463486 98.21875 90.549327 94.96715 85.375 75.65625 C 81.693381 61.916246 75.224585 49.827177 64.8125 43.9375 C 70.181573 39.580662 73.59375 32.953205 73.59375 25.5 C 73.59375 12.375988 62.967762 1.71875 49.84375 1.71875 z "
transform="translate(0,952.36218)"
id="path3597-8" />
<path
sodipodi:type="star"
style="fill:url(#linearGradient3425);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path3415"
sodipodi:sides="5"
sodipodi:cx="27.80283"
sodipodi:cy="970.9433"
sodipodi:r1="17.189852"
sodipodi:r2="8.5949249"
sodipodi:arg1="0.9349579"
sodipodi:arg2="1.5632764"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 38.011063,984.77381 -10.143601,-5.23583 -10.063711,5.38779 1.845023,-11.2651 -8.233948,-7.90624 11.283888,-1.72639 4.974851,-10.27411 5.128803,10.19813 11.308575,1.55649 -8.114112,8.02918 z"
inkscape:transform-center-x="0.094945927"
inkscape:transform-center-y="-3.9764964"
transform="matrix(2.3768784,0,0,2.4799382,-16.393468,-1400.3733)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 64 64"
enable-background="new 0 0 64 64"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
width="100%"
height="100%"
sodipodi:docname="admin_buddy.svg">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10">
<linearGradient
id="linearGradient3766">
<stop
style="stop-color:#ff2700;stop-opacity:1;"
offset="0"
id="stop3768" />
<stop
style="stop-color:#820000;stop-opacity:1;"
offset="1"
id="stop3770" />
</linearGradient>
<linearGradient
id="linearGradient5225">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop5227" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop5229" />
</linearGradient>
<linearGradient
id="linearGradient5219"
osb:paint="solid">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop5221" />
</linearGradient>
<linearGradient
id="linearGradient3758">
<stop
id="stop3760"
offset="0"
style="stop-color:#0fbb00;stop-opacity:1;" />
<stop
id="stop3762"
offset="1"
style="stop-color:#064400;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3750">
<stop
style="stop-color:#ece400;stop-opacity:1;"
offset="0"
id="stop3752" />
<stop
style="stop-color:#ece400;stop-opacity:0;"
offset="1"
id="stop3754" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3758-7"
id="linearGradient3756-1"
x1="1.960216"
y1="31.261461"
x2="60.456024"
y2="31.261461"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3758-7">
<stop
id="stop3760-4"
offset="0"
style="stop-color:#ece400;stop-opacity:1;" />
<stop
id="stop3762-0"
offset="1"
style="stop-color:#ec8b00;stop-opacity:1;" />
</linearGradient>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview8"
showgrid="false"
inkscape:zoom="5.2149125"
inkscape:cx="-37.840247"
inkscape:cy="51.245759"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
d="M 61.442826,23.621762 38.532402,23.515555 31.556101,0.331013 24.578789,23.515555 1.6673502,23.621765 20.267785,38.422001 10.863888,63.668987 31.556101,47.626631 52.258426,63.668987 42.843404,38.422001 z"
id="path4-9"
style="fill:#000000;fill-opacity:1"
inkscape:connector-curvature="0" />
<path
d="M 57.150089,25.064396 37.504323,24.973324 31.522122,5.092503 25.539054,24.973324 5.8924192,25.064399 21.842354,37.75565 13.778482,59.405024 31.522122,45.64865 49.274434,59.405024 41.201022,37.75565 z"
id="path4"
style="fill:#ff2700;fill-opacity:1;fill-rule:nonzero"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,368 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="100"
id="svg5322"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="moderator_vip.svg">
<defs
id="defs3">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective5328" />
<inkscape:perspective
id="perspective5305"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
id="linearGradient5181">
<stop
style="stop-color:#0fbb00;stop-opacity:1;"
offset="0"
id="stop5183" />
<stop
style="stop-color:#064400;stop-opacity:1;"
offset="1"
id="stop5185" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-2"
id="radialGradient3606-7"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)" />
<linearGradient
id="linearGradient3600-2">
<stop
style="stop-color:#ffc33d;stop-opacity:1;"
offset="0"
id="stop3602-4" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604-9" />
</linearGradient>
<inkscape:perspective
id="perspective5478"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
id="linearGradient5189">
<stop
style="stop-color:#000ec9;stop-opacity:1;"
offset="0"
id="stop5191" />
<stop
style="stop-color:#000657;stop-opacity:1;"
offset="1"
id="stop5193" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-4"
id="radialGradient3606-1"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)" />
<linearGradient
id="linearGradient3600-4">
<stop
style="stop-color:#ffc33d;stop-opacity:1;"
offset="0"
id="stop3602-3" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604-5" />
</linearGradient>
<inkscape:perspective
id="perspective5559"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5173"
id="linearGradient5179"
x1="167.33386"
y1="178.83276"
x2="244.78181"
y2="178.83276"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient5173">
<stop
style="stop-color:#f50000;stop-opacity:1;"
offset="0"
id="stop5175" />
<stop
style="stop-color:#950000;stop-opacity:1;"
offset="1"
id="stop5177" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600"
id="radialGradient5169"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276" />
<linearGradient
id="linearGradient3600">
<stop
style="stop-color:#ffc13d;stop-opacity:1;"
offset="0"
id="stop3602" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604" />
</linearGradient>
<radialGradient
r="25.501276"
fy="131.40274"
fx="324.32715"
cy="131.40274"
cx="324.32715"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)"
gradientUnits="userSpaceOnUse"
id="radialGradient5574"
xlink:href="#linearGradient3600"
inkscape:collect="always" />
<inkscape:perspective
id="perspective5663"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-7"
id="radialGradient3606-8"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)" />
<linearGradient
id="linearGradient3600-7">
<stop
style="stop-color:#ffc13d;stop-opacity:1;"
offset="0"
id="stop3602-7" />
<stop
style="stop-color:#e09900;stop-opacity:1;"
offset="1"
id="stop3604-6" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600-7"
id="radialGradient5254"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.92332021,0.38403097,-0.41592401,1.0000002,78.192026,-120.05314)"
cx="324.32715"
cy="131.40274"
fx="324.32715"
fy="131.40274"
r="25.501276" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5189-1"
id="linearGradient5394"
gradientUnits="userSpaceOnUse"
x1="385.03503"
y1="180.09546"
x2="462.48297"
y2="180.09546"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-360.365,847.52359)" />
<linearGradient
id="linearGradient5189-1">
<stop
style="stop-color:#000ec9;stop-opacity:1;"
offset="0"
id="stop5191-0" />
<stop
style="stop-color:#000657;stop-opacity:1;"
offset="1"
id="stop5193-4" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5173-1"
id="linearGradient5581"
gradientUnits="userSpaceOnUse"
x1="167.33386"
y1="178.83276"
x2="244.78181"
y2="178.83276"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-149.54484,848.74636)" />
<linearGradient
id="linearGradient5173-1">
<stop
style="stop-color:#f50000;stop-opacity:1;"
offset="0"
id="stop5175-5" />
<stop
style="stop-color:#950000;stop-opacity:1;"
offset="1"
id="stop5177-3" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5181-9"
id="linearGradient5782"
gradientUnits="userSpaceOnUse"
x1="282.50455"
y1="181.61069"
x2="359.95248"
y2="181.61069"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-261.07526,846.05625)" />
<linearGradient
id="linearGradient5181-9">
<stop
style="stop-color:#80d600;stop-opacity:1;"
offset="0"
id="stop5183-3" />
<stop
style="stop-color:#80d600;stop-opacity:1;"
offset="1"
id="stop5185-0" />
</linearGradient>
<linearGradient
y2="181.61069"
x2="359.95248"
y1="181.61069"
x1="282.50455"
gradientTransform="matrix(0.96839241,0,0,0.96839241,-175.71812,893.2775)"
gradientUnits="userSpaceOnUse"
id="linearGradient5799"
xlink:href="#linearGradient5181-9"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3419">
<stop
style="stop-color:#ffec79;stop-opacity:1"
offset="0"
id="stop3421" />
<stop
style="stop-color:#f2c15b;stop-opacity:1"
offset="1"
id="stop3423" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3419"
id="linearGradient3425-5"
x1="-126.90256"
y1="941.52618"
x2="-125.73831"
y2="984.13751"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(154.2532,0.90556908)" />
</defs>
<sodipodi:namedview
inkscape:document-units="mm"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4.2946338"
inkscape:cx="34.155294"
inkscape:cy="65.175571"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1440"
inkscape:window-height="792"
inkscape:window-x="11"
inkscape:window-y="0"
inkscape:window-maximized="0" />
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-952.36218)">
<path
style="fill:#ffffff;fill-opacity:1;stroke:black;stroke-width:2.78220296;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 49.84375 1.71875 C 36.719738 1.71875 26.0625 12.375988 26.0625 25.5 C 26.0625 32.977454 29.538325 39.612734 34.9375 43.96875 C 24.439951 49.943698 17.919149 62.196126 14.3125 75.65625 C 9.0380874 95.34065 30.224013 98.21875 49.84375 98.21875 C 69.463486 98.21875 90.549327 94.96715 85.375 75.65625 C 81.693381 61.916246 75.224585 49.827177 64.8125 43.9375 C 70.181573 39.580662 73.59375 32.953205 73.59375 25.5 C 73.59375 12.375988 62.967762 1.71875 49.84375 1.71875 z "
transform="translate(0,952.36218)"
id="path3597-8" />
<path
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.73577702;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 51.28696,1001.834 0,-46.98372 1.434151,0.16768 c 5.155008,0.60274 9.462857,2.72154 12.938257,6.36366 4.74393,4.9715 6.87913,11.35611 6.16464,18.43328 -0.53702,5.31935 -3.09008,10.59498 -6.83833,14.13074 l -1.94072,1.83069 3.04083,2.20427 c 3.58084,2.5957 7.18975,6.4912 9.55296,10.3116 4.89572,7.9144 9.23593,21.4918 8.50487,26.6055 -0.81312,5.6877 -5.43872,9.6977 -13.62216,11.8093 -3.80822,0.9826 -7.68056,1.4713 -14.763321,1.8633 l -4.471177,0.2474 0,-46.9837 z"
id="path5355"
inkscape:connector-curvature="0" />
<path
sodipodi:type="star"
style="fill:url(#linearGradient3425-5);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path3415-0"
sodipodi:sides="5"
sodipodi:cx="27.80283"
sodipodi:cy="970.9433"
sodipodi:r1="17.189852"
sodipodi:r2="8.5949249"
sodipodi:arg1="0.9349579"
sodipodi:arg2="1.5632764"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 38.011063,984.77381 -10.143601,-5.23583 -10.063711,5.38779 1.845023,-11.2651 -8.233948,-7.90624 11.283888,-1.72639 4.974851,-10.27411 5.128803,10.19813 11.308575,1.55649 -8.114112,8.02918 z"
inkscape:transform-center-x="0.094945927"
inkscape:transform-center-y="-3.9764964"
transform="matrix(2.3768784,0,0,2.4799382,-15.920285,-1400.1716)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 64 64"
enable-background="new 0 0 64 64"
id="svg2"
version="1.1"
inkscape:version="0.48.5 r10040"
width="100%"
height="100%"
sodipodi:docname="moderator_buddy.svg">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10">
<linearGradient
id="linearGradient5225">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop5227" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop5229" />
</linearGradient>
<linearGradient
id="linearGradient5219"
osb:paint="solid">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop5221" />
</linearGradient>
<linearGradient
id="linearGradient3758">
<stop
id="stop3760"
offset="0"
style="stop-color:#0fbb00;stop-opacity:1;" />
<stop
id="stop3762"
offset="1"
style="stop-color:#064400;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3750">
<stop
style="stop-color:#ece400;stop-opacity:1;"
offset="0"
id="stop3752" />
<stop
style="stop-color:#ece400;stop-opacity:0;"
offset="1"
id="stop3754" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3758-7"
id="linearGradient3756-1"
x1="1.960216"
y1="31.261461"
x2="60.456024"
y2="31.261461"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3758-7">
<stop
id="stop3760-4"
offset="0"
style="stop-color:#ece400;stop-opacity:1;" />
<stop
id="stop3762-0"
offset="1"
style="stop-color:#ec8b00;stop-opacity:1;" />
</linearGradient>
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1028"
id="namedview8"
showgrid="false"
inkscape:zoom="5.2149125"
inkscape:cx="-26.445493"
inkscape:cy="31.598459"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
d="M 61.442826,23.621762 38.532402,23.515555 31.556101,0.331013 24.578789,23.515555 1.6673502,23.621765 20.267785,38.422001 10.863888,63.668987 31.556101,47.626631 52.258426,63.668987 42.843404,38.422001 z"
id="path4-9"
style="fill:#000000;fill-opacity:1"
inkscape:connector-curvature="0" />
<path
d="M 55.041981,25.814432 36.921945,25.730432 31.404334,7.3935963 25.885923,25.730432 7.7650846,25.814434 22.476316,37.520057 15.0387,57.488097 31.404334,44.800071 47.777965,57.488097 40.331551,37.520057 z"
id="path4"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero"
inkscape:connector-curvature="0" />
<path
d="M 56.276895,25.211993 37.3433,24.856806 31.486705,5.7742084 c 0.04705,37.4359336 -0.01851,2.6744908 -0.0678,40.1841446 L 48.19932,58.580578 40.956295,37.527792 z"
id="path4-1"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

Some files were not shown because too many files have changed in this diff Show More