当前位置: 首页>>代码示例>>Python>>正文


Python Storage.load方法代码示例

本文整理汇总了Python中storage.Storage.load方法的典型用法代码示例。如果您正苦于以下问题:Python Storage.load方法的具体用法?Python Storage.load怎么用?Python Storage.load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在storage.Storage的用法示例。


在下文中一共展示了Storage.load方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
    def __init__(self):
        Singleton.__init__(self)

        loghandler.RootHandler(self)

        host, port = config.server
        self.conn = Connection(self, host, port, config.username)
        self.packhandler = self.conn.packhandler

        self.timers = TimerManager.get()
        self.storage = Storage.load()

        self.x = self.y = self.z = 0
        self.stance = 0
        self.yaw = 180
        self.pitch = 180
        self.grounded = 1

        self.health = 0

        self.players = {} # by eid

        self.path = None
开发者ID:dequis,项目名称:derpbot,代码行数:25,代码来源:derpbot.py

示例2: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding("UTF-8")
        self.datatype = "main"
        self.title = "网易云音乐"
        self.datalist = ["排行榜", "艺术家", "新碟上架", "精选歌单", "我的歌单", "DJ节目", "打碟", "收藏", "搜索", "帮助"]
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database["collections"][0]
        self.player = Player()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = None
        self.username = None
        self.resume_play = True
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def start(self):
        self.START = time.time() // 1
        self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
        self.ui.build_process_bar(
            self.player.process_location,
            self.player.process_length,
            self.player.playing_flag,
            self.player.pause_flag,
            self.storage.database["player_info"]["playing_mode"],
        )
        self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
        while True:
            datatype = self.datatype
            title = self.title
            datalist = self.datalist
            offset = self.offset
            idx = index = self.index
            step = self.step
            stack = self.stack
            djstack = self.djstack
            self.screen.timeout(500)
            key = self.screen.getch()
            self.ui.screen.refresh()

            # term resize
            if key == -1:
                self.ui.update_size()
                self.player.update_size()

            # 退出
            if key == ord("q"):
                break

            # 退出并清除用户信息
            if key == ord("w"):
                self.storage.database["user"] = {"username": "", "password": ""}
                break

            # 上移
            elif key == ord("k"):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx - 1)
                self.START = time.time()

            # 下移
            elif key == ord("j"):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx + 1)
                self.START = time.time()

            # 数字快捷键
            elif ord("0") <= key <= ord("9"):
                if self.datatype == "songs" or self.datatype == "djchannels" or self.datatype == "help":
                    continue
                idx = key - ord("0")
                self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, idx, self.step, self.START)
                self.ui.build_loading()
                self.dispatch_enter(idx)
                self.index = 0
                self.offset = 0

            # 向上翻页
            elif key == ord("u"):
                if offset == 0:
                    continue
