예제 #1
0
파일: main.py 프로젝트: yncat/falcon
    def OnMenuOpen(self, event):
        # メニューの有効・無効を切り替える
        disableMenuIdSet = views.menuBlocker.testMenu(self.parent.activeTab)
        obj = event.GetEventObject()
        if obj is None:
            # システムメニューを開いた
            return
        for i in obj.GetMenuItems():
            i.Enable(not i.GetId() in disableMenuIdSet)

        # カラムソートメニューの場合、中身の描画をする
        if event.GetMenu() == self.parent.menu.hMenuBar.FindItemById(menuItemsStore.getRef("VIEW_SORT_COLUMN")).GetSubMenu():
            menu = self.parent.menu.hMenuBar.FindItemById(menuItemsStore.getRef("VIEW_SORT_COLUMN")).GetSubMenu()
            # 一旦全て削除
            for i in range(menu.GetMenuItemCount()):
                menu.DestroyItem(menu.FindItemByPosition(0))

            # カラム数分登録
            i = 0
            for title in self.parent.activeTab.GetListColumns():
                subMenu = wx.Menu()
                subMenu.Append(constants.MENU_ID_SORT_COLUMN + 2 * i, "前へ")
                subMenu.Append(constants.MENU_ID_SORT_COLUMN + 2 * i + 1, "後ろへ")
                menu.AppendSubMenu(subMenu, title)
                i += 1
            menu.Enable(constants.MENU_ID_SORT_COLUMN, False)
            menu.Enable(constants.MENU_ID_SORT_COLUMN + 2 * (i - 1) + 1, False)
        event.Skip()
예제 #2
0
파일: main.py 프로젝트: yncat/falcon
 def UpdateMenuState(self, old, new):
     # メニューのブロック状態を変更
     self.menu.Enable(menuItemsStore.getRef("MOVE_MARK"), new.IsMarked())
     self.menu.Enable(menuItemsStore.getRef("EDIT_UNMARKITEM_ALL"), new.hasCheckedItem())
     self.menu.Enable(menuItemsStore.getRef("EDIT_MARKITEM_ALL"), len(new.checkedItem) != len(new.listObject))
     self.menu.Enable(menuItemsStore.getRef("MOVE_HIST_NEXT"), new.environment["history"].hasNext())
     self.menu.Enable(menuItemsStore.getRef("MOVE_HIST_PREV"), new.environment["history"].hasPrevious())
예제 #3
0
파일: base.py 프로젝트: yncat/falcon
 def ItemMarkProcess(self, items, strict=None):
     """
         itemsをチェック・チェック解除する。現在状態と比べて反転させる
         strict!=Noneの時は、全アイテムのチェック状態をstrictに合わせる
     """
     for item in items:
         index = self.listObject.GetItemIndex(item)
         if strict == False or (strict == None
                                and self._IsItemChecked(item)):
             # チェック解除
             self.checkedItem.discard(item)
             if len(items) == 1 and strict is None:
                 globalVars.app.say(_("チェック解除"), interrupt=True)
             self.hListCtrl.SetItemBackgroundColour(index, "#000000")
         else:  # チェック
             if len(items) == 1:
                 globalVars.app.say(_("チェック"), interrupt=True)
                 if not strict:
                     globalVars.app.PlaySound(
                         globalVars.app.config["sounds"]["check"])
             self.checkedItem.add(item)
             self.hListCtrl.SetItemBackgroundColour(index, "#0000FF")
             self.hListCtrl.RefreshItem(index)
         # カーソルを1つ下へ移動
         if len(items) == 1 and index != len(
                 self.listObject) - 1:  # カーソルが一番下以外にある時
             # self.hListCtrl.SetItemState(item,0,wx.LIST_STATE_SELECTED)
             self.Focus(index + 1, True)
     self.hListCtrl.Update()
     globalVars.app.hMainView.menu.Enable(
         menuItemsStore.getRef("EDIT_UNMARKITEM_ALL"),
         self.hasCheckedItem())
     globalVars.app.hMainView.menu.Enable(
         menuItemsStore.getRef("EDIT_MARKITEM_ALL"),
         len(self.checkedItem) != len(self.listObject))
