navigation draft
This commit is contained in:
		
							parent
							
								
									c796a03661
								
							
						
					
					
						commit
						cb6883c3f0
					
				
							
								
								
									
										2
									
								
								Core.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Core.py
									
									
									
									
									
								
							@ -1608,7 +1608,7 @@ class Core:
 | 
			
		||||
 | 
			
		||||
    def searchWindow(self, params={}):
 | 
			
		||||
        import searchwindow
 | 
			
		||||
        searchwindow.main(params)
 | 
			
		||||
        searchwindow.main()
 | 
			
		||||
 | 
			
		||||
    def showFilesList(self, filesList, params={}):
 | 
			
		||||
        get = params.get
 | 
			
		||||
 | 
			
		||||
@ -809,6 +809,7 @@ def localize(text):
 | 
			
		||||
            'Play (from start)':'Lejátszás (az elejétől)',
 | 
			
		||||
        },
 | 
			
		||||
        'ru': {
 | 
			
		||||
            'Torrenter Search Window': 'Окно Поиска Torrenter',
 | 
			
		||||
            'Cancel': 'Отмена',
 | 
			
		||||
            'Clear History': 'Очистить Историю',
 | 
			
		||||
            'Play (with seek)': 'Играть (перемотка)',
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										184
									
								
								searchwindow.py
									
									
									
									
									
								
							
							
						
						
									
										184
									
								
								searchwindow.py
									
									
									
									
									
								
							@ -46,32 +46,39 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
    contentList = []
 | 
			
		||||
    searchersList = []
 | 
			
		||||
    addtime = None
 | 
			
		||||
    right_buttons_count = 6
 | 
			
		||||
    right_buttons_count = 7
 | 
			
		||||
    last_right_buttons_count = 0
 | 
			
		||||
    last_link = None
 | 
			
		||||
    last_query = None
 | 
			
		||||
    last_action = None
 | 
			
		||||
    last_top_button = None
 | 
			
		||||
    last_right_button = None
 | 
			
		||||
    last_listing_mode = None
 | 
			
		||||
    count = 0
 | 
			
		||||
    navi = {
 | 
			
		||||
        'last_top_button'   : 4,
 | 
			
		||||
        'last_right_button' : 1,
 | 
			
		||||
        'right_menu'        : [],
 | 
			
		||||
        'top_menu'          : [],
 | 
			
		||||
        'route':[{'mode':'close', 'params':{}, 'last_listing_item': 0}]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    icon = __root__ + '/icons/searchwindow/%s.png'
 | 
			
		||||
    icon_tc = __root__ + '/icons/searchwindow/%s' + getTorrentClientIcon()
 | 
			
		||||
 | 
			
		||||
    def __init__(self, title="", s_param={}):
 | 
			
		||||
        super(SearchWindow, self).__init__(title)
 | 
			
		||||
    def __init__(self, params = None):
 | 
			
		||||
        super(SearchWindow, self).__init__(self.localize('Torrenter Search Window'))
 | 
			
		||||
        self.setGeometry(1280, 720, 9, 16)
 | 
			
		||||
        self.set_controls()
 | 
			
		||||
        self.connect_controls()
 | 
			
		||||
        if s_param:
 | 
			
		||||
            self.search(s_param=s_param)
 | 
			
		||||
        if params:
 | 
			
		||||
            self.search(params)
 | 
			
		||||
        else:
 | 
			
		||||
            if __settings__.getSetting('debug') == 'true':
 | 
			
		||||
                #self.downloadstatus()
 | 
			
		||||
                self.watched()
 | 
			
		||||
            else:
 | 
			
		||||
                self.history()
 | 
			
		||||
            self.history()
 | 
			
		||||
 | 
			
		||||
        if self.listing.size():
 | 
			
		||||
            self.setFocus(self.listing)
 | 
			
		||||
        else:
 | 
			
		||||
            self.setFocus(self.input_search)
 | 
			
		||||
 | 
			
		||||
    def set_controls(self):
 | 
			
		||||
        if not __settings__.getSetting('debug') == 'true':
 | 
			
		||||
@ -112,6 +119,10 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
                                    _itemTextYOffset=0, _itemHeight=60, _space=0, _alignmentY=4)
 | 
			
		||||
        self.placeControl(self.listing, 1, 0, 8, 14)
 | 
			
		||||
 | 
			
		||||
        self.navi['top_menu'] = [self.button_downloadstatus, self.button_torrentclient, self.button_keyboard,
 | 
			
		||||
                                 self.input_search, self.button_search, self.button_history, self.button_watched,
 | 
			
		||||
                                 self.button_controlcenter]
 | 
			
		||||
 | 
			
		||||
        # Right menu
 | 
			
		||||
        self.right_menu()
 | 
			
		||||
 | 
			
		||||
@ -124,21 +135,21 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
        self.connect(self.button_downloadstatus, self.downloadstatus)
 | 
			
		||||
        self.connect(self.button_watched, self.watched)
 | 
			
		||||
 | 
			
		||||
        self.connect(pyxbmct.ACTION_NAV_BACK, self.close)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_NAV_BACK, self.navi_back)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_PREVIOUS_MENU, self.navi_back)
 | 
			
		||||
 | 
			
		||||
        self.connect(pyxbmct.ACTION_PREVIOUS_MENU, self.close)
 | 
			
		||||
        self.connect(ACTION_MOUSE_RIGHT_CLICK, self.context)
 | 
			
		||||
        self.connect(ACTION_CONTEXT_MENU, self.context)
 | 
			
		||||
        self.connect(ACTION_SHOW_OSD, self.context)
 | 
			
		||||
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_LEFT, self.right_menu_set_label)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_RIGHT, self.right_menu_set_label)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_UP, self.right_menu_set_label)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_DOWN, self.right_menu_set_label)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_LEFT, self.navi_update)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_RIGHT, self.navi_update)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_UP, self.navi_update)
 | 
			
		||||
        self.connect(pyxbmct.ACTION_MOVE_DOWN, self.navi_update)
 | 
			
		||||
 | 
			
		||||
    def set_navigation(self):
 | 
			
		||||
        # Top menu
 | 
			
		||||
        self.button_downloadstatus.setNavigation(self.listing, self.listing, self.last_right_button,
 | 
			
		||||
                                                 self.button_torrentclient)
 | 
			
		||||
        self.button_torrentclient.setNavigation(self.listing, self.listing, self.button_downloadstatus,
 | 
			
		||||
                                                self.button_keyboard)
 | 
			
		||||
        self.button_keyboard.setNavigation(self.listing, self.listing, self.button_torrentclient, self.input_search)
 | 
			
		||||
