ãšã³ããªãŒ
ããã¯ãç¬èªã®ã€ã³ã¿ãŒãã§ãŒã¹ãåããXBMCã®ãã©ã°ã€ã³ã®äœæã«é¢ããäžé£ã®èšäºã®ç¬¬1éšã§ãã ãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã®äœæã«é¢ããåºæ¬çãªæ å ±ãšãç°¡åãªäŸã瀺ããŸãã
ããŒãIIã§ã¯ãããå°ãçè«ãšå°ãè€éãªäŸã瀺ããŸãã
ããŒãIIIã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®ã¬ã€ã¢ãŠããç°¡çŽ åãããã€ã¯ããã¬ãŒã ã¯ãŒã¯ã玹ä»ããŸãã
ç§ã®æåã®èšäºã åçŽãªXBMCãã©ã°ã€ã³ã®è©³çŽ°ãªæ§é ã ã§ã¯ãXBMCã®ãã©ã°ã€ã³ã®æ§é ãå¯èœãªéã詳现ã«èª¬æããããšããŸããã ããã«ããã©ã°ã€ã³ã®ã³ã³ãã³ããœãŒã¹ãšãã©ã°ã€ã³ã¹ã¯ãªãããã©ã®ããã«ç°ãªããã説æããããšããŸããã å¿ããŠããŸã£ãæ¹ã®ããã«ãaddDirectoryItemïŒïŒé¢æ°ã䜿çšããŠãã³ã³ãã³ããœãŒã¹ãã©ã°ã€ã³ãã³ã³ãã³ãã®ãã«ãã¬ãã«ãªã¹ãïŒãã£ã¬ã¯ããªïŒã圢æããããšãæãåºãããŠãã ããã ã€ãŸãããªã¹ãã¢ã€ãã ã®æ©èœãé 次ããã£ãŒããããæ®ãã®ãã¹ãŠïŒãªã¹ãã®è¡šç€ºããªã¹ãã¢ã€ãã ã®éžææã®ã€ãã³ãã®åŠçãªã©ïŒãXBMCã§å®è¡ãããŸãã åæ§ã«ããã©ã°ã€ã³ã¹ã¯ãªããã¯ãã®ãããªç¹æš©ã奪ãããŠããããã®äžã§èšåãããŠãããã¹ãŠã®ã¿ã¹ã¯ã¯éçºè ãè² æ ããŸãã ãŸãããœãŒã¹ãã©ã°ã€ã³ã®ããã«ãæå®ãããã³ã³ãã³ãã§ããã€ãã®ã¿ã¹ã¯ãå®è¡ããå Žåãããããªãããé³æ¥œããããã³/ãŸãã¯ãåçãã»ã¯ã·ã§ã³ã«ã¹ã¯ãªããã衚瀺ã§ããããšããŸãã¯ãããã¯æ±çšã¹ã¯ãªãããã©ã°ã€ã³ã§ãã ããã«ãã¹ã¯ãªãããã©ã°ã€ã³ã¯ãåå¹ãããŠã³ããŒãããããããã¯ã°ã©ãŠã³ããµãŒãã¹ãšããŠåäœãããããããšãã§ããŸãããã©ã°ã€ã³ã®æ©èœã¯ããã©ã°ã€ã³ã«é¢ãããã¹ãŠã®æ å ±ãå«ãAddon.xmlãã¡ã€ã«å ã®ã¿ã°ã«ãã£ãŠæ±ºå®ãããŸãã
æ®å¿µãªãããç¬åµçãªã¢ã€ãã¢ã¯ç§ã蚪åããŠããªãã®ã§ããããã®èšäºã®äŸã¯æ¬è³ªçã«ããæœè±¡çã§çè«çã§ãã 圹ã«ç«ã€äœããæžãããã«ãã®æ å ±ã䜿çšããããšã¯ããªãã«ä»»ããŸãã
ãããã®èšäºãç解ããã«ã¯ãOOPã®ååãšPythonïŒä»¥äž-PythonïŒã§ã®GUIã¢ããªã±ãŒã·ã§ã³ã®äœæã®ååã«é¢ããååãªç¥èãå¿ èŠã§ãã
äžè¬çãªæ å ±
XBMC Python APIã®äžéšã§ããxbmcguiã¢ãžã¥ãŒã«ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ã®æäœãæ åœããŸãã ãã®ã¢ãžã¥ãŒã«ã«ã¯ãäžè¬çãªã³ã³ããã¯ã©ã¹ãšãããŸããŸãªã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãæ åœããã¯ã©ã¹ãå«ãŸããŠããŸãã æ®å¿µãªãããã€ã³ã¿ãŒãã§ãŒã¹ãæ åœããAPIã®éšåã¯ãGUIã®åŸæ¥ã®Pythonã©ã€ãã©ãªããã䟿å©ã§ã¯ãªããããã¥ã¡ã³ããäžæ£ç¢ºã§ãã 以åã®èšäºã§æžããã¹ã¿ãã¢ãžã¥ãŒã«ã®äœ¿çšããå§ãããŸã ã éçºã®å©äŸ¿æ§ã«å ããŠãã¯ã©ã¹ãã¡ãœãããé¢æ°ã®ã»ãããããã³ãããã®äœ¿çšïŒããã¯ã¹ããªã³ã°ïŒã®äž¡æ¹ã«é¢ããé¢é£æ å ±ãå«ãŸããŠããŸãã
ãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ããŒãã³ã
ãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããã«ãxbmcguiã¢ãžã¥ãŒã«ã¯ããŸããŸãªã³ã³ããŒãã³ããæäŸããŸãã
-ã³ã³ããã¯ã©ã¹ïŒWindowã¯ã©ã¹ãšãã®åå«ïŒ;
-ãŠã£ãžã§ããããŸãã¯XBMCçšèªã§ã¯ãããŸããŸãªã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ïŒã³ã³ãããŒã«ã®äžäœã¯ã©ã¹ïŒãæ åœããã³ã³ãããŒã«ã
-æ å ±ã衚瀺ãããŠãŒã¶ãŒãšå¯Ÿè©±ããããã«äœ¿çšããããã€ã¢ãã°ïŒDialogã¯ã©ã¹ãªã©ã®ã¡ãœããïŒã
æåã®2ã€ã®ãã€ã³ãããã詳现ã«æ€èšããŠãã ããã
WindowXMLããã³WindowXMLDialogã¯ã©ã¹
ååã瀺ãããã«ããããã®ã³ã³ããã¯ã©ã¹ã¯ãXBMCã¹ãã³ãšåæ§ã®æ§é ãæã€XMLã¹ã±ã«ãã³ã€ã³ã¿ãŒãã§ã€ã¹ã¹ã±ã«ãã³ã䜿çšããŸãã ã€ãŸããå®éã«ã¯ããããã®ã¯ã©ã¹ã«åºã¥ããã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ç¬èªã®ããã¹ãã³ããããŸãã ç§ã¯ã¹ãã³ã©ã€ãã£ã³ã°ã®ãžã£ã³ã°ã«ïŒç§ã¯ã»ãšãã©ç¥ããªãããšãèªããŸãïŒãæãäžããããªãã®ã§ããããã®ã¯ã©ã¹ã«ãã ããããšã¯ãããŸããã
Windowããã³WindowDialogã¯ã©ã¹
Windowããã³WindowDialogã¯ã©ã¹ã¯ãä»ã®ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ïŒã³ã³ãããŒã«ïŒããã¹ããã芪ã³ã³ãããŒã§ãã ã³ã³ãããŒã«ãé 眮ããããã«ããããã®ã¯ã©ã¹ã¯ç»é¢ã®å·Šäžé ããå§ãŸã座æšã°ãªãããæäŸããŸãã ããã©ã«ãã§ã¯ãã°ãªããã®è¡šç€ºé åã®è§£å床ã¯1280 x 720ãã¯ã»ã«ã§ãã ãã®è§£å床ã¯å€æŽã§ããŸãããå人çã«ã¯ããŸãæå³ããããŸããã®ã§ãäŸã§ã¯å¯èŠé åã®æšæºè§£å床ã䜿çšããŸãã ãå¯èŠé åããšããçšèªã䜿çšããã®ã¯äœã®çç±ã§ããããŸããã ã³ã³ãããŒã«ã®åº§æšã¯ãè² ã®å€ãå«ãä»»æã®å€ãæã€ããšãã§ããŸãããç»é¢ã«è¡šç€ºãããã®ã¯è¡šç€ºé åã«åãŸããã®ã ãã§ãã ããã¯ãããšãã°ãæããã«å¯èŠé åãè¶ ãã座æšïŒããšãã°ã-5000ã-5000ïŒãèšå®ããããšã«ãããããçš®ã®ã³ã³ãããŒã«ãäžæçã«é ãããã«äœ¿çšã§ããŸãã
泚æïŒåº§æšã°ãªããã®å¯èŠé åã®è§£å床ãšç»é¢è§£å床ãæ··åããªãã§ãã ããã 衚瀺é åã¯ãå®éã®ç»é¢è§£å床ãšåã解å床ãæã£ãŠãããããå®éã®è§£å床ã«é¢ä¿ãªããã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã¯åžžã«åã瞮尺ãæã¡ãŸãã
Windowã¯ã©ã¹ãšWindowDialogã¯ã©ã¹ã®éãã¯ãWindowã¯ã©ã¹ã®èæ¯ãé»ãäžéæã§ããããããªåçãŠã£ã³ããŠãŸãã¯é³æ¥œèŠèŠåãŠã£ã³ããŠã®äžã§é衚瀺ã«ã§ããããšã§ãã WindowDialogã®èæ¯ã¯éæã«ãªãããã®ã³ã³ãããŒã«ã¯åžžã«XBMCã€ã³ã¿ãŒãã§ã€ã¹ã®ä»ã®èŠçŽ ã®äžã«è¡šç€ºãããŸãã ãããã£ãŠããã©ã°ã€ã³ããããªãåçããé³æ¥œãåçããå Žåããã®ããã«Windowã¯ã©ã¹ã䜿çšããããšããå§ãããŸããä»ã®å Žåãã¯ã©ã¹ã®éžæã¯ãã©ã°ã€ã³ã®å人çãªå¥œã¿ãšã¿ã¹ã¯ã«äŸåããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ã€ãã³ããåŠçããããã«ãäž¡æ¹ã®ã¯ã©ã¹ã«onActionïŒïŒããã³onControlïŒïŒã¡ãœããããããŸãã 1ã€ç®ã¯ããŒããŒãã³ãã³ããã€ã³ã¿ãŒã»ãããã2ã€ç®ã¯ã¢ã¯ãã£ãåãããã³ã³ãããŒã«ã§ãã ãããã£ãŠããŠãŒã¶ãŒãšã®å¯Ÿè©±ãä¿èšŒããããã«ããããã®ã¡ãœããã¯ãé©åãªã€ãã³ããã³ãã©ãèšè¿°ããŠããã©ã°ã€ã³ã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããåã¯ã©ã¹ã§å®çŸ©ããå¿ èŠããããŸãã
泚æïŒ ããã©ã«ãã§ã¯ãonActionã¡ãœããã¯BACKSPACEããã³ESCããŒã«å¯Ÿå¿ããããŒããŒãã³ãã³ããããã£ãããããcloseã¡ãœãããåŒã³åºããŸãïŒãã©ã°ã€ã³ãçµäºããŸãïŒã ãããã£ãŠããã®ã¡ãœãããåã¯ã©ã¹ã§ãªãŒããŒã©ã€ããããå Žåããã®ã¯ã©ã¹ã®ãã©ã°ã€ã³ãçµäºããããã®ã³ãã³ããå°ãªããšãç»é²ããå¿ èŠããããŸãã ãã以å€ã®å ŽåãXBMCã匷å¶çã«åæ¢ïŒã匷å¶çµäºãïŒããããšã«ãã£ãŠã®ã¿ãã©ã°ã€ã³ãçµäºã§ããŸããããã¯ãçµã¿èŸŒã¿ã·ã¹ãã ïŒOpenELECãªã©ïŒã§åé¡ã«ãªãå¯èœæ§ããããŸãã
ã³ã³ãããŒã«
次ã«ãã³ã³ãããŒã«ã«ã€ããŠè©³ãã説æããŸãã ãã¹ãŠã®ã³ã³ãããŒã«ã«ã€ããŠã¯èª¬æããŸããããç§ãå人çã«ç 究ãããã®ã«ã€ããŠã®ã¿èª¬æããŸãããã»ãšãã©ã®ã¿ã¹ã¯ã«ã¯ååã ãšæããŸãã ã³ã³ãããŒã«ã¯ããã©ã°ã€ã³ã®ã€ã³ã¿ãŒãã§ãŒã¹èŠçŽ ïŒãŠã£ãžã§ããïŒã§ãã ãã ããæ±çšGUIãã¬ãŒã ã¯ãŒã¯ïŒTkinterãPyQtïŒã®ãŠã£ãžã§ãããšã¯ç°ãªããã³ã³ãããŒã«ã¯ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã®ãã¹ã±ã«ãã³ãã®ãããªãã®ã§ãã ããžã¥ã¢ã«ãã¶ã€ã³ã®ã³ã³ãããŒã«ã«ã¯ãç»åïŒãã¯ã¹ãã£ïŒãå«ãã°ã©ãã£ãã¯ãã¡ã€ã«ãå¿ èŠã§ãã
泚ïŒäžéšã®ã³ã³ãããŒã«ïŒãã¿ã³ãªã©ïŒã¯ãçŸåšã®ã¹ãã³ã®å¿ èŠãªãã¯ã¹ãã£ãèªåçã«äœ¿çšã§ããŸããããã®åäœã«äŸåããããšã¯ã§ããŸããã 第äžã«ããã¹ãŠã®ã³ã³ãããŒã«ããããå®è¡ã§ããããã§ã¯ãããŸããã第äºã«ãå¥ã®ã¹ãã³ã«åãæ¿ãããšããã©ã°ã€ã³ã®å€èŠ³ã«éåããå¯èœæ§ããããŸãã ãããã£ãŠãã³ã³ãããŒã«ã®ãã¯ã¹ãã£ãã¡ã€ã«ãæ瀺çã«æå®ããããšããå§ãããŸãã
äžèšããæšæž¬ã§ããããã«ãç¬èªã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ãã©ã°ã€ã³ãäœæããå Žåã2ã€ã®ã¢ãããŒãã䜿çšã§ããŸãïŒã·ã³ãã«ããã©ã°ã€ã³ã®å€èŠ³ããã¹ãŠã®ã¹ãã³ã§åãå€èŠ³ãæã€ãããã³è€éãªããŠã£ãžã§ããã®ãã¯ã¹ãã£ãã¡ã€ã«ãçŸåšã®ã¹ãã³ã«å¿ããŠéžæãããããã©ã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ãã¹ãã³ãšåãã¹ã¿ã€ã«ã§ã¹ã¿ã€ã«èšå®ãããããã«ããŸãã åºå€§ããææ¡ã§ããªãããšã¯æãããªã®ã§ã2çªç®ã®ã¢ãããŒãã§ã¯ãããã€ãã®äººæ°ã®ããã¹ãã³ã«å¶éããæ®ãã®éšåã«ã¯ããã©ã«ãã®ã¬ã€ã¢ãŠãã䜿çšããå¿ èŠããããŸãã
以äžã¯ãäž»èŠãªã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ãããŒã«ã®ç°¡åãªèª¬æã§ãã
ã³ã³ãããŒã«ã©ãã«
èæ¯ãéæãªã·ã³ãã«ãªç¢æã ãã¯ã¹ãã£ã¯äœ¿çšããŸããã ããã¯ãTkinterã®Labelã¯ã©ã¹ãŸãã¯PyQtã®QLabelã®å®å šãªé¡äŒŒç©ã§ãã ããã¹ãã®é 眮ã¯ã次ã®æ°å€å®æ°ã®ããããã§æå®ãããŸãã
ALIGN_LEFT = 0 ALIGN_RIGHT = 1 ALIGN_CENTER_X = 2 ALIGN_CENTER_Y = 4 ALIGN_CENTER = 6 ALIGN_TRUNCATED = 8 ALIGN_JUSTIFY = 10
念ã®ãããå®éã®ãã©ã°ã€ã³ã§ã¯ããã®æ å ±ããã³ããã¹ãæ å ±ã衚瀺ããä»ã®ã³ã³ãããŒã«ã®ããã¹ãæååã¯ãAddon.getLocalizedStringïŒïŒã¡ãœããã䜿çšããŠèšèªãã¡ã€ã«ããååŸããã®ãæé©ã§ããããã©ã°ã€ã³ã®ã€ã³ã¿ãŒãã§ãŒã¹ãçŸåšã®XBMCèšèªèšå®ãšäžèŽããããšãæãåºãããŠãã ããã
ControlFadeLabel
ControlLabelã®é¡äŒŒç©ã§ãå¯äžã®éãã¯ãé·ãããè¡ãèªåçã«ã¹ã¯ããŒã«ããããšã§ãã
ControlTextBox
èªåæ¹è¡ä»ãã®é·ãããã¹ããå«ãå¯èœæ§ã®ãããã¹ããŠã£ã³ããŠã ã¹ã¯ããŒã«ã¯è¡ããããããã¹ãããã¯ã¹ã«åãŸããªãããã¹ãã¯ããªãã³ã°ãããŸãã
ControlImage
åçã ã¡ã€ã³ã®ç»åãã¡ã€ã«åœ¢åŒããµããŒããããŠããŸãïŒjpgãpngãgifïŒã pngããã³gifãã¡ã€ã«ã¯ãéæ床ãšã¢ãã¡ãŒã·ã§ã³ïŒããå ŽåïŒããµããŒãããŸãã ããã©ã«ãã§ã¯ãç»åã¯æå®ãããå Žæã«åãŸããæ¯çãããã¿ãŸããããã®æ¹æ³ã¯èšå®ã§ããŸãã æ®å¿µãªããšã«ã次ã«ç»åãå€æŽãããšãã«ã¯ãé©åãªãã·ã§ã³ã¯æ©èœããŸããã
ã³ã³ãããŒã«ãã¿ã³
ãã¿ã³ã ãã¿ã³ã¯ãªãã¯ãã³ãã©ã¯ãã³ã³ããã¯ã©ã¹ã®onControlïŒïŒã¡ãœããã«ç»é²ãããŸãã
ControlRadioButtonããã³ControlCheckMark
ã©ãžãªãã¿ã³ãšãã§ãã¯ããã¯ã¹ïŒããã§ãã¯ããŒã¯ãïŒã æ©èœçã«å®å šã«é¡äŒŒããŠãããå€èŠ³ã®ã¿ãç°ãªããŸãã 2ç¶æ ã¹ã€ãããšããŠäœ¿çšãããŸãã ãã¯ã¹ãã£ãå¿ èŠã§ãã
ã³ã³ãããŒã«ç·šé
ããã¹ããå ¥åããããã®ãã£ãŒã«ãã éžæãããšãç»é¢äžã®ããŒããŒããéããç®çã®ããã¹ããå ¥åã§ããŸãã ãã©ã¡ãŒã¿ãŒisPassword = Trueãæå®ãããšãå ¥åããããã¹ãã¯ã¢ã¹ã¿ãªã¹ã¯ã«çœ®ãæããããŸãã
å¶åŸ¡ãªã¹ã
ãªã¹ãã åçŽãªããã¹ãæååããªã¹ãã«è¿œå ã§ããŸãããå®éã«ã¯ããªã¹ãå ã®åã¢ã€ãã ã¯ListItemã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã ãã©ã°ã€ã³ã³ã³ãã³ããœãŒã¹ã®ãªã¹ãã¯åãèŠçŽ ã§æ§æãããŠããããšãæãåºãããŠãã ããã ãã ãããœãŒã¹ãã©ã°ã€ã³ãšã¯ç°ãªããControlListã®ãªã¹ãã¢ã€ãã ã®æ©èœã¯å¶éãããŠããŸãã å®éãããã¹ãã©ãã«ãšå°ããªã¢ã€ã³ã³ïŒthumbnailImageïŒã®ã¿ããµããŒããããŠããŸãã ãªã¹ãã¢ã€ãã ãéžæãããšãã®ã¢ã¯ã·ã§ã³ãªã©ãæ®ãã®ããžãã¯ã¯ãã¹ãŠãèªåã§å®è£ ããå¿ èŠããããŸãã ãªã¹ããã¹ã¿ã€ã«ããã«ã¯ãã³ã³ãããŒã«ã«ãã¯ã¹ãã£ãå¿ èŠã§ãã
ãã¹ãŠã®ãªã¹ãé ç®ãæå®ãããã¹ããŒã¹ã«åãŸããªãå Žåããªã¹ããã¹ã¯ããŒã«ããŸãã
ã³ã³ãããŒã«ã¹ã©ã€ããŒ
ã¹ã±ãŒã«ä»ãã®ã¹ã©ã€ããŒã ãã©ã¡ãŒã¿ã®ã¹ã ãŒãºãªèª¿æŽã«åœ¹ç«ã¡ãŸãã æ瀺çãªãã¯ã¹ãã£ãå¿ èŠã§ãã
Confluenceã®ã¹ãã³ãã¯ã¹ãã£ã䜿çšããŠèšèšãããã³ã³ãããŒã«ã®äŸã¯ã以äžã®ã¹ã¯ãªãŒã³ã·ã§ããã§èŠãããšãã§ããŸãã
ãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã®åºæ¬çãªã³ã³ãããŒã«

