def __init__(self, worker, client): super(Lit, self).__init__() self.worker = worker self.client = client from go import Go from run import Run #from recent import Recent #from iciba import Iciba #from f import F #lit = Lit([Go(), Run(), Recent(), Iciba()]) plugins = [ Go(worker=worker, client=client), Run(worker=worker, client=client) ] lay = QVBoxLayout() # spacing of search box lay.setSpacing(0) lay.setMargin(0) self.inp = Input(self.act, self) self.inp.textChanged.connect(self._try_query) self.completer = Suggest(self.inp) #self.inp.setCompleter(self.completer) self.completer.activated[QModelIndex].connect(self.select) lay.addWidget(self.inp) self.setLayout(lay) self._install_plugins(plugins) self.setWindowFlags( Qt.FramelessWindowHint | Qt.Popup | Qt.WindowStaysOnTopHint ) self.setWindowTitle('lit') self.mutex = QMutex() self.jobs = []
data = {} rest_name = "" while True: rest_name = input() if (rest_name == "quit"): break rest = Restaurant(rest_name, user_city) res_id = rest.getRestaurantId() try: data[res_id] += 1 except: data[res_id] = 1 user.set_Data(data) #user.set_Data({'18424988': 1, '17317233': 1, '17317873': 1, '17317935': 1, '17317476': 1, '17317260': 1, '17318108': 1, '17317942': 1}) suggestor = Suggest() print("What type of restaurant suggestion would you like?") print("For a familiar suggestion, enter 1") print("For a less suggestion, enter 2") print("For a new suggestion, enter 2") choice = input() if (choice == 1): print(suggestor.familiar(user)) if (choice == 2): print(suggestor.less_familiar(user)) if (choice == 3): print(suggestor.completelynew(user)) else: print("Invalid Input")
""" A simple Desserts flask app. """ import flask import os from flask.views import MethodView from index import Index from suggest import Suggest from view import View from recipe import Recipe app = flask.Flask(__name__) # our Flask app #index uses GET method app.add_url_rule('/', view_func=Index.as_view('index'), methods=['GET']) #sign uses GET and POST methods app.add_url_rule('/suggest/', view_func=Suggest.as_view('suggest'), methods=['GET', 'POST']) #view file uses GET method to fetch and display the list app.add_url_rule('/view/', view_func=View.as_view('view'), methods=['GET']) #recipe uses both get and post app.add_url_rule('/recipe/', view_func=Recipe.as_view('recipe'), methods=['GET', 'POST']) #Deployed at port 5000 if __name__ == '__main__': app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 5000)))
class Lit(QWidget): def __init__(self, worker, client): super(Lit, self).__init__() self.worker = worker self.client = client from go import Go from run import Run #from recent import Recent #from iciba import Iciba #from f import F #lit = Lit([Go(), Run(), Recent(), Iciba()]) plugins = [ Go(worker=worker, client=client), Run(worker=worker, client=client) ] lay = QVBoxLayout() # spacing of search box lay.setSpacing(0) lay.setMargin(0) self.inp = Input(self.act, self) self.inp.textChanged.connect(self._try_query) self.completer = Suggest(self.inp) #self.inp.setCompleter(self.completer) self.completer.activated[QModelIndex].connect(self.select) lay.addWidget(self.inp) self.setLayout(lay) self._install_plugins(plugins) self.setWindowFlags( Qt.FramelessWindowHint | Qt.Popup | Qt.WindowStaysOnTopHint ) self.setWindowTitle('lit') self.mutex = QMutex() self.jobs = [] #sema = Semaphore(0) #self.sema = sema #self.event_listener = EventListener(sema) #self.event_listener.start() #self.event_processor = EventProcessor(sema) #self.event_processor.fire.connect(self.toggle_visibility) #self.event_processor.start() #qApp.installEventFilter(self) #ctypes.windll.user32.SetWinEventHook( #win32con.EVENT_SYSTEM_FOREGROUND, #win32con.EVENT_SYSTEM_FOREGROUND , #0, #self.WinEventProcCallback, 0, 0, #win32con.WINEVENT_OUTOFCONTEXT | win32con.WINEVENT_SKIPOWNPROCESS); #def WinEventProcCallback(self, hWinEventHook, dwEvent, hwnd, idObject, idChild, dwEventThread, dwmsEventTime): #print('aaa') @property def super(self): return super(Lit, self) #def keyPressEvent(self, e): #if e.key() == Qt.Key_Escape and not self.inp.text(): #e.accept() #self.close() #else: #e.ignore() def _move_to_center(self): desktop = QApplication.desktop() self.move( (desktop.width() - self.width()) // 2, (desktop.height() - self.height()) // 2 ) def resizeEvent(self, e): self._move_to_center() self.super.resizeEvent(e) def handle_hotkey(self): self.toggle_visibility() def toggle_visibility(self): logging.info("visible: {}".format(self.window_shown())) if self.window_shown(): self.hide_window() else: self.show_window() def window_shown(self): #return self.isVisible() and not (self.windowState() & Qt.WindowMinimized) return self.isVisible() def hide_window(self): #self.inp.setText('') #self.completer.popup().hide() #self.setWindowState(self.windowState() | Qt.WindowMinimized) self.hide() @Slot() def show_window(self): self.show() QTimer.singleShot(42, lambda: self.client.goto(hwnd(self))) def _install_plugins(self, plugins): self.plugins = {p.name: p for p in plugins} self.default_plugin = plugins[0] if self.plugins else None self._setup_plugins() def _setup_plugins(self): for p in self.plugins.values(): if hasattr(p, 'setup'): p.setup() def _teardown_plugins(self): for p in self.plugins.values(): if hasattr(p, 'teardown'): p.teardown() def _try_query(self, text): """Avoid line editor frozen when key continues pressed.""" QTimer.singleShot(0, lambda: self.query(text)) def _clean_jobs(self): """Stop unfinished jobs, remove finished jobs from job list.""" for job in self.jobs: job.try_stop() self.jobs = [job for job in self.jobs if not job.finished] def query(self, text): cmd, arg = parse_query(text) self.cmd = self.default_plugin.name if cmd is None else cmd if arg is None: self._reset_popup() else: plugin = None if cmd is None: if not self.default_plugin is None: plugin = self.default_plugin else: if cmd in self.plugins: plugin = self.plugins[cmd] if plugin: plugin.worker.clear() plugin.lit( arg, upper_bound=MAX_LIST_LENGTH, finished=self._try_popup ) def select(self, index): cmd = self.cmd #text = self.completer.completionModel().data(index, Qt.DisplayRole) self.hide_window() assert self.completer.content self.plugins[cmd].select(content=self.completer.content, index=index) def act(self): if self.cmd == 'exit': self._teardown_plugins() self.client.stop() QApplication.quit() if self.cmd in self.plugins: self.plugins[self.cmd].act() def _try_popup(self, content): # don't show popup if search box is hidden if self.isVisible(): QTimer.singleShot(0, lambda: self.popup(content)) def popup(self, content): with QMutexLocker(self.mutex): self.completer.complete(content) def _reset_popup(self): self.completer.reset() def showEvent(self, e): #QTimer.singleShot(0, lambda: windows.goto(hwnd(self))) self.inp.setFocus() if not self.completer.popuped: QTimer.singleShot(0, lambda: self._try_query(self.inp.text())) self.super.showEvent(e) def hideEvent(self, e): # block signals to avoid trigger completer update state = self.inp.blockSignals(True) try: self.inp.setText('') finally: self.inp.blockSignals(state) if self.completer.popuped: self.completer.hide_popup() self.super.hideEvent(e) def closeEvent(self, e): logging.info('closing') self.super.closeEvent(e)