@ -146,47 +157,102 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
        self.button_search.setNavigation(self.listing, self.listing, self.input_search, self.button_history)
 | 
			
		||||
        self.button_history.setNavigation(self.listing, self.listing, self.button_search, self.button_watched)
 | 
			
		||||
        self.button_watched.setNavigation(self.listing, self.listing, self.button_history, self.button_controlcenter)
 | 
			
		||||
 | 
			
		||||
        self.update_navigation()
 | 
			
		||||
 | 
			
		||||
    def update_navigation(self):
 | 
			
		||||
        self.last_top_button = self.navi['top_menu'][self.navi['last_top_button'] - 1]
 | 
			
		||||
        self.last_right_button = self.navi['right_menu'][self.navi['last_right_button'] - 1]
 | 
			
		||||
 | 
			
		||||
        # Top menu
 | 
			
		||||
        self.button_downloadstatus.setNavigation(self.listing, self.listing, self.last_right_button,
 | 
			
		||||
                                                 self.button_torrentclient)
 | 
			
		||||
        self.button_controlcenter.setNavigation(self.listing, self.listing, self.button_watched, self.last_right_button)
 | 
			
		||||
 | 
			
		||||
        # Main
 | 
			
		||||
        self.listing.setNavigation(self.input_search, self.input_search, self.button_downloadstatus,
 | 
			
		||||
        self.listing.setNavigation(self.last_top_button, self.input_search, self.button_downloadstatus,
 | 
			
		||||
                                   self.last_right_button)
 | 
			
		||||
 | 
			
		||||
        if self.listing.size():
 | 
			
		||||
            self.setFocus(self.listing)
 | 
			
		||||
        else:
 | 
			
		||||
            self.setFocus(self.input_search)
 | 
			
		||||
 | 
			
		||||
    def setAnimation(self, control):
 | 
			
		||||
        # Set fade animation for all add-on window controls
 | 
			
		||||
        control.setAnimations([('WindowOpen', 'effect=fade start=0 end=100 time=500',),
 | 
			
		||||
                               ('WindowClose', 'effect=fade start=100 end=0 time=500',)])
 | 
			
		||||
 | 
			
		||||
    def search(self, addtime=None, s_param={}):
 | 
			
		||||
        self.reconnect(pyxbmct.ACTION_NAV_BACK, self.history)
 | 
			
		||||
        self.right_menu('search')
 | 
			
		||||
    def navi_back(self):
 | 
			
		||||
        log('navi_back init')
 | 
			
		||||
        self.navi['route'].pop(-1)
 | 
			
		||||
        route = self.navi['route'][-1]
 | 
			
		||||
        action = getattr(self, route['mode'])
 | 
			
		||||
        if route['params']:
 | 
			
		||||
            action(route['params'])
 | 
			
		||||
        else:
 | 
			
		||||
            action()
 | 
			
		||||
        self.setFocus(self.listing)
 | 
			
		||||
        log('route[last_listing_item]: '+str(route['last_listing_item']))
 | 
			
		||||
        if route['last_listing_item'] > 0:
 | 
			
		||||
            self.listing.selectItem(route['last_listing_item'])
 | 
			
		||||
 | 
			
		||||
    def navi_update(self):
 | 
			
		||||
        log('navi_update init')
 | 
			
		||||
        focused_control = self.getFocus()
 | 
			
		||||
        debug('start navi_update' + str(focused_control))
 | 
			
		||||
        log(str(self.navi['route']))
 | 
			
		||||
 | 
			
		||||
        if focused_control == self.listing:
 | 
			
		||||
            item_index = self.listing.getSelectedPosition()
 | 
			
		||||
            self.navi['route'][-1]['last_listing_item'] = item_index
 | 
			
		||||
            debug('self.listing getSelectedPosition ' + str(item_index))
 | 
			
		||||
 | 
			
		||||
            item = self.listing.getSelectedItem()
 | 
			
		||||
            params = json.loads(item.getfilename())
 | 
			
		||||
            mode = params.get('mode')
 | 
			
		||||
            log('navi_update:' + str(mode))
 | 
			
		||||
            if self.last_listing_mode != mode:
 | 
			
		||||
                self.last_listing_mode = mode
 | 
			
		||||
                debug('set_menulist navi_update:' + str(mode))
 | 
			
		||||
                self.set_menulist(mode)
 | 
			
		||||
 | 
			
		||||
        elif self.getFocus() in self.navi['top_menu']:
 | 
			
		||||
            self.navi['last_top_button'] = self.navi['top_menu'].index(focused_control) + 1
 | 
			
		||||
            self.update_navigation()
 | 
			
		||||
 | 
			
		||||
        elif self.getFocus() in self.navi['right_menu']:
 | 
			
		||||
            self.navi['last_right_button'] = self.navi['right_menu'].index(focused_control) + 1
 | 
			
		||||
            self.update_navigation()
 | 
			
		||||
 | 
			
		||||
    def navi_route(self, mode, params = None, last_listing_item = 0):
 | 
			
		||||
        self.navi['route'].append({'mode': mode,
 | 
			
		||||
                                   'params': {} if not params else params,
 | 
			
		||||
                                   'last_listing_item': last_listing_item})
 | 
			
		||||
        self.right_menu(mode)
 | 
			
		||||
        self.listing.reset()
 | 
			
		||||
        if s_param:
 | 
			
		||||
            if s_param.get('url'):
 | 
			
		||||
                search = urllib.unquote_plus(s_param.get('url'))
 | 
			
		||||
                external = s_param.get("return_name")
 | 
			
		||||
 | 
			
		||||
    def search(self, params = None):
 | 
			
		||||
        self.navi_route('search', params)
 | 
			
		||||
 | 
			
		||||
        get = params.get
 | 
			
		||||
        addtime = get('addtime')
 | 
			
		||||
        query = None
 | 
			
		||||
 | 
			
		||||
        if params:
 | 
			
		||||
            if get('url'):
 | 
			
		||||
                search = urllib.unquote_plus(get('url'))
 | 
			
		||||
                external = get("return_name")
 | 
			
		||||
                if external:
 | 
			
		||||
                    searcher = 'landing from : %s ' % str(external)
 | 
			
		||||
                else:
 | 
			
		||||
                    searcher = ''
 | 
			
		||||
                self.setWindowTitle(title='%s %s' % ('Torrenter Search Window', searcher))
 | 
			
		||||
                if s_param.get('showKey') == 'true':
 | 
			
		||||
                if get('showKey') == 'true':
 | 
			
		||||
                    self.input_search.setText(search)
 | 
			
		||||
                    query = self.input_search.getText()
 | 
			
		||||
                    self.setFocus(self.input_search)
 | 
			
		||||
                    return
 | 
			
		||||
                else:
 | 
			
		||||
                    self.input_search.setText(search)
 | 
			
		||||
                    query = search
 | 
			
		||||
                    # self.setFocus(self.listing)
 | 
			
		||||
            else:
 | 
			
		||||
                query = self.input_search.getText()
 | 
			
		||||
                self.history()
 | 
			
		||||
        else:
 | 
			
		||||
            query = self.input_search.getText()
 | 
			
		||||
        log('Search query: ' + str(query))
 | 
			
		||||
 | 
			
		||||
        if not addtime and query == self.last_query:
 | 
			
		||||
@ -207,12 +273,10 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
                for (order, seeds, leechers, size, title, link, image) in self.filesList:
 | 
			
		||||
                    title = titleMake(seeds, leechers, size, title)
 | 
			
		||||
                    self.drawItem(title, {'mode': 'search_item', 'filename': link}, image)
 | 
			
		||||
                    self.setFocus(self.listing)
 | 
			
		||||
                self.setFocus(self.listing)
 | 
			
		||||
 | 
			
		||||
    def history(self):
 | 
			
		||||
        self.right_menu('history')
 | 
			
		||||
        self.listing.reset()
 | 
			
		||||
        self.reconnect(pyxbmct.ACTION_NAV_BACK, self.close)
 | 
			
		||||
    def history(self, params = None):
 | 
			
		||||
        self.navi_route('history')
 | 
			
		||||
 | 
			
		||||
        db = HistoryDB()
 | 
			
		||||
        items = db.get_all()
 | 
			
		||||
@ -251,14 +315,12 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
    def watched(self):
 | 
			
		||||
        self.right_menu('watched')
 | 
			
		||||
        self.listing.reset()
 | 
			
		||||
        self.reconnect(pyxbmct.ACTION_NAV_BACK, self.history)
 | 
			
		||||
 | 
			
		||||
        db = WatchedHistoryDB()
 | 
			
		||||
 | 
			
		||||
        items = db.get_all()
 | 
			
		||||
        log('[WatchedHistory]: items - '+str(items))
 | 
			
		||||
        if items:
 | 
			
		||||
            ListString = 'XBMC.RunPlugin(%s)' % (sys.argv[0] + '?action=%s&action2=%s&%s=%s')
 | 
			
		||||
            for addtime, filename, foldername, path, url, seek, length, ind, size in items:
 | 
			
		||||
                seek = int(seek) if int(seek) > 3*60 else 0
 | 
			
		||||
                watchedPercent = int((float(seek) / float(length)) * 100)
 | 
			
		||||
@ -279,7 +341,6 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
                link = {'mode': 'watched_item', 'addtime': str(addtime)}
 | 
			
		||||
                self.drawItem(title, link, image=img)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def watched_action(self, action, addtime):
 | 
			
		||||
        db = WatchedHistoryDB()
 | 
			
		||||
 | 
			
		||||
@ -290,7 +351,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
 | 
			
		||||
        if action == 'open':
 | 
			
		||||
            filename, foldername, path, url, seek, length, ind = db.get('filename, foldername, path, url, seek, length, ind', 'addtime', str(addtime))
 | 
			
		||||
            self.reconnect(pyxbmct.ACTION_NAV_BACK, self.watched)
 | 
			
		||||
            #self.reconnect(pyxbmct.ACTION_NAV_BACK, self.watched)
 | 
			
		||||
            self.open_torrent(path.encode('utf-8'))
 | 
			
		||||
 | 
			
		||||
        if action == 'playnoseek' or action == 'playwithseek':
 | 
			
		||||
@ -327,7 +388,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
 | 
			
		||||
        if not hash:
 | 
			
		||||
            self.right_menu('browser')
 | 
			
		||||
            self.reconnect(pyxbmct.ACTION_NAV_BACK, self.history)
 | 
			
		||||
            #self.reconnect(pyxbmct.ACTION_NAV_BACK, self.history)
 | 
			
		||||
            for data in DownloadList:
 | 
			
		||||
                status = " "
 | 
			
		||||
                img = ''
 | 
			
		||||
@ -350,7 +411,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
                    {"title": title, "image": img, "argv": {'mode': 'browser_item', 'hash': str(data['id'])}})
 | 
			
		||||
        elif not tdir:
 | 
			
		||||
            self.right_menu('browser_subfolder')
 | 
			
		||||
            self.reconnect(pyxbmct.ACTION_NAV_BACK, self.browser)
 | 
			
		||||
            #self.reconnect(pyxbmct.ACTION_NAV_BACK, self.browser)
 | 
			
		||||
            self.drawItem('..', {'mode': 'browser_moveup'}, isFolder=True)
 | 
			
		||||
            dllist = sorted(Download().listfiles(hash), key=lambda x: x[0])
 | 
			
		||||
            for name, percent, ind, size in dllist:
 | 
			
		||||
