mirror of https://gitlab.com/bashrc2/epicyon
Grayscale profile option
parent
3f44e0c881
commit
faf310fc12
10
daemon.py
10
daemon.py
|
@ -179,6 +179,8 @@ from cache import getPersonFromCache
|
||||||
from httpsig import verifyPostHeaders
|
from httpsig import verifyPostHeaders
|
||||||
from theme import setTheme
|
from theme import setTheme
|
||||||
from theme import getTheme
|
from theme import getTheme
|
||||||
|
from theme import enableGrayscale
|
||||||
|
from theme import disableGrayscale
|
||||||
from schedule import runPostSchedule
|
from schedule import runPostSchedule
|
||||||
from schedule import runPostScheduleWatchdog
|
from schedule import runPostScheduleWatchdog
|
||||||
from schedule import removeScheduledPosts
|
from schedule import removeScheduledPosts
|
||||||
|
@ -6494,6 +6496,14 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
if actorJson['type'] != 'Person':
|
if actorJson['type'] != 'Person':
|
||||||
actorJson['type'] = 'Person'
|
actorJson['type'] = 'Person'
|
||||||
actorChanged = True
|
actorChanged = True
|
||||||
|
grayscale = False
|
||||||
|
if fields.get('grayscale'):
|
||||||
|
if fields['grayscale'] == 'on':
|
||||||
|
grayscale = True
|
||||||
|
if grayscale:
|
||||||
|
enableGrayscale(self.server.baseDir)
|
||||||
|
else:
|
||||||
|
disableGrayscale(self.server.baseDir)
|
||||||
# save filtered words list
|
# save filtered words list
|
||||||
filterFilename = \
|
filterFilename = \
|
||||||
self.server.baseDir + '/accounts/' + \
|
self.server.baseDir + '/accounts/' + \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
:root {
|
:root {
|
||||||
|
--grayscale: 0%;
|
||||||
--main-bg-color: #282c37;
|
--main-bg-color: #282c37;
|
||||||
--calendar-bg-color: #eee;
|
--calendar-bg-color: #eee;
|
||||||
--lines-color: black;
|
--lines-color: black;
|
||||||
|
@ -38,6 +39,7 @@ body {
|
||||||
font-family: 'Montserrat';
|
font-family: 'Montserrat';
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
|
@ -180,10 +182,12 @@ tr:nth-child(even) > .calendar__day__cell:nth-child(even) {
|
||||||
}
|
}
|
||||||
|
|
||||||
.calendardayicon {
|
.calendardayicon {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 100%
|
width: 100%
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttonprev {
|
.buttonprev {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: left;
|
float: left;
|
||||||
width: 10%;
|
width: 10%;
|
||||||
-ms-transform: translateY(30%);
|
-ms-transform: translateY(30%);
|
||||||
|
@ -191,6 +195,7 @@ tr:nth-child(even) > .calendar__day__cell:nth-child(even) {
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttonnext {
|
.buttonnext {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: right;
|
float: right;
|
||||||
width: 10%;
|
width: 10%;
|
||||||
-ms-transform: translateY(30%) scaleX(-1);
|
-ms-transform: translateY(30%) scaleX(-1);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
|
--grayscale: 0%;
|
||||||
--main-bg-color: #282c37;
|
--main-bg-color: #282c37;
|
||||||
--link-bg-color: #282c37;
|
--link-bg-color: #282c37;
|
||||||
--main-fg-color: #dddddd;
|
--main-fg-color: #dddddd;
|
||||||
|
@ -49,6 +50,7 @@ body, html {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
min-width: 600px;
|
min-width: 600px;
|
||||||
margin: 5% auto;
|
margin: 5% auto;
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
}
|
}
|
||||||
|
|
||||||
a, u {
|
a, u {
|
||||||
|
@ -89,6 +91,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.followAvatar img {
|
.followAvatar img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
border-radius: 10%;
|
border-radius: 10%;
|
||||||
width: 20%;
|
width: 20%;
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
|
@ -168,6 +171,7 @@ input[type=text] {
|
||||||
}
|
}
|
||||||
|
|
||||||
.options img {
|
.options img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
|
--grayscale: 0%;
|
||||||
--main-bg-color: #282c37;
|
--main-bg-color: #282c37;
|
||||||
--link-bg-color: #282c37;
|
--link-bg-color: #282c37;
|
||||||
--main-fg-color: #dddddd;
|
--main-fg-color: #dddddd;
|
||||||
|
@ -40,6 +41,7 @@ body, html {
|
||||||
min-width: 600px;
|
min-width: 600px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
font-size: var(--font-size);
|
font-size: var(--font-size);
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
}
|
}
|
||||||
|
|
||||||
a, u {
|
a, u {
|
||||||
|
@ -96,11 +98,13 @@ button:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.imgcontainer {
|
.imgcontainer {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 24px 0 12px 0;
|
margin: 24px 0 12px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
img.avatar {
|
img.avatar {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 40%;
|
width: 40%;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
|
--grayscale: 0%;
|
||||||
--main-bg-color: #282c37;
|
--main-bg-color: #282c37;
|
||||||
--link-bg-color: #282c37;
|
--link-bg-color: #282c37;
|
||||||
--dropdown-fg-color: #dddddd;
|
--dropdown-fg-color: #dddddd;
|
||||||
|
@ -70,6 +71,7 @@ body, html {
|
||||||
min-width: 950px;
|
min-width: 950px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
font-size: var(--font-size);
|
font-size: var(--font-size);
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
}
|
}
|
||||||
|
|
||||||
a, u {
|
a, u {
|
||||||
|
@ -107,6 +109,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.rssfeed img {
|
.rssfeed img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 5%;
|
width: 5%;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
@ -144,6 +147,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.hero-image img {
|
.hero-image img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,6 +179,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.hero-text img.emoji {
|
.hero-text img.emoji {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 50px;
|
width: 50px;
|
||||||
padding: 0 0;
|
padding: 0 0;
|
||||||
margin: 0 0;
|
margin: 0 0;
|
||||||
|
@ -306,6 +311,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.container img.emoji {
|
.container img.emoji {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: none;
|
float: none;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
|
@ -316,6 +322,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.hero-text img.emojiprofile {
|
.hero-text img.emojiprofile {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: none;
|
float: none;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
|
@ -349,6 +356,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.container img.announceOrReply {
|
.container img.announceOrReply {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: none;
|
float: none;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
margin: 0 0;
|
margin: 0 0;
|
||||||
|
@ -358,6 +366,7 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.container img.DMicon {
|
.container img.DMicon {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: none;
|
float: none;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
margin: 0 0;
|
margin: 0 0;
|
||||||
|
@ -380,12 +389,14 @@ a:link {
|
||||||
}
|
}
|
||||||
|
|
||||||
.container img.attachment {
|
.container img.attachment {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
max-width: 120%;
|
max-width: 120%;
|
||||||
margin-left: 5%;
|
margin-left: 5%;
|
||||||
width: 120%;
|
width: 120%;
|
||||||
padding-bottom: 3%;
|
padding-bottom: 3%;
|
||||||
}
|
}
|
||||||
.container img.right {
|
.container img.right {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: var(--icons-side);
|
float: var(--icons-side);
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
margin-right:0;
|
margin-right:0;
|
||||||
|
@ -393,6 +404,7 @@ a:link {
|
||||||
margin: 0 0;
|
margin: 0 0;
|
||||||
}
|
}
|
||||||
.containericons img.right {
|
.containericons img.right {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: var(--icons-side);
|
float: var(--icons-side);
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
|
@ -526,6 +538,7 @@ input[type=submit]:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown img {
|
.dropdown img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
opacity: 1.0;
|
opacity: 1.0;
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
|
@ -550,6 +563,7 @@ input[type=submit]:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-result img {
|
.search-result img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 7%;
|
width: 7%;
|
||||||
padding: 0px 30px;
|
padding: 0px 30px;
|
||||||
}
|
}
|
||||||
|
@ -574,6 +588,7 @@ input[type=submit]:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-content img {
|
.dropdown-content img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
padding: 0px 0px;
|
padding: 0px 0px;
|
||||||
|
@ -623,6 +638,7 @@ input[type=submit]:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropbtn img {
|
.dropbtn img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
opacity: 1.0;
|
opacity: 1.0;
|
||||||
width: 3%;
|
width: 3%;
|
||||||
height: 3%;
|
height: 3%;
|
||||||
|
@ -636,6 +652,7 @@ div.gallery:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
div.gallery img {
|
div.gallery img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
@ -879,6 +896,7 @@ aside .toggle-inside li {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.container img {
|
.container img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: left;
|
float: left;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
width: 5%;
|
width: 5%;
|
||||||
|
@ -887,10 +905,12 @@ aside .toggle-inside li {
|
||||||
border-radius: var(--image-corners);
|
border-radius: var(--image-corners);
|
||||||
}
|
}
|
||||||
.container img.emojisearch {
|
.container img.emojisearch {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 15%;
|
width: 15%;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
.container img.emojicalendar {
|
.container img.emojicalendar {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: left;
|
float: left;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
width: 8%;
|
width: 8%;
|
||||||
|
@ -898,6 +918,7 @@ aside .toggle-inside li {
|
||||||
transform: translateY(-25%);
|
transform: translateY(-25%);
|
||||||
}
|
}
|
||||||
.container img.timelineicon {
|
.container img.timelineicon {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: var(--icons-side);
|
float: var(--icons-side);
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
margin-right:0;
|
margin-right:0;
|
||||||
|
@ -906,6 +927,7 @@ aside .toggle-inside li {
|
||||||
width: 50px;
|
width: 50px;
|
||||||
}
|
}
|
||||||
.container img.emojiheader {
|
.container img.emojiheader {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: none;
|
float: none;
|
||||||
width: 25px;
|
width: 25px;
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
|
@ -915,6 +937,7 @@ aside .toggle-inside li {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
.containericons img {
|
.containericons img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: var(--icons-side);
|
float: var(--icons-side);
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
width: 3%;
|
width: 3%;
|
||||||
|
@ -922,6 +945,7 @@ aside .toggle-inside li {
|
||||||
border-radius: 0%;
|
border-radius: 0%;
|
||||||
}
|
}
|
||||||
div.mediaicons img {
|
div.mediaicons img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: right;
|
float: right;
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
width: 6%;
|
width: 6%;
|
||||||
|
@ -929,6 +953,7 @@ aside .toggle-inside li {
|
||||||
border-radius: 0%;
|
border-radius: 0%;
|
||||||
}
|
}
|
||||||
div.mediaavatar img {
|
div.mediaavatar img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: left;
|
float: left;
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
width: 5%;
|
width: 5%;
|
||||||
|
@ -936,6 +961,7 @@ aside .toggle-inside li {
|
||||||
border-radius: 0%;
|
border-radius: 0%;
|
||||||
}
|
}
|
||||||
.timeline-avatar img {
|
.timeline-avatar img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
opacity: 1.0;
|
opacity: 1.0;
|
||||||
width: 8%;
|
width: 8%;
|
||||||
height: 8%;
|
height: 8%;
|
||||||
|
@ -1191,20 +1217,24 @@ aside .toggle-inside li {
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
}
|
}
|
||||||
.hero-text img.qrcode {
|
.hero-text img.qrcode {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
border-radius: 1%;
|
border-radius: 1%;
|
||||||
width: 5%;
|
width: 5%;
|
||||||
min-width: 20px;
|
min-width: 20px;
|
||||||
}
|
}
|
||||||
.hero-text img.title {
|
.hero-text img.title {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
border-radius: 1%;
|
border-radius: 1%;
|
||||||
width: 15%;
|
width: 15%;
|
||||||
}
|
}
|
||||||
#msgscope label img {
|
#msgscope label img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 46px;
|
width: 46px;
|
||||||
height: 46px;
|
height: 46px;
|
||||||
padding: 0px 0px;
|
padding: 0px 0px;
|
||||||
}
|
}
|
||||||
.toggle-msgScope img {
|
.toggle-msgScope img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
padding: 0px 0px;
|
padding: 0px 0px;
|
||||||
|
@ -1280,6 +1310,7 @@ aside .toggle-inside li {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.container img {
|
.container img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: left;
|
float: left;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
width: 15%;
|
width: 15%;
|
||||||
|
@ -1288,10 +1319,12 @@ aside .toggle-inside li {
|
||||||
border-radius: var(--image-corners);
|
border-radius: var(--image-corners);
|
||||||
}
|
}
|
||||||
.container img.emojisearch {
|
.container img.emojisearch {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 25%;
|
width: 25%;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
.container img.emojicalendar {
|
.container img.emojicalendar {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: left;
|
float: left;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
width: 12%;
|
width: 12%;
|
||||||
|
@ -1299,6 +1332,7 @@ aside .toggle-inside li {
|
||||||
transform: translateY(-25%);
|
transform: translateY(-25%);
|
||||||
}
|
}
|
||||||
.container img.timelineicon {
|
.container img.timelineicon {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: var(--icons-side);
|
float: var(--icons-side);
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
margin-right:0;
|
margin-right:0;
|
||||||
|
@ -1307,6 +1341,7 @@ aside .toggle-inside li {
|
||||||
width: 100px;
|
width: 100px;
|
||||||
}
|
}
|
||||||
.container img.emojiheader {
|
.container img.emojiheader {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: none;
|
float: none;
|
||||||
width: 45px;
|
width: 45px;
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
|
@ -1316,6 +1351,7 @@ aside .toggle-inside li {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
div.mediaavatar img {
|
div.mediaavatar img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: left;
|
float: left;
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
width: 8%;
|
width: 8%;
|
||||||
|
@ -1323,6 +1359,7 @@ aside .toggle-inside li {
|
||||||
border-radius: 0%;
|
border-radius: 0%;
|
||||||
}
|
}
|
||||||
div.mediaicons img {
|
div.mediaicons img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: right;
|
float: right;
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
width: 10%;
|
width: 10%;
|
||||||
|
@ -1330,6 +1367,7 @@ aside .toggle-inside li {
|
||||||
border-radius: 0%;
|
border-radius: 0%;
|
||||||
}
|
}
|
||||||
.containericons img {
|
.containericons img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
float: var(--icons-side);
|
float: var(--icons-side);
|
||||||
max-width: 200px;
|
max-width: 200px;
|
||||||
width: 7%;
|
width: 7%;
|
||||||
|
@ -1337,6 +1375,7 @@ aside .toggle-inside li {
|
||||||
border-radius: 0%;
|
border-radius: 0%;
|
||||||
}
|
}
|
||||||
.timeline-avatar img {
|
.timeline-avatar img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
opacity: 1.0;
|
opacity: 1.0;
|
||||||
width: 15%;
|
width: 15%;
|
||||||
height: 15%;
|
height: 15%;
|
||||||
|
@ -1592,20 +1631,24 @@ aside .toggle-inside li {
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
}
|
}
|
||||||
.hero-text img.qrcode {
|
.hero-text img.qrcode {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
border-radius: 1%;
|
border-radius: 1%;
|
||||||
width: 15%;
|
width: 15%;
|
||||||
min-width: 20px;
|
min-width: 20px;
|
||||||
}
|
}
|
||||||
.hero-text img.title {
|
.hero-text img.title {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
border-radius: 1%;
|
border-radius: 1%;
|
||||||
width: 25%;
|
width: 25%;
|
||||||
}
|
}
|
||||||
#msgscope label img {
|
#msgscope label img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
padding: 0px 0px;
|
padding: 0px 0px;
|
||||||
}
|
}
|
||||||
.toggle-msgScope img {
|
.toggle-msgScope img {
|
||||||
|
filter: grayscale(--grayscale);
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
margin: -15px 0px;
|
margin: -15px 0px;
|
||||||
|
|
31
theme.py
31
theme.py
|
@ -87,7 +87,8 @@ def setCSSparam(css: str, param: str, value: str) -> str:
|
||||||
def setThemeFromDict(baseDir: str, name: str, themeParams: {}) -> None:
|
def setThemeFromDict(baseDir: str, name: str, themeParams: {}) -> None:
|
||||||
"""Uses a dictionary to set a theme
|
"""Uses a dictionary to set a theme
|
||||||
"""
|
"""
|
||||||
setThemeInConfig(baseDir, name)
|
if name:
|
||||||
|
setThemeInConfig(baseDir, name)
|
||||||
themeFiles = ('epicyon.css', 'login.css', 'follow.css',
|
themeFiles = ('epicyon.css', 'login.css', 'follow.css',
|
||||||
'suspended.css', 'calendar.css', 'blog.css')
|
'suspended.css', 'calendar.css', 'blog.css')
|
||||||
for filename in themeFiles:
|
for filename in themeFiles:
|
||||||
|
@ -144,6 +145,29 @@ def setCustomFont(baseDir: str):
|
||||||
cssfile.write(css)
|
cssfile.write(css)
|
||||||
|
|
||||||
|
|
||||||
|
def enableGrayscale(baseDir: str):
|
||||||
|
removeTheme(baseDir)
|
||||||
|
themeParams = {
|
||||||
|
"grayscale": "100%"
|
||||||
|
}
|
||||||
|
setThemeFromDict(baseDir, None, themeParams)
|
||||||
|
grayscaleFilename = baseDir + '/accounts/.grayscale'
|
||||||
|
if not os.path.isfile(grayscaleFilename):
|
||||||
|
with open(grayscaleFilename, 'w') as grayfile:
|
||||||
|
grayfile.write(' ')
|
||||||
|
|
||||||
|
|
||||||
|
def disableGrayscale(baseDir: str):
|
||||||
|
removeTheme(baseDir)
|
||||||
|
themeParams = {
|
||||||
|
"grayscale": "0%"
|
||||||
|
}
|
||||||
|
setThemeFromDict(baseDir, None, themeParams)
|
||||||
|
grayscaleFilename = baseDir + '/accounts/.grayscale'
|
||||||
|
if os.path.isfile(grayscaleFilename):
|
||||||
|
os.remove(grayscaleFilename)
|
||||||
|
|
||||||
|
|
||||||
def setThemeDefault(baseDir: str):
|
def setThemeDefault(baseDir: str):
|
||||||
removeTheme(baseDir)
|
removeTheme(baseDir)
|
||||||
setThemeInConfig(baseDir, 'default')
|
setThemeInConfig(baseDir, 'default')
|
||||||
|
@ -613,4 +637,9 @@ def setTheme(baseDir: str, name: str) -> bool:
|
||||||
result = True
|
result = True
|
||||||
|
|
||||||
setCustomFont(baseDir)
|
setCustomFont(baseDir)
|
||||||
|
grayscaleFilename = baseDir + '/accounts/.grayscale'
|
||||||
|
if os.path.isfile(grayscaleFilename):
|
||||||
|
enableGrayscale(baseDir)
|
||||||
|
else:
|
||||||
|
disableGrayscale(baseDir)
|
||||||
return result
|
return result
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "حظ أوفر في المرة القادمة",
|
"Better luck next time": "حظ أوفر في المرة القادمة",
|
||||||
"Unavailable": "غير متوفره",
|
"Unavailable": "غير متوفره",
|
||||||
"The server is busy. Please try again later": "الخادم مشغول. الرجاء معاودة المحاولة في وقت لاحق",
|
"The server is busy. Please try again later": "الخادم مشغول. الرجاء معاودة المحاولة في وقت لاحق",
|
||||||
"Receive calendar events from this account": "تلقي أحداث التقويم من هذا الحساب"
|
"Receive calendar events from this account": "تلقي أحداث التقويم من هذا الحساب",
|
||||||
|
"Grayscale": "درجات الرمادي"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Que tingueu més sort la propera vegada",
|
"Better luck next time": "Que tingueu més sort la propera vegada",
|
||||||
"Unavailable": "No disponible",
|
"Unavailable": "No disponible",
|
||||||
"The server is busy. Please try again later": "El servidor està ocupat. Siusplau, intenta-ho més tard",
|
"The server is busy. Please try again later": "El servidor està ocupat. Siusplau, intenta-ho més tard",
|
||||||
"Receive calendar events from this account": "Rep esdeveniments del calendari des d’aquest compte"
|
"Receive calendar events from this account": "Rep esdeveniments del calendari des d’aquest compte",
|
||||||
|
"Grayscale": "Escala de grisos"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Gwell lwc y tro nesaf",
|
"Better luck next time": "Gwell lwc y tro nesaf",
|
||||||
"Unavailable": "Ddim ar gael",
|
"Unavailable": "Ddim ar gael",
|
||||||
"The server is busy. Please try again later": "Mae'r gweinydd yn brysur. Rho gynnig Arni eto'n hwyrach",
|
"The server is busy. Please try again later": "Mae'r gweinydd yn brysur. Rho gynnig Arni eto'n hwyrach",
|
||||||
"Receive calendar events from this account": "Derbyn digwyddiadau calendr o'r cyfrif hwn"
|
"Receive calendar events from this account": "Derbyn digwyddiadau calendr o'r cyfrif hwn",
|
||||||
|
"Grayscale": "Graddlwyd"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Viel Glück beim nächsten Mal",
|
"Better luck next time": "Viel Glück beim nächsten Mal",
|
||||||
"Unavailable": "Nicht verfügbar",
|
"Unavailable": "Nicht verfügbar",
|
||||||
"The server is busy. Please try again later": "Der Server ist beschäftigt. Bitte versuchen Sie es später noch einmal",
|
"The server is busy. Please try again later": "Der Server ist beschäftigt. Bitte versuchen Sie es später noch einmal",
|
||||||
"Receive calendar events from this account": "Erhalten Sie Kalenderereignisse von diesem Konto"
|
"Receive calendar events from this account": "Erhalten Sie Kalenderereignisse von diesem Konto",
|
||||||
|
"Grayscale": "Graustufen"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Better luck next time",
|
"Better luck next time": "Better luck next time",
|
||||||
"Unavailable": "Unavailable",
|
"Unavailable": "Unavailable",
|
||||||
"The server is busy. Please try again later": "The server is busy. Please try again later",
|
"The server is busy. Please try again later": "The server is busy. Please try again later",
|
||||||
"Receive calendar events from this account": "Receive calendar events from this account"
|
"Receive calendar events from this account": "Receive calendar events from this account",
|
||||||
|
"Grayscale": "Grayscale"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Mejor suerte la próxima vez",
|
"Better luck next time": "Mejor suerte la próxima vez",
|
||||||
"Unavailable": "Indisponible",
|
"Unavailable": "Indisponible",
|
||||||
"The server is busy. Please try again later": "El servidor esta ocupado. Por favor, inténtelo de nuevo más tarde",
|
"The server is busy. Please try again later": "El servidor esta ocupado. Por favor, inténtelo de nuevo más tarde",
|
||||||
"Receive calendar events from this account": "Recibe eventos de calendario de esta cuenta"
|
"Receive calendar events from this account": "Recibe eventos de calendario de esta cuenta",
|
||||||
|
"Grayscale": "Escala de grises"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Plus de chance la prochaine fois",
|
"Better luck next time": "Plus de chance la prochaine fois",
|
||||||
"Unavailable": "Indisponible",
|
"Unavailable": "Indisponible",
|
||||||
"The server is busy. Please try again later": "Le serveur est occupé. Veuillez réessayer plus tard",
|
"The server is busy. Please try again later": "Le serveur est occupé. Veuillez réessayer plus tard",
|
||||||
"Receive calendar events from this account": "Recevoir des événements d'agenda de ce compte"
|
"Receive calendar events from this account": "Recevoir des événements d'agenda de ce compte",
|
||||||
|
"Grayscale": "Niveaux de gris"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Ádh níos fearr an chéad uair eile",
|
"Better luck next time": "Ádh níos fearr an chéad uair eile",
|
||||||
"Unavailable": "Níl sé ar fáil",
|
"Unavailable": "Níl sé ar fáil",
|
||||||
"The server is busy. Please try again later": "Tá an freastalaí gnóthach. Bain triail eile as níos déanaí",
|
"The server is busy. Please try again later": "Tá an freastalaí gnóthach. Bain triail eile as níos déanaí",
|
||||||
"Receive calendar events from this account": "Faigh imeachtaí féilire ón gcuntas seo"
|
"Receive calendar events from this account": "Faigh imeachtaí féilire ón gcuntas seo",
|
||||||
|
"Grayscale": "Liathscála"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "अगली बार किस्मत तुम्हारा साथ देगी",
|
"Better luck next time": "अगली बार किस्मत तुम्हारा साथ देगी",
|
||||||
"Unavailable": "अनुपलब्ध",
|
"Unavailable": "अनुपलब्ध",
|
||||||
"The server is busy. Please try again later": "सर्वर व्यस्त है। बाद में पुन: प्रयास करें",
|
"The server is busy. Please try again later": "सर्वर व्यस्त है। बाद में पुन: प्रयास करें",
|
||||||
"Receive calendar events from this account": "इस खाते से कैलेंडर ईवेंट प्राप्त करें"
|
"Receive calendar events from this account": "इस खाते से कैलेंडर ईवेंट प्राप्त करें",
|
||||||
|
"Grayscale": "ग्रेस्केल"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "La prossima volta sarai più fortunato",
|
"Better luck next time": "La prossima volta sarai più fortunato",
|
||||||
"Unavailable": "non disponibile",
|
"Unavailable": "non disponibile",
|
||||||
"The server is busy. Please try again later": "Il server è occupato. Per favore riprova più tardi",
|
"The server is busy. Please try again later": "Il server è occupato. Per favore riprova più tardi",
|
||||||
"Receive calendar events from this account": "Ricevi eventi di calendario da questo account"
|
"Receive calendar events from this account": "Ricevi eventi di calendario da questo account",
|
||||||
|
"Grayscale": "Scala di grigi"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "次回は幸運を",
|
"Better luck next time": "次回は幸運を",
|
||||||
"Unavailable": "利用できません",
|
"Unavailable": "利用できません",
|
||||||
"The server is busy. Please try again later": "サーバーはビジーです。 後でもう一度やり直してください",
|
"The server is busy. Please try again later": "サーバーはビジーです。 後でもう一度やり直してください",
|
||||||
"Receive calendar events from this account": "このアカウントからカレンダーイベントを受信します"
|
"Receive calendar events from this account": "このアカウントからカレンダーイベントを受信します",
|
||||||
|
"Grayscale": "グレースケール"
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,5 +246,6 @@
|
||||||
"Better luck next time": "Better luck next time",
|
"Better luck next time": "Better luck next time",
|
||||||
"Unavailable": "Unavailable",
|
"Unavailable": "Unavailable",
|
||||||
"The server is busy. Please try again later": "The server is busy. Please try again later",
|
"The server is busy. Please try again later": "The server is busy. Please try again later",
|
||||||
"Receive calendar events from this account": "Receive calendar events from this account"
|
"Receive calendar events from this account": "Receive calendar events from this account",
|
||||||
|
"Grayscale": "Grayscale"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Mais sorte da próxima vez",
|
"Better luck next time": "Mais sorte da próxima vez",
|
||||||
"Unavailable": "Indisponível",
|
"Unavailable": "Indisponível",
|
||||||
"The server is busy. Please try again later": "O servidor está ocupado. Por favor, tente novamente mais tarde",
|
"The server is busy. Please try again later": "O servidor está ocupado. Por favor, tente novamente mais tarde",
|
||||||
"Receive calendar events from this account": "Receba eventos da agenda desta conta"
|
"Receive calendar events from this account": "Receba eventos da agenda desta conta",
|
||||||
|
"Grayscale": "Escala de cinza"
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,5 +250,6 @@
|
||||||
"Better luck next time": "Повезет в следующий раз",
|
"Better luck next time": "Повезет в следующий раз",
|
||||||
"Unavailable": "Недоступен",
|
"Unavailable": "Недоступен",
|
||||||
"The server is busy. Please try again later": "Сервер занят. Пожалуйста, попробуйте позже",
|
"The server is busy. Please try again later": "Сервер занят. Пожалуйста, попробуйте позже",
|
||||||
"Receive calendar events from this account": "Получать события календаря от этого аккаунта"
|
"Receive calendar events from this account": "Получать события календаря от этого аккаунта",
|
||||||
|
"Grayscale": "Оттенки серого"
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,5 +249,6 @@
|
||||||
"Better luck next time": "下次好运",
|
"Better luck next time": "下次好运",
|
||||||
"Unavailable": "不可用",
|
"Unavailable": "不可用",
|
||||||
"The server is busy. Please try again later": "服务器忙。 请稍后再试",
|
"The server is busy. Please try again later": "服务器忙。 请稍后再试",
|
||||||
"Receive calendar events from this account": "从该帐户接收日历事件"
|
"Receive calendar events from this account": "从该帐户接收日历事件",
|
||||||
|
"Grayscale": "灰阶"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1243,6 +1243,15 @@ def htmlEditProfile(translate: {}, baseDir: str, path: str,
|
||||||
themes = getThemesList()
|
themes = getThemesList()
|
||||||
themesDropdown = '<div class="container">'
|
themesDropdown = '<div class="container">'
|
||||||
themesDropdown += ' <b>' + translate['Theme'] + '</b><br>'
|
themesDropdown += ' <b>' + translate['Theme'] + '</b><br>'
|
||||||
|
grayscaleFilename = \
|
||||||
|
baseDir + '/accounts/.grayscale'
|
||||||
|
grayscale = ''
|
||||||
|
if os.path.isfile(grayscaleFilename):
|
||||||
|
grayscale = 'checked'
|
||||||
|
themesDropdown += \
|
||||||
|
' <input type="checkbox" class="profilecheckbox" ' + \
|
||||||
|
'name="grayscale" ' + grayscale + \
|
||||||
|
'> ' + translate['Grayscale'] + '<br>'
|
||||||
themesDropdown += ' <select id="themeDropdown" ' + \
|
themesDropdown += ' <select id="themeDropdown" ' + \
|
||||||
'name="themeDropdown" class="theme">'
|
'name="themeDropdown" class="theme">'
|
||||||
for themeName in themes:
|
for themeName in themes:
|
||||||
|
|
Loading…
Reference in New Issue