예제 #1
0
파일: lit.py 프로젝트: kazarin1alex/lit
    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 = []
예제 #2
0
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")
예제 #3
0
"""
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)))
예제 #4
0
파일: lit.py 프로젝트: kazarin1alex/lit
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)