예제 #4
0
 def play(self, listPorQ=constants.PLAYLIST):
     if not globalVars.play.isDeviceOk(): return False  #デバイス異常時は処理を中止
     if globalVars.play.getStatus() == PLAYER_STATUS_DEVICEERROR:
         return False
     t = listManager.getTuple(listPorQ, True)
     if listPorQ == constants.QUEUE:
         globalVars.listInfo.playingTmp = t  #キュー再生の時はタプルを一時退避
     sc = None
     if re.search("https?://.+\..+",
                  t[constants.ITEM_PATH]) != None:  #URLの場合は中にURLがないか確認
         sc = self.inUrlCheck(t[constants.ITEM_PATH])
     if sc == None: sc = t[constants.ITEM_PATH]
     if globalVars.play.setSource(sc):
         ret = globalVars.play.play()
     else:
         ret = False
     if ret:
         self.errorSkipCount = 0  #エラースキップのカウンタをリセット
         self.playingList = listPorQ
         if ret:
             view_manager.buttonSetPause()
             listManager.setTag(listPorQ)
             globalVars.app.hMainView.menu.hFunctionMenu.Enable(
                 menuItemsStore.getRef("ABOUT_PLAYING"), True)
             self.refreshTagInfo()
             globalVars.app.hMainView.tagInfoTimer.Start(10000)
         view_manager.setFileStaticInfoView()  #スクリーンリーダ用リストとウィンドウ情報更新
     if not ret:
         view_manager.buttonSetPlay()
         globalVars.app.hMainView.menu.hFunctionMenu.Enable(
             menuItemsStore.getRef("ABOUT_PLAYING"), False)
         view_manager.clearStaticInfoView()  #スクリーンリーダ用リストとウィンドウ情報更新
     view_manager.changeListLabel(globalVars.app.hMainView.playlistView)
     view_manager.changeListLabel(globalVars.app.hMainView.queueView)
     return ret
예제 #5
0
파일: main.py 프로젝트: yncat/TCV
    def OnMenuSelect(self, event):
        """メニュー項目が選択されたときのイベントハンドら。"""
        #ショートカットキーが無効状態のときは何もしない
        if not self.parent.shortcutEnable:
            event.Skip()
            return

        selected = event.GetId()  #メニュー識別しの数値が出る

        if selected == menuItemsStore.getRef("exit"):
            self.Exit()
        elif selected == menuItemsStore.getRef("versionInfo"):
            dialog(
                _("バージョン情報"),
                _("%(appName)s Version %(versionNumber)s.\nCopyright (C) %(year)s %(developerName)s"
                  ) % {
                      "appName": constants.APP_NAME,
                      "versionNumber": constants.APP_VERSION,
                      "year": constants.APP_COPYRIGHT_YEAR,
                      "developerName": constants.APP_DEVELOPERS
                  })
        elif selected == menuItemsStore.getRef("connect"):
            connectDialog = views.connect.Dialog()
            connectDialog.Initialize()
            ret = connectDialog.Show()
예제 #6
0
 def forcePlay(self, source):
     if not globalVars.play.isDeviceOk(): return False  #デバイス異常時は処理を中止
     sc = None
     if re.search("https?://.+\..+", source) != None:  #URLの場合は中にURLがないか確認
         sc = self.inUrlCheck(source)
     if sc == None: sc = source
     if globalVars.play.setSource(sc):
         if globalVars.play.play():
             ret = True
             self.playingList = constants.NOLIST  # リストではない
             globalVars.listInfo.playingTmp = (source,
                                               os.path.basename(source), 0)
             listManager.setTag(constants.NOLIST)
             globalVars.app.hMainView.menu.hFunctionMenu.Enable(
                 menuItemsStore.getRef("ABOUT_PLAYING"), True)
         else:
             ret = False
     else:
         ret = False
     if ret:
         self.errorSkipCount = 0  #エラースキップのカウンタをリセット
         view_manager.buttonSetPause()
         globalVars.app.hMainView.menu.hFunctionMenu.Enable(
             menuItemsStore.getRef("ABOUT_PLAYING"), True)
         self.refreshTagInfo()
         globalVars.app.hMainView.tagInfoTimer.Start(10000)
         view_manager.setFileStaticInfoView()  #スクリーンリーダ用リストとウィンドウ情報更新
     else:
         view_manager.buttonSetPlay()
         globalVars.app.hMainView.menu.hFunctionMenu.Enable(
             menuItemsStore.getRef("ABOUT_PLAYING"), False)
         view_manager.clearStaticInfoView()  #スクリーンリーダ用リストとウィンドウ情報更新
     view_manager.changeListLabel(globalVars.app.hMainView.playlistView)
     view_manager.changeListLabel(globalVars.app.hMainView.queueView)
     return ret
