def do_load_dir(): "load the current directory" gl.SUBDIRS = 0 wait_cursor() file = adjust_files(0) gl.PLAY_LIST_NAME = " " return file
def command_vert(new_img, screen, file, rect): "flip vertically" wait_cursor() new_img = flip(new_img, 90, 90) my_update_screen(new_img, rect, file) normal_cursor() return (new_img, new_img, rect)
def show_slideshow_img(screen, new_img, file, num_imgs, speed): start = start_timer() wait_cursor() new_img = next_img(file, new_img, screen) rect = get_center(screen, new_img) ns = check_timer(start) my_update_screen(new_img, screen, rect, file, num_imgs, ns) normal_cursor() if speed > 0: for i in range(speed): # trick delay into letting you escape anytime event = pygame.event.poll() pygame.time.wait(1) if event.type == KEYDOWN and event.key not in (K_LALT, K_RALT, K_LCTRL, K_RCTRL,\ K_p, K_PAUSE, K_TAB, K_SPACE, K_BACKSPACE): stopped_msg(screen) my_update_screen(new_img, screen, rect, file, len(gl.files)) return (new_img, file, rect, 1) if hit_key(event, K_p) or hit_key(event, K_PAUSE): pause(screen) my_update_screen(new_img, screen, rect, file, len(gl.files)) if hit_key(event, K_SPACE): # skip forward an image immediately file = file + 1 return (new_img, file, rect, 0) if hit_key(event, K_BACKSPACE): # skip backward an image immediately file = file - 1 return (new_img, file, rect, 0) pygame.time.delay(1000) # check every second file = file + 1 return (new_img, file, rect, 0)
def open_url(screen, img): gl.ISURL = 1 num_imgs = len(gl.files) paint_screen(screen, gl.BLACK) set_caption("Extract from Web - imgv") normal_cursor() show_message(screen, "Enter a Web URL to extract images from", 20, 15, ("transparent")) gl.URL = ask(screen, "http://") if gl.URL != None: gl.files = [] wait_cursor() show_message(screen, "Loading. Please wait..", 39, 42, ("transparent")) for ext in gl.IMG_TYPES: if gl.URL.endswith(ext): gl.files.append(str("".join(gl.URL))) return (load_img(gl.files[0], screen), 1) else: return (img, num_imgs) gl.files = [] check_indexhtml() if gl.URL_ERROR: gl.files.append(gl.ERROR_IMG) return (load_img(gl.ERROR_IMG, screen), len(gl.files)) if len(gl.files) < 1: gl.files.append(gl.ERROR_IMG) gl.files = [x.replace(" ", "%20") for x in gl.files] # urls need %20 for spaces return (load_img(gl.files[0], screen), len(gl.files))
def square_four(screen, file): wait_cursor() draw_lines(screen) num_imgs = len(gl.files) if file >= num_imgs or file <= 0: file = 0 img_four_name = gl.files[file] img_four_file = file img_four = load_img(img_four_name, screen, 0) file = file + 1 img_four = adjust_img_size(img_four, screen.get_width(), screen.get_height()) img_four_rect = img_four.get_rect() img_four_rect[0] = (screen.get_width() / 2) img_four_rect[1] = (screen.get_height() / 2) screen.blit(img_four, img_four_rect) update(img_four_rect) draw_lines(screen) if gl.FOUR_STATUS_BARS: font_size = 9 font = pygame.font.Font(gl.FONT_NAME, font_size) name = os.path.basename(img_four_name) name = check_truncate(screen.get_width(), name) img_status = "%s [%d/%d]" % (name, img_four_file + 1, num_imgs) raise_up = 12 show_message(screen, img_status, ((screen.get_width() / 2) + (screen.get_width() / 4 - font.size(img_status)[0]/2), screen.get_height() - raise_up), font_size, ("bold")) normal_cursor() return (file, img_four_rect, img_four_name, img_four_file)
def command_fullscreen(): "Toggle between full screen and last screen resolution" screen = get_surface() wait_cursor() if not toggle_fullscreen(): try: if gl.FULLSCREEN_SPECIAL: screen_res = screen.get_size() else: screen_res = screen.get_size() gl.MAX_SCREEN_FILES = gl.MAX_SF["%sx%s" % ( screen_res[0], screen_res[1])] if not gl.TOGGLE_FULLSCREEN_SET: # go into fullscreen mode gl.BEFORE_WINSIZE = screen.get_size() screen = set_mode(screen_res, screen.get_flags( ) ^ FULLSCREEN, screen.get_bitsize()) else: # returning from fullscreen. Go back to last screen size: set_mode(gl.BEFORE_WINSIZE, screen.get_flags( ) ^ FULLSCREEN, screen.get_bitsize()) screen = set_mode( gl.BEFORE_WINSIZE, RESIZABLE) # make resizeable my_toggle_fullscreen() except: print "Couldn't toggle fullscreen. Resolution probably not supported by your video card." return screen
def command_refresh(refresh_img, screen, files, file): "reset image to its original state" wait_cursor() new_img = refresh_img rect = get_center(screen, new_img) cur_filename = "" if len(gl.files) > 1: cur_filename = gl.files[file] else: normal_cursor() return (new_img, new_img, get_center(screen, new_img), file) if gl.SHRUNK and len(gl.files) > 1: # reload shrunk images to their true size gl.SKIP_FIT = 1 refresh_img = load_img(gl.files[file]) rect = get_center(screen, refresh_img) adjust_files(gl.SUBDIRS) if cur_filename in gl.files: file = gl.files.index(cur_filename) # go back if new images were loaded my_update_screen(refresh_img, rect, file) normal_cursor() return (refresh_img, new_img, rect, file) adjust_files(gl.SUBDIRS) if cur_filename in gl.files and len(gl.files) > 1: file = gl.files.index(cur_filename) # go back if new images were loaded my_update_screen(refresh_img, rect, file) normal_cursor() return (new_img, new_img, get_center(screen, new_img), file)
def do_set_wallpaper(screen, file, new_img, rect): wait_cursor() if platform == 'win32': windows_wallpaper(file) else: unix_wallpaper(file) update_edit_screen(screen, file, new_img)
def do_subdirs_too(): gl.SUBDIRS = 1 wait_cursor() file = adjust_files(1) num_imgs = len(gl.files) gl.PLAY_LIST_NAME = " " return (num_imgs, file)
def command_horiz(new_img, screen, file, rect): "flip horizontally (mirror)" wait_cursor() new_img = flip(new_img, 90, 0) my_update_screen(new_img, rect, file) normal_cursor() return (new_img, new_img, rect)
def do_load_dir(): "load the current directory" gl.SUBDIRS = 0 wait_cursor() file = adjust_files(0) num_imgs = len(gl.files) gl.PLAY_LIST_NAME = " " return (num_imgs, file)
def command_horiz(new_img, screen, file, num_imgs, rect): "flip horizontally (mirror)" wait_cursor() start = start_timer() new_img = flip(new_img, 90, 0) my_update_screen(new_img, screen, rect, file, num_imgs, check_timer(start)) normal_cursor() return (new_img, new_img, rect)
def command_vert(new_img, screen, file, num_imgs, rect): "flip vertically" wait_cursor() start = start_timer() new_img = flip(new_img, 90, 90) my_update_screen(new_img, screen, rect, file, num_imgs, check_timer(start)) normal_cursor() return (new_img, new_img, rect)
def command_rotate_left(new_img, screen, file, rect): "rotate counter clockwise" wait_cursor() new_img = rotate(new_img, 90) rect = get_center(screen, new_img) my_update_screen(new_img, rect, file) normal_cursor() return (new_img, new_img, rect)
def do_external_viewer(screen, file, new_img): wait_cursor() iconify() # minimize imgv to avoid ugliness cmd = "%s %s" % (gl.EXTERNAL_EDITOR, gl.files[file]) try: os.system(cmd) except: pass update_edit_screen(screen, file, new_img)
def command_rotate_left(new_img, screen, file, num_imgs, rect): "rotate counter clockwise" wait_cursor() start = start_timer() new_img = rotate(new_img, 90) rect = get_center(screen, new_img) my_update_screen(new_img, screen, rect, file, num_imgs, check_timer(start)) normal_cursor() return (new_img, new_img, rect)
def command_custom_res(screen, new_img, file, num_imgs, rect, resolution): "switch to customxcustom" wait_cursor() screen = set_mode(resolution, RESIZABLE) rect = get_center(screen, new_img) my_update_screen(new_img, screen, rect, file, num_imgs) if gl.TOGGLE_FULLSCREEN_SET: my_toggle_fullscreen() return rect
def command_shuffle(new_img, img, screen, rect, file): "randomize the images" wait_cursor() shuffle(gl.files) new_img = load_img(gl.files[file]) rect = get_center(screen, new_img) my_update_screen(new_img, rect, file) normal_cursor() return (new_img, new_img, new_img, rect)
def play_list_options_msg(screen, msg): paint_screen(gl.BLACK) show_message(msg, 100, 10) normal_cursor() while 1: event = pygame.event.wait() check_quit(event) if event.type == KEYDOWN or event.type == MOUSEBUTTONDOWN: wait_cursor() break
def command_1280x1024(new_img, file, rect): "switch to 1280x1024" gl.MAX_SCREEN_FILES = gl.MAX_SF["1280x1024"] wait_cursor() resolution = 1280, 1024 screen = set_mode(resolution, RESIZABLE) rect = get_center(screen, new_img) my_update_screen(new_img, rect, file) if gl.TOGGLE_FULLSCREEN_SET: my_toggle_fullscreen() return rect
def command_1024x768(new_img, file, num_imgs, rect): "switch to 1024x768" gl.MAX_SCREEN_FILES = gl.MAX_SF["1024x768"] wait_cursor() resolution = 1024, 768 screen = set_mode(resolution, RESIZABLE) rect = get_center(screen, new_img) my_update_screen(new_img, screen, rect, file, num_imgs) if gl.TOGGLE_FULLSCREEN_SET: my_toggle_fullscreen() return rect
def command_800x600(new_img, file, rect): "switch to 800x600" gl.MAX_SCREEN_FILES = gl.MAX_SF["800x600"] wait_cursor() resolution = 800, 600 screen = set_mode(resolution, RESIZABLE) rect = get_center(screen, new_img) my_update_screen(new_img, rect, file) if gl.TOGGLE_FULLSCREEN_SET: my_toggle_fullscreen() return rect
def command_first_img(new_img, screen, file, num_imgs, rect): "jump to the first image" wait_cursor() start = start_timer() file = 0 new_img = load_img(gl.files[file], screen) rect = get_center(screen, new_img) ns = check_timer(start) my_update_screen(new_img, screen, rect, file, num_imgs, ns) normal_cursor() return (new_img, new_img, new_img, file, rect)
def command_unshuffle(new_img, img, screen, rect, file): "un-randomize the images" was_on = gl.files[file] wait_cursor() gl.files.sort(lambda x, y: cmp(x.lower(), y.lower())) file = gl.files.index(was_on) new_img = load_img(gl.files[file]) rect = get_center(screen, new_img) my_update_screen(new_img, rect, file) normal_cursor() return (new_img, new_img, new_img, rect, file)
def command_shuffle(new_img, img, screen, rect, file, num_imgs): "randomize the images" wait_cursor() start = start_timer() shuffle(gl.files) new_img = load_img(gl.files[file], screen) rect = get_center(screen, new_img) ns = check_timer(start) my_update_screen(new_img, screen, rect, file, num_imgs, ns) normal_cursor() return (new_img, new_img, new_img, rect)
def command_prev_img(new_img, screen, file, num_imgs, rect): "jump to previous image" wait_cursor() start = start_timer() if file > 0: file = file - 1 new_img = previous_img(file, new_img, screen) rect = get_center(screen, new_img) ns = check_timer(start) my_update_screen(new_img, screen, rect, file, num_imgs, ns) normal_cursor() return (new_img, new_img, new_img, file, rect)
def command_zoom_out(new_img, new_img_width, new_img_height, img, screen, file, num_imgs, rect, zoom_type): wait_cursor() start = start_timer() if new_img.get_width() >= gl.MIN_WIDTH and new_img.get_height() >= gl.MIN_HEIGHT: gl.ZOOM_EXP -= 1 if zoom_type == "normal": gl.ZOOM_DOUBLE = 0 new_img = scale(img, (new_img.get_width() / 1.1, new_img.get_height() / 1.1)) else: gl.ZOOM_DOUBLE = 1 new_img = scale(img, (new_img.get_width() / 2, new_img.get_height() / 2)) rect = get_center(screen, new_img) my_update_screen(new_img, screen, rect, file, num_imgs, check_timer(start)) normal_cursor() return (new_img, img, rect)
def command_zoom_in(new_img, new_img_width, new_img_height, img, screen, files, file, num_imgs, rect, zoom_type): wait_cursor() start = start_timer() gl.ZOOM_EXP += 1 if zoom_type == "normal": gl.ZOOM_DOULBE = 0 new_img = scale(img, (new_img.get_width() * 1.1, new_img.get_height() * 1.1)) if zoom_type == "double": gl.ZOOM_DOUBLE = 1 new_img = scale(img, (new_img.get_width() * 2, new_img.get_height() * 2)) if zoom_type == "scale2x": gl.ZOOM_DOUBLE = 1 new_img = scale2x(img) # don't alias simple solid color images (ie., black & white GIFs) rect = get_center(screen, new_img) my_update_screen(new_img, screen, rect, file, num_imgs, check_timer(start)) normal_cursor() return (new_img, img, rect)
def command_zoom_out(new_img, img, file, rect, zoom_type): wait_cursor() screen = get_surface() new_img_width = new_img.get_width() new_img_height = new_img.get_height() if new_img_width >= gl.MIN_WIDTH and new_img_height >= gl.MIN_HEIGHT: gl.ZOOM_EXP -= 1 if zoom_type == "normal": gl.ZOOM_DOUBLE = 0 new_img = scale(img, (int(new_img_width / 1.1), int(new_img_height / 1.1))) else: gl.ZOOM_DOUBLE = 1 new_img = scale(img, (new_img_width / 2, new_img_height / 2)) rect = get_center(screen, new_img) my_update_screen(new_img, rect, file) normal_cursor() return (new_img, img, rect)
def command_remove_img(new_img, screen, file, rect): "Don't display the image anymore during the session" wait_cursor() num_imgs = len(gl.files) # only remove file if its not the only one: if not num_imgs < 2: gl.files.remove(gl.files[file]) # go to the next image if there is one if file < (num_imgs - 1): new_img = next_img(file, new_img, screen) # if not go to the previous image else: if file > 0: file = file - 1 new_img = previous_img(file, new_img, screen) rect = get_center(screen, new_img) my_update_screen(new_img, rect, file) normal_cursor() return (new_img, new_img, new_img, file, rect)