def __render_day_cell(self, cell, col): # Set up a drawing buffer for the day cell buffer = adesklets.create_image(self._cellsize, self._cellsize) adesklets.context_set_image(buffer) adesklets.context_set_blend(False) adesklets.context_set_color(0,0,0,0) adesklets.image_fill_rectangle(0,0,self._cellsize,self._cellsize) adesklets.context_set_blend(True) # Draws the day cell background adesklets.context_set_color(*self._day_bg_color) adesklets.image_fill_rectangle(self._cell_padding, self._cell_padding, (self._cellsize - self._cell_padding), (self._cellsize - self._cell_padding)) # Draws the day cell border adesklets.context_set_color(*self._day_border_color) adesklets.image_draw_rectangle(self._cell_padding, self._cell_padding, (self._cellsize - self._cell_padding), (self._cellsize - self._cell_padding)) # Draws the day cell text adesklets.context_set_font(self._day_font) x, y = adesklets.get_text_size(cell) adesklets.context_set_color(*self._day_font_color) adesklets.text_draw(((self._cellsize / 2) - (x / 2)),((self._cellsize / 2) - (y / 2)),cell) # Blend day cell image into main buffer adesklets.context_set_image(self._buffer) adesklets.blend_image_onto_image(buffer,1,0,0,self._cellsize,self._cellsize, (col * self._cellsize),self._cellsize,self._cellsize,self._cellsize) adesklets.free_image(buffer)
def _refresh_buffer(self): """ Makes a nice clean buffer to use """ # free the old buffer if self.buffer is not None: adesklets.free_image(self.buffer) self.buffer = adesklets.create_image(self.sizeX, self.sizeY) adesklets.context_set_image(self.buffer)
def display(self): """ The main drawing routine """ # Get cell dimensions self._cellsize = self.__getcellsize() adesklets.context_set_image(0) # Calc calendar dimensions self._calsize = (self._cellsize * 7) # Set up a buffer self._buffer = adesklets.create_image(self._calsize,self._calsize+self._cellsize) adesklets.context_set_image(self._buffer) adesklets.context_set_blend(False) adesklets.context_set_color(0,0,0,0) adesklets.image_fill_rectangle(0,0,self._calsize,self._calsize) adesklets.context_set_blend(True) # Draw heading self.__render_heading_cell(self._cal[0:1][0]) # Draw the days for col in xrange(0,7): self.__render_day_cell(self._cal[1:2][0][col:col+1],col) # This draws the rest for row in xrange(2,len(self._cal)): for col in xrange(0,7): if (len(self._cal[row:row+1][0][col:col+1][0]) > 0): self.__render_date_cell(self._cal[row:row+1][0][col:col+1][0], col, row) # Resize window and put everything on foreground adesklets.context_set_image(0) if self._calsize != adesklets.image_get_width() or self._calsize+self._cellsize != adesklets.image_get_height(): adesklets.window_resize(self._calsize,self._calsize+self._cellsize) adesklets.context_set_blend(False) adesklets.blend_image_onto_image(self._buffer,1,0,0,self._calsize,self._calsize+self._cellsize,0,0,self._calsize,self._calsize+self._cellsize) adesklets.free_image(self._buffer)
def button_press(self, delayed, x, y, button): if button==1: active, scaling = self._get_active_and_scaling(x) if active in range(len(self.icons)): if self.config['click_effect']: if self.config['caption_font'] and \ self.config['caption_above']: y = self._caption_height else: y = 0 adesklets.context_set_image(self.icons[active][2]) image=adesklets.clone_image() adesklets.context_set_image(image) adesklets.apply_filter(self.config['click_effect']) adesklets.context_set_image(0) adesklets.blend_image_onto_image(image,1,\ 0,0,self.icons[active][3],self.icons[active][4], *map(lambda x: x[0]+x[1], zip([0,y,0,0],self._position(active,x)))) adesklets.free_image(image) sleep(max(self.config['click_effect_duration'],.01)) adesklets.context_set_blend(False) self._display_icons(x) self._execute(self.icons[active][1])
def __render_date_cell(self, cell, col, row): # Set up a drawing buffer for the date buffer = adesklets.create_image(self._cellsize, self._cellsize) adesklets.context_set_image(buffer) adesklets.context_set_blend(False) adesklets.context_set_color(0,0,0,0) adesklets.image_fill_rectangle(0,0,self._cellsize,self._cellsize) adesklets.context_set_blend(True) # Draws the date cell background if (int(cell) == int(datetime.date.today().day)): adesklets.context_set_color(*self._date_today_bg_color) elif (int(cell) < int(datetime.date.today().day)): adesklets.context_set_color(*self._date_past_bg_color) else: adesklets.context_set_color(*self._date_bg_color) if self._month_offset<0 or self._year_offset<0: adesklets.context_set_color(*self._date_past_bg_color) elif self._month_offset>0 or self._year_offset>0: adesklets.context_set_color(*self._date_bg_color) adesklets.image_fill_rectangle(self._cell_padding, self._cell_padding, (self._cellsize - self._cell_padding), (self._cellsize - self._cell_padding)) # Draws the date cell border if (int(cell) == int(datetime.date.today().day)): adesklets.context_set_color(*self._date_today_border_color) elif (int(cell) < int(datetime.date.today().day)): adesklets.context_set_color(*self._date_past_border_color) else: adesklets.context_set_color(*self._date_border_color) if self._month_offset<0 or self._year_offset<0: adesklets.context_set_color(*self._date_past_border_color) elif self._month_offset>0 or self._year_offset>0: adesklets.context_set_color(*self._date_border_color) adesklets.image_draw_rectangle(self._cell_padding, self._cell_padding, (self._cellsize - self._cell_padding), (self._cellsize - self._cell_padding)) # Draws the date cell text if (int(cell) == int(datetime.date.today().day)): adesklets.context_set_font(self._date_today_font) adesklets.context_set_color(*self._date_today_font_color) elif (int(cell) < int(datetime.date.today().day)): adesklets.context_set_font(self._date_past_font) adesklets.context_set_color(*self._date_past_font_color) else: adesklets.context_set_font(self._date_font) adesklets.context_set_color(*self._date_font_color) if self._month_offset<0 or self._year_offset<0: adesklets.context_set_font(self._date_past_font) adesklets.context_set_color(*self._date_past_font_color) elif self._month_offset>0 or self._year_offset>0: adesklets.context_set_font(self._date_font) adesklets.context_set_color(*self._date_font_color) x, y = adesklets.get_text_size(cell) adesklets.text_draw(((self._cellsize / 2) - (x / 2)),((self._cellsize / 2) - (y / 2)),cell) # Blend date cell image into main buffer adesklets.context_set_image(self._buffer) adesklets.blend_image_onto_image(buffer,1,0,0,self._cellsize,self._cellsize, (col * self._cellsize),(row * self._cellsize),self._cellsize,self._cellsize) adesklets.free_image(buffer)