예제 #7
0
 def repeatLoopCtrl(self, mode=-1):  #0=なし, 1=リピート, 2=ループ
     if mode == -1:
         if self.repeatLoopFlag < 2:
             self.repeatLoopFlag += 1
         else:
             self.repeatLoopFlag = 0
     elif mode >= 0 and mode <= 2:
         self.repeatLoopFlag = mode
     if self.repeatLoopFlag == 0:
         globalVars.play.setRepeat(False)
         view_manager.buttonSetRepeatLoop()
         globalVars.app.say(_("オフ"), interrupt=True)
         globalVars.app.hMainView.menu.hRepeatLoopSubMenu.Check(
             menuItemsStore.getRef("REPEAT_LOOP_NONE"), True)
     elif self.repeatLoopFlag == 1:
         globalVars.play.setRepeat(True)
         view_manager.buttonSetRepeat()
         globalVars.app.say(_("リピート"), interrupt=True)
         globalVars.app.hMainView.menu.hRepeatLoopSubMenu.Check(
             menuItemsStore.getRef("RL_REPEAT"), True)
     elif self.repeatLoopFlag == 2:
         globalVars.play.setRepeat(False)
         view_manager.buttonSetLoop()
         globalVars.app.say(_("ループ"), interrupt=True)
         globalVars.app.hMainView.menu.hRepeatLoopSubMenu.Check(
             menuItemsStore.getRef("RL_LOOP"), True)
예제 #8
0
파일: base.py 프로젝트: guredora403/falcon
	def _RegisterMenuCommand(self,menu_handle,ref_id,title,subMenu):
		shortcut=self.keymap.GetKeyString(self.keymap_identifier,ref_id)
		s=title if shortcut is None else "%s\t%s" % (title,shortcut)
		if subMenu==None:
			menu_handle.Append(menuItemsStore.getRef(ref_id),s)
		else:
			menu_handle.Append(menuItemsStore.getRef(ref_id),s,subMenu)
		self.blockCount[menuItemsStore.getRef(ref_id)]=0
예제 #9
0
파일: main.py 프로젝트: guredora403/falcon
 def UpdateMenuState(self, old, new):
     #メニューのブロック状態を変更
     if old:
         self.menu.UnBlock(old.blockMenuList)
     self.menu.Block(new.blockMenuList)
     self.menu.Enable(menuItemsStore.getRef("MOVE_MARK"), new.IsMarked())
     self.menu.Enable(menuItemsStore.getRef("EDIT_UNMARKITEM_ALL"),
                      new.hasCheckedItem())
     new.ItemSelected()  #メニューのブロック情報を選択中アイテム数の状況に合わせるために必用
예제 #10
0
 def _RegisterCheckMenuCommand(self, menu_handle, ref_id, title, index=-1):
     """チェックメニューアイテム生成補助関数"""
     shortcut = self.keymap.GetKeyString(self.keymap_identifier, ref_id)
     s = title if shortcut is None else "%s\t%s" % (title, shortcut)
     if index >= 0:
         menu_handle.InsertCheckItem(index, menuItemsStore.getRef(ref_id),
                                     s)
     else:
         menu_handle.AppendCheckItem(menuItemsStore.getRef(ref_id), s)
     self.blockCount[menuItemsStore.getRef(ref_id)] = 0
예제 #11
0
 def shuffleSw(self):
     if self.shuffleCtrl == None:
         self.shuffleCtrl = shuffle_ctrl.shuffle(listManager.getLCObject(constants.PLAYLIST))
         view_manager.buttonSetShuffleOn()
         globalVars.app.say(_("シャッフル"), interrupt=True)
         globalVars.app.hMainView.menu.hOperationMenu.Check(menuItemsStore.getRef("SHUFFLE"), True)
     else: #シャッフルを解除してプレイリストに復帰
         self.shuffleCtrl = None
         view_manager.buttonSetShuffleOff()
         globalVars.app.say(_("オフ"), interrupt=True)
         globalVars.app.hMainView.menu.hOperationMenu.Check(menuItemsStore.getRef("SHUFFLE"), False)
예제 #12
0
    def makeEntry(self, ref, key, filter, log):
        """
			ref(String)と、/区切りでない単一のkey(String)からwx.AcceleratorEntryを生成
		"""
        if menuItemsStore.getRef(
                ref.upper()) > 49151:  #OSの仕様により0xBFFF=49151までしか利用できない
            log.warning(
                "%s=%d is invalid hotkey ref. hotkey ref must be smaller than 49151"
                % (ref, menuItemsStore.getRef(ref)))
            return False
        return super().makeEntry(ref, key, filter, log)