@ -482,7 +543,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
    def downloadstatus(self):
 | 
			
		||||
        self.listing.reset()
 | 
			
		||||
        self.right_menu('downloadstatus')
 | 
			
		||||
        self.reconnect(pyxbmct.ACTION_NAV_BACK, self.history)
 | 
			
		||||
        #self.reconnect(pyxbmct.ACTION_NAV_BACK, self.history)
 | 
			
		||||
 | 
			
		||||
        db = DownloadDB()
 | 
			
		||||
        items = db.get_all()
 | 
			
		||||
@ -615,7 +676,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
            self.close()
 | 
			
		||||
        else:
 | 
			
		||||
            self.right_menu('file_browser')
 | 
			
		||||
            self.reconnect(pyxbmct.ACTION_NAV_BACK, self.downloadstatus)
 | 
			
		||||
            #self.reconnect(pyxbmct.ACTION_NAV_BACK, self.downloadstatus)
 | 
			
		||||
 | 
			
		||||
            self.drawItem('..', {'mode': 'moveup', 'path': path,
 | 
			
		||||
                                 'tdir': os.path.dirname(tdir)}, isFolder=True)
 | 
			
		||||
@ -733,6 +794,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
            self.removeControls(remove_list)
 | 
			
		||||
 | 
			
		||||
        label_list = self.get_menulist(mode)
 | 
			
		||||
        self.navi['right_menu'] = []
 | 
			
		||||
 | 
			
		||||
        self.right_buttons_count = len(label_list)
 | 
			
		||||
        button_num_list = range(1, self.right_buttons_count + 1)
 | 
			
		||||
