All pastes #74117 Raw Edit

Miscellany

public text v1 · immutable
#74117 ·published 2006-06-28 18:02 UTC
rendered paste body
#!/usr/bin/env python
import curses, commands
from time import sleep
from sys import exit

stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
curses.curs_set(0)


def ak_basic(doit, return_status=0):
        dcop = 'dcop --user synan amarok player ' + doit
        ret_val = commands.getoutput(dcop).split(' ')
        if ret_val[0] in ('ERROR:','call','object'):
                return 0
        elif return_status == 1:
                return ret_val
        else:
                return 1


def statuswin(message):
        global y, x
        win = curses.newwin(3, len(message)+4, y/2, x/2-len(message)+4/2)
        win.clear()
        win.border()
        win.addstr(1, 2, message)
        win.refresh()
        sleep(1)
        win.erase()


y, x = stdscr.getmaxyx()
ver = ak_basic('version', 1)
if ver == 0:
        err = 1
        statuswin('Amarok not running?')
        curses.curs_set(1); curses.nocbreak(); stdscr.keypad(0); curses.echo()
        curses.endwin()
        exit()
else:
        version = 'Amarok ' + ver[0]
        statuswin(version)


while(1):
        y, x = stdscr.getmaxyx()
        stdscr.clear()
        stdscr.border()
        stdscr.addstr(0, x/2-3, "amaroNC",curses.A_BOLD);
        stdscr.refresh()

        c = stdscr.getch()
        if c == ord('q'): err=0; break
        elif c == ord('n'):
                ret = ak_basic('next')
                if ret == 0:
                        err = 1
                        break
                statuswin('Next track')
        elif c == ord('p'):
                ret = ak_basic('prev')
                if ret == 0:
                        err = 1
                        break
                statuswin('Previous track')
        else: continue


curses.curs_set(1); curses.nocbreak(); stdscr.keypad(0); curses.echo()
curses.endwin()

if err == 1:
        print "Amarok not running"
else:
        print "Exiting.."