예제 #13
0
def closeM3u(newSave=True):
    if globalVars.listInfo.playlistFile != None:
        lst = []
        for t in globalVars.app.hMainView.playlistView:
            lst.append(t[0])
        if loadM3u(globalVars.listInfo.playlistFile, LOAD_ONLY) != lst:
            if os.path.splitext(
                    globalVars.listInfo.playlistFile)[1] == ".m3u":  #変換を確認
                d = mkDialog.Dialog("m3uConversionConfirmDialog")
                d.Initialize(_("プレイリスト変換確認"),
                             _("このプレイリストは変更されています。\nm3u8ファイルに変換して保存しますか?"),
                             (_("保存"), _("破棄"), _("キャンセル")),
                             sound=False)
                fxManager.confirm()
                c = d.Show()
            elif os.path.splitext(
                    globalVars.listInfo.playlistFile)[1] == ".m3u8":  #上書きを確認
                d = mkDialog.Dialog("m3uOverwriteConfirmDialog")
                d.Initialize(_("プレイリスト上書き保存の確認"),
                             _("このプレイリストは変更されています。\n上書き保存しますか?"),
                             (_("上書き"), _("破棄"), _("キャンセル")),
                             sound=False)
                fxManager.confirm()
                c = d.Show()
            if c == 0: saveM3u8(globalVars.listInfo.playlistFile, False)
            elif c == wx.ID_CANCEL: return False
    else:
        if newSave:
            if len(globalVars.app.hMainView.playlistView) != 0:
                d = mkDialog.Dialog("m3uSaveConfirmDialog")
                d.Initialize(_("プレイリスト保存の確認"),
                             _("このプレイリストは変更されています。\n保存しますか?"),
                             (_("保存"), _("破棄"), _("キャンセル")),
                             sound=False)
                fxManager.confirm()
                c = d.Show()
                if c == 0: saveM3u8(None, False)
                elif c == wx.ID_CANCEL: return False
    # 停止して削除
    globalVars.eventProcess.stop()
    globalVars.listInfo.playlistFile = None
    globalVars.app.hMainView.playlistView.clear()
    globalVars.app.hMainView.playlistLabel.SetLabel(
        _("プレイリスト") + " (0" + _("件") + ")")
    #メニュー処理
    globalVars.app.hMainView.menu.hFileMenu.SetLabel(
        menuItemsStore.getRef("M3U8_SAVE"), _("プレイリストを上書き保存"))
    globalVars.app.hMainView.menu.hFileMenu.Enable(
        menuItemsStore.getRef("M3U8_SAVE"), False)
    globalVars.app.hMainView.menu.hFileMenu.Enable(
        menuItemsStore.getRef("M3U_CLOSE"), False)
    globalVars.app.hMainView.menu.hPlaylistMenu.Enable(
        menuItemsStore.getRef("SET_STARTUPLIST"), False)
    return True
예제 #14
0
 def stop(self):
     self.errorSkipCount = 0 #エラースキップのカウンタをリセット
     view_manager.clearStaticInfoView() #スクリーンリーダ用リストの更新
     globalVars.lampController.clearFileInfo() # ネット用ファイル情報更新
     globalVars.app.hMainView.playlistView.setPointer(-1)
     globalVars.play.stop()
     view_manager.buttonSetPlay()
     globalVars.app.hMainView.menu.hFunctionMenu.Enable(menuItemsStore.getRef("ABOUT_PLAYING"), False)
     globalVars.app.hMainView.menu.hFunctionMenu.Enable(menuItemsStore.getRef("SET_CURSOR_PLAYING"), False)
     globalVars.app.hMainView.viewTitle.SetLabel(_("タイトル") + " : ")
     globalVars.app.hMainView.viewTagInfo.SetLabel("")
     globalVars.app.hMainView.tagInfoTimer.Stop()
예제 #15
0
파일: base.py 프로젝트: yncat/falcon
 def Move(self, path, cursor="", addHistory=True):
     """指定の場所へ移動する。"""
     if addHistory:
         self.environment["history"].add(path)
         self.parent.menu.Enable(menuItemsStore.getRef("MOVE_HIST_NEXT"),
                                 self.environment["history"].hasNext())
         self.parent.menu.Enable(menuItemsStore.getRef("MOVE_HIST_PREV"),
                                 self.environment["history"].hasPrevious())
     r = navigator.Navigate(path,
                            cursor,
                            previous_tab=self,
                            environment=self.environment)
     return errorCodes.OK if r is self else r
