from ToolWindow import ToolWindow from MainWindow import MainWindow # END IMPORTS screen = pygame.display.set_mode((1280,720)) mainWindow = MainWindow(0,0,screen.get_width(),screen.get_height(), screen) mainWindow.surface.fill((200,200,200)) windows = [] windows.append(Window(10, 10, 250, 100, screen)) windows.append(ToolWindow(100, 100, 400, 400, screen)) toolbar = Toolbar(screen) toolbar.items.append(ToolbarButton(0,0,'View', screen, ['Tools'])) toolbar.render() while True: scrolldown = False scrollup = False screen.fill((200,200,200)) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 5: scrolldown = True else: scrolldown = False if event.button==4:
class MainWindow(Window): def __init__(self,x,y,w,h,p): Window.__init__(self,x,y,w,h,p) self.windows = [] self.windows.append(ColorWheelWindow(100,300,280,260,self.parent)) self.current_color = (255,100,0) # blank canvas window newdoc = pygame.Surface((640,480)) newdoc.fill((255,255,255)) self.windows.append(CanvasWindow(300,300,self.parent,newdoc)) # create toolbar self.toolbar = Toolbar(self.parent) self.toolbar.items.append(ToolbarButton(0,0,'File', self.parent, ['New', 'Open'])) self.toolbar.items.append(ToolbarButton(0,0,'View', self.parent, ['Tools', 'Colours', 'Answer this'])) self.toolbar.render() # item appended, needs to be re-rendered self.draw() def draw(self): self.bar.draw() Window.draw(self) def update(self, mb_up, scrolldown, scrollup, keypressed): self.surface.fill((200,200,200)) # handle toolbar events self.toolbar_events(mb_up) # toolbar rendering/drawing # Dealing with a list, so it's surrounded by try/except (in the event that no windows are on the screen) check_toolbar = False try: if not self.windows[len(self.windows)-1].isClicked(): check_toolbar = True except: check_toolbar = True if check_toolbar: for item in self.toolbar.items: mx, my = pygame.mouse.get_pos() if item.is_clicked(item.x, item.y, pygame.mouse.get_pressed()[0]): item.show_menu = True item.render() item.menu.render() elif item.show_menu: if mx > item.menu.x and mx<item.menu.x+item.menu.surface.get_width() and my > 0 and my < item.menu.y+item.menu.surface.get_height(): item.show_menu = True else: item.show_menu = False elif pygame.mouse.get_pressed()[0]: item.show_menu = False item.render() try: # Update the last most element in the windows list, which is the one # currently in focus. self.windows[-1].update(mb_up, scrolldown, scrollup, keypressed) for w in xrange(len(self.windows)): if self.windows[w].title == 'File Browser': if self.windows[w].complete: image_file = pygame.image.load(self.windows[w].file_system.getsyspath('/')+'/'+self.windows[w].selected) self.windows.append(CanvasWindow(300,300,self.parent,image_file, self.windows[w].selected)) # testing window appended self.windows.remove(self.windows[w]) elif self.windows[w].title[:6] == 'Canvas': self.windows[w].draw_color = self.current_color elif self.windows[w].title == 'Color Picker': self.current_color = self.windows[w].get_color() self.windows[w].draw() if self.windows[w].exit_btn.is_clicked(self.windows[w].x+self.windows[w].exit_btn.x, self.windows[w].y+self.windows[w].exit_btn.y, mb_up): self.windows.remove(self.windows[w]) break if self.windows[w].is_clicked() and w != len(self.windows)-1: change = True for window in range(len(self.windows)-1,0,-1): if self.windows[window].clicked: change = False if window > w and self.windows[window].is_clicked(): change=False if change: store = self.windows[w] self.windows.remove(self.windows[w]) self.windows.append(store) except IndexError: pass # It's cool, there are just no windows on the screen. self.toolbar.draw() def toolbar_events(self, mouseclick): toolbar_clicked = self.toolbar.get_clicked(mouseclick) # returns a list of all clicked elements for clicked in toolbar_clicked: if clicked.text == 'Exit': # identification done using text, seems effiecient enough pygame.quit() elif clicked.text == 'Tools': self.windows.append(ToolWindow(100, 100, 400, 400, self.parent)) mouseclick = False elif clicked.text == 'Colours': self.windows.append(ColorWheelWindow(100,300,280,260,self.parent)) elif clicked.text == 'New': newdoc =pygame.Surface((640,480)) newdoc.fill((255,255,255)) self.windows.append(CanvasWindow(300,300,self.parent,newdoc)) elif clicked.text == 'Open': self.windows.append(FileBrowser(0,0,600,400,self.parent)) elif clicked.text == 'Answer this': self.windows.append(Ask("Favourite Color?", self.parent, self.answergoeshere))