#.........这里部分代码省略.........
开发者ID:garfieldjty,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例3: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        self.config = Config()
        self.datatype = 'main'
        self.title = '网易云音乐'
        self.datalist = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '每日推荐', '私人FM', '搜索', '帮助']
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database['collections'][0]
        self.player = Player()
        self.player.playing_song_changed_callback = self.song_changed_callback
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = self.storage.database["user"]["user_id"]
        self.username = self.storage.database["user"]["nickname"]
        self.resume_play = True
        self.at_playing_list = False
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def update_alert(self, version):
        latest = Menu().check_version()
        if latest != version and latest != 0:
            if platform.system() == 'Darwin':
                os.system('/usr/bin/osascript -e \'display notification "MusicBox Update is available"sound name "/System/Library/Sounds/Ping.aiff"\'')
                time.sleep(0.5)
                os.system('/usr/bin/osascript -e \'display notification "NetEase-MusicBox installed version:' + version + '\nNetEase-MusicBox latest version:' + latest + '"\'')
            else:
                os.system('/usr/bin/notify-send "MusicBox Update is available"')

    def signin_alert(self, type):
        if type == 0:
            if platform.system() == 'Darwin':
                os.system('/usr/bin/osascript -e \'display notification "Mobile signin success"sound name "/System/Library/Sounds/Ping.aiff"\'')
            else:
                os.system('/usr/bin/notify-send "Mobile signin success"')
        else:
            if platform.system() == 'Darwin':
                os.system('/usr/bin/osascript -e \'display notification "PC signin success"sound name "/System/Library/Sounds/Ping.aiff"\'')
            else:
                os.system('/usr/bin/notify-send "PC signin success"')

    def check_version(self):
        # 检查更新 && 签到
        try:
            mobilesignin = self.netease.daily_signin(0)
            if  mobilesignin != -1 and mobilesignin['code'] != -2:
                self.signin_alert(0)
            time.sleep(0.5)
            pcsignin = self.netease.daily_signin(1)
            if pcsignin != -1 and pcsignin['code'] != -2:
                self.signin_alert(1)
            tree = ET.ElementTree(ET.fromstring(str(self.netease.get_version())))
            root = tree.getroot()
            return root[0][4][0][0].text
        except:
            return 0

    def start_fork(self, version):
        pid = os.fork()
        if pid == 0:
            Menu().update_alert(version)
        else:
            Menu().start()

    def play_pause(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        if self.player.pause_flag:
            self.player.resume()
        else:
            self.player.pause()
        time.sleep(0.1)

    def next_song(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        self.player.next()
#.........这里部分代码省略.........
开发者ID:dssljt,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例4: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding("UTF-8")
        self.config = Config()
        self.datatype = "main"
        self.title = "网易云音乐"
        self.datalist = ["排行榜", "艺术家", "新碟上架", "精选歌单", "我的歌单", "DJ节目", "每日推荐", "私人FM", "搜索", "帮助"]
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database["collections"][0]
        self.player = Player()
        self.player.playing_song_changed_callback = self.song_changed_callback
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = self.storage.database["user"]["user_id"]
        self.username = self.storage.database["user"]["nickname"]
        self.resume_play = True
        self.at_playing_list = False
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def alert(self, version):
        latest = Menu().check_version()
        if latest != version:
            if platform.system() == "Darwin":
                os.system(
                    '/usr/bin/osascript -e \'display notification "MusicBox Update is available"sound name "/System/Library/Sounds/Ping.aiff"\''
                )
                time.sleep(0.5)
                os.system(
                    "/usr/bin/osascript -e 'display notification \"NetEase-MusicBox installed version:"
                    + version
                    + "\nNetEase-MusicBox latest version:"
                    + latest
                    + "\"'"
                )
            else:
                os.system('/usr/bin/notify-send "MusicBox Update is available"')

    def check_version(self):
        # 检查更新
        tree = ET.ElementTree(ET.fromstring(str(self.netease.get_version())))
        root = tree.getroot()
        return root[0][4][0][0].text

    def start_fork(self, version):
        # Hong, Fork a child process.
        # Return 0 in the child and the child’s process id in the parent.
        pid = os.fork()
        if pid == 0:
            Menu().alert(version)
        else:
            Menu().start()

    def play_pause(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        if self.player.pause_flag:
            self.player.resume()
        else:
            self.player.pause()
        time.sleep(0.1)

    def next_song(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        self.player.next()
        time.sleep(0.1)

    def previous_song(self):
        if len(self.storage.database["player_info"]["player_list"]) == 0:
            return
        self.player.prev()
        time.sleep(0.1)

    def start(self):
        # Hong, Return the time in seconds since the epoch as a floating point number.
        self.START = time.time() // 1
        self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
#.........这里部分代码省略.........
开发者ID:RockHong,项目名称:netease-music-cli-player,代码行数:103,代码来源:menu.py

示例5: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class Menu:
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        self.datatype = 'main'
        self.title = '网易云音乐'
        self.datalist = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '打碟', '收藏', '搜索', '帮助']
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database['collections'][0]
        self.player = Player()
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = None
        self.username = None
        self.resume_play = True
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def start(self):
        self.START = time.time() // 1
        self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
        self.ui.build_process_bar(self.player.process_location, self.player.process_length, self.player.playing_flag,
                                  self.player.pause_flag, self.storage.database['player_info']['playing_mode'])
        self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
        while True:
            datatype = self.datatype
            title = self.title
            datalist = self.datalist
            offset = self.offset
            idx = index = self.index
            step = self.step
            stack = self.stack
            djstack = self.djstack
            self.screen.timeout(500)
            key = self.screen.getch()
            self.ui.screen.refresh()

            # term resize
            if key == -1:
                self.ui.update_size()
                self.player.update_size()

            # 退出
            if key == ord('q'):
                break

            # 退出并清除用户信息
            if key == ord('w'):
                self.storage.database['user'] = {
                    "username": "",
                    "password": "",
                }
                break

            # 上移
            elif key == ord('k'):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx - 1)
                self.START = time.time()

            # 下移
            elif key == ord('j'):
                self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx + 1)
                self.START = time.time()

            # 数字快捷键
            elif ord('0') <= key <= ord('9'):
                if self.datatype == 'songs' or self.datatype == 'djchannels' or self.datatype == 'help':
                    continue
                idx = key - ord('0')
                self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, idx, self.step, self.START)
                self.ui.build_loading()
                self.dispatch_enter(idx)
                self.index = 0
                self.offset = 0

            # 向上翻页
            elif key == ord('u'):
                if offset == 0:
                    continue