예제 #16
0
파일: base.py 프로젝트: guredora403/falcon
	def UnBlock(self,ref):
		"""
			メニュー項目のブロック事由が消滅したので、ブロックカウントを減らす。0になったら有効化する
			refはリスト
		"""
		for i in ref:
			try:
				self.blockCount[menuItemsStore.getRef(i)]-=1
			except KeyError:
				self.blockCount[menuItemsStore.getRef(i)]=0

			#ブロック解除
			if self.blockCount[menuItemsStore.getRef(i)]==0:
				self.hMenuBar.Enable(menuItemsStore.getRef(i),True)
예제 #17
0
    def Block(self, ref):
        """
                メニュー項目の利用をブロックし、無効状態にする
                refはlist(str)
        """
        for i in ref:
            try:
                self.blockCount[menuItemsStore.getRef(i)] += 1
            except KeyError:
                self.blockCount[menuItemsStore.getRef(i)] = 1

            # 新規にブロック
            if self.blockCount[menuItemsStore.getRef(i)] == 1:
                self.hMenuBar.Enable(menuItemsStore.getRef(i), False)
예제 #18
0
파일: base.py 프로젝트: yncat/falcon
 def ClearAllItems(self):
     """
         必用な調整を経て、リストビューを空にする
         並び替え等に伴う同一リストの再描画用
         listObjectについては別途処理が必要
     """
     self._cancelBackgroundTasks()
     self.StopSound()
     self.hListCtrl.DeleteAllItems()
     self.hilightIndex = -1
     globalVars.app.hMainView.menu.Enable(
         menuItemsStore.getRef("EDIT_UNMARKITEM_ALL"), False)
     globalVars.app.hMainView.menu.Enable(
         menuItemsStore.getRef("EDIT_MARKITEM_ALL"), True)
예제 #19
0
 def setSkipInterval(self, increase=True, sec=None):
     if sec == None:
         sec = settings.getSkipInterval()[0]
     idx = settings.skipInterval.index(sec)
     if increase == True:
         if idx < len(settings.skipInterval) - 1:
             settings.setSkipInterval(settings.skipInterval[idx + 1])
     else:
         if idx > 0:
             settings.setSkipInterval(settings.skipInterval[idx - 1])
     strVal = settings.getSkipInterval()[1]
     globalVars.app.hMainView.menu.hOperationMenu.SetLabel(
         menuItemsStore.getRef("SKIP"), strVal + " " + _("進む"))
     globalVars.app.hMainView.menu.hOperationMenu.SetLabel(
         menuItemsStore.getRef("REVERSE_SKIP"), strVal + " " + _("戻る"))
