def __init__(self, decorator, path): super(PDFViewerWindow, self).__init__(self.base_width + decorator.width(), self.base_height + decorator.height(), title=app_name, icon="pdfviewer", doublebuffer=True) self.move(100,100) self.x = 100 self.y = 100 self.decorator = decorator self.fitz_lib = ctypes.CDLL('libtoaru-fitz.so') self.fitz_lib.init_fitz.restype = ctypes.c_void_p self.fitz_lib.load_document.argtypes = [ctypes.c_void_p, ctypes.c_char_p] self.fitz_lib.load_document.restype = ctypes.c_void_p self.fitz_lib.set_fit.argtypes = [ctypes.c_int] self.fitz_lib.draw_page.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int, ctypes.c_void_p] self.fitz_lib.page_count.argtypes = [ctypes.c_void_p] self.fitz_lib.page_count.restype = ctypes.c_int def open_file(action): OpenFileDialog(self.decorator,"Open PDF...",glob="*.pdf",callback=self.load_file,window=self) def exit_app(action): menus = [x for x in self.menus.values()] for x in menus: x.definitely_close() self.close() sys.exit(0) def about_window(action): AboutAppletWindow(self.decorator,f"About {app_name}","/usr/share/icons/external/pdfviewer.png",_description,"pdfviewer") def help_browser(action): subprocess.Popen(["help-browser.py","downloaded/mupdf.trt"]) menus = [ ("File", [ MenuEntryAction("Open","open",open_file,None), MenuEntryDivider(), MenuEntryAction("Exit","exit",exit_app,None), ]), ("Help", [ MenuEntryAction("Contents","help",help_browser,None), MenuEntryDivider(), MenuEntryAction(f"About {app_name}","star",about_window,None), ]), ] self.menubar = MenuBarWidget(self,menus) self.hover_widget = None self.down_button = None self.menus = {} self.hovered_menu = None self.buf = None self.load_file(path) self.hilighted = None
def mouse_event(self, msg): # drag start if msg.command == yutani.MouseEvent.DOWN and msg.buttons & yutani.MouseButton.BUTTON_LEFT: self.drag_start() if msg.buttons & yutani.MouseButton.BUTTON_RIGHT: if not self.menus: def set_face(x): self.watchface = self.watchfaces[x] faces = [ MenuEntryAction(x, None, set_face, x) for x in self.watchfaces.keys() ] menu_entries = [ MenuEntrySubmenu("Watchface", faces, icon='clock'), MenuEntryAction(f"About {app_name}", "star", self.about, None), MenuEntryDivider(), MenuEntryAction("Exit", "exit", self.exit, None), ] menu = MenuWindow(menu_entries, (self.x + msg.new_x, self.y + msg.new_y), root=self)
def __init__(self, decorator): super(CalculatorWindow, self).__init__(self.base_width + decorator.width(), self.base_height + decorator.height(), title=app_name, icon="calculator", doublebuffer=True) self.move(100,100) self.decorator = decorator def add_string(button): self.add_string(button.text) def clear(button): self.clear_text() def calculate(button): self.calculate() self.buttons = [ [Button("C",clear), None, Button("(",add_string), Button(")",add_string)], [Button("7",add_string), Button("8",add_string), Button("9",add_string), Button("/",add_string)], [Button("4",add_string), Button("5",add_string), Button("6",add_string), Button("*",add_string)], [Button("1",add_string), Button("2",add_string), Button("3",add_string), Button("-",add_string)], [Button("0",add_string), Button(".",add_string), Button("=",calculate), Button("+",add_string)], ] def exit_app(action): menus = [x for x in self.menus.values()] for x in menus: x.definitely_close() self.close() sys.exit(0) def about_window(action): AboutAppletWindow(self.decorator,f"About {app_name}","/usr/share/icons/48/calculator.png",_description,"calculator") def help_browser(action): subprocess.Popen(["help-browser.py","calculator.trt"]) menus = [ ("File", [ MenuEntryAction("Exit","exit",exit_app,None), ]), ("Help", [ MenuEntryAction("Contents","help",help_browser,None), MenuEntryDivider(), MenuEntryAction(f"About {app_name}","star",about_window,None), ]), ] self.menubar = MenuBarWidget(self,menus) self.tr = text_region.TextRegion(self.decorator.left_width(self)+5,self.decorator.top_height(self)+self.menubar.height,self.base_width-10,40) self.tr.set_font(toaru_fonts.Font(toaru_fonts.FONT_MONOSPACE,18)) self.tr.set_text("") self.tr.set_alignment(1) self.tr.set_valignment(2) self.tr.set_one_line() self.tr.set_ellipsis() self.error = False self.hover_widget = None self.down_button = None self.menus = {} self.hovered_menu = None
def reinit_menus(self): accessories = [ MenuEntryAction("Calculator", "calculator", launch_app, "calculator.py"), MenuEntryAction("Clock Widget", "clock", launch_app, "clock.py"), MenuEntryAction("File Browser", "folder", launch_app, "file_browser.py"), MenuEntryAction("Terminal", "utilities-terminal", launch_app, "terminal"), ] accessories.extend(self.extra('accessories')) demos = [ MenuEntrySubmenu("Cairo", [ MenuEntryAction("Cairo Demo", "cairo-demo", launch_app, "cairo-demo"), MenuEntryAction("Cairo Snow", "snow", launch_app, "make-it-snow"), MenuEntryAction("Pixman Demo", "pixman-demo", launch_app, "pixman-demo"), ]), MenuEntrySubmenu("Mesa (swrast)", [ MenuEntryAction("Gears", "gears", launch_app, "gears"), MenuEntryAction("Teapot", "teapot", launch_app, "teapot"), ]), MenuEntryAction("Draw Lines", "drawlines", launch_app, "drawlines"), MenuEntryAction("Julia Fractals", "julia", launch_app, "julia"), MenuEntryAction("Plasma", "plasma", launch_app, "plasma"), ] demos.extend(self.extra('demos')) games = [ MenuEntryAction("Mines", "mines", launch_app, "mines.py"), ] games.extend(self.extra('games')) graphics = [ MenuEntryAction("ToaruPaint", "applications-painting", launch_app, "painting.py"), ] graphics.extend(self.extra('graphics')) settings = [ MenuEntryAction("Package Manager", "package", launch_app, "gsudo package_manager.py"), MenuEntryAction("Select Wallpaper", "select-wallpaper", launch_app, "select_wallpaper.py"), ] settings.extend(self.extra('settings')) self.menu_entries = [ MenuEntrySubmenu("Accessories", accessories), MenuEntrySubmenu("Demos", demos), MenuEntrySubmenu("Games", games), MenuEntrySubmenu("Graphics", graphics), MenuEntrySubmenu("Settings", settings), MenuEntryDivider(), MenuEntryAction("Help", "help", launch_app, "help-browser.py"), MenuEntryAction("About ToaruOS", "star", launch_app, "about-applet.py"), MenuEntryAction("Log Out", "exit", logout_callback, ""), ]
def __init__(self, decorator): super(PackageManagerWindow, self).__init__(self.base_width + decorator.width(), self.base_height + decorator.height(), title="Package Manager", icon="package", doublebuffer=True) self.move(100, 100) self.x = 100 self.y = 100 self.decorator = decorator def exit_app(action): menus = [x for x in self.menus.values()] for x in menus: x.definitely_close() self.close() sys.exit(0) def about_window(action): AboutAppletWindow(self.decorator, f"About Package Manager", "/usr/share/icons/48/package.png", _description, "package") def help_browser(action): subprocess.Popen(["help-browser.py", "packages.trt"]) menus = [ ("File", [ MenuEntryAction("Exit", "exit", exit_app, None), ]), ("Help", [ MenuEntryAction("Contents", "help", help_browser, None), MenuEntryDivider(), MenuEntryAction("About Package Manager", "star", about_window, None), ]), ] self.menubar = MenuBarWidget(self, menus) self.menus = {} self.hovered_menu = None self.scroll_y = 0 self.hilighted = None self.buf = None self.hilighted = None
def __init__(self, decorator, path): super(PaintingWindow, self).__init__(self.base_width + decorator.width(), self.base_height + decorator.height(), title=app_name, icon="applications-painting", doublebuffer=True) self.move(100, 100) self.x = 100 self.y = 100 self.decorator = decorator self.picker = None self.last_color = (0, 0, 0) self.modifiers = None self.checkpattern = self.checkerboard(24) def about_window(action): AboutAppletWindow(self.decorator, f"About {app_name}", "/usr/share/icons/48/applications-painting.png", _description, "applications-painting") def help_browser(action): subprocess.Popen(["help-browser.py", "painting.trt"]) def close_picker(): self.last_color = self.picker.color self.picker = None def open_file(action): OpenFileDialog(self.decorator, "Open...", glob="*.png", callback=self.load_buffer, window=self) def new_surface(action): # TODO: prompt for size if self.buf: self.buf.destroy() self.new_buffer(*action) self.draw() def new_prompt(action): def input_callback(input_window): width = int(input_window.tr.text) input_window.close() def second_callback(input_window): height = int(input_window.tr.text) input_window.close() new_surface((width, height)) TextInputWindow(self.decorator, "Height?", "new", text="500", callback=second_callback, window=self) TextInputWindow(self.decorator, "Width?", "new", text="500", callback=input_callback, window=self) def save_file(action): self.modified = False path = '/tmp/painting.png' self.set_title(f'{os.path.basename(path)} - {app_name}', self.icon) self.surface.write_to_png(path) def select_color(action): if self.picker: return else: self.picker = ColorPickerWindow(self.decorator, close_picker) self.picker.draw() def clear_everything(action): self.draw_ctx.save() self.draw_ctx.set_operator(cairo.OPERATOR_SOURCE) self.draw_ctx.rectangle(0, 0, self.surface.get_width(), self.surface.get_height()) self.draw_ctx.set_source_rgba(0, 0, 0, 0) self.draw_ctx.fill() self.draw_ctx.restore() menus = [ ("File", [ MenuEntrySubmenu("New...", [ MenuEntryAction("500×500", "new", new_surface, (500, 500)), MenuEntryAction("800×600", "new", new_surface, (800, 600)), MenuEntryAction("Custom...", "new", new_prompt, None), ], icon="new"), MenuEntryAction("Open", "open", open_file, None), MenuEntryAction("Save", "save", save_file, None), MenuEntryDivider(), MenuEntryAction("Exit", "exit", self.exit_app, None), ]), ("Tools", [ MenuEntryAction("Color", None, select_color, None), MenuEntryAction("Clear Everything", None, clear_everything, None), ]), ("Help", [ MenuEntryAction("Contents", "help", help_browser, None), MenuEntryDivider(), MenuEntryAction(f"About {app_name}", "star", about_window, None), ]), ] self.menubar = MenuBarWidget(self, menus) self.menus = {} self.hovered_menu = None if not path: self.new_buffer(500, 500) else: self.load_buffer(path) self.hilighted = None self.was_drawing = False self.line_width = 2.0 self.curs_x = None self.curs_y = None self.moving = False self.scale = 1.0 self.modified = False
def __init__(self, decorator): super(HelpBrowserWindow, self).__init__(self.base_width + decorator.width(), self.base_height + decorator.height(), title=app_name, icon="help", doublebuffer=True) self.move(100, 100) self.decorator = decorator self.current_topic = "0_index.trt" self.text_buffer = None self.text_offset = 0 self.scroll_offset = 0 self.tr = None self.size_changed = False self.special = {} self.special['contents'] = self.special_contents self.special['demo'] = self.special_demo self.down_text = None self.cache = {} self.history = [] self.history_index = 0 def herp(action): print(action) self.history_menu = MenuEntrySubmenu('History...', [MenuEntryDivider()]) def exit_app(action): menus = [x for x in self.menus.values()] for x in menus: x.definitely_close() self.close() sys.exit(0) def about_window(action): AboutAppletWindow(self.decorator, f"About {app_name}", "/usr/share/icons/48/help.png", _description, "help") menus = [ ( "File", [ #MenuEntryAction("Open...",None,print_derp,None), #MenuEntryDivider(), MenuEntryAction("Exit", "exit", exit_app, None), ]), ("Go", [ MenuEntryAction("Home", "home", self.go_page, "0_index.trt"), MenuEntryAction("Topics", "bookmark", self.go_page, "special:contents"), MenuEntryDivider(), self.history_menu, MenuEntryAction("Back", "back", self.go_back, None), MenuEntryAction("Forward", "forward", self.go_forward, None), ]), ("Help", [ MenuEntryAction("Contents", "help", self.go_page, "help_browser.trt"), MenuEntryDivider(), MenuEntryAction(f"About {app_name}", "star", about_window, None), ]), ] self.menubar = MenuBarWidget(self, menus) self.menus = {} self.hovered_menu = None self.update_text_buffer() self.navigate("0_index.trt")
def __init__(self, decorator): super(MinesWindow, self).__init__(self.base_width + decorator.width(), self.base_height + decorator.height(), title=app_name, icon="mines", doublebuffer=True) self.move(100,100) self.decorator = decorator self.button_width = {} self.button_height = 0 def exit_app(action): menus = [x for x in self.menus.values()] for x in menus: x.definitely_close() self.close() sys.exit(0) def about_window(action): AboutAppletWindow(self.decorator,f"About {app_name}","/usr/share/icons/48/mines.png",_description,"mines") def help_browser(action): subprocess.Popen(["help-browser.py","mines.trt"]) def custom_game(action): def input_callback(input_window): size = int(input_window.tr.text) input_window.close() def second_callback(input_window): mines = int(input_window.tr.text) input_window.close() self.new_game((size,mines)) TextInputWindow(self.decorator,"How many mines?","mines",text="90",callback=second_callback,window=self) TextInputWindow(self.decorator,"How wide/tall?","mines",text="20",callback=input_callback,window=self) menus = [ ("File", [ MenuEntrySubmenu("New Game...",[ MenuEntryAction("9×9, 10 mines",None,self.new_game,(9,10)), MenuEntryAction("16×16, 40 mines",None,self.new_game,(16,40)), MenuEntryAction("20×20, 90 mines",None,self.new_game,(20,90)), MenuEntryAction("Custom...",None,custom_game,None), ],icon="new"), MenuEntryDivider(), MenuEntryAction("Exit","exit",exit_app,None), ]), ("Help", [ MenuEntryAction("Contents","help",help_browser,None), MenuEntryDivider(), MenuEntryAction(f"About {app_name}","star",about_window,None), ]), ] self.menubar = MenuBarWidget(self,menus) self.tr = text_region.TextRegion(self.decorator.left_width()+5,self.decorator.top_height()+self.menubar.height,self.base_width-10,40) self.tr.set_font(toaru_fonts.Font(toaru_fonts.FONT_SANS_SERIF,18)) self.tr.set_alignment(2) self.tr.set_valignment(2) self.tr.set_one_line() self.tr.set_ellipsis() self.error = False self.hover_widget = None self.down_button = None self.menus = {} self.hovered_menu = None self.modifiers = 0 self.new_game((9,10))
def __init__(self, decorator, path): super(FileBrowserWindow, self).__init__(self.base_width + decorator.width(), self.base_height + decorator.height(), title=app_name, icon="folder", doublebuffer=True) self.move(100, 100) self.x = 100 self.y = 100 self.decorator = decorator def exit_app(action): menus = [x for x in self.menus.values()] for x in menus: x.definitely_close() self.close() sys.exit(0) def about_window(action): AboutAppletWindow(self.decorator, f"About {app_name}", "/usr/share/icons/48/folder.png", _description, "folder") def help_browser(action): subprocess.Popen(["help-browser.py", "file_browser.trt"]) def input_path(action): def input_callback(input_window): text = input_window.tr.text input_window.close() self.load_directory(text) TextInputWindow(self.decorator, "Open directory...", "open", text=self.path, callback=input_callback, window=self) menus = [ ("File", [ MenuEntryAction("Exit", "exit", exit_app, None), ]), ("Go", [ MenuEntryAction("Path...", "open", input_path, None), MenuEntryDivider(), MenuEntryAction("Home", "home", self.load_directory, os.environ.get("HOME")), MenuEntryAction("File System", None, self.load_directory, "/"), MenuEntryAction("Up", "up", self.go_up, None), ]), ("Help", [ MenuEntryAction("Contents", "help", help_browser, None), MenuEntryDivider(), MenuEntryAction(f"About {app_name}", "star", about_window, None), ]), ] self.menubar = MenuBarWidget(self, menus) self.hover_widget = None self.down_button = None self.menus = {} self.hovered_menu = None self.buf = None self.load_directory(path) self.hilighted = None