#.........这里部分代码省略.........
开发者ID:pastorgod,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例6: Mainloop

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class Mainloop(threading.Thread):
    def __init__(self, parent):
        threading.Thread.__init__(self)
        self.parent = parent
        self.network = Network()
        self.storage = Storage()

        self.controlFrame = Frame(parent)
        self.controlFrame.grid(row=0, column=0, columnspan=99, padx=10, pady=10, sticky=NW)

        self.recordingName = Textbox(self.controlFrame, 'Name of recording: ')
        self.recordingName.grid(row=0, column=0, sticky=NW, padx=10)

        self.buttonsFrame = Frame(self.controlFrame)
        self.buttonsFrame.grid(row=1, column=0, sticky=NW, pady=10)

        self.recordButton = Toggle(self.buttonsFrame, 'Record', lambda: self.record('on'), lambda: self.record('off'))
        self.TCPOverride = Toggle(self.buttonsFrame, 'Enable TCP', lambda: self.tcp('on'), lambda: self.tcp('off'))
        self.recordButton.grid(row=0, column=0, sticky=NW, padx=10)
        self.TCPOverride.grid(row=0, column=1, sticky=NW, padx=10)

        self.camerasFrame = Frame(parent)
        self.camerasFrame.grid(row=1, column=0, padx=10, pady=10, sticky=NW)

        self.gpMaster = GoProMaster(self.camerasFrame, self.network)

        self.TCPServer = tcp.TCP()
        self.localUDP = udp.UDP()

        self.shouldExit = False

        self.load()
        
    def run(self):
        self.localUDP.open('127.0.0.1', 6000, 7000, timeout=0)
        timer = 0
        while not self.shouldExit:
            self.save()
            self.addMountedCameras()
            self.sendAliveMessage()
            if self.TCPServer.isActive():
                self.processMessage(self.TCPServer.get())

            if timer % 20 == 0:
                for ssid in self.network.getSSIDList():
                    if self.network.isGoPro(ssid):
                        self.addCamera(ssid)
            time.sleep(0.1)
            timer += 1

    def addCamera(self, ssid):
        if not self.gpMaster.exists(ssid):
            self.gpMaster.addSlave(ssid)

    def record(self, state):
        self.gpMaster.record(state, self.recordingName.getText())

    def tcp(self, state):
        if state == 'on':
            self.recordButton.disable()
            self.TCPServer = tcp.TCP()
            self.TCPServer.listen(config.getTCPInfo()[0], int(config.getTCPInfo()[1]), timeout=0.01)

        elif state == 'off':
            self.recordButton.enable()
            self.TCPServer.close()

    def processMessage(self, message):
        if not message:
            return

        message = message.lower()
        if message == 'record on':
            self.TCPServer.put('Starts recording')
            self.record('on')
            self.recordButton.setState(True)
        elif message == 'record off':
            self.TCPServer.put('Stops recording')
            self.record('off')
            self.recordButton.setState(False)
        elif message[0:7] == 'recname':
            self.TCPServer.put('Recording name set to: ' + message[8:])
            self.recordingName.setText(message[8:])

    def exit(self):
        self.shouldExit = True
        self.localUDP.close()
        self.TCPServer.close()
        self.gpMaster.exit()

    def save(self):
        toSave = self.recordingName.getText() + ',' + str(self.recordButton.getState())
        self.storage.save('main', toSave)

    def load(self):
        loaded = self.storage.load('main')
        if not loaded:
            return
        loaded = loaded.split(',')
        self.recordingName.setText(loaded[0])
#.........这里部分代码省略.........
开发者ID:martinjensen91,项目名称:GoProFilm,代码行数:103,代码来源:mainloop.py