ControlButtonãControlRadioButtonãControlEditãControlListãããã³ControlSliderã¯ãéžæãããšå€èŠ³ãå€åããã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã§ãã çè«çã«ã¯ãControlLabelãªã©ã®ä»»æã®ã³ã³ãããŒã«ãéžæã§ããŸãããèŠèŠçãªãã£ãŒãããã¯ã¯ãããŸããã
ããŒããŒããŸãã¯ãªã¢ã³ã³ã®ç¢å°ããŒã䜿çšããŠãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ãããã²ãŒãããã«ã¯ã察å¿ããç¢å°ããŒãæŒãããšãã«ãã©ãŒã«ã¹ã移åãããã€ããŒãåã³ã³ãããŒã«ã«å²ãåœãŠãå¿ èŠããããŸãã ãããè¡ãã«ã¯ãsetNavigationã¡ãœãããããã³Controlããç¶æ¿ãããcontrolUpãcontrolDownãcontrolLeftãcontrolRightã䜿çšããŸãã
ãŸããããã²ãŒã·ã§ã³ãæ©èœãããã«ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®åæ衚瀺äžã«ãããããã®ã³ã³ãããŒã«ã«ãã©ãŒã«ã¹ãèšå®ããããšãå¿ããªãã§ãã ããã
ã³ã³ãããŒã«ã¯ãã³ã³ããã¯ã©ã¹ã®addControlã¡ãœããã䜿çšããŠè¿œå ãããŸãã åæã«ãåŸã§è¿œå ãããã³ã³ãããŒã«ã¯ã以åã«è¿œå ãããã³ã³ãããŒã«ã®äžã«è¡šç€ºãããŸãã ããšãã°ãèæ¯ãšããŠæ©èœããç»åãæåã«è¡šç€ºããä»ã®ãã¹ãŠã®ã³ã³ãããŒã«ããã®äžã«é 眮ã§ããŸãã
泚æïŒã»ãšãã©ãã¹ãŠã®ã³ã³ãããŒã«ã«ã¯ããã©ã°ã€ã³ã®å®è¡äžã«ããããã£ïŒããã¹ããç»åãªã©ïŒãå€æŽã§ããã¡ãœããããããŸãã ãããã£ãŠãaddControlã¡ãœããã䜿çšããŠãã®ã³ã³ãããŒã«ãã³ã³ããã¯ã©ã¹ã«è¿œå ããåŸã¯ãåžžã«ã³ã³ãããŒã«ããããã£ïŒããšãã°ãsetLabelïŒ 'Some Text'ïŒã䜿çšããŠControlLabelç¢æãå€æŽããŸãããéãã€ã³ããã³ã³ãããŒã«ã®ããããã£ãå€æŽããããšããŠããäœãèµ·ãããŸããã ãææªã®å ŽåãXBMCã€ã³ã¿ãŒãã§ãŒã¹ã®ããããçš®é¡ã®èå³æ·±ãäžå ·åãçºçããå¯èœæ§ããããŸãã
ããã§ã¯ãå®éã®äŸã«ç§»ããŸãããã ãã¡ãããå€å žçãªãHelloãWorldïŒãããŸãã¯ãã·ã¢èªçã®ãHelloãworldïŒãããå§ããŸãããã
ãã©ã°ã€ã³ãHello worldïŒã
æåã®èšäºã§è¿°ã¹ãããã«ããã©ã°ã€ã³ããšã«å¿ èŠãªãŠãŒãã£ãªãã£ãã¡ã€ã«addon.xmlãå¿ èŠã§ãã
Addon.xmlã³ã³ãã³ã
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="script.test" name="Test script" version="0.0.1" provider-name="Roman_V_M"> <requires> <import addon="xbmc.python" version="2.0"/> </requires> <extension point="xbmc.python.script" library="default.py"> <provides>executable</provides> </extension> <extension point="xbmc.addon.metadata"> <platform>all</platform> <summary lang="en">Test script</summary> <description lang="en">My test script.</description> </extension> </addon>
è¡
<extension point="xbmc.python.script" library="default.py"> <provides>executable</provides> </extension>
圌ãã¯ãããããããã°ã©ã ãã»ã¯ã·ã§ã³ã§å©çšã§ãããœãããŠã§ã¢ãã©ã°ã€ã³ã¹ã¯ãªããã§ããããšãç§ãã¡ïŒããã³XBMCïŒã«äŒããŸãã
ãã©ã°ã€ã³ã®ã³ãŒããçŽæ¥ïŒ
default.pyã®å
容
# -*- coding: utf-8 -*- # Licence: GPL v.3 http://www.gnu.org/licenses/gpl.html # import xbmcgui # ACTION_PREVIOUS_MENU = 10 # - ESC ACTION_NAV_BACK = 92 # - Backspace # - class MyAddon(xbmcgui.Window): def __init__(self): # . label = xbmcgui.ControlLabel(550, 300, 200, 50, u', !') # self.addControl(label) def onAction(self, action): # ESC Backspace... if action == ACTION_NAV_BACK or action == ACTION_PREVIOUS_MENU: # ... . self.close() if __name__ == '__main__': # -. addon = MyAddon() # . addon.doModal() # . del addon
ããã«ç°¡åãªåæãäž»èŠãªç¹ã¯ãã§ã«ã³ãŒããžã®ã³ã¡ã³ãã§ç€ºãããŠããããã è¡çªå·ã衚瀺ããã«ã¯ãã¡ã¢åž³++ãªã©ã®é©åãªæ©èœãåããããã¹ããšãã£ã¿ãŒã䜿çšããŸãã
è¡8ã9ïŒããã§ã¯ãXBMCã§äœ¿çšãããããŒããŒãã€ãã³ãã®æ°å€ã³ãŒãã«å¯Ÿå¿ããå®æ°ãèšå®ããŸãã ããŒããŒãã€ãã³ãã®å®å šãªãªã¹ãã¯ã XBMCãœãŒã¹ã³ãŒãã«ãããŸã ã ããŒããŒãã€ãã³ããšããŒããŒãããªã¢ãŒãã³ã³ãããŒã«ããŸãã¯ãã®ä»ã®ã³ã³ãããŒã«ã®ããŒã®å¯Ÿå¿ã¯ã keyboard.xmlæ§æãã¡ã€ã«ã§èšå®ãããŸãã
13-25ïŒã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ããã¯ã©ã¹ãèšè¿°ããŸãã ãã®å Žåãã¯ã©ã¹ã¯Windowãç¶æ¿ããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ã«ã¯ã察å¿ããç¢æãæã€ControlLabelãšããåäžã®ã³ã³ãããŒã«ãå«ãŸããŠããŸãã ã³ã³ãããŒã«ã®æåã®4ã€ã®ãã©ã¡ãŒã¿ãŒã¯ã座æšã°ãªããã®å¹ ãšé«ãã®åº§æšãšå¯žæ³ïŒãã¯ã»ã«åäœïŒã§ããããšã«æ³šæããŠãã ããã ãããã®ãã©ã¡ãŒã¿ãŒã¯å¿ é ã§ãã å¿ èŠã«å¿ããŠã座æšãšå¯žæ³ãåŸã§å€æŽã§ããŸãã ã³ã³ãããŒã«ãäœæãããããã®è¡šç€ºã延æããå Žåãæ¶ç©ºã®åº§æšããµã€ãºãæå®ããã³ã³ãããŒã«ã衚瀺ãããåŸã«å®éã®ãã©ã¡ãŒã¿ãŒãèšå®ã§ããŸãã
芪ã¯ã©ã¹ã®addControlïŒïŒã¡ãœããã¯ãã³ã³ããã«ã³ã³ãããŒã«ãè¿œå ãã圹å²ãæãããŸãã
onActionã¡ãœããã§ã¯ããã©ã°ã€ã³ãçµäºã§ããããã«ããããã«ãESCããŒãšBackspaceããŒã«å¯Ÿå¿ããããŒããŒãã€ãã³ããã€ã³ã¿ãŒã»ããããŸãã ç¹°ãè¿ãã«ãªããŸãããonActionã¡ãœãããåã¯ã©ã¹ã§ãªãŒããŒã©ã€ããããå Žåããã©ã°ã€ã³ã«ã¯ãã¿ã¹ã¯ãããŒãžã£ãŒãªã©ã®éæ¿ãªæ段ã«é Œããã«çµäºã§ããã³ãŒããå¿ èŠã§ãã
泚ïŒæŽæ°ãšã®æ¯èŒã«ãããããããactionãã©ã¡ãŒã¿ãŒã¯å®éã«ã¯ActionãŠãŒãã£ãªãã£ãŒã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã
32ïŒdoModalïŒïŒã¡ãœããã¯ãäœæããã€ã³ã¿ãŒãã§ãŒã¹ãç»é¢ã«è¡šç€ºããŸãã ãã®ã¡ãœããã¯ãTkinter.Tkã®mainloopïŒïŒãŸãã¯QDialogã®exec_ïŒïŒã«äŒŒãŠããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãcloseïŒïŒã¡ãœãããåŒã³åºããããŸã§è¡šç€ºãããŸãã
doModalïŒïŒã«å ããŠãshowïŒïŒã䜿çšã§ããŸãã ãã®å Žåããã©ã°ã€ã³ã®å®è¡äžãŸãã¯closeïŒïŒãåŒã³åºããããŸã§ãã€ã³ã¿ãŒãã§ã€ã¹ã衚瀺ãããŸãã showïŒïŒã䜿çšããå Žåãã€ãã³ãã«ãŒãã®æ§æã¯å®å šã«ããã°ã©ããŒã«å§ããããŸãã
34ïŒä»äºã®çµããã«ã¯ã©ã¹ã€ã³ã¹ã¿ã³ã¹ãåé€ããçç±ã¯æ£çŽãªãšããããããŸããã ããã¯å ¬åŒã®WiKiã®äŸã§èŠãŸããã
ãã¹ãŠãæ£ããè¡ãããŠããå Žåã¯ã衚瀺ãããã¯ãã§ã
ãããåçã§ãã

