9
9
from PyQt5 import QtGui
10
10
from PIL import Image , ImageDraw , ImageFont
11
11
import traceback
12
+ import yaml
13
+ from datetime import datetime
12
14
13
15
if getattr (sys , 'frozen' , False ): # If the app is frozen (compiled with PyInstaller)
14
16
basedir = sys ._MEIPASS # Use the temp folder where PyInstaller unpacks the app
@@ -23,12 +25,35 @@ class WallpaperApp(QWidget):
23
25
QUEST_LIMIT = 5
24
26
MAX_STR = 32
25
27
TRACKING_COLOR = (72 , 149 , 147 )
28
+ TRACKING_COLOR_INT = 7262512 #4740483
26
29
selected_item = ''
27
30
tracked_item = ''
28
31
image_path = ''
29
32
FONT = os .path .join (basedir ,"./assets/ComicMono.ttf" )
30
33
FONT_B = os .path .join (basedir ,"./assets/ComicMono-Bold.ttf" )
31
34
JSON_PATH = os .path .join (basedir ,"./assets/Quest.json" )
35
+ YAML_PATH = os .path .join (basedir ,"./assets/history.yaml" )
36
+
37
+ def addHistory (self ):
38
+ if not self .selected_item :
39
+ QMessageBox .warning (self ,"ERROR" ,f"no Quest was selected" )
40
+ return
41
+ with open (self .YAML_PATH ,'r' ) as f :
42
+ data = yaml .safe_load (f ) or {}
43
+ item = ''
44
+ if self .selected_item in self .mainQ :
45
+ item = self .mainQ [self .selected_item ]
46
+ if self .selected_item in self .sideQ :
47
+ item = self .sideQ [self .selected_item ]
48
+ quest = {'desription' :f'{ item } ' ,
49
+ 'time' :f'{ datetime .now ().strftime ("%y-%m-%d %H:%M" )} ' ,
50
+ }
51
+
52
+ data [f'{ self .selected_item } ' ] = quest
53
+ # print(data)
54
+ with open (self .YAML_PATH ,'w' ) as f :
55
+ yaml .dump (data ,f ,default_flow_style = False )
56
+
32
57
def __init__ (self ):
33
58
super ().__init__ ()
34
59
self .initUI ()
@@ -90,7 +115,11 @@ def initUI(self):
90
115
self .track_label = QLabel ("Tracking: Nothing Right Now" )
91
116
self .track_btn = QPushButton ("Track" )
92
117
self .track_btn .clicked .connect (self .trackTask )
93
-
118
+
119
+ #achieved button
120
+ self .achieve_btn = QPushButton ("Achieved" ,self )
121
+ self .achieve_btn .clicked .connect (self .addHistory )
122
+ # remove button
94
123
self .remove_btn = QPushButton ("Remove" , self )
95
124
self .remove_btn .clicked .connect (self .removeTask )
96
125
@@ -102,6 +131,7 @@ def initUI(self):
102
131
bottom_layout .addWidget (self .goal_des )
103
132
bottom_layout .addWidget (self .addTaskMain_btn )
104
133
bottom_layout .addWidget (self .track_btn )
134
+ bottom_layout .addWidget (self .achieve_btn )
105
135
bottom_layout .addWidget (self .remove_btn )
106
136
107
137
# Add top and bottom sections to the main layout
@@ -165,7 +195,7 @@ def retreiveD(self):
165
195
self .img_label .setPixmap (pixmap .scaled (200 , 200 ))
166
196
self .track_label .setText (f"Tracking: { self .tracked_item } " )
167
197
except Exception as e :
168
- print (f'Error:{ e } ' )
198
+ # print(f'Error:{e}')
169
199
170
200
def writeD (self ):
171
201
with open (self .JSON_PATH , "w" ) as file :
@@ -181,7 +211,7 @@ def add_task_main(self):
181
211
if quest not in self .mainQ .keys ():
182
212
self .mainQ [quest ] = des
183
213
self .update_quest_list ()
184
- print (self .mainQ )
214
+ # print(self.mainQ)
185
215
else :
186
216
QMessageBox .warning (self , "Quest existing" , "Please enter another Quest." )
187
217
self .on_submit ()
@@ -196,7 +226,7 @@ def add_task_side(self):
196
226
if quest not in self .sideQ .keys ():
197
227
self .sideQ [quest ] = des
198
228
self .update_quest_list ()
199
- print (self .sideQ )
229
+ # print(self.sideQ)
200
230
else :
201
231
QMessageBox .warning (self , "Quest existing" , "Please enter another Quest." )
202
232
self .on_submit ()
@@ -210,6 +240,11 @@ def update_quest_list(self):
210
240
self .quest_list_widget .addItem (quest )
211
241
for quest in self .sideQ .keys ():
212
242
self .quest_list_widget .addItem (quest )
243
+ if self .quest_list_widget .item (0 ):
244
+ # print(self.quest_list_widget.item(0).text())
245
+ for i in range (self .quest_list_widget .count ()):
246
+ if self .quest_list_widget .item (i ).text () == self .tracked_item :
247
+ self .quest_list_widget .item (i ).setBackground (QColor (self .TRACKING_COLOR_INT ))
213
248
214
249
def on_quest_clicked (self , item ):
215
250
self .selected_item = item .text ()
@@ -221,7 +256,9 @@ def on_quest_clicked(self, item):
221
256
for i in range (self .quest_list_widget .count ()):
222
257
if self .quest_list_widget .item (i ) == item :
223
258
self .quest_list_widget .item (i ).setBackground (QColor ('blue' ))
224
- else :
259
+ elif self .quest_list_widget .item (i ).text () == self .tracked_item :
260
+ self .quest_list_widget .item (i ).setBackground (QColor (self .TRACKING_COLOR_INT ))
261
+ else :
225
262
self .quest_list_widget .item (i ).setBackground (QColor ('white' ))
226
263
227
264
def upload_image (self ):
@@ -277,7 +314,7 @@ def cut_at_space(text, max_len):
277
314
# Image size
278
315
279
316
280
- print (W ,H )
317
+ # print(W,H)
281
318
# quest limit
282
319
283
320
# Coordinates for main quests (left side)
@@ -374,7 +411,7 @@ def set_wallpaper_windows(self, image_path):
374
411
375
412
def set_wallpaper_linux (self , image_path ):
376
413
try :
377
- #print(f"gsettings set org.gnome.desktop.background picture-uri-dark {os.path.join(basedir,image_path)}")
414
+ ## print(f"gsettings set org.gnome.desktop.background picture-uri-dark {os.path.join(basedir,image_path)}")
378
415
os .system (f"gsettings set org.gnome.desktop.background picture-uri { os .path .join (basedir ,image_path )} " )
379
416
os .system (f"gsettings set org.gnome.desktop.background picture-uri-dark { os .path .join (basedir ,image_path )} " )
380
417
QMessageBox .information (self , "Success" , f"Wallpaper set successfully! { image_path } " )
@@ -398,7 +435,7 @@ def on_submit(self):
398
435
self .writeD ()
399
436
output_image = self .generate_image_with_text ()
400
437
if output_image :
401
- print (output_image )
438
+ # print(output_image)
402
439
self .set_wallpaper (output_image )
403
440
404
441
0 commit comments