예제 #20
0
def loadM3u(path=None, playlist=2):
    rtn = []  #ファイルパスリスト
    f = False  #ファイル
    if path == None:
        fd = wx.FileDialog(None,
                           _("プレイリストファイル選択"),
                           wildcard=_("プレイリストファイル (.m3u8/.m3u)") +
                           "|*.m3u8*;*.m3u")
        c = fd.ShowModal()
        if c == wx.ID_CANCEL: return rtn
        path = fd.GetPath()
    if os.path.isfile(path) and os.path.splitext(path)[1] == ".m3u":
        f = open(path, "r", encoding="shift-jis")
    elif os.path.isfile(path) and os.path.splitext(path)[1] == ".m3u8":
        f = open(path, "r", encoding="utf-8")
    if f != False:  #ファイルの読み込み
        for s in f.readlines():
            s = s.strip()
            if os.path.isfile(s):
                rtn.append(s)
        f.close()
    else:
        ed = mkDialog.Dialog("m3uLoadErrorDialog")
        ed.Initialize(_("読み込みエラー"),
                      _("プレイリストファイルの読み込みに失敗しました。"), ("OK", ),
                      sound=False)
        fxManager.error()
        return ed.Show()
    if playlist == 2:  #REPLACE
        if closeM3u() == False: return rtn  #closeがキャンセルされたら中止
        listManager.addItems(rtn, globalVars.app.hMainView.playlistView)
        globalVars.listInfo.playlistFile = path
        globalVars.m3uHistory.add(path)
        globalVars.app.hMainView.menu.hFileMenu.Enable(
            menuItemsStore.getRef("M3U_OPEN"), True)
        globalVars.app.hMainView.menu.hFileMenu.Enable(
            menuItemsStore.getRef("M3U_CLOSE"), True)
    elif playlist == 1:  #ADD
        listManager.addItems(rtn, globalVars.app.hMainView.playlistView)
        globalVars.listInfo.playlistFile = path
        globalVars.m3uHistory.add(path)
    if os.path.splitext(globalVars.listInfo.playlistFile)[1] == ".m3u":
        if playlist == 2:
            globalVars.app.hMainView.menu.hFileMenu.SetLabel(
                menuItemsStore.getRef("M3U8_SAVE"), _("UTF-8プレイリストに変換"))
            globalVars.app.hMainView.menu.hFileMenu.Enable(
                menuItemsStore.getRef("M3U8_SAVE"), True)
            globalVars.app.hMainView.menu.hPlaylistMenu.Enable(
                menuItemsStore.getRef("SET_STARTUPLIST"), True)
    elif os.path.splitext(globalVars.listInfo.playlistFile)[1] == ".m3u8":
        if playlist == 2:
            globalVars.app.hMainView.menu.hFileMenu.SetLabel(
                menuItemsStore.getRef("M3U8_SAVE"), _("プレイリストを上書き保存"))
            globalVars.app.hMainView.menu.hFileMenu.Enable(
                menuItemsStore.getRef("M3U8_SAVE"), True)
            globalVars.app.hMainView.menu.hPlaylistMenu.Enable(
                menuItemsStore.getRef("SET_STARTUPLIST"), True)
    return rtn
예제 #21
0
 def shuffleSw(self):
     if self.shuffleCtrl == 0:
         self.shuffleCtrl = shuffle_ctrl.shuffle(globalVars.playlist)
         globalVars.app.hMainView.shuffleBtn.SetLabel(_("シャッフル解除"))
         globalVars.app.hMainView.menu.hOperationMenu.Check(
             menuItemsStore.getRef("SHUFFLE"), True)
     else:  #シャッフルを解除してプレイリストに復帰
         idx = globalVars.playlist.getIndex(self.shuffleCtrl.getNow())
         if idx != None:
             globalVars.playlist.playIndex = idx
         else:
             globalVars.playlist.positionReset()
         self.shuffleCtrl = 0
         globalVars.app.hMainView.shuffleBtn.SetLabel(_("シャッフル"))
         globalVars.app.hMainView.menu.hOperationMenu.Check(
             menuItemsStore.getRef("SHUFFLE"), False)
예제 #22
0
 def mute(self):
     if self.muteFlag == 0:  #ミュート処理
         globalVars.play.changeVolume(0)
         self.muteFlag = 1
         globalVars.app.hMainView.volumeSlider.Disable()
         globalVars.app.hMainView.muteBtn.SetLabel("ミュート解除")
         globalVars.app.hMainView.menu.hVolumeInOperationMenu.SetLabel(
             menuItemsStore.getRef("MUTE"), _("消音を解除"))
     elif self.muteFlag == 1:  #ミュート解除処理
         val = globalVars.app.hMainView.volumeSlider.GetValue()
         globalVars.play.changeVolume(val)
         self.muteFlag = 0
         globalVars.app.hMainView.volumeSlider.Enable()
         globalVars.app.hMainView.muteBtn.SetLabel("ミュート")
         globalVars.app.hMainView.menu.hVolumeInOperationMenu.SetLabel(
             menuItemsStore.getRef("MUTE"), _("消音に設定"))
예제 #23
0
 def makeEntry(self, ref, key):
     """ref(String)と、/区切りでない単一のkey(String)からwx.AcceleratorEntryを生成"""
     key = key.upper()
     ctrl = "CTRL+" in key
     alt = "ALT+" in key
     shift = "SHIFT+" in key
     codestr = key.split("+")
     flags = 0
     flagCount = 0
     if ctrl:
         flags = wx.ACCEL_CTRL
         flagCount += 1
     if alt:
         flags = flags | wx.ACCEL_ALT
         flagCount += 1
     if shift:
         flags = flags | wx.ACCEL_SHIFT
         flagCount += 1
     if not len(codestr) - flagCount == 1:
         return False
     codestr = codestr[len(codestr) - 1]
     if not codestr in str2key:
         return False
     return AcceleratorEntry(flags, str2key[codestr],
                             menuItemsStore.getRef(ref.upper()),
                             ref.upper())
