sane-weather: reoder the operations list
This commit is contained in:
parent
de09d54c64
commit
e4fbe9d03c
|
@ -5,6 +5,7 @@ import argparse
|
||||||
import code
|
import code
|
||||||
import gi
|
import gi
|
||||||
import logging
|
import logging
|
||||||
|
import time
|
||||||
|
|
||||||
gi.require_version('GWeather', '4.0')
|
gi.require_version('GWeather', '4.0')
|
||||||
|
|
||||||
|
@ -39,18 +40,19 @@ class WeatherSource:
|
||||||
|
|
||||||
return temp
|
return temp
|
||||||
|
|
||||||
class QueryOp:
|
# potentially interesting methods on GWeather.Info:
|
||||||
def __init__(self, loc: GWeather.Location):
|
# - get_conditions # returns '-'
|
||||||
self.loc = loc
|
# - get_forecast_list # forecast as a list of GWeather.Info instances (daily if IWIN; hourly if NWS)
|
||||||
|
# - get_sky # like 'Clear sky'
|
||||||
|
# - get_sunrise, get_sunset # like '13∶10', '03∶04' (utc time)
|
||||||
|
# - get_symbolic_icon_name # like 'weather-clear-night-symbolic'
|
||||||
|
# - get_temp_min, get_temp_max # returns '-'
|
||||||
|
# - get_temp_summary() # same as get_temp()
|
||||||
|
# - get_update() # like 'Thu, Aug 24 / 13∶00'
|
||||||
|
# - get_wind() # like 'North / 13.0 km/h'
|
||||||
|
# - get_visibility() # like '16093m'
|
||||||
|
# - get_weather_summary() # like 'Seattle-Tacoma International Airport: Clear sky'
|
||||||
|
|
||||||
class PrintTempOp:
|
|
||||||
pass
|
|
||||||
|
|
||||||
class DiagnosticsOp:
|
|
||||||
pass
|
|
||||||
|
|
||||||
class ExitOp:
|
|
||||||
pass
|
|
||||||
|
|
||||||
class TopLevel:
|
class TopLevel:
|
||||||
"""
|
"""
|
||||||
|
@ -91,10 +93,37 @@ class TopLevel:
|
||||||
logger.debug("quitting GLib MainLoop")
|
logger.debug("quitting GLib MainLoop")
|
||||||
self.source.info.store_cache()
|
self.source.info.store_cache()
|
||||||
self._loop.quit()
|
self._loop.quit()
|
||||||
|
elif isinstance(work, IdleOp):
|
||||||
|
del self.work_queue[0]
|
||||||
|
logger.debug("micro sleep")
|
||||||
|
time.sleep(0.1)
|
||||||
else:
|
else:
|
||||||
assert False, f"unknown work: {work}"
|
assert False, f"unknown work: {work}"
|
||||||
|
|
||||||
return True # re-queue this idle fn
|
# micro sleep so we don't peg CPU
|
||||||
|
# TODO: i'm sure there's a better way than all of this
|
||||||
|
time.sleep(0.05)
|
||||||
|
# re-queue this idle fn
|
||||||
|
return True
|
||||||
|
|
||||||
|
# operations:
|
||||||
|
# think of these as public methods on the `TopLevel` class,
|
||||||
|
# except abstracted as values for the sake of glib's event loop.
|
||||||
|
class QueryOp:
|
||||||
|
def __init__(self, loc: GWeather.Location):
|
||||||
|
self.loc = loc
|
||||||
|
|
||||||
|
class PrintTempOp:
|
||||||
|
pass
|
||||||
|
|
||||||
|
class DiagnosticsOp:
|
||||||
|
pass
|
||||||
|
|
||||||
|
class IdleOp:
|
||||||
|
pass
|
||||||
|
|
||||||
|
class ExitOp:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -126,6 +155,10 @@ def main():
|
||||||
toplevel.enqueue(QueryOp(here))
|
toplevel.enqueue(QueryOp(here))
|
||||||
toplevel.enqueue(PrintTempOp())
|
toplevel.enqueue(PrintTempOp())
|
||||||
toplevel.enqueue(DiagnosticsOp())
|
toplevel.enqueue(DiagnosticsOp())
|
||||||
|
|
||||||
|
# for _ in range(300): # for debugging...
|
||||||
|
# toplevel.enqueue(IdleOp())
|
||||||
|
|
||||||
toplevel.run()
|
toplevel.run()
|
||||||
|
|
||||||
if args.break_after:
|
if args.break_after:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user