@ -744,9 +806,10 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
            self.placeControl(button, index, 14, 1, 2)
 | 
			
		||||
 | 
			
		||||
        # Navigation
 | 
			
		||||
        self.last_right_button = self.button_right1
 | 
			
		||||
        self.navi['last_right_button'] = 1
 | 
			
		||||
        for index in button_num_list:
 | 
			
		||||
            button = getattr(self, "button_right" + str(index))
 | 
			
		||||
            self.navi['right_menu'].append(button)
 | 
			
		||||
 | 
			
		||||
            if self.right_buttons_count == 1:
 | 
			
		||||
                button.setNavigation(self.button_controlcenter,
 | 
			
		||||
@ -768,18 +831,6 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
        self.set_menulist(mode)
 | 
			
		||||
        self.set_navigation()
 | 
			
		||||
 | 
			
		||||
    def right_menu_set_label(self):
 | 
			
		||||
        debug('start right_menu_set_label' + str(self.getFocus()))
 | 
			
		||||
        if self.getFocus() == self.listing:
 | 
			
		||||
            item = self.listing.getSelectedItem()
 | 
			
		||||
            params = json.loads(item.getfilename())
 | 
			
		||||
            mode = params.get('mode')
 | 
			
		||||
            debug('right_menu_set_label:' + str(mode))
 | 
			
		||||
            if self.last_listing_mode != mode:
 | 
			
		||||
                self.last_listing_mode = mode
 | 
			
		||||
                debug('set_menulist right_menu_set_label:' + str(mode))
 | 
			
		||||
                self.set_menulist(mode)
 | 
			
		||||
 | 
			
		||||
    def set_menulist(self, mode):
 | 
			
		||||
        self.count += 1
 | 
			
		||||
        label_list = self.get_menulist(mode)
 | 
			
		||||
@ -840,7 +891,7 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
        tdir = params.get('tdir')
 | 
			
		||||
        self.listing.reset()
 | 
			
		||||
        if mode in ['search_item', 'torrent_subfolder']:
 | 
			
		||||
            self.reconnect(pyxbmct.ACTION_NAV_BACK, self.search)
 | 
			
		||||
            #self.reconnect(pyxbmct.ACTION_NAV_BACK, self.search)
 | 
			
		||||
            self.open_torrent(filename, tdir)
 | 
			
		||||
        elif mode == 'torrent_moveup':
 | 
			
		||||
            self.search()
 | 
			
		||||
@ -852,7 +903,8 @@ class SearchWindow(pyxbmct.AddonDialogWindow):
 | 
			
		||||
        elif mode == 'history_search_item':
 | 
			
		||||
            addtime = params.get('addtime')
 | 
			
		||||
            self.input_search.setText(filename)
 | 
			
		||||
            self.search(addtime)
 | 
			
		||||
            params = {'addtime': addtime}
 | 
			
		||||
            self.search(params)
 | 
			
		||||
        elif mode in ['browser_item', 'browser_subfolder', 'browser_moveup']:
 | 
			
		||||
            self.browser(hash, tdir)
 | 
			
		||||
        elif mode == 'browser_file':
 | 
			
		||||
@ -1118,8 +1170,8 @@ def dlstat_titleMake(title, second):
 | 
			
		||||
    return title
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main(params={}):
 | 
			
		||||
    dialog = SearchWindow("Torrenter Search Window", params)
 | 
			
		||||
def main(params = None):
 | 
			
		||||
    dialog = SearchWindow(params)
 | 
			
		||||
    dialog.doModal()
 | 
			
		||||
    del dialog  # You need to delete your instance when it is no longer needed
 | 
			
		||||
    # because underlying xbmcgui classes are not grabage-collected.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user