def __init__(self): console.show_activity('Loading...') self.docsetFolder = 'Docsets' self.setup() self.dbmanager = DBManager.DBManager() self.theme_manager = ThemeManager.ThemeManager('Themes') self.docset_manager = DocsetManager.DocsetManager( 'Images/icons', 'Images/types', ServerManager.ServerManager()) self.cheatsheet_manager = CheatsheetManager.CheatsheetManager( ServerManager.ServerManager(), 'Images/icons', 'Images/types') self.usercontributed_manager = UserContributedManager.UserContributedManager( ServerManager.ServerManager(), 'Images/icons', 'Images/types') self.stackoverflow_manager = StackOverflowManager.StackOverflowManager( ServerManager.ServerManager(), 'Images/icons', 'Images/types') self.webSearchManager = WebSearchManager.WebSearchManager( 'Images/types') self.main_view = self.setup_main_view() self.navigation_view = self.setup_navigation_view() self.docset_management_view = self.setup_docset_management_view() self.cheatsheet_management_view = self.setup_cheatsheetmanagement_view( ) self.usercontributed_management_view = self.setup_usercontributedmanagement_view( ) self.stackoverflow_management_view = self.setup_stackoverflowmanagement_view( ) self.settings_view = self.setup_settings_view() self.docsetView = self.setup_docset_view() self.docsetIndexView = self.setup_docsetindex_view() self.docsetWebView = self.setup_docsetweb_view() UISearchControllerWrapper.Theme_manager = self.theme_manager console.hide_activity()
def installUserContributed(self, filename, usercontributed, refresh_main_view): extract_location = os.path.join( self.userContributedFolder, '_' + usercontributed.name.replace('/', '_'), '_' + usercontributed.version.replace('/', '_')) usercontributed.status = 'Preparing to install: This might take a while.' tar = tarfile.open(filename, 'r:gz') n = [name for name in tar.getnames() if '/' not in name][0] m = os.path.join(extract_location, n) tar.extractall(path=extract_location, members=self.track_progress(tar, usercontributed, len(tar.getmembers()))) tar.close() encodedImg = usercontributed.imageData dbManager = DBManager.DBManager() otherAtt = {} otherAtt['author'] = usercontributed.authorName otherAtt['hasVersions'] = usercontributed.hasVersions dbManager.DocsetInstalled(usercontributed.name, m, 'usercontributed', str(encodedImg), usercontributed.version, str(otherAtt)) os.remove(filename) if usercontributed in self.downloading: self.downloading.remove(usercontributed) self.indexUserContributed(usercontributed, refresh_main_view, m)
def deleteStackOverflow(self, stackoverflow, post_action): but = console.alert('Are you sure?', 'Would you like to delete the docset, ' + stackoverflow.name, 'Ok') if but == 1: dbmanager = DBManager.DBManager() dbmanager.DocsetRemoved(stackoverflow.id) shutil.rmtree(stackoverflow.path) stackoverflow.status = 'online' post_action() stackoverflow.path = None
def deleteDocset(self, docset, post_action): but = console.alert( 'Are you sure?', 'Would you like to delete the docset, ' + docset['name'] + '\n This may take a while.', 'Ok') if but == 1: dbmanager = DBManager.DBManager() dbmanager.DocsetRemoved(docset['id']) shutil.rmtree(docset['path']) docset['status'] = 'online' docset['path'] = None post_action()
def __getDownloadedDocsets(self): dbManager = DBManager.DBManager() t = dbManager.InstalledDocsetsByType('standard') ds = [] for d in t: aa = {} aa['name'] = d[1] aa['id'] = d[0] aa['path'] = os.path.join(os.path.abspath('.'), d[2]) aa['image'] = self.__getIconWithName(d[4]) ds.append(aa) return ds
def deleteUserContributed(self, usercontributed, post_action): but = console.alert( 'Are you sure?', 'Would you like to delete the docset, ' + usercontributed.name, 'Ok') if but == 1: dbmanager = DBManager.DBManager() dbmanager.DocsetRemoved(usercontributed.id) shutil.rmtree(usercontributed.path) usercontributed.status = 'online' post_action() usercontributed.path = None
def deleteCheatsheet(self, cheatsheet, post_action): but = console.alert( 'Are you sure?', 'Would you like to delete the cheatsheet, ' + cheatsheet.name, 'Ok') if but == 1: dbmanager = DBManager.DBManager() dbmanager.DocsetRemoved(cheatsheet.id) shutil.rmtree(cheatsheet.path) cheatsheet.status = 'online' post_action() cheatsheet.path = None
def __getDownloadedCheatsheets(self): ds = [] dbManager = DBManager.DBManager() t = dbManager.InstalledDocsetsByType('cheatsheet') ds = [] for d in t: aa = Cheatsheet() aa.name = d[1] aa.id = d[0] aa.path = os.path.join(os.path.abspath('.'), d[2]) aa.image = self.__getIconWithName(d[4]) ds.append(aa) return ds
def deleteDocset(self, docset, post_action, confirm=True): but = 1 if confirm: but = console.alert( 'Are you sure?', 'Would you like to delete the docset, ' + docset.name, 'Ok') if but == 1: dbmanager = DBManager.DBManager() dbmanager.DocsetRemoved(docset.id) shutil.rmtree(docset.path) docset.status = 'Not Installed' if not post_action == None: post_action() docset.path = None
def __getDownloadedStackOverflows(self): ds = [] dbManager = DBManager.DBManager() t = dbManager.InstalledDocsetsByType('stackoverflow') ds = [] for d in t: aa = StackOverflow() aa.name = d[1] aa.id = d[0] aa.path = os.path.join(os.path.abspath('.'),d[2]) aa.image = self.__getIconWithName(d[4]) aa.type = d[6] ds.append(aa) return ds
def __getInstalledDocsets(self): ds = [] dbManager = DBManager.DBManager() t = dbManager.InstalledDocsetsByType('transfer') ds = [] for d in t: aa = Transfer() aa.name = d[1] aa.id = d[0] aa.path = os.path.join(os.path.abspath('.'), d[2]) aa.image = self.__getIconWithName(d[4]) aa.status = 'Installed' # aa.version = d[5] ds.append(aa) return ds
def deleteDocset(self, docset, post_action, confirm=True): but = 1 if confirm: but = console.alert( 'Are you sure?', 'Would you like to delete the docset, ' + docset['name'] + '\n This may take a while.', 'Ok') if but == 1: p = os.path.join(self.docsetFolder, '_' + docset['name'].replace('/', '_'), '_' + docset['version'].replace('/', '_')) dbmanager = DBManager.DBManager() dbmanager.DocsetRemoved(docset['id']) shutil.rmtree(p) docset['status'] = 'online' docset['path'] = None if not post_action == None: post_action()
def installCheatsheet(self, filename, cheatsheet, refresh_main_view): extract_location = self.cheatsheetFolder cheatsheet.status = 'Preparing to install: This might take a while.' tar = tarfile.open(filename, 'r:gz') n = [name for name in tar.getnames() if '/' not in name][0] m = os.path.join(self.cheatsheetFolder, n) tar.extractall(path=extract_location, members=self.track_progress(tar, cheatsheet, len(tar.getmembers()))) tar.close() os.remove(filename) dbManager = DBManager.DBManager() dbManager.DocsetInstalled(cheatsheet.name, m, 'cheatsheet', 'cheatsheet', cheatsheet.version) if cheatsheet in self.downloading: self.downloading.remove(cheatsheet) self.indexCheatsheet(cheatsheet, refresh_main_view, m)
def installStackOverflow(self, filename, stackoverflow, refresh_main_view): extract_location = self.stackoverflowFolder stackoverflow.status = 'Preparing to install: This might take a while.' tar = tarfile.open(filename, 'r:gz') n = [name for name in tar.getnames() if '/' not in name][0] m = os.path.join(self.stackoverflowFolder, n) tar.extractall(path=extract_location, members = self.track_progress(tar, stackoverflow, len(tar.getmembers()))) tar.close() os.remove(filename) dbManager = DBManager.DBManager() icon = 'soonline' if stackoverflow.type == 'Offline': icon = 'sooffline' dbManager.DocsetInstalled(stackoverflow.name+stackoverflow.type, m, 'stackoverflow', icon, stackoverflow.version, stackoverflow.type) if stackoverflow in self.downloading: self.downloading.remove(stackoverflow) self.indexStackOverflow(stackoverflow, refresh_main_view, m)
def installDocset(self, filename, docset, refresh_main_view): extract_location = os.path.join( self.docsetFolder, '_' + docset['name'].replace('/', '_'), '_' + docset['version'].replace('/', '_')) docset['status'] = 'Preparing to install: This might take a while.' tar = tarfile.open(filename, 'r:gz') n = [name for name in tar.getnames() if '/' not in name][0] m = os.path.join(extract_location, n) tar.extractall(path=extract_location, members=self.track_progress(tar, docset, len(tar.getmembers()))) tar.close() os.remove(filename) dbManager = DBManager.DBManager() dbManager.DocsetInstalled(docset['name'], m, 'standard', docset['iconName'], docset['version']) self.indexDocset(docset, refresh_main_view, m)
def __getDownloadedDocsets(self): dbManager = DBManager.DBManager() t = dbManager.InstalledDocsetsByType('standard') ds = [] feeds = self.__getDocsetFeeds() for d in t: aa = {} aa['name'] = d[1] aa['id'] = d[0] aa['path'] = os.path.join(os.path.abspath('.'), d[2]) aa['image'] = self.__getIconWithName(d[4]) aa['version'] = d[5] aa['hasVersions'] = False for f in feeds: if f['name'] == aa['name']: aa['hasVersions'] = f['hasVersions'] ds.append(aa) return ds
def __getDownloadedUserContributed(self): dbManager = DBManager.DBManager() t = dbManager.InstalledDocsetsByType('usercontributed') ds = [] for d in t: aa = UserContributed() aa.name = d[1] aa.id = d[0] aa.path = os.path.join(os.path.abspath('.'), d[2]) #aa.image = self.__getLocalIcon(d[2]) imgData = str(d[4]) if not imgData == '': imgdata = base64.standard_b64decode(imgData) aa.image = ui.Image.from_data(imgdata) else: aa.image = self.__getIconWithName('Other') aa.authorName = d[6] ds.append(aa) return ds
def __init__(self): console.show_activity('Loading...') self.docsetFolder = 'Docsets' self.setup() self.dbmanager = DBManager.DBManager() self.docset_manager = DocsetManager.DocsetManager( 'Images/icons', 'Images/types', ServerManager.ServerManager()) self.cheatsheet_manager = CheatsheetManager.CheatsheetManager( ServerManager.ServerManager(), 'Images/icons', 'Images/types') self.usercontributed_manager = UserContributedManager.UserContributedManager( ServerManager.ServerManager(), 'Images/icons', 'Images/types') self.main_view = self.setup_main_view() self.navigation_view = self.setup_navigation_view() self.docset_management_view = self.setup_docset_management_view() self.cheatsheet_management_view = self.setup_cheatsheetmanagement_view( ) self.usercontributed_management_view = self.setup_usercontributedmanagement_view( ) self.settings_view = self.setup_settings_view() console.hide_activity()
def __installDocset(self, docset, refresh): extract_location = self.docsetFolder docset.stats = 'Preparing to install: This might take a while.' refresh() zip = ZipFile(docset.zipPath, mode='r') ll = [name for name in zip.namelist() if '.docset' in name] if len(ll) > 0: n = ll[0] m = os.path.join(self.docsetFolder, n) docset.stats = 'Preparing to extract' refresh() l = zip.infolist() zip.extractall(path=extract_location, members=self.track_progress(l, docset, len(l), refresh)) zip.close() os.remove(docset.zipPath) plistpath = os.path.join(m, self.plistPath) name = docset.name image = '' with open(plistpath, 'rb') as f: pp = plistlib.load(f) if 'CFBundleName' in pp.keys(): name = pp['CFBundleName'] if 'CFBundleIdentifier' in pp.keys(): image = pp['CFBundleIdentifier'] dbManager = DBManager.DBManager() dbManager.DocsetInstalled(name, m, 'transfer', image, 0.0) if docset in self.__installingDocsets: self.__installingDocsets.remove(docset) docset.status = 'Cleaning up...' refresh() cleanup_path = os.path.join(self.docsetFolder, '__MACOSX') if os.path.exists(cleanup_path): shutil.rmtree(cleanup_path) docset.status = 'Installed' refresh() else: raise Exception('Unknown docset structure')
def __getDownloadedUserContributed(self): dbManager = DBManager.DBManager() t = dbManager.InstalledDocsetsByType('usercontributed') ds = [] for d in t: aa = UserContributed() aa.name = d[1] aa.id = d[0] aa.path = os.path.join(os.path.abspath('.'), d[2]) imgData = str(d[4]) if not imgData == '': imgdata = base64.standard_b64decode(imgData) aa.image = ui.Image.from_data(imgdata) else: aa.image = self.__getIconWithName('Other') od = yaml.load(d[6]) if type(od) is type({}): aa.authorName = od['author'] aa.hasVersions = od['hasVersions'] else: aa.authorName = od aa.version = d[5] ds.append(aa) return ds
def installDocset(self, filename, docset, refresh_main_view): extract_location = self.docsetFolder if docset['name'] == 'Drupal 7': extract_location = os.path.join(self.docsetFolder, 'drupal7install') elif docset['name'] == 'Drupal 8': extract_location = os.path.join(self.docsetFolder, 'drupal8install') elif docset['name'] == 'Java SE6': extract_location = os.path.join(self.docsetFolder, 'javase6install') elif docset['name'] == 'Java SE7': extract_location = os.path.join(self.docsetFolder, 'javase7install') elif docset['name'] == 'Java SE8': extract_location = os.path.join(self.docsetFolder, 'javase8install') elif docset['name'] == 'Lua 5.1': extract_location = os.path.join(self.docsetFolder, 'lua51install') elif docset['name'] == 'Lua 5.2': extract_location = os.path.join(self.docsetFolder, 'lua52install') elif docset['name'] == 'Lua 5.3': extract_location = os.path.join(self.docsetFolder, 'lua53install') elif docset['name'] == 'Qt 4': extract_location = os.path.join(self.docsetFolder, 'qt4install') elif docset['name'] == 'Qt 5': extract_location = os.path.join(self.docsetFolder, 'qt5install') elif docset['name'] == 'Ruby': extract_location = os.path.join(self.docsetFolder, 'rubyinstall') elif docset['name'] == 'Ruby 2': extract_location = os.path.join(self.docsetFolder, 'ruby2install') elif docset['name'] == 'Ruby on Rails 3': extract_location = os.path.join(self.docsetFolder, 'rubyonrails3install') elif docset['name'] == 'Ruby on Rails 4': extract_location = os.path.join(self.docsetFolder, 'rubyonrails4install') elif docset['name'] == 'Ruby on Rails 5': extract_location = os.path.join(self.docsetFolder, 'rubyonrails5install') elif docset['name'] == 'Zend Framework 1': extract_location = os.path.join(self.docsetFolder, 'zendframework1install') elif docset['name'] == 'Zend Framework 2': extract_location = os.path.join(self.docsetFolder, 'zendfrmework2install') elif docset['name'] == 'Zend Framework 3': extract_location = os.path.join(self.docsetFolder, 'zendframework3install') docset['status'] = 'Preparing to install: This might take a while.' tar = tarfile.open(filename, 'r:gz') n = [name for name in tar.getnames() if '/' not in name][0] m = os.path.join(self.docsetFolder, n) tar.extractall(path=extract_location, members=self.track_progress(tar, docset, len(tar.getmembers()))) tar.close() os.remove(filename) if docset['name'] == 'Drupal 7': p = os.path.join(extract_location, 'Drupal.docset') n = 'Drupal7.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Drupal 8': p = os.path.join(extract_location, 'Drupal.docset') n = 'Drupal8.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Java SE6': p = os.path.join(extract_location, 'Java.docset') n = 'JavaSE6.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Java SE7': p = os.path.join(extract_location, 'Java.docset') n = 'JavaSE7.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Java SE8': p = os.path.join(extract_location, 'Java.docset') n = 'JavaSE8.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Lua 5.1': p = os.path.join(extract_location, 'Lua.docset') n = 'Lua51.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Lua 5.2': p = os.path.join(extract_location, 'Lua.docset') n = 'Lua52.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Lua 5.3': p = os.path.join(extract_location, 'Lua.docset') n = 'Lua53.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Qt 4': p = os.path.join(extract_location, 'Qt.docset') n = 'Qt4.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Qt 5': p = os.path.join(extract_location, 'Qt.docset') n = 'Qt5.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Ruby': p = os.path.join(extract_location, 'Ruby.docset') n = 'Ruby1.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Ruby 2': p = os.path.join(extract_location, 'Ruby.docset') n = 'Ruby2.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Ruby on Rails 3': p = os.path.join(extract_location, 'Ruby on Rails.docset') n = 'Ruby on Rails3.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Ruby on Rails 4': p = os.path.join(extract_location, 'Ruby on Rails.docset') n = 'Ruby on Rails4.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Ruby on Rails 5': p = os.path.join(extract_location, 'Ruby on Rails.docset') n = 'Ruby on Rails5.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Zend Framework 1': p = os.path.join(extract_location, 'Zend_Framework.docset') n = 'Zend_Framework1.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Zend Framework 2': p = os.path.join(extract_location, 'Zend_Framework.docset') n = 'Zend_Framework2.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) elif docset['name'] == 'Zend Framework 3': p = os.path.join(extract_location, 'Zend_Framework.docset') n = 'Zend_Framework3.docset' m = os.path.join(self.docsetFolder, n) b = os.path.join(extract_location, n) os.rename(p, b) shutil.move(b, m) shutil.rmtree(extract_location) dbManager = DBManager.DBManager() dbManager.DocsetInstalled(docset['name'], m, 'standard', docset['iconName'], '1.0') self.indexDocset(docset, refresh_main_view, m)