def background(buttons): s = pygame.Surface((1000, 1000)) r = s.fill((100, 100, 100), pygame.Rect(200, 100, 600, 800)) # Draw on buttons i = -1 for b_text, b_func, b_args in buttons: i += 1 # Test for invisible buttons # r = s.fill((100, 0, 0), pygame.Rect(300, 110 + i*60, 400, 40)) # Centre the text font_obj = pygame.font.SysFont("Helvetica", 24) left_margin = (600 - font_obj.size(b_text)[0]) / 2 button_pos = (200 + left_margin, 120 + i * 60) controls.draw_text(s, b_text, button_pos, colour=(255, 255, 255), font_obj=font_obj) return s
def draw(self): if self.network == None: self._image = pygame.Surface(self.rect.size) self._image.fill(self.fill_colour, pygame.Rect(0, 0, self.rect.width, self.rect.height)) return if self._last_node_drawn == (self.network.selected_node, self.selected): return self._last_node_drawn = self.network.selected_node self._image = pygame.Surface(self.rect.size) self._image.fill(self.fill_colour, pygame.Rect(0, 0, self.rect.width, self.rect.height)) if self.network.selected_node < 0: return the_node = self.network.nodes[self.network.selected_node] controls.draw_text(self._image, "%s [%s]" % (the_node.name, self.network.selected_node), (15, 5), self.text_colour, size=22) controls.draw_text(self._image, "Program", (5, row_height + 5), self.text_colour, size=header_size) controls.draw_text(self._image, "Version", (170, row_height + 5), self.text_colour, size=header_size) keys = list(the_node.programs.keys()) keys.sort() for i, prog in enumerate(keys): ver = the_node.programs[prog] if i == self.selected: self._image.fill(self.selected_colour, pygame.Rect(0, (i+2) * row_height + 5, self.rect.width, row_height)) controls.draw_text(self._image, prog, (5, 5 + row_height*2 + i*row_height), self.text_colour, size=row_size) controls.draw_text(self._image, str(float(ver)), (170, 5 + row_height*2 + i*row_height), self.text_colour, size=row_size)
def draw(self): if self.kill: return self._image = pygame.Surface(self.rect.size) self._image.fill(self.fill_colour, pygame.Rect(0, 0, self.rect.width, self.rect.height)) i = -1 for row_text, callback in self.options: i += 1 controls.draw_text(self._image, str(row_text), (5, 5 + i*row_height), self.text_colour, size=row_size) # Close window button self._image.fill((200, 0, 0), pygame.Rect(self.rect.width-25, 0, 25, 25)) pygame.draw.aaline(self._image, (255, 100, 100), (self.rect.width - 23, 2), (self.rect.width - 2, 23)) pygame.draw.aaline(self._image, (255, 100, 100), (self.rect.width - 23, 23), (self.rect.width - 2, 2))
def make_bg_image(buttons): s = pygame.Surface((1000, 1000)) r = s.fill((100, 100, 100), pygame.Rect(200, 100, 600, 800)) # Draw on buttons i = -1 for b_text, b_func, b_args in buttons: i += 1 # Test for invisible buttons # r = s.fill((100, 0, 0), pygame.Rect(300, 110 + i*60, 400, 40)) # Centre the text font_obj = pygame.font.SysFont("Helvetica Bold", 24) left_margin = (600 - font_obj.size(b_text)[0])/2 button_pos = (200 + left_margin, 120 + i*60) controls.draw_text(s, b_text, button_pos, colour=(255,255,255), font_obj = font_obj) return s
def draw_for_node(self): if self.network.selected_node < 0: return controls.draw_text(self._image, "Job", (5, 5), self.text_colour, size=header_size, bold=True) controls.draw_text(self._image, "Owner", (60, 5), self.text_colour, size=header_size-1, bold=True) controls.draw_text(self._image, "App", (130, 5), self.text_colour, size=header_size, bold=True) controls.draw_text(self._image, "%", (245, 5), self.text_colour, size=header_size, bold=True) key_list = list(self.network.nodes[self.network.selected_node].jobs) key_list.sort() i = 0 for job_id in key_list: the_job = self.network.jobs[job_id] i += 1 # Job ID controls.draw_text(self._image, str(job_id), (5, 5+i*row_height+2), self.text_colour, size=row_size-2) # Node ID controls.draw_text(self._image, str(the_job.owner), (60, 5+i*row_height), self.text_colour, size=row_size) # App name controls.draw_text(self._image, "%s%s" % (the_job.short_name, the_job.version), (130, 5+i*row_height), self.text_colour, size=row_size) # Progress progress = int(the_job.get_progress()) if progress == -1: progress_text = "" else: progress_text = "%s%%" % progress controls.draw_text(self._image, progress_text, (245, 5+i*row_height), self.text_colour, size=row_size)
def draw_for_owner(self): controls.draw_text(self._image, "Job", (5, 5), self.text_colour, size=header_size, bold=True) controls.draw_text(self._image, "Node", (70, 5), self.text_colour, size=header_size, bold=True) controls.draw_text(self._image, "App", (130, 5), self.text_colour, size=header_size, bold=True) controls.draw_text(self._image, "%", (245, 5), self.text_colour, size=header_size, bold=True) key_list = list(self.network.jobs.keys()) key_list.sort() i = 0 for job_id in key_list: the_job = self.network.jobs[job_id] if the_job.owner != self.screen.player: continue i += 1 # Job ID controls.draw_text(self._image, str(job_id), (5, 5+i*row_height+2), self.text_colour, size=row_size-2) # Node ID controls.draw_text(self._image, str(the_job.node), (70, 5+i*row_height), self.text_colour, size=row_size) # App name controls.draw_text(self._image, "%s%s" % (the_job.short_name, the_job.version), (130, 5+i*row_height), self.text_colour, size=row_size) # Progress progress = int(the_job.get_progress()) if progress == -1: progress_text = "" else: progress_text = "%s%%" % progress controls.draw_text(self._image, progress_text, (245, 5+i*row_height), self.text_colour, size=row_size)