示例7: Menu

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class Menu(object):
    def __init__(self):
        reload(sys)
        sys.setdefaultencoding('UTF-8')
        self.config = Config()
        self.datatype = 'main'
        self.title = 'NetEase Music'
        self.datalist = ['Charts', 'Artists', 'New Songs', 'Songs', 'My Songs', 'Radio Stations', 'Recommended',
                         'Personal Radio', 'Search', 'Help']
        self.offset = 0
        self.index = 0
        self.storage = Storage()
        self.storage.load()
        self.collection = self.storage.database['collections'][0]
        self.player = Player()
        self.player.playing_song_changed_callback = self.song_changed_callback
        self.cache = Cache()
        self.ui = Ui()
        self.netease = NetEase()
        self.screen = curses.initscr()
        self.screen.keypad(1)
        self.step = 10
        self.stack = []
        self.djstack = []
        self.userid = self.storage.database['user']['user_id']
        self.username = self.storage.database['user']['nickname']
        self.resume_play = True
        self.at_playing_list = False
        signal.signal(signal.SIGWINCH, self.change_term)
        signal.signal(signal.SIGINT, self.send_kill)
        self.START = time.time()

    def change_term(self, signum, frame):
        self.ui.screen.clear()
        self.ui.screen.refresh()

    def send_kill(self, signum, fram):
        self.player.stop()
        self.cache.quit()
        self.storage.save()
        curses.endwin()
        sys.exit()

    def update_alert(self, version):
        latest = Menu().check_version()
        if latest != version and latest != 0:
            notify('MusicBox Update is available', 1)
            time.sleep(0.5)
            notify('NetEase-MusicBox installed version:' + version +
                   '\nNetEase-MusicBox latest version:' + latest, 0)

    def check_version(self):
        # 检查更新 && 签到
        try:
            mobilesignin = self.netease.daily_signin(0)
            if mobilesignin != -1 and mobilesignin['code'] != -2:
                notify('Mobile signin success', 1)
            time.sleep(0.5)
            pcsignin = self.netease.daily_signin(1)
            if pcsignin != -1 and pcsignin['code'] != -2:
                notify('PC signin success', 1)
            tree = ET.ElementTree(ET.fromstring(str(self.netease.get_version(
            ))))
            root = tree.getroot()
            return root[0][4][0][0].text
        except TypeError as e:
            log.error(e)
            return 0

    def start_fork(self, version):
        pid = os.fork()
        if pid == 0:
            Menu().update_alert(version)
        else:
            Menu().start()

    def _is_playlist_empty(self):
        return len(self.storage.database['player_info']['player_list']) == 0

    def play_pause(self):
        if self._is_playlist_empty():
            return
        if self.player.pause_flag:
            self.player.resume()
        else:
            self.player.pause()
        time.sleep(0.1)

    def next_song(self):
        if self._is_playlist_empty():
            return
        self.player.next()
        time.sleep(0.5)

    def previous_song(self):
        if self._is_playlist_empty():
            return
        self.player.prev()
        time.sleep(0.5)

#.........这里部分代码省略.........
开发者ID:Zorgodon,项目名称:musicbox,代码行数:103,代码来源:menu.py

示例8: __init__

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class KeePassHttpServer:
    def __init__(self, db_path, password):
        self.id = 'KeePassHttpX'
        self.host = 'localhost'
        self.port = 19455
        self.db_path = db_path
        self.password = password
        self.storage = Storage()

    def activate(self):
        server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        server_sock.bind((self.host, self.port))

        while True:
            #print '-- begin while ------'
            server_sock.listen(3)

            #print 'Waiting for connections...'
            client_sock, client_address = server_sock.accept()
            receive_message = client_sock.recv(4096)

            if receive_message.rstrip() == "":
                sys.exit()

            response = self.handle_request(receive_message)

            client_sock.sendall(response)
            client_sock.close()

        server_sock.close()

    def create_response(self, body):
        data = []
        data.append('HTTP/1.1 200 OK')
        data.append('Date: ' + time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()))
        data.append('Server: python-keypass-http')
        data.append('Connection: close')
        data.append('Content-Type: application/json; charset=utf-8')
        data.append('')
        data.append(body)
        data.append('')

        response = "\n".join(data)

        return response

    def handle_request(self, request):

        #print '-- start handle_request ------'
        #print request
        #print '-- close handle_request ------'

        header, body = request.split('\r\n\r\n')
        response = json.loads(body)

        if response['RequestType'] == 'associate':
            response['Id'] = 'KeePassHttpX'
            response['Success'] = False

            key = base64.b64decode(response['Key'])
            iv  = base64.b64decode(response['Nonce'])
            verifier = base64.b64decode(response['Verifier'])

            kpc = keepass_crypt.KeePassCrypt(key, iv)

            if base64.b64encode(iv) == kpc.decrypt(verifier):
                response['Success'] = True

                self.storage.save('body', body);

        elif response['RequestType'] == 'test-associate':
            response = self.test_associate(response)

        elif response['RequestType'] == 'get-logins':
            response = self.get_logins(response)

        else:
            print '-- start unknown request type response ------'
            print response

        http_response = self.create_response(json.dumps(response))
        return http_response

    def test_associate(self, response):
        response['Id'] = self.id
        response['Success'] = False

        storage_data = self.storage.load('body')
        if storage_data is None:
            return response

        keyfile = json.loads(storage_data)

        key = base64.b64decode(keyfile['Key']);
        iv  = base64.b64decode(keyfile['Nonce'])
        verifier = base64.b64decode(keyfile['Verifier'])

        kpc = keepass_crypt.KeePassCrypt(key, iv)

