예제 #1
0
	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)
예제 #2
0
    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)
예제 #3
0
	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)
예제 #4
0
파일: yab.py 프로젝트: rangalo/desklets
 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])
예제 #5
0
	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)