åæããŸãããããŸãé åçãªå æ¯ã§ã¯ãããŸããã åè¿°ã®ããã«ãWindowã¯ã©ã¹ã«ã¯é»ãäžéæãªèæ¯ããããŸãã ãã®ããã次ã®äŸã§ã¯ãããã€ãã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãè¿œå ããã ãã§ãªããã€ã³ã¿ãŒãã§ã€ã¹ããããã«è£ 食ããããšããŸãã
奜å¥å¿ã®ããã«ãWindowDialogããç¶æ¿ããŠã¿ãŠãã ããã ãã®ãªãã·ã§ã³ã䜿çšãããšãã©ãã«ãXBMCã€ã³ã¿ãŒãã§ã€ã¹ã®äžéšã«è¡šç€ºãããŸãã
Readyãã©ã°ã€ã³ãHello worldïŒãã¯ããã¡ãããããŠã³ããŒãã§ããŸã ã ã¡ãã¥ãŒãã·ã¹ãã ã>ãã¢ããªã³ã>ãZIPãã¡ã€ã«ããã€ã³ã¹ããŒã«ããããã©ã°ã€ã³ãã€ã³ã¹ããŒã«ã§ããããšãæãåºãããŠãã ããã ãã¹ãŠã®æ°ãããã©ã°ã€ã³ã¯ããŠãŒã¶ãŒèšå®ãã©ã«ããŒã®\ã¢ããªã³ãã©ã«ããŒã«ã€ã³ã¹ããŒã«ãããŸãã Windowsã§ã¯ãããã¯éåžžïŒ AppDataïŒ \ XBMCãLinuxã§ã¯$ HOME / .xbmcã§ãã
ãããã«
ç¬èªã®ã€ã³ã¿ãŒãã§ãŒã¹ãåããXBMCã®ãã©ã°ã€ã³ã®äœæã«å°å¿µããèšäºã®ããŒãIã§ã¯ããã©ã°ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ã®åºæ¬çãªèŠçŽ ãæ€èšããç°¡åãªäŸã瀺ããŸããã
次ã®ããŒãã§ã¯ããã€ã¢ãã°ã«ã€ããŠèª¬æããããå°ãè€éãªäŸãæããŠãç»åã䜿çšããŠã€ã³ã¿ãŒãã§ã€ã¹ãè£ é£Ÿããã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãäœæããäŸã瀺ããŸãã
å°ãå ã«èµ°ããã人ã¯ãäžèšã®ã³ã³ãããŒã«ã瀺ããã®ãã©ã°ã€ã³ãããŠã³ããŒãã§ããŸãã äžèšã®ã³ã³ãããŒã«ã®äŸãšãšãã«ã¹ã¯ãªãŒã³ã·ã§ãããæ®ãããã®ã¯åœŒããã§ããã ãã©ã°ã€ã³ã¯ãç§ãæžãããã€ã¯ããã¬ãŒã ã¯ãŒã¯ã䜿çšããŸããããã«ã€ããŠã¯ããŒãIIIã§èª¬æããäºå®ã§ãããçµéšè±å¯ãªæ é€å£«ã¯ç°¡åã«ç解ã§ãããšæããŸãã
PSããã€ãã®ãã€ããŒãªä¿®æ£ãšè¿œå ãè¡ããŸããã
PPS onCloseã¡ãœããã«é¢ããæ å ±ãä¿®æ£ããŸããã
ç¶ç¶
ç¬èªã®ã€ã³ã¿ãŒãã§ãŒã¹ãåããXBMCçšã®ãã©ã°ã€ã³ãäœæããŠããŸãïŒããŒãII-ãã€ã¢ãã°ãšè£ 食 ã