#.........这里部分代码省略.........
开发者ID:ha1t,项目名称:KeePassHttpX,代码行数:103,代码来源:keepass_http.py

示例9: Main

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class Main(Frame):
    """
    Main class of the system.
    """

    def __init__(self, master=None):
        """
        Main contstructor. Creates an instance of :class:`Storage<storage.Storage>` and starts the graphics-window.
        """
        args = {
            "fields": ["name", "date", "lifetime"],
            "ident": "name",
            "uniqueident": True,
            "objectname": "person",
            "gui": self,
        }
        self.storage = Storage(**args)
        self.is_clicked = False
        self.clicked_id = -1
        Frame.__init__(self, master)
        self.master.title("Medlemsregister Cybernetisk Selskab")
        self.grid(padx=15, pady=15)

        if not self.storage._testfile():
            path = os.path.abspath(__file__).rsplit("/", 1)[0]
            self._popup(
                "ERROR!",
                'Cannot write to file! make sure folder "{}/medlemslister" exists, then restart..'.format(path),
                "error",
            )
            self.destroy()
            self.master.destroy()
            return

        self.create_elements()

        loadmsg = self.storage.load()
        if "error" in loadmsg:
            self.infotext.set("ERROR! {}".format(loadmsg["error"]))
        elif "success" in loadmsg:
            self.infotext.set("Success! {}".format(loadmsg["success"]))

        self._populate_list()

    def create_elements(self):
        """
        creates all graphics elements and places them in the graphics grid.
        """

        # global shortcuts
        self.master.bind("<F1>", self.display_help)
        self.master.bind("<Control-f>", self.search)
        self.master.bind("<Control-d>", self.delete)
        self.master.bind("<Control-r>", self._populate_list)
        self.master.bind("<Control-s>", self.save_to_file)

        monospace = tkFont.Font(family="Courier", size=10, weight="normal")

        # menubar:
        menubar = Menu(self.master)

        backupmenu = Menu(menubar, tearoff=0)
        backupmenu.add_command(label="Backup to Google (Note: Slow!)", command=self.google_write)
        backupmenu.add_command(label="Read backup from Google", command=self.google_read)
        backupmenu.add_separator()
        backupmenu.add_command(label="Merge with Wiki", command=self.wiki_merge)
        backupmenu.add_command(label="Overwrite Wiki with local storage", command=self.wiki_overwrite)

        specialmenu = Menu(menubar, tearoff=0)
        specialmenu.add_command(label="Set as lifetime member", command=self.set_lifetime)
        specialmenu.add_command(label="Remove lifetime membership", command=self.unset_lifetime)
        specialmenu.add_command(label="Change a users id", command=self.update_id)

        menubar.add_cascade(label="Backup", menu=backupmenu)
        menubar.add_cascade(label="Special Actions", menu=specialmenu)
        menubar.add_command(label="Help (F1)", command=self.display_help)

        self.master.config(menu=menubar)

        # Info-label
        self.infotext = StringVar()
        self.info = Label(self, textvariable=self.infotext)
        self.info.pack()
        self.info.grid(row=0, column=0, columnspan=10)
        self.infotext.set("Welcome")

        # Save-button
        self.savebtn = Button(self, text="Save (enter)", command=self.create, width=11)
        self.savebtn.grid(row=3, column=7)

        # Omnibar (entry-field for add/search/delete)
        self.omnibar = Entry(self, width=28)
        self.omnibar.grid(row=3, column=0, columnspan=1)
        self.omnibar.bind("<Return>", self.create)
        self.omnibar.configure(font=monospace)

        # List of members
        self.memlist = SL(self, height=25, width=71, callback=self._click_list)
        self.memlist.grid(row=7, column=0, columnspan=10)
        self.memlist.listbox.configure(font=monospace)
