ui.py

changeset 42
00accd11978b
parent 40
cfbeeec8cb82
child 45
aa2a95dc6093
equal deleted inserted replaced
41:e2641cb9ca6d 42:00accd11978b
140 self.statuses[index]=b.status() 140 self.statuses[index]=b.status()
141 141
142 menu, state=self.__rebuild_menu() 142 menu, state=self.__rebuild_menu()
143 143
144 self.refresh_timer=None 144 self.refresh_timer=None
145 self.logwindow=None
146 145
147 super().__init__(traynames[state], menu=menu, quit_button=None) 146 super().__init__(traynames[state], menu=menu, quit_button=None)
148 147
149 def __rebuild_menu(self): 148 def __rebuild_menu(self):
150 menu=[] 149 menu=[]
162 elif this_state>=OFFLINE: 161 elif this_state>=OFFLINE:
163 item.state=-1 162 item.state=-1
164 menu.append(item) 163 menu.append(item)
165 state=combine_state(state, this_state) 164 state=combine_state(state, this_state)
166 165
167 menu_log=rumps.MenuItem("Show log", callback=self.showlog) 166 menu_log=rumps.MenuItem("Show log", callback=lambda _: showlog())
168 menu.append(menu_log) 167 menu.append(menu_log)
169 168
170 if not settings['no_quit_menu_entry']: 169 if not settings['no_quit_menu_entry']:
171 menu_quit=rumps.MenuItem("Quit...", callback=self.my_quit) 170 menu_quit=rumps.MenuItem("Quit...", callback=self.my_quit)
172 menu.append(menu_quit) 171 menu.append(menu_quit)
215 except Exception as err: 214 except Exception as err:
216 utils.log_exception(logger, err) 215 utils.log_exception(logger, err)
217 notification_workaround(borgend.appname_stylised, 216 notification_workaround(borgend.appname_stylised,
218 err.__class__.__name__, str(err)) 217 err.__class__.__name__, str(err))
219 218
220 @rumps.notifications 219 #
221 def notification_center(data): 220 # Log window
222 pass 221 #
223 222
224 def showlog(self, _): 223 logwindow=[None]
225 try: 224 logwindow_lock=Lock()
226 if not self.logwindow: 225
226 def showlog():
227 try:
228 w=None
229 with logwindow_lock:
230 if not logwindow[0]:
227 lines=borgend.fifolog.formatAll() 231 lines=borgend.fifolog.formatAll()
228 msg="\n".join(lines[0:]) 232 msg="\n".join(lines[0:])
229 self.logwindow=rumps.Window(title=borgend.appname_stylised+' log', 233 w=rumps.Window(title=borgend.appname_stylised+' log',
230 default_text=msg, 234 default_text=msg,
231 ok='Close', 235 ok='Close',
232 dimensions=(640,320)) 236 dimensions=(640,320))
233 self.logwindow.run() 237 logwindow[0]=w
234 # Does not return until closed 238 if w:
235 self.logwindow=None 239 try:
236 except Exception as err: 240 w.run()
237 utils.log_exception(logger, err) 241 finally:
238 242 with logwindow_lock:
243 logwindow[0]=None
244 except Exception as err:
245 utils.log_exception(logger, err)
246
247 #
248 # Notification click response => show log window
249 #
250
251 @rumps.notifications
252 def notification_center(_):
253 showlog()

mercurial