Added support for optional weather info and fixed events-info error.
This commit is contained in:
parent
fd1edb02b7
commit
e9a1142443
1 changed files with 25 additions and 14 deletions
|
@ -11,26 +11,30 @@ from EllipseDesign import EllipseDesign
|
||||||
from MonthBlockDesign import MonthBlockDesign, daynumberboxsize
|
from MonthBlockDesign import MonthBlockDesign, daynumberboxsize
|
||||||
from EventListDesign import EventListDesign
|
from EventListDesign import EventListDesign
|
||||||
from RssPostListDesign import RssPostListDesign
|
from RssPostListDesign import RssPostListDesign
|
||||||
|
from settings import general_settings
|
||||||
|
|
||||||
|
weatherheadersize = (1,0.113)
|
||||||
monthtextsize = 40
|
monthtextsize = 40
|
||||||
monthovsize = (1, 0.5)
|
monthovsize = (1, 0.5)
|
||||||
monthovposition = (0, 0.23)
|
monthovposition = (0, 0.23 - weatherheadersize[1])
|
||||||
weatherheadersize = (1,0.113)
|
|
||||||
seperatorplace = (0, 0.113)
|
seperatorplace = (0, 0.113)
|
||||||
monthplace = (0, 0.12)
|
monthplace = (0, 0.12 - weatherheadersize[1])
|
||||||
monthboxsize = (1, 0.085)
|
monthboxsize = (1, 0.085)
|
||||||
weekdayrowpos = (0, 0.209)
|
weekdayrowpos = (0, 0.209 - weatherheadersize[1])
|
||||||
weekrowboxsize = (1, 0.044)
|
weekrowboxsize = (1, 0.044)
|
||||||
weekdaytextsize = 18
|
weekdaytextsize = 18
|
||||||
weekrownameboxsize = (0.143, 0.044)
|
weekrownameboxsize = (0.143, 0.044)
|
||||||
eventcirclehorizontalsize = 0.100
|
eventcirclehorizontalsize = 0.100
|
||||||
infolistsize = (1, 0.77)
|
infolistsize = (1, 0.77 + weatherheadersize[1])
|
||||||
|
|
||||||
class MonthOvPanel (PanelDesign):
|
class MonthOvPanel (PanelDesign):
|
||||||
"""Overview that focuses on the current month and
|
"""Overview that focuses on the current month and
|
||||||
some additional information in the bottom."""
|
some additional information in the bottom."""
|
||||||
def __init__ (self, size):
|
def __init__ (self, size):
|
||||||
super(MonthOvPanel, self).__init__(size)
|
super(MonthOvPanel, self).__init__(size)
|
||||||
|
self.weather_header_height = 0
|
||||||
|
if general_settings["weather-info"]:
|
||||||
|
self.weather_header_height = self.size[1] * weatherheadersize[1]
|
||||||
self.__first_render__()
|
self.__first_render__()
|
||||||
|
|
||||||
def __first_render__ (self):
|
def __first_render__ (self):
|
||||||
|
@ -41,14 +45,20 @@ class MonthOvPanel (PanelDesign):
|
||||||
self.__week_days__ = self.__get_week_days_ordered__()
|
self.__week_days__ = self.__get_week_days_ordered__()
|
||||||
|
|
||||||
self.__draw_month_name__()
|
self.__draw_month_name__()
|
||||||
self.__draw_seperator__()
|
|
||||||
self.__draw_week_row__()
|
self.__draw_week_row__()
|
||||||
|
|
||||||
|
if general_settings["weather-info"]:
|
||||||
|
self.__draw_seperator__()
|
||||||
|
|
||||||
self.month_block = MonthBlockDesign(self.__abs_pos__(monthovsize), datetime.now(), highlight_today = True)
|
self.month_block = MonthBlockDesign(self.__abs_pos__(monthovsize), datetime.now(), highlight_today = True)
|
||||||
self.month_block.pos = self.__abs_pos__(monthovposition)
|
pos = self.__abs_pos__(monthovposition)
|
||||||
|
pos = (pos[0], pos[1] + self.weather_header_height)
|
||||||
|
self.month_block.pos = pos
|
||||||
self.draw_design(self.month_block)
|
self.draw_design(self.month_block)
|
||||||
|
|
||||||
def add_weather (self, weather):
|
def add_weather (self, weather):
|
||||||
|
if general_settings["weather-info"] == False:
|
||||||
|
return
|
||||||
self.draw_design(WeatherHeaderDesign(self.__abs_pos__(weatherheadersize), weather))
|
self.draw_design(WeatherHeaderDesign(self.__abs_pos__(weatherheadersize), weather))
|
||||||
|
|
||||||
def add_rssfeed (self, rss):
|
def add_rssfeed (self, rss):
|
||||||
|
@ -68,20 +78,20 @@ class MonthOvPanel (PanelDesign):
|
||||||
month_pos = self.__abs_pos__(monthovposition)
|
month_pos = self.__abs_pos__(monthovposition)
|
||||||
month_height = self.month_block.get_real_height()
|
month_height = self.month_block.get_real_height()
|
||||||
size = self.__abs_pos__(infolistsize)
|
size = self.__abs_pos__(infolistsize)
|
||||||
size = (size[0], size[1] - month_height)
|
size = (size[0], size[1] - month_height - self.weather_header_height)
|
||||||
info_list = RssPostListDesign(size, rss)
|
info_list = RssPostListDesign(size, rss)
|
||||||
info_list.pos = (int(month_pos[0]), int(month_pos[1] + month_height))
|
info_list.pos = (int(month_pos[0]), int(month_pos[1] + month_height + self.weather_header_height))
|
||||||
self.draw_design(info_list)
|
self.draw_design(info_list)
|
||||||
|
|
||||||
def __draw_event_list_to_bottom__ (self, calendar):
|
def __draw_event_list_to_bottom__ (self, calendar):
|
||||||
month_pos = self.__abs_pos__(monthovposition)
|
month_pos = self.__abs_pos__(monthovposition)
|
||||||
month_height = self.month_block.get_real_height()
|
month_height = self.month_block.get_real_height()
|
||||||
size = self.__abs_pos__(infolistsize)
|
size = self.__abs_pos__(infolistsize)
|
||||||
size = (size[0], size[1] - month_height)
|
size = (size[0], size[1] - month_height - self.weather_header_height)
|
||||||
|
|
||||||
events = calendar.get_upcoming_events()
|
events = calendar.get_upcoming_events()
|
||||||
info_list = EventListDesign(size, events)
|
info_list = EventListDesign(size, events)
|
||||||
info_list.pos = (int(month_pos[0] + infolisthorizontalpos * self.size[0]), int(month_pos[1] + month_height))
|
info_list.pos = (int(month_pos[0]), int(month_pos[1] + month_height + self.weather_header_height))
|
||||||
self.draw_design(info_list)
|
self.draw_design(info_list)
|
||||||
|
|
||||||
def __draw_highlight_event_day__ (self, date):
|
def __draw_highlight_event_day__ (self, date):
|
||||||
|
@ -90,7 +100,7 @@ class MonthOvPanel (PanelDesign):
|
||||||
|
|
||||||
side_length = int(eventcirclehorizontalsize * self.size[0])
|
side_length = int(eventcirclehorizontalsize * self.size[0])
|
||||||
circle_size = (side_length,side_length)
|
circle_size = (side_length,side_length)
|
||||||
pos = self.month_block.get_day_pos(cur_date.isocalendar()[1] - first_month_week, self.__get_day_of_week__(cur_date), rel_pos = self.__abs_pos__(monthovposition))
|
pos = self.month_block.get_day_pos(cur_date.isocalendar()[1] - first_month_week, self.__get_day_of_week__(cur_date), rel_pos = self.month_block.pos)
|
||||||
place_size = (self.month_block.size[0] * daynumberboxsize[0], self.month_block.size[1] * daynumberboxsize[1])
|
place_size = (self.month_block.size[0] * daynumberboxsize[0], self.month_block.size[1] * daynumberboxsize[1])
|
||||||
pos = (int(pos[0] + (place_size[0] - circle_size[0]) / 2), int(pos[1] + (place_size[1] - circle_size[1]) / 2))
|
pos = (int(pos[0] + (place_size[0] - circle_size[0]) / 2), int(pos[1] + (place_size[1] - circle_size[1]) / 2))
|
||||||
self.__draw_highlight_circle__(circle_size, pos, 'red', width=2)
|
self.__draw_highlight_circle__(circle_size, pos, 'red', width=2)
|
||||||
|
@ -108,7 +118,8 @@ class MonthOvPanel (PanelDesign):
|
||||||
"""Draw the icon with the current month's name"""
|
"""Draw the icon with the current month's name"""
|
||||||
month = datetime.now().strftime("%B")
|
month = datetime.now().strftime("%B")
|
||||||
txt = TextDesign(self.__abs_pos__(monthboxsize), fontsize=monthtextsize, text=month, verticalalignment="center", horizontalalignment="center")
|
txt = TextDesign(self.__abs_pos__(monthboxsize), fontsize=monthtextsize, text=month, verticalalignment="center", horizontalalignment="center")
|
||||||
txt.pos = self.__abs_pos__(monthplace)
|
pos = self.__abs_pos__(monthplace)
|
||||||
|
txt.pos = (pos[0], pos[1] + self.weather_header_height)
|
||||||
self.draw_design(txt)
|
self.draw_design(txt)
|
||||||
|
|
||||||
def __draw_week_row__ (self):
|
def __draw_week_row__ (self):
|
||||||
|
@ -123,7 +134,7 @@ class MonthOvPanel (PanelDesign):
|
||||||
maxwidth, _ = self.__abs_pos__(monthovsize)
|
maxwidth, _ = self.__abs_pos__(monthovsize)
|
||||||
partialwidth = maxwidth / 7
|
partialwidth = maxwidth / 7
|
||||||
posx, posy = self.__abs_pos__(weekdayrowpos)
|
posx, posy = self.__abs_pos__(weekdayrowpos)
|
||||||
return (int(posx + day_of_week * partialwidth), int(posy))
|
return (int(posx + day_of_week * partialwidth), int(posy + self.weather_header_height))
|
||||||
|
|
||||||
def __draw_highlight_box__ (self, size, pos, color = colors["fg"], width = 1):
|
def __draw_highlight_box__ (self, size, pos, color = colors["fg"], width = 1):
|
||||||
design = BoxDesign(size, outline=color, width = width)
|
design = BoxDesign(size, outline=color, width = width)
|
||||||
|
|
Loading…
Reference in a new issue