#.........这里部分代码省略.........
开发者ID:vegarang,项目名称:cybmedlem,代码行数:103,代码来源:cyb_medlem2.py

示例10: GoPro

# 需要导入模块: from storage import Storage [as 别名]
# 或者: from storage.Storage import load [as 别名]
class GoPro(threading.Thread):
    def __init__(self, parent, goproinfo, network):
        threading.Thread.__init__(self)
        self.info = goproinfo
        self.camera = GoProHero(password=self.info.getPassword(), log_level=logging.CRITICAL)
        self.storage = Storage()
        self.status = goprostatus.GoProStatus()
        self.files = goprofiles.GoProFiles()
        self.recordings = goprorecordings.GoProRecordings()
        self.gui = GoProGUI(parent, self.info.getSSID(), lambda: self.addObjective('snap'), lambda: self.addObjective('transfer'), self.status.clearObjectives)
        self.network = network
        self.exitVar = False

        self.load()
        self.files.unmount(self.info.getUSBid(), self.info.getUSBserial(), self.info.getModel())
        print self.info.getSSID() + ': Initialized'

    def addObjective(self, objective):
        self.status.addObjective(objective)

    def run(self):
        actions = {
                'record': self.record,
                'snap': self.snap,
                'transfer': self.transfer
                }
        actionThread = threading.Thread()

        while not self.exitVar:
            self.save()
            self.files.mount(self.info.getUSBid(), self.info.getUSBserial(), self.info.getModel())
            self.status.setName(self.gui.getName())
            self.gui.setUnsaved(self.recordings.isEmpty())
            self.gui.setMounted(self.files.isMounted())
            self.gui.setRecording(self.status.isRecording())
            self.gui.displayObjectives(self.status.getObjectives())

            action, args = self.status.decodeObjective()
            if action in actions and not actionThread.isAlive():
                actionThread = threading.Thread(target=actions[action], args=(args,))
                actionThread.start()

            time.sleep(0.1)

    def record(self, args):
        if args[0] == 'on' and self.status.isRecording() == False and self.gui.shouldRecord():
            if not self.command(['mode video', 'record on']):
                self.status.completeObjective()
                return
            self.status.isRecording(True)
            self.recordings.stage(' '.join(args[1:]), self.status.getName())

        elif args[0] == 'off' and self.status.isRecording() == True:
            time.sleep(1)
            if not self.command(['record off']):
                self.status.completeObjective()
                return
            self.status.isRecording(False)
            self.recordings.commit()
        self.status.completeObjective()

    def transfer(self, args):
        if self.files.isMounted() and not self.recordings.isEmpty():
            patterns = self.files.findMatchingFiles(self.recordings.getRecordings())
            correctPattern = self.gui.confirmPattern(self.recordings.getRecordings(), patterns)
            self.files.trackAllExcept(correctPattern)
            self.save()
            successfulIndices = self.files.copy(self.recordings.getRecordings(), correctPattern)
            self.files.trackAll()
            self.save()

            for i in reversed(successfulIndices):
                self.recordings.delete(i)
        self.status.completeObjective()

    def snap(self, args):
        try:
            self.connect()
            _, image = self.camera.image().split(',')
            if not os.path.isdir('tmp'):
                os.mkdir('tmp')
            file = open('tmp/image.png', 'wb')
            file.write(image.decode('base64'))
            file.close()
            os.system('eog tmp/image.png &')
        except:
            pass
        finally:
            self.disconnect()
            self.status.completeObjective()

    def connect(self):
        self.network.connect(self.info.getSSID(), self.info.getPassword())

    def disconnect(self):
        self.network.disconnect()

    def testConnection(self):
        self.connect()
        self.disconnect()
#.........这里部分代码省略.........
开发者ID:martinjensen91,项目名称:GoProFilm,代码行数:103,代码来源:gopro.py


注:本文中的storage.Storage.load方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。