예제 #24
0
	def __init__(self,params,keys,refHead):
		"""
			params,keymapは(name,value)のタプルのリスト
			configparser.items(section)の利用を想定
		"""

		#変数を初期化
		self.refHead=refHead
		self.keyMap={}
		self.paramMap={}
		self.refMap={}
		self.errors=[]
		dic={}

		#引数からconfigを生成
		dic["param"]=dict(params)
		dic["key"]=dict(keys)
		config=FalconConfigParser.FalconConfigParser()
		config.read_dict(dic)

		#configから2つのmapを生成
		for k in config.options("param"):
			if(config.has_option("key",k)):
				k=k.upper()
				self.paramMap[k]=config["param"][k]
				self.keyMap[k]=config["key"][k]
				self.refMap[menuItemsStore.getRef(refHead+k)]=k

			else:
				self.errors.append(k)
예제 #25
0
	def add(self,name,param,key=None):
		"""指定した要素を追加"""
		name=name.upper()
		self.paramMap[name]=param
		if key!=None:
			self.keyMap[name]=key
		self.refMap[name]=menuItemsStore.getRef(self.refHead+name)
예제 #26
0
파일: main.py 프로젝트: yncat/falcon
    def AddUserCommandMenu(self):
        for m in globalVars.app.userCommandManagers:
            # 既に登録済みならインデックスを取得していったん削除する
            item = self.menu.hMoveMenu.FindItemById(menuItemsStore.getRef(m.refHead))
            if item:
                index = self.menu.hMoveMenu.GetMenuItems().index(item)
                self.menu.hMoveMenu.DestroyItem(item)
            else:
                index = self.menu.hMoveMenu.GetMenuItemCount()

            subMenu = wx.Menu()
            for v in m.paramMap:
                self.menu.RegisterMenuCommand(subMenu, m.refHead + v, v)

            if m == globalVars.app.favoriteDirectory:
                self.menu.RegisterMenuCommand(subMenu, (
                    "",
                    "MOVE_ADD_FAVORITE",
                    "MOVE_SETTING_FAVORITE"
                ))
            else:
                self.menu.RegisterMenuCommand(subMenu, (
                    "",
                    "MOVE_SETTING_OPEN_HERE"
                ))
            title = globalVars.app.userCommandManagers[m]
            self.menu.RegisterMenuCommand(self.menu.hMoveMenu, m.refHead, title, subMenu, index)
            self.hFrame.SetMenuBar(self.menu.hMenuBar)
예제 #27
0
 def delete(self, name):
     """指定されたnameの登録を削除する"""
     name = name.lower()
     del self.paramMap[name]
     if name in self.keyMap:
         del self.keyMap[name]
     del refMap[menuItemsStore.getRef(self.refHead + name)]
예제 #28
0
 def RegisterRadioMenuCommand(self,
                              menu_handle,
                              ref_id,
                              title=None,
                              index=-1):
     """ラジオメニューアイテム生成補助関数"""
     shortcut = self.keymap.GetKeyString(self.keymap_identifier, ref_id)
     if not title:
         title = menuItemsDic.dic[ref_id]
     s = title if shortcut is None else "%s\t%s" % (title, shortcut)
     if index >= 0:
         menu_handle.InsertRadioItem(index, menuItemsStore.getRef(ref_id),
                                     s)
     else:
         menu_handle.AppendRadioItem(menuItemsStore.getRef(ref_id), s)
     self.blockCount[menuItemsStore.getRef(ref_id)] = 0
예제 #29
0
    def OnMenuSelect(self, event):
        """メニュー項目が選択されたときのイベントハンドら。"""
        selected = event.GetId()  #メニュー識別しの数値が出る

        if selected == menuItemsStore.getRef("POPUP_PLAY"):
            if self.parent.GetSelectedItemCount() == 1:
                globalVars.eventProcess.listSelection(self.parent)
        elif selected == menuItemsStore.getRef("POPUP_ADD_QUEUE_HEAD"):
            if self.parent.GetSelectedItemCount() != 0:
                t = []
                for i in self.parent.getItemSelections():
                    t.append(self.parent[i][0])
                listManager.addItems(t, globalVars.app.hMainView.queueView, 0)
        elif selected == menuItemsStore.getRef("POPUP_ADD_QUEUE"):
            if self.parent.GetSelectedItemCount() != 0:
                t = []
                for i in self.parent.getItemSelections():
                    t.append(self.parent[i][0])
                listManager.addItems(t, globalVars.app.hMainView.queueView)
        elif selected == menuItemsStore.getRef("POPUP_ADD_PLAYLIST"):
            if self.parent.GetSelectedItemCount() != 0:
                t = []
                for i in self.parent.getItemSelections():
                    t.append(self.parent[i][0])
                listManager.addItems(t, globalVars.app.hMainView.playlistView)
        elif selected == menuItemsStore.getRef("POPUP_COPY"):
            if self.parent.GetSelectedItemCount() != 0:
                fList = []
                i = self.parent.GetFirstSelected()
                if i >= 0:
                    fList.append(self.parent[i][0])
                    while True:
                        i = self.parent.GetNextSelected(i)
                        if i >= 0: fList.append(self.parent[i][0])
                        else: break
                lampClipBoardCtrl.copy(fList)
        elif selected == menuItemsStore.getRef("POPUP_PASTE"):
            lampClipBoardCtrl.paste(self.parent)
        elif selected == menuItemsStore.getRef("POPUP_DELETE"):
            if self.parent.GetSelectedItemCount() != 0:
                globalVars.eventProcess.delete(self.parent)
        elif selected == menuItemsStore.getRef("POPUP_SELECT_ALL"):
            for i in range(self.parent.GetItemCount()):
                self.parent.Select(i - 1)
        elif selected == menuItemsStore.getRef("POPUP_ABOUT"):
            if self.parent.GetSelectedItemCount() == 1:
                index = self.parent.GetFirstSelected()
                t = self.parent[index]
                tag = listManager.getTags([t])
                self.parent[index] = tag[0]
                t = self.parent[index]
                listManager.infoDialog(t)
예제 #30
0
파일: main.py 프로젝트: actlaboratory/LAMP
    def OnMenuOpen(self, event):
        menuObject = event.GetEventObject()

        if event.GetMenu() == self.parent.menu.hDeviceSubMenu:
            menu = self.parent.menu.hDeviceSubMenu
            # 内容クリア
            for i in range(menu.GetMenuItemCount()):
                menu.DestroyItem(menu.FindItemByPosition(0))
            # デバイスリスト追加
            deviceList = player.getDeviceList()
            deviceIndex = 0
            for d in deviceList:
                if deviceIndex == 0:
                    menu.AppendCheckItem(constants.DEVICE_LIST_MENU,
                                         _("規定の出力先"))
                elif d != None:
                    menu.AppendCheckItem(
                        constants.DEVICE_LIST_MENU + deviceIndex, d)
                deviceIndex += 1
            # 現在の設定にチェック
            deviceNow = globalVars.play.getConfig(PLAYER_CONFIG_DEVICE)
            if deviceNow == PLAYER_DEFAULT_SPEAKER:
                menu.Check(constants.DEVICE_LIST_MENU, True)
            elif deviceNow > 0 and deviceNow < len(
                    deviceList) and deviceList[deviceNow] != None:
                menu.Check(constants.DEVICE_LIST_MENU + deviceNow, True)
        elif menuObject == self.parent.menu.hPlaylistMenu:
            menu = self.parent.menu.hPlaylistMenu
            # 履歴部分を削除
            for i in range(menu.GetMenuItemCount() - 2):
                menu.DestroyItem(menu.FindItemByPosition(2))
            # 履歴部分を作成
            index = 0
            for path in globalVars.m3uHistory.getList():
                menu.Insert(2, constants.PLAYLIST_HISTORY + index, path)
                index += 1
        elif menuObject == self.parent.menu.hFilterSubMenu:
            menu = self.parent.menu.hFilterSubMenu
            # いったん全て削除
            for i in range(menu.GetMenuItemCount() - 1):
                menu.DestroyItem(menu.FindItemByPosition(0))
            # 項目を作成
            index = 0
            for filter in globalVars.filter.getList():
                menu.InsertCheckItem(index, constants.FILTER_LIST_MENU + index,
                                     filter.getName())
                menu.Check(constants.FILTER_LIST_MENU + index,
                           filter.isEnable())
                index += 1

        elif menuObject == self.parent.menu.hOperationMenu:
            self.parent.menu.hOperationMenu.Check(
                menuItemsStore.getRef("MANUAL_SONG_FEED"),
                globalVars.app.config.getboolean("player", "manualSongFeed",
                                                 False))