Exemple #1
0
    def NV_extract(self):
        NList = []
        VList = []
        for i in range(1, self.s.nrows):
            print i
            noenc = self.delete_unnecc(i)
            lan = Language(noenc)
            if len(lan.str) > 4000:
                continue
            word = lan.getMorpheme()
            tmpNoun = u""
            NN = 0
            for j, line in enumerate(lan.getMorpheme()):
                if line[1] == u"動詞":
                    if line[7] == u"する":
                        VList.append(word[j - 1][0] + line[7])
                    else:
                        VList.append(line[7])

                if line[1] == u"名詞" and j != len(word) - 1:
                    if word[j + 1][1] == u"名詞":
                        tmpNoun += line[0]
                        NN += 1
                        if NN > 3:
                            tmpNoun = u""
                            NN = 0
                            continue
                    elif word[j + 1][7] != u"する":
                        NList.append(tmpNoun + line[0])
                        tmpNoun = u""
                        NN = 0
        return NList, VList
Exemple #2
0
class Nation(Entity):
    def __init__(self, world, color, capital):
        self.world = world
        self.color = color
        self.capital = capital
        self.settlements = [capital]

        self.language = Language()
        self.name = self.language.genName()
        self.leader = self.genLeader()

    def borders(self):
        border_tiles = []
        owned_tiles = []
        for settlement in self.settlements:
            x = settlement.x
            y = settlement.y
            owned_tiles += (x, y)
            for tile in adjacent(x, y):
                if tile not in border_tiles and tile not in owned_tiles:
                    border_tiles += tile
        for tile in border_tiles:
            if tile in owned_tiles:
                border_tiles.remove(tile)
        return border_tiles

    def genLeader(self):
        return Leader(self.language.genName())

    def action(self):
        pass

    def neighbors(self):
        pass
class Messenger():
    def __init__(self):
        print("Messenger Running...")
        self.debug = True
        self.username = "******"
        self.password = "******"
        # Poll frequency (in seconds)
        self.timer = 8
        self.language = Language()
    
    # Extracts SMS message from HTML using BeautifulSoup
    def extractsms(self, htmlsms):
        msgitems = []
        tree = bs4.BeautifulSoup(htmlsms, features="xml")
        conversations = tree.findAll("div",  attrs={"id": True}, recursive=False)
        for conversation in conversations:
            rows = conversation.findAll(attrs={"class": "gc-message-sms-row"})
            for row in rows:
                msgitem = {"id": conversation["id"]}
                spans = row.findAll("span", attrs={"class": True}, recursive=False)
                for span in spans:
                    cl = span["class"].replace("gc-message-sms-", '')
                    msgitem[cl] = (" ".join(span.findAll(text=True))).strip()
                msgitems.append(msgitem)
        return msgitems

    # Runs the Google Voice server and listens for SMS messages
    def run(self):
        i = 0
        # Create new Google Voice instance and login
        voice = Voice()
        voice.login(self.username, self.password)
        while True:
            i += 1
            voice.sms()
            for msg in self.extractsms(voice.sms.html):
                if msg:
                    if self.debug:
                        print(msg)
                    # Write user number and message to data file for webserver
                    caller = msg["from"].replace("+", "").replace(":", "")
                    print(msg["time"] + '\t' + caller + '\t' + msg["text"], file=open("data.tsv", "a"))
                    # Parse and format message using Language class 
                    replyRaw = self.language.reply(msg["text"])
                    replyFormatted = self.language.format(replyRaw)
                    print(type(replyFormatted))
                    print(msg["time"] + '\t' + "17408720211" + '\t' + replyFormatted, file=open("data.tsv", "a"))
                    replyFormatted = replyFormatted.replace("\t", "\n")
                    # Send reply message with patient information back to user
                    voice.send_sms(caller, str(replyFormatted))

                    # Delete previously read messages from Google Voice
                    for message in voice.sms().messages:
                        if message.isRead:
                            message.delete()

            if self.debug:
                print('Idle Counter: ' + str(i))
            time.sleep(self.timer)
        voice.logout()
Exemple #4
0
    def setListItems(self):
        self.DefaultLanguage = "English"
        self.CurrentLanguage = xbmc.getLanguage()
        self.FolderLanguage = self.settings["LanguagePath"]
        self.DefaultFolderLanguage = "special://xbmc/language/"
        if not os.path.exists(xbmc.translatePath(self.FolderLanguage)):
            print "Folder language not exists! '%s'" % self.FolderLanguage
            self.FolderLanguage = self.DefaultFolderLanguage

        if not self.FolderLanguage.startswith("special"):
            for folder in ["profile", "home", "xbmc"]:
                special = "special://%s/" % folder
                self.FolderLanguage = self.FolderLanguage.replace(
                    xbmc.translatePath(special), special)

        if (xbmc.translatePath("special://skin/")
                in xbmc.translatePath(self.FolderLanguage)):
            self.FolderLanguage = "special://skin/language/"
        self.FolderLanguage = self.FolderLanguage.replace("\\",
                                                          "/").rstrip("/")

        self.setContainerProperties()
        # get languages source
        self.language = Language(self)
        self.listitems = self.language.listitems
Exemple #5
0
def main():
    languages = Language()
    requirements = Requirement(languages.language_dict)
    while True:
        language_name = languages.set_language_name()
        languages.write_dict_language()
        while True:
            requirements.set_requirement_name(language_name)
            requirements.write_requirements_name()
            print('Czy chcesz wyjść? T/N')
            c = input()
            if c == 'T' or c == 't':
                break
            elif c == 'N' or c == 'n':
                continue
            else:
                print('Coś poszło nie tak.')
        print('Czy chcesz wyjść? T/N')
        c = input()
        if c == 'T' or c == 't':
            break
        elif c == 'N' or c == 'n':
            continue
        else:
            print('Coś poszło nie tak.')
 def __init__(self):
     print("Messenger Running...")
     self.debug = True
     self.username = "******"
     self.password = "******"
     # Poll frequency (in seconds)
     self.timer = 8
     self.language = Language()
Exemple #7
0
    def __init__(self, world, color, capital):
        self.world = world
        self.color = color
        self.capital = capital
        self.settlements = [capital]

        self.language = Language()
        self.name = self.language.genName()
        self.leader = self.genLeader()
Exemple #8
0
class Finnish(Language):
    def __init__(self, n_len):
        self.core = Language(path, n_len)

    def calculate_n_grams(self):
        for file in files:
            self.core.open_and_remove_bad_chars(file)

    def create_dictionary(self):
        self.core.create_dictionary()

    def get_sorted_dict(self):
        return self.core.get_sorted_dict()

    def get_dict(self):
        return self.core.get_dict()

    def get_ngram_vec(self):
        return self.core.get_ngram_vec()

    def calculate_cos_norm(self, input_ngram):
        return self.core.calculate_cos_norm(input_ngram)

    def share_dataset(self):
        return self.core.share_dataset()
Exemple #9
0
    def extract_terms(self, case_df):
        Noun_comp = u""
        wakachi = u""
        preR_id = 1
        terms = []
        documents = []
        for (Report_id, frame) in zip(
                case_df[u"報告書_id"], case_df.
                loc[:,
                    [u"主体", u"起点", u"対象", u"状況", u"着点", u"手段", u"関係", u"動詞"]].
                values):
            #if Report_id>100:break
            if preR_id != Report_id:
                documents.append(wakachi)
                print Report_id
                #print wakachi
                wakachi = u""
            if frame[7][-2:] != u"する":
                wakachi += frame[7] + u" "
                if frame[7] not in terms: terms.append(frame[7])
            else:
                wakachi += frame[7][:-2] + u" "
                if frame[7][:-2] not in terms: terms.append(frame[7][:-2])
            for i in range(0, 7):
                if frame[i] == u' ':
                    continue
                Lan = Language(frame[i])
                outList = Lan.getMorpheme()
                Mor_1 = [outList[i][1] for i in range(len(outList))]
                # if (u"接続詞" in Mor_1) | (u"記号" in Mor_1):
                #    continue
                for mi, Mor in enumerate(outList):
                    if Mor_1[mi] == u"名詞" and Mor[2] != u"形容動詞語幹":
                        Noun_comp += Mor[0]
                        if mi < len(Mor_1) - 1:
                            if Mor_1[mi + 1] != u"名詞":
                                wakachi += Noun_comp + u" "
                                if Noun_comp not in terms:
                                    terms.append(Noun_comp)
                                Noun_comp = u""
                        else:
                            wakachi += Noun_comp + u" "
                            if Noun_comp not in terms: terms.append(Noun_comp)
                            Noun_comp = u""
                    elif Mor_1[mi] != u"助詞" and Mor_1[mi] != u"助動詞" and Mor[
                            5] != u"サ変・スル" and Mor[2] != u"接尾":
                        wakachi += Mor[0] + u" "
                        if Mor[0] not in terms: terms.append(Mor[0])

            preR_id = Report_id
        documents.append(wakachi)
        return terms, documents
Exemple #10
0
    def read_file(self, filename):
        print("Reading lines...")

        # Read the file and split into lines
        lines = open('data/%s.txt' % (filename), encoding='utf-8').\
            read().strip().split('\n')

        # Split every line into pairs and normalize
        pairs = [[seq_utils.normalizeString(s) for s in l.split('\t')][:2]
                 for l in lines]

        pairs = self.filterPairs(pairs)

        source = Language()
        target = Language()

        for pair in pairs:
            if self.is_valid_pair(pair[0], pair[1]):
                source.addSentence(pair[0])
                target.addSentence(pair[1])

        print(f'Source language counted words: {source.n_words}')
        print(f'Target language counted words: {target.n_words}')

        return source, target, pairs
Exemple #11
0
 def test_isVerbSubjunctive(self):  
     self.h = Verb(Language() )     
     
     self.assertEqual(self.h.isVerbSubjunctive("xoxo"), False)        
     self.assertEqual(self.h.isVerbSubjunctive("xoxox"), False)        
     self.assertEqual(self.h.isVerbSubjunctive("oxooxo"), True)        
     self.assertEqual(self.h.isVerbSubjunctive("xxoxoxs"), False)  
     self.assertEqual(self.h.isVerbSubjunctive("oxoxoxo"), True)   
Exemple #12
0
def tableGUI():
    langPath=loadGUI()
    try:
        lang = Language(langPath)
    except Exception:
        showMessage("The Chosen file in not a language file , try again")
        
    
    def submit():
        Action(lang, int(numOfCluster.get()),(stream.get(),addDB.get(),cluster.get()))

    window = Tk()
    
    window.geometry("600x300")
    window.resizable(0, 0)
    window.title("NAC - Loaded News Articles")
    mylabel = Label(window, text="Chosen language path :")
    mylabel.place(x=0, y=0, height=20, width=600)
    #Test
    mylabel = Label(window, text="Current stored articles : {0}".format(len(lang.getArticles())))
    mylabel.place(x=0, y=40, height=20, width=600)
    Label(window, text=langPath).place(x=0, y=20, height=20, width=600)


    stream = IntVar()
    Checkbutton(window, text="Stream", variable=stream).place(x=0, y=60, height=20, width=600)
    addDB = IntVar()
    Checkbutton(window, text="Add To DataBase", variable=addDB).place(x=0, y=80, height=20, width=600)
    cluster = IntVar()
    Checkbutton(window, text="Cluster", variable=cluster).place(x=0, y=100, height=20, width=600)


    Label(window, text="Number of clusters:").place(x=0, y=180, height=20, width=600)

    numOfCluster = Entry(window)
    numOfCluster.insert(10,"2")

    numOfCluster.place(x=0, y=200, height=20, width=600)

    
    Button(window, text='Quit', command=window.destroy).place(x=0, y=270, height=20, width=600)
    Button(window, text='Submit', command=submit).place(x=0, y=250, height=20, width=600)


    window.mainloop()
Exemple #13
0
 def __init__(self):
     self.language=Language()
     self.box = Grid2D(50, 10)
     self.dictionary = Random_Word_Generator()
     self.dictionary.load_dictionary()
     self.game = Game(self.box,self.language)
     self.game.choose_generator(self.dictionary)
     self.music=Music()
     self.game.connect_music(self.music)
Exemple #14
0
def main():
    with open('datas/ZCloseness_centralities_results.txt', 'a') as result_file:
        result_file.write('Language | original cc | random cc | p_value \n')
        result_file.flush()
        for language_file in os.listdir('datas')[:5]:

            result_file.write(' {}'.format(language_file.split('_')[0]))
            result_file.flush()
            current_language = Language(language_file)

            original_graph = current_language.graph()

            #run the centrality calculation
            monte_carlo_centrality(original_graph,
                                   150,
                                   'switching',
                                   20,
                                   'decrease',
                                   result_file=result_file)
Exemple #15
0
    def __init__(self, filename, erease=False, Language=Language()):
        if filename is None:
            logging.warning("Fichier de sauvegarde du dictionnaire invalide")
            sys.exit()

        self._filename = filename
        logging.info("loading dictionary")
        self._dico = AlphabeticTree(filename, erease)
        logging.info("dictionary loaded")
        self._Language = Language
Exemple #16
0
 def to_class(self, Noun, Verb):
     if Noun in self.Nclass.keys():
         Nclasslist = self.Nclass[Noun]
     else:
         lan = Language(Noun)
         word = lan.getMorpheme()
         Noun_tail = word[len(word)-1][0]
         if Noun_tail in self.Nclass.keys():
             Nclasslist = self.Nclass[Noun_tail]
         else:
             Nclasslist = [u"未登録"]
     if Verb in self.Vclass.keys():
         Vclasslist = self.Vclass[Verb]
     else:
         Vclasslist =[u"未登録"]
         #print Verb
     NV = []
     for NVclass in itertools.product(Nclasslist,Vclasslist):
         NV.append(NVclass)
     return NV
Exemple #17
0
def descr_from_content(content, var_name, language=Language('python')):
    """
    Returns the description of the vector var_name with respect to the content

    Parameters
    ----------
    content : str
        Content of the string ("xyz", "xy", "z", ...) (no rpY)
    var_name : str
        Name of the vector you want to describe
    language : Language.Language
        Language of the generated docstring (used for vector subscription)

        Defaults to Language('python')

    Returns
    -------

    description : str
        Description of the vector

    Examples
    --------

    >>> my_description = descr_from_content("xyz", "Xd")
    >>> print(my_description)
    This is a (3 x 1) numpy.ndarray where :
        - Xd[0] is the x coordinate of Xd,
        - Xd[1] is the y coordinate of Xd,
        - Xd[2] is the z coordinate of Xd

    >>> from Language import Language
    >>> my_description = descr_from_content("xz", "Xd", Language('Julia'))
    >>> print(my_description)
    This is a (2 x 1) Matrix where :
        - Xd[1] is the x coordinate of Xd,
        - Xd[2] is the z coordinate of Xd

    >>> from Language import Language
    >>> my_description = descr_from_content("z", "Xd", Language('MATLAB'))
    >>> print(my_description)
    This is a (1 x 1) double where :
        - Xd(1) is the z coordinate of Xd
    """

    descr = f"This is a ({len(content)} x 1) {language.matrix_type} where :\n"

    for i, c in enumerate(content):
        qp = language.slice_mat(var_name, i, None, None, None)
        coma = ",\n" if i < len(content) - 1 else ""
        descr += f"    - {qp} is the {c} coordinate of {var_name}{coma}"

    return descr
Exemple #18
0
 def isValidLanguage(self):  #If user input is in json
     import json
     f = open('Translation.json')
     json_dict = json.load(f)
     self.answer = True
     while self.answer == True:
         translationLanguage = Language.getLanguage(self)
         if translationLanguage in json_dict:
             return translationLanguage
         elif translationLanguage not in json_dict:
             print("You put an invalid language!\n")
             self.answer = True
Exemple #19
0
 def __init__(self):
     threading.Thread.__init__(self)
     self.datafile = open("w_report.csv", 'r')
     self.key = "http://api.openweathermap.org/data/2.5/weather?q=Kanchipuram&APPID=d500d89c5c31bf5d4e165dbaa8024895"
     self.last_update = []
     self.L = Language()
     self.Structure = nx.Graph()
     self.Structure.add_edges_from([('weather', 'description'),
                                    ('weather', 'haze'), ('wind', 'deg'),
                                    ('wind', 'speed'), ('main', 'humidity'),
                                    ('main', 'temp'), ('main', 'pressure'),
                                    ('main', 'temp_max'),
                                    ('main', 'temp_min'), ('obj', 'dt'),
                                    ('obj', 'main'), ('obj', 'weather'),
                                    ('obj', 'wind')])
     self.Structure.add_edges_from([('sys', 'sunrise'), ('sys', 'sunset'),
                                    ('obj', 'sys'), ('obj', 'visibility'),
                                    ('obj', 'coord'), ('obj', 'clouds'),
                                    ('clouds', 'all'), ('obj', 'name'),
                                    ('weather', 'id'), ('weather', 'main')])
     nx.draw_networkx(self.Structure, show_labels=True)
Exemple #20
0
 def isValidNumber(self, u, i):  #if user input is valid
     answer = True
     while True:
         try:
             self.userInput = Language.getNumber(self)
             if self.userInput >= u and self.userInput <= i:
                 return self.userInput
             else:
                 print(
                     "You put an invalid input! Input should be 1 to 5:\n")
                 answer = True
         except ValueError:
             print("You put an invalid number!!\n ")
             True
Exemple #21
0
def robot_dof_descr(robot, var_name, language=Language('python')):
    """
    Returns  the  description  of  the  vector  containing  all the degrees of
    freedom of the robot.

    Parameters
    ----------
    robot : robots.Robot
        Robot you want to describe
    var_name : str
        Name of the vector variable
    language : Language.Language
        Language of the generated docstring (used for vector subscription)

        Defaults to Language('python')

    Returns
    -------

    description : str
        Description of the vector

    Examples
    --------

    >>> from robots import RobotURDF
    >>> from URDF import URDF
    >>> from Language import Language
    >>> rob = RobotURDF(URDF("./Examples/example_0.urdf"))
    >>> print(robot_dof_descr(rob, 'q', Language("julia")))
    This is a (3 x 1) Matrix containing the state of all the joints where :
            - q[1] = theta_joint1 :
                  Rotation value (in radians) around the joint1 joint axis.
            - q[2] = theta_joint2 :
                  Rotation value (in radians) around the joint2 joint axis.
            - q[3] = theta_joint3 :
                  Rotation value (in radians) around the joint3 joint axis.

    """

    params = get_parameters(robot.dof)

    descrq = (f"This is a ({len(robot.dof)} x 1) {language.matrix_type} "
              f"containing the state of all the joints where :\n")
    for i_p, param in enumerate(params):
        qp = language.slice_mat(var_name, i_p, None, None, None)
        descrq += f'        - {qp} = {param["name"]}'
        descrq += f' :\n              {param["description"]}\n'
    return descrq[:-1]
Exemple #22
0
class Heuristic:
    def __init__(self):
        self.lObj = Language()
        self.vObj = Verb(self.lObj)
        self.pObj = Preposition(self.lObj)
        self.nObj = Numbers(self.vObj, self.pObj)
        
    def classify(self, word):
        try:
            self.lObj.isInLanguage(word)
            
            if self.nObj.isNumber(word):
                value = self.nObj.getValue(word)
                return {'word':word, 'type': Constant.HERUGLON_NUMBER_PRETTY, 'number': value } if self.nObj.isPretty(value) else {'word':word, 'type': Constant.HERUGLON_NUMBER, 'number': value}
            if self.vObj.isVerbSubjunctive(word):
                return {'word':word, 'type':Constant.HERUGLON_VERB_SUBJUNCTIVE}
            if self.vObj.isVerb(word):
                return {'word':word, 'type':Constant.HERUGLON_VERB}
            if self.pObj.isPreposition(word):
                return {'word':word, 'type':Constant.HERUGLON_PREPOSITION}
            
            return {'word':word, 'type':Constant.HERUGLON_UNKNOWN, 'error': "Unknown word" }
        except:
            return {'word':word, 'type':Constant.HERUGLON_UNKNOWN, 'error': sys.exc_info()[1] }
Exemple #23
0
    def setListItems( self ):
        self.DefaultLanguage = "English"
        self.CurrentLanguage = xbmc.getLanguage()
        self.FolderLanguage  = self.settings[ "LanguagePath" ]
        self.DefaultFolderLanguage = "special://xbmc/language/"
        if not os.path.exists( xbmc.translatePath( self.FolderLanguage ) ):
            print "Folder language not exists! '%s'" % self.FolderLanguage
            self.FolderLanguage = self.DefaultFolderLanguage

        if not self.FolderLanguage.startswith( "special" ):
            for folder in [ "profile", "home", "xbmc" ]:
                special = "special://%s/" % folder
                self.FolderLanguage = self.FolderLanguage.replace( xbmc.translatePath( special ), special )

        if ( xbmc.translatePath( "special://skin/" ) in xbmc.translatePath( self.FolderLanguage ) ):
            self.FolderLanguage = "special://skin/language/"
        self.FolderLanguage = self.FolderLanguage.replace( "\\", "/" ).rstrip( "/" )

        self.setContainerProperties()
        # get languages source
        self.language = Language( self )
        self.listitems = self.language.listitems
Exemple #24
0
            sys.getfilesystemencoding())))
        if sys.executable.endswith("portable.exe") or \
           sys.executable.endswith("portable_debug.exe"):
            os.environ['APPDATA'] = path
        return path

    this_module_path = os.path.dirname(unicode(__file__,
        sys.getfilesystemencoding()))

    return os.path.abspath(this_module_path)

os.chdir(os.path.abspath(project_path()))

from Language import Language

language_management = Language()
language_management.install_default_translation()

import glib
import shutil
import signal

import debugger
import logging
log = logging.getLogger('emesene')

import e3
#from e3 import msn
from e3 import dummy

try:
Exemple #25
0
    def setupUi(self, mainWindow):

        stylesheetFile = "Stylesheet.css"       #styling
        fh = open(stylesheetFile)
        qstr = str(fh.read())

        self.MainWindow = mainWindow            #assign mainwindow
        self.MainWindow.setStyleSheet(qstr)

        self.MainWindow.setObjectName("MainWindow")
        self.MainWindow.resize(1000, 650)

        #setup basic variables
        self.devices = []
        self.currentDevice = None
        self.setupLog()
        self.mainQueue = Queue()
        self.lang = Language(0)


        #fill mainwindow
        self.centralwidget = QtWidgets.QWidget(self.MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 90, 650))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("buttonBar")

        spacerItem = QtWidgets.QSpacerItem(20, 50, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
        self.verticalLayout.addItem(spacerItem)

        self.addADevice = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.addADevice.setObjectName("addADevice")
        self.addADevice.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.addADevice)

        self.Manual = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Manual.setObjectName("Manual")
        self.Manual.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Manual)

        self.Graphs = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Graphs.setObjectName("Graphs")
        self.Graphs.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Graphs)

        self.Settings = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Settings.setObjectName("Settings")
        self.Settings.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Settings)

        spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem1)

        self.Info = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Info.setObjectName("Info")
        self.Info.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Info)

        spacerItem2 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem2)

        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(90, 0, 910, 50))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")

        self.Logo = QtWidgets.QLabel(self.horizontalLayoutWidget)
        self.Logo.setEnabled(True)

        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.Logo.sizePolicy().hasHeightForWidth())

        self.Logo.setSizePolicy(sizePolicy)
        self.Logo.setMinimumSize(QtCore.QSize(0, 0))
        self.Logo.setMaximumSize(QtCore.QSize(250, 50))

        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.Logo.setFont(font)
        self.Logo.setAutoFillBackground(True)
        self.Logo.setFrameShape(QtWidgets.QFrame.Box)
        self.Logo.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Logo.setObjectName("Logo")
        pic = QPixmap('rsz_1aerosdev')
        self.Logo.setPixmap(pic)
        self.horizontalLayout_2.addWidget(self.Logo)

        spacerItem3 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem3)

        self.fSkyTemp = QtWidgets.QFrame(self.horizontalLayoutWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.fSkyTemp.sizePolicy().hasHeightForWidth())
        self.fSkyTemp.setSizePolicy(sizePolicy)
        self.fSkyTemp.setMinimumSize(QtCore.QSize(180, 100))
        self.fSkyTemp.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.fSkyTemp.setFrameShadow(QtWidgets.QFrame.Raised)
        self.fSkyTemp.setObjectName("fSkyTemp")

        self.Sky = QtWidgets.QLabel(self.fSkyTemp)
        self.Sky.setGeometry(QtCore.QRect(10, 20, 75, 13))
        self.Sky.setObjectName("Sky")

        self.TempUp = QtWidgets.QLabel(self.fSkyTemp)
        self.TempUp.setGeometry(QtCore.QRect(100, 20, 75, 13))

        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.TempUp.sizePolicy().hasHeightForWidth())

        self.TempUp.setSizePolicy(sizePolicy)
        self.TempUp.setMinimumSize(QtCore.QSize(60, 0))
        self.TempUp.setObjectName("TempUp")

        self.horizontalLayout_2.addWidget(self.fSkyTemp)

        spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem4)

        self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
        self.stackedWidget.setGeometry(QtCore.QRect(90, 50, 910, 600))
        # self.stackedWidget.setMinimumSize(QtCore.QSize(600, 600)) #400, 400
        # self.stackedWidget.move(100,100)
        # self.stackedWidget.setStyleSheet("background-color: black")

        # sets up maingrid and adds it to stacked widget
        self.page0 = QtWidgets.QWidget(self.MainWindow)
        self.mainGrid = MainGrid(self.page0, self.devices)
        self.stackedWidget.addWidget(self.mainGrid.page0)

        #sets up pages
        self.setupSettingsWindow()
        self.setupEnterDevice()
        self.setupGraphsWindow()
        self.setupManual()

        #sets starting page
        self.stackedWidget.setCurrentIndex(0)

        #binds functions to mainwindow buttons
        self.addADevice.clicked.connect(lambda: self.setIndex(2))
        self.Manual.clicked.connect(lambda: self.setIndex(4))
        self.Graphs.clicked.connect(lambda: self.setIndex(3))
        self.Settings.clicked.connect(lambda: self.setIndex(1))
        self.Info.clicked.connect(self.showInfo)
        QtCore.QMetaObject.connectSlotsByName(self.MainWindow)

        self.MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(0)
Exemple #26
0
class Translator( xbmcgui.WindowXML ):
    CONTROL_LIST_A = 50

    def __init__( self, *args, **kwargs ):
        self.RestartXBMC_ReloadLanguage = False
        self.IsModified = False
        self.googleTrans = False
        self.listitems = []

        self.Addon = Addon( AddonId )
        self._get_settings()

    def _get_settings( self ):
        self.settings = {}
        self.settings[ "LanguagePath" ] = self.Addon.getSetting( "LanguagePath" )

        self.settings[ "viewmode" ]     = int( self.Addon.getSetting( "viewmode" ) )
        self.settings[ "sortmethod" ]   = int( self.Addon.getSetting( "sortmethod" ) )
        self.settings[ "sortorder" ]    = int( self.Addon.getSetting( "sortorder" ) )
        self.settings[ "savefolderviews" ] = ( self.Addon.getSetting( "savefolderviews" ) == "true" )

    def setListItems( self ):
        self.DefaultLanguage = "English"
        self.CurrentLanguage = xbmc.getLanguage()
        self.FolderLanguage  = self.settings[ "LanguagePath" ]
        self.DefaultFolderLanguage = "special://xbmc/language/"
        if not os.path.exists( xbmc.translatePath( self.FolderLanguage ) ):
            print "Folder language not exists! '%s'" % self.FolderLanguage
            self.FolderLanguage = self.DefaultFolderLanguage

        if not self.FolderLanguage.startswith( "special" ):
            for folder in [ "profile", "home", "xbmc" ]:
                special = "special://%s/" % folder
                self.FolderLanguage = self.FolderLanguage.replace( xbmc.translatePath( special ), special )

        if ( xbmc.translatePath( "special://skin/" ) in xbmc.translatePath( self.FolderLanguage ) ):
            self.FolderLanguage = "special://skin/language/"
        self.FolderLanguage = self.FolderLanguage.replace( "\\", "/" ).rstrip( "/" )

        self.setContainerProperties()
        # get languages source
        self.language = Language( self )
        self.listitems = self.language.listitems

    def onInit( self ):
        xbmc.executebuiltin( "ActivateWindow(busydialog)" )
        self.setSortMethodControl()
        self.setContainer( setviewmode=self.settings[ "viewmode" ] )
        LOG( "notice", "initialized took %s", time_took( START_TIME ) )
        xbmc.executebuiltin( "Dialog.Close(busydialog)" )

    def setSortMethodControl( self ):
        label = ( 20316, 103 )[ self.settings[ "sortmethod" ] ]
        self.getControl( 13 ).setLabel( xbmc.getLocalizedString( label ) )

    def setContainerProperties( self ):
        self.setProperty( "IsModified", ( "", "Language file has been changed!" )[ self.IsModified ] )
        self.setProperty( "CurrentLanguage", self.CurrentLanguage )
        self.setProperty( "FolderLanguage", self.FolderLanguage )
        self.setProperty( "CurrentEnglishString", "" )
        self.Addon = Addon( AddonId )
        self.setProperty( "ExtraKeyboard_TopOrBottom", ( "top", "bottom" )[ int( self.Addon.getSetting( "ExtraKB" ) ) ] )

    def setContainer( self, filter="", SelectId="", setviewmode=None ):
        if setviewmode is not None:
            self.ContainerId = ( 50, 51 )[ setviewmode ]
            if setviewmode: xbmc.executebuiltin( "SendClick(2)" )
        else:
            self.ContainerId = ( 50, 51 )[ xbmc.getCondVisibility( "Control.IsVisible(51)" ) ]
        try:

            if not bool( self.listitems ):
                if self.IsModified:
                    # ask for save change
                    self._save_change()
                self.IsModified = False
                self.googleTrans = False
                self.getControl( self.ContainerId ).reset()
                self.setListItems()

            self.setContainerProperties()
            if self.listitems:
                selectitem = 0

                additems = []
                if not filter:
                    additems = self.listitems
                else:
                    for li in self.listitems:
                        if filter == "UnTranslated" and li.getProperty( "UnTranslated" ) == "false":
                            continue
                        if filter == "Translated" and li.getProperty( "IsModified" ) != "true":
                            continue
                        additems.append( li )

                if additems:
                    if self.settings[ "sortmethod" ]:
                        additems = sorted( additems, key=lambda li: normalize_string( li.getLabel(), True ) )
                    if self.settings[ "sortorder" ]:
                        additems = list( reversed( additems ) )
                    for count, li in enumerate( additems ):
                        if li.getProperty( "id" ) == SelectId:
                            selectitem = count

                # add listitems
                self.getControl( self.ContainerId ).reset()
                self.getControl( self.ContainerId ).addItems( additems )
                if additems: #self.getControl( self.ContainerId ).size():
                    self.getControl( self.ContainerId ).selectItem( selectitem )
                    self.setFocusId( self.ContainerId )

            # fixe view on xbox
            if UNDER_XBOX and setviewmode is not None:
                xbmc.executebuiltin( "Container.SetViewMode(%i)" % self.ContainerId )
                xbmc.sleep( 20 )
                self.setFocusId( self.ContainerId )
        except:
            print_exc()

    def onFocus( self, controlID ):
        pass

    def sendClick( self, controlID ):
        try: self.onClick( controlID )
        except: print_exc()

    def getTranslate( self, text, minimal=2 ):
        translated = ""
        if text:
            if ( len( text ) <= minimal ) or text.isdigit():
                translated = text
            else:
                country = self.Addon.getSetting( "country" )
                if country.lower() == "auto": country = self.CurrentLanguage
                pDialog = xbmcgui.DialogProgress()
                pDialog.create( "Google Translate", "English to %s" % country, text, "Please wait..." )
                try:
                    import LanguageTools
                    translated = LanguageTools.translate_text( text, country, "google" )
                except:
                    print_exc()
        self.googleTrans = False
        xbmc.executebuiltin( "Dialog.Close(progressdialog)" )
        return translated

    def onClick( self, controlID ):
        try:
            self.ContainerId = ( 50, 51 )[ xbmc.getCondVisibility( "Control.IsVisible(51)" ) ]
            if controlID == self.ContainerId:
                # get clicked listitem
                listitem = self.getControl( self.ContainerId ).getSelectedItem()
                # get position
                pos = int( listitem.getProperty( "Position" ) )
                # get id
                id = listitem.getProperty( "id" )
                if id:
                    CurrentEnglishString = fixe_line_return( listitem.getLabel2(), True )
                    
                    DefaultText = fixe_line_return( listitem.getLabel(), True )
                    old_text = DefaultText
                    if self.googleTrans: old_text = self.getTranslate( CurrentEnglishString )
                    old_text = old_text or DefaultText

                    if ( self.Addon.getSetting( "BoldKB" ) == "true" ):
                        CurrentEnglishString = "[B]%s[/B]" % CurrentEnglishString
                    self.setProperty( "CurrentEnglishString", CurrentEnglishString )
                    self.setProperty( "ShowCurrentEnglishString", "true" )
                    
                    kb = xbmc.Keyboard( old_text, self.CurrentLanguage + " (Enter desired string)", False )
                    kb.doModal()
                    if kb.isConfirmed():
                        new_text = kb.getText()
                        if new_text != DefaultText:
                            new_text = fixe_line_return( new_text )
                            self.listitems[ pos ].setLabel( new_text )
                            self.listitems[ pos ].setProperty( "IsModified", "true" )
                            self.setProperty( "IsModified", "Language file has been changed!" )
                            self.IsModified = True
                    self.setProperty( "ShowCurrentEnglishString", "" )

            # PAS TRES BON COMME FILTRE :(
            UnTranslated = self.getControl( 19 ).isSelected()
            Translated = self.getControl( 20 ).isSelected()
            Changed = self.getControl( 21 ).isSelected()
            filter = ( "", "UnTranslated" )[ UnTranslated ]
            filter = ( filter, "Translated" )[ Translated ]
            filter = ( filter, "Changed" )[ Changed ]
            
            # get selected id for selectitem again, if controlID 22 clicked
            SelectId = xbmc.getInfoLabel( "Container(50).ListItem.Property(id)" ) or xbmc.getInfoLabel( "Container(51).ListItem.Property(id)" )
            if controlID == 19:
                # UNTRANSLATED BUTTON
                filter = ( "", "UnTranslated" )[ UnTranslated ]
                self.setContainer( filter, SelectId )
                self.getControl( 19 ).setSelected( UnTranslated )
                self.getControl( 20 ).setSelected( False )
                self.getControl( 21 ).setSelected( False )

            elif controlID == 20:
                # TRANSLATED BUTTON
                filter = ( "", "Translated" )[ Translated ]
                self.setContainer( filter, SelectId )
                self.getControl( 20 ).setSelected( Translated )
                self.getControl( 19 ).setSelected( False )
                self.getControl( 21 ).setSelected( False )

            elif controlID == 21:
                # CHANGED BUTTON
                filter = ( "", "Changed" )[ Changed ]
                self.setContainer( filter, SelectId )
                self.getControl( 21 ).setSelected( Changed )
                self.getControl( 19 ).setSelected( False )
                self.getControl( 20 ).setSelected( False )

            elif controlID == 22:
                # VIEW AS BUTTON
                self.settings[ "viewmode" ] = ( 1, 0 )[ self.settings[ "viewmode" ] ]
                xbmc.sleep( 50 )
                self.setContainer( filter, SelectId )

            elif controlID == 13:
                # SORT BY BUTTON
                self.settings[ "sortmethod" ] = ( 1, 0 )[ self.settings[ "sortmethod" ] ]
                self.setSortMethodControl()
                self.setContainer( filter, SelectId )

            elif controlID == 14:
                # SORT ASC BUTTON
                self.settings[ "sortorder" ] = ( 1, 0 )[ self.settings[ "sortorder" ] ]
                self.setContainer( filter, SelectId )

            elif controlID == 32:
                # SETTINGS BUTTON
                self.Addon = Addon( AddonId )
                self.Addon.openSettings()
                xbmc.sleep( 10 )
                if self.settings[ "LanguagePath" ] != self.Addon.getSetting( "LanguagePath" ):
                    self.settings[ "LanguagePath" ] = self.Addon.getSetting( "LanguagePath" )
                    self.listitems = []
                self.setContainer( filter, SelectId )

            elif controlID == 33:
                # FIND BUTTON
                default = self.getControl( 33 ).getLabel2()
                kb = xbmc.Keyboard( default, "Find what ...", False )
                kb.doModal()
                if kb.isConfirmed():
                    find_text = kb.getText()
                    #self.getControl( 33 ).setLabel( "Find", label2=find_text )
                    self.setProperty( "FindText", find_text )
                    if find_text:# and find_text != default:
                        for count, li in enumerate( self.listitems ):
                            #l_text = find_text.lower()
                            #match = ( l_text in li.getLabel().lower() ) or ( l_text in li.getLabel2().lower() ) or ( l_text == li.getProperty( "id" ) )
                            #match = match or ( l_text == li.getLabel().lower() ) or ( l_text == li.getLabel2().lower() )
                            #if not match: continue
                            if self.findText( find_text, li ):
                                self.getControl( self.ContainerId ).selectItem( count )
                                self.setFocusId( self.ContainerId )
                                break

            elif controlID == 34:
                # FIND NEXT BUTTON
                find_next = self.getControl( 33 ).getLabel2().encode( "utf-8" )
                pos = self.getControl( self.ContainerId ).getSelectedPosition()
                for count, li in enumerate( self.listitems ):
                    if count <= pos: continue
                    #if find_next in li.getLabel() or find_next == li.getProperty( "id" ):
                    if self.findText( find_next, li ):
                        self.getControl( self.ContainerId ).selectItem( count )
                        break

        except:
            print_exc()

    def findText( self, text, listitem ):
        return re.search( text.lower(), "|".join(
            [ listitem.getLabel(), listitem.getLabel2(), listitem.getProperty( "id" ) ]
            ).lower() )

    def onAction( self, action ):
        if action in [ 9, 10 ]:
            self._close_window()

        elif action == 117:
            try:
                cm = DialogContextMenu( "Translator-DialogContextMenu.xml", CWD, parent=self )
                cm.doModal()
                del cm
            except:
                print_exc()
        else:
            try:
                bcode = action.getButtonCode()
                # keyboard press F3
                if bcode == 127138: self.sendClick( 34 )
                #
            except:
                print_exc()

    def _close_window( self ):
        xbmc.executebuiltin( "ActivateWindow(busydialog)" )
        if self.settings[ "savefolderviews" ]:
            self.Addon.setSetting( "viewmode",   str( self.settings[ "viewmode" ] ) )
            self.Addon.setSetting( "sortmethod", str( self.settings[ "sortmethod" ] ) )
            self.Addon.setSetting( "sortorder",  str( self.settings[ "sortorder" ] ) )
            xbmc.sleep( 10 )

        if self.IsModified:
            # ask for save change
            xbmc.executebuiltin( "Dialog.Close(busydialog)" )
            self._save_change()

        try: del self.language
        except: pass
        self.close()

    def _save_change( self ):
        if xbmcgui.Dialog().yesno( "Confirm file save", "Language file has been changed!", self.language.current_xml, "Do you want save your change?", "" ):
            xbmc.executebuiltin( "ActivateWindow(busydialog)" )
            OK = self.language.save_strings()
            xbmc.executebuiltin( "Dialog.Close(busydialog)" )

            if ( self.DefaultFolderLanguage.rstrip( "/" ) == self.FolderLanguage ) or ( xbmc.translatePath( "special://skin/" ) in xbmc.translatePath( self.FolderLanguage ) ):
                # if default xbmc language file has been changed,
                # set True, XBMC require Restart or reload language
                self.RestartXBMC_ReloadLanguage = OK or self.RestartXBMC_ReloadLanguage
Exemple #27
0
 def test_isNumber(self):  
     self.h = Numbers(Verb(Language() ),Preposition(Language()) )     
     self.assertEqual(self.h.isNumber("gxjrc"), True)
     self.assertEqual(self.h.isNumber("pwdood"), False)
Exemple #28
0
class Ui_MainWindow(object):
    def setupLog(self):
        self.log = LogWriter()
        self.log.resetLog()


    #sets up basic ui with buttons: manual, graphs, settings and info
    def setupUi(self, mainWindow):

        stylesheetFile = "Stylesheet.css"       #styling
        fh = open(stylesheetFile)
        qstr = str(fh.read())

        self.MainWindow = mainWindow            #assign mainwindow
        self.MainWindow.setStyleSheet(qstr)

        self.MainWindow.setObjectName("MainWindow")
        self.MainWindow.resize(1000, 650)

        #setup basic variables
        self.devices = []
        self.currentDevice = None
        self.setupLog()
        self.mainQueue = Queue()
        self.lang = Language(0)


        #fill mainwindow
        self.centralwidget = QtWidgets.QWidget(self.MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 90, 650))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("buttonBar")

        spacerItem = QtWidgets.QSpacerItem(20, 50, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
        self.verticalLayout.addItem(spacerItem)

        self.addADevice = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.addADevice.setObjectName("addADevice")
        self.addADevice.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.addADevice)

        self.Manual = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Manual.setObjectName("Manual")
        self.Manual.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Manual)

        self.Graphs = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Graphs.setObjectName("Graphs")
        self.Graphs.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Graphs)

        self.Settings = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Settings.setObjectName("Settings")
        self.Settings.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Settings)

        spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem1)

        self.Info = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.Info.setObjectName("Info")
        self.Info.setFixedSize(90, 90)
        self.verticalLayout.addWidget(self.Info)

        spacerItem2 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem2)

        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(90, 0, 910, 50))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")

        self.Logo = QtWidgets.QLabel(self.horizontalLayoutWidget)
        self.Logo.setEnabled(True)

        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.Logo.sizePolicy().hasHeightForWidth())

        self.Logo.setSizePolicy(sizePolicy)
        self.Logo.setMinimumSize(QtCore.QSize(0, 0))
        self.Logo.setMaximumSize(QtCore.QSize(250, 50))

        font = QtGui.QFont()
        font.setFamily("Calibri")
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.Logo.setFont(font)
        self.Logo.setAutoFillBackground(True)
        self.Logo.setFrameShape(QtWidgets.QFrame.Box)
        self.Logo.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Logo.setObjectName("Logo")
        pic = QPixmap('rsz_1aerosdev')
        self.Logo.setPixmap(pic)
        self.horizontalLayout_2.addWidget(self.Logo)

        spacerItem3 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem3)

        self.fSkyTemp = QtWidgets.QFrame(self.horizontalLayoutWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.fSkyTemp.sizePolicy().hasHeightForWidth())
        self.fSkyTemp.setSizePolicy(sizePolicy)
        self.fSkyTemp.setMinimumSize(QtCore.QSize(180, 100))
        self.fSkyTemp.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.fSkyTemp.setFrameShadow(QtWidgets.QFrame.Raised)
        self.fSkyTemp.setObjectName("fSkyTemp")

        self.Sky = QtWidgets.QLabel(self.fSkyTemp)
        self.Sky.setGeometry(QtCore.QRect(10, 20, 75, 13))
        self.Sky.setObjectName("Sky")

        self.TempUp = QtWidgets.QLabel(self.fSkyTemp)
        self.TempUp.setGeometry(QtCore.QRect(100, 20, 75, 13))

        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.TempUp.sizePolicy().hasHeightForWidth())

        self.TempUp.setSizePolicy(sizePolicy)
        self.TempUp.setMinimumSize(QtCore.QSize(60, 0))
        self.TempUp.setObjectName("TempUp")

        self.horizontalLayout_2.addWidget(self.fSkyTemp)

        spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem4)

        self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
        self.stackedWidget.setGeometry(QtCore.QRect(90, 50, 910, 600))
        # self.stackedWidget.setMinimumSize(QtCore.QSize(600, 600)) #400, 400
        # self.stackedWidget.move(100,100)
        # self.stackedWidget.setStyleSheet("background-color: black")

        # sets up maingrid and adds it to stacked widget
        self.page0 = QtWidgets.QWidget(self.MainWindow)
        self.mainGrid = MainGrid(self.page0, self.devices)
        self.stackedWidget.addWidget(self.mainGrid.page0)

        #sets up pages
        self.setupSettingsWindow()
        self.setupEnterDevice()
        self.setupGraphsWindow()
        self.setupManual()

        #sets starting page
        self.stackedWidget.setCurrentIndex(0)

        #binds functions to mainwindow buttons
        self.addADevice.clicked.connect(lambda: self.setIndex(2))
        self.Manual.clicked.connect(lambda: self.setIndex(4))
        self.Graphs.clicked.connect(lambda: self.setIndex(3))
        self.Settings.clicked.connect(lambda: self.setIndex(1))
        self.Info.clicked.connect(self.showInfo)
        QtCore.QMetaObject.connectSlotsByName(self.MainWindow)

        self.MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(0)

    def setIndex(self, index):
        try:
            self.stackedWidget.setCurrentIndex(index)

            # update devices
            # empty devicesBox
            self.devicesBox.clear()
            self.devicesBoxGraphs.clear()
            self.devicesBoxManual.clear()

            # fill devicesBox
            for device in self.devices:
                self.devicesBox.addItem(device.name)
                self.devicesBoxGraphs.addItem(device.name)
                self.devicesBoxManual.addItem(device.name)

            #assign function to startRoll button if a device exist
            if len(self.devices) > 0:
                self.startRoll.setDisabled(False)
                if self.currentDevice.status == 1:
                    self.startRoll.clicked.connect(lambda: self.rollOut)
                    self.startRoll.setText(self.lang.but_StartRollOut)
                elif self.currentDevice.status == 0:
                    self.startRoll.clicked.connect(lambda: self.rollUp)
                    self.startRoll.setText(self.lang.but_startRollUp)
        except Exception as e:
            print(e)

    #set the selected sensortype
    def setSensorType(self, type):
        self.sensorType = type

    #change the minimum value of the current device
    def changeMinVal(self, minVal):
        try:
            if self.checkStringForNumber(minVal):
                self.currentDevice.minVal = int(minVal)
                self.log.writeInLog("i", "Minimum value from " + self.currentDevice.name + " changed to " + minVal)
            else:
                if minVal == "aeros development":
                    self.showPopup("e", self.lang.pop_TitleEasterEgg, self.lang.pop_TextEasterEgg)
                    self.log.writeInLog("i", "EASTER EGG FOUND!!!")
                self.showPopup("e", self.lang.pop_TitleNotValidNumber, self.lang.pop_TextNotValidNumber)
        except:
            self.showPopup("e", self.lang.pop_TitleDevNotAttached, self.lang.pop_TextDevNotAttached)


    def checkStringForNumber(self, string):
        numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
        chrs = list(string)
        if len([chr for chr in chrs if chr not in numbers]) > 0: return False
        return True

    # sets up settingswidget that shows the settings
    def setupSettingsWindow(self):
        try:
            self.page1 = QtWidgets.QWidget()
            self.settingsWindowWidget = QtWidgets.QWidget(self.page1)
            self.settingsWindowWidget.setMinimumSize(QtCore.QSize(400, 160))
            self.settingsWindowWidget.setMaximumSize(QtCore.QSize(400, 160))

            layout = QtWidgets.QFormLayout(self.settingsWindowWidget)
            # self.minLight = QtWidgets.QLineEdit(self.settingsWindowWidget)
            # self.minTemp = QtWidgets.QLineEdit(self.settingsWindowWidget)
            self.minVal = QtWidgets.QLineEdit(self.settingsWindowWidget)
            self.minVal.setText("0")

            self.chgMinVal = QtWidgets.QPushButton(self.settingsWindowWidget)
            self.chgMinVal.setText(self.lang.but_ChgMinVal)
            self.chgMinVal.clicked.connect(lambda: self.changeMinVal(self.minVal.text()))

            self.goBack = QtWidgets.QPushButton(self.settingsWindowWidget)
            self.goBack.setText(self.lang.but_Ok)
            self.goBack.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))

            self.devicesBox = QtWidgets.QComboBox(self.settingsWindowWidget)
            for device in self.devices:
                self.devicesBox.addItem(device.name)
            self.devicesBox.activated[str].connect(self.setCurrentDevice)

            self.languageBox = QtWidgets.QComboBox(self.settingsWindowWidget)
            self.languageBox.addItem("English")
            self.languageBox.addItem("Nederlands")
                #could add more languages
            self.languageBox.activated[str].connect(self.changeLanguage)

            layout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.minVal)
            # layout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.minTemp)
            layout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.chgMinVal)
            # layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.chgMinTemp)
            layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.goBack)
            layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.devicesBox)
            layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.languageBox)

            # self.stackedWidget.insertWidget(1,self.page_1)
            self.stackedWidget.addWidget(self.page1)
            self.log.writeInLog("i", "Page 1: settings window created")
        except Exception as e:
            print(e)
            self.log.writeInLog("w", "Could not create page 1: settings window")

    #change the language,
    def changeLanguage(self, lang):
        if lang == "English":
            self.retranslateUi(0)
        elif lang == "Nederlands":
            self.retranslateUi(1)

    #setup page3 containing the graph
    def setupGraphsWindow(self):
        try:
            self.page3 = QtWidgets.QWidget()
            self.graphWidget = QtWidgets.QWidget(self.page3)
            self.graphWidget.setGeometry(QtCore.QRect(50, 50, 400, 500))
            self.graphWidget.setMinimumSize(QtCore.QSize(600, 600))
            self.canvas = PlotCanvas(self.graphWidget)

            self.goBack2 = QtWidgets.QPushButton(self.graphWidget)
            self.goBack2.setText(self.lang.but_Ok)
            self.goBack2.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))
            self.goBack2.move(450, 400)

            self.update = QtWidgets.QPushButton(self.graphWidget)
            self.update.setText(self.lang.but_Update)
            self.update.clicked.connect(self.fillGraph)
            self.update.move(450, 375)

            self.devicesBoxGraphs = QtWidgets.QComboBox(self.graphWidget)
            for device in self.devices:
                self.devicesBoxGraphs.addItem(device.name)
            self.devicesBoxGraphs.move(450, 0)
            self.devicesBoxGraphs.activated[str].connect(self.setCurrentDevice)

            self.stackedWidget.addWidget(self.page3)
            self.log.writeInLog("i", "Page 3: graphs window created")
        except:
            self.log.writeInLog("w", "Could not create page 3: graphs window")
    #fill graph
    def fillGraph(self):
        dataList = []
        try:
            q = self.currentDevice.getQueue()
        except:# Exception as e:
            #print(e)
            self.showPopup("e", self.lang.pop_TitleDevNotAttached, self.lang.pop_TextDevNotAttached)
            return
        # fill graph
        #print("test1")
        #print("test2")
        #print(self.currentDevice.queue.get())
        transmis = None
        try:
            for i in range(10):
               #transmis = q.get(True, 2)
                if transmis == None:
                    if self.currentDevice.sensorType == "Light":
                        dataList.append(random.uniform(50,100))
                    elif self.currentDevice.sensorType == "Temperature":
                        dataList.append(random.uniform(20,25))
                else:
                    self.log.writeInLog("i", "Data from " + self.currentDevice.name + " received: " + str(transmis))
                    dataList.append(transmis)
                #time.sleep(1)
        except:
            pass
        try:
            #print("test6")
            self.canvas.plot(dataList, self.currentDevice.sensorType)
            #time.sleep(1)
        except Exception as e:
            print(e)

    #setup page2 containing the settingswindow
    def setupEnterDevice(self):
        try:
            self.page2 = QtWidgets.QWidget()
            self.sensorType = ""

            self.enterDeviceWidget = QtWidgets.QWidget(self.page2)
            self.enterDeviceWidget.setMinimumSize(QtCore.QSize(400, 300))
            self.enterDeviceWidget.setMaximumSize(QtCore.QSize(400, 300))

            layout = QtWidgets.QFormLayout(self.enterDeviceWidget)
            namelabel = QLabel(self.lang.lab_Name)
            # lightlabel = QLabel("Min light")
            # templabel = QLabel("Min temp")
            valuelabel = QLabel(self.lang.lab_MinVal)
            maxRollLengthLabel = QLabel(self.lang.lab_MaxRollLength)
            portlabel = QLabel(self.lang.lab_PortNum)
            sensorlabel = QLabel(self.lang.lab_SensorType)

            self.name = QtWidgets.QLineEdit(self.enterDeviceWidget)  # .setText("")
            # self.light = QtWidgets.QLineEdit(self.enterDeviceWidget)#.setText("0")
            # self.temp = QtWidgets.QLineEdit(self.enterDeviceWidget)#.setText("0")
            self.port = QtWidgets.QLineEdit(self.enterDeviceWidget)  # .setText("COM0")
            self.value = QtWidgets.QLineEdit(self.enterDeviceWidget)
            self.maxRollLength = QtWidgets.QLineEdit(self.enterDeviceWidget)

            self.name.setText("")
            # self.light.setText("0")
            # self.temp.setText("0")
            self.maxRollLength.setText("0")
            self.value.setText("0")
            self.port.setText("COM0")

            self.name.setMaximumSize(QtCore.QSize(100, 200))
            # self.light.setMaximumSize(QtCore.QSize(100,200))
            # self.temp.setMaximumSize(QtCore.QSize(100,200))
            self.value.setMaximumSize(QtCore.QSize(100, 200))
            self.maxRollLength.setMaximumSize(QtCore.QSize(100, 200))
            self.port.setMaximumSize(QtCore.QSize(100, 200))

            self.sensor = QtWidgets.QComboBox(self.enterDeviceWidget)
            self.sensor.addItem(self.lang.selBox_light)
            self.sensor.addItem(self.lang.selBox_temp)
            self.sensor.setMaximumSize(QtCore.QSize(100, 200))
            self.sensor.activated[str].connect(self.setSensorType)

            self.addDevice = QtWidgets.QPushButton(self.enterDeviceWidget)
            self.addDevice.setText(self.lang.but_AddDevice)
            self.addDevice.setMaximumSize(QtCore.QSize(120, 300))
            self.addDevice.clicked.connect(self.addDeviceNoPar)

            self.goBack3 = QtWidgets.QPushButton(self.enterDeviceWidget)
            self.goBack3.setText(self.lang.but_Ok)
            self.goBack3.setMaximumSize(QtCore.QSize(100, 200))
            self.goBack3.clicked.connect(lambda: self.setIndex(0))

            layout.addRow(namelabel, self.name)
            # layout.addRow(lightlabel, self.light)
            # layout.addRow(templabel, self.temp)
            layout.addRow(valuelabel, self.value)
            layout.addRow(maxRollLengthLabel, self.maxRollLength)
            layout.addRow(portlabel, self.port)
            layout.addRow(sensorlabel, self.sensor)
            layout.addRow(self.addDevice, self.goBack3)
            # self.stackedWidget.insertWidget(2,self.page_2)

            self.setSensorType("Light")
            self.stackedWidget.addWidget(self.page2)
            self.log.writeInLog("i", "Page 2: enter device window created")
        except:
            self.log.writeInLog("w", "Could not create Page 2: enter device window")

            # makes inputdialog in which you can enter a percentage
    #setup page4 containing the manual mode window
    def setupManual(self):
        try:
            self.page4 = QtWidgets.QWidget()
            self.manualWidget = QtWidgets.QWidget(self.page4)
            layout = QtWidgets.QFormLayout(self.manualWidget)

            self.startRoll = QtWidgets.QPushButton(self.manualWidget)
            self.startRoll.setText(self.lang.but_StartRoll)
            self.startRoll.setDisabled(True)


            self.devicesBoxManual = QtWidgets.QComboBox(self.manualWidget)
            for device in self.devices:
                self.devicesBoxManual.addItem(device.name)
            self.devicesBoxManual.activated[str].connect(self.setCurrentDevice)

            self.ok = QtWidgets.QPushButton(self.manualWidget)
            self.ok.setText(self.lang.but_Ok)
            self.ok.setMaximumSize(QtCore.QSize(100, 200))
            self.ok.clicked.connect(lambda: self.setIndex(0))

            layout.addRow(self.devicesBoxManual, self.startRoll)
            layout.addRow(self.ok, self.ok)

            self.manualWidget.setLayout(layout)
            self.stackedWidget.addWidget(self.page4)
            self.log.writeInLog("i", "Page 4: manual window created")
        except Exception as e:
            print(e)
            self.log.writeInLog("w", "Could not create Page 4: manual window")

    #roll out the selected device
    def rollOut(self):
        self.showPopup("i", self.lang.pop_TitleRollOut, self.currentDevice.name + self.lang.pop_TextRollOut)
        self.log.writeInLog("i", self.currentDevice.name + " rolled out")
        self.currentDevice.rollDown()
        self.currentDevice.status = 0
        self.updateMaingrid(self.MainWindow)

    #roll up the selected device
    def rollUp(self):
        self.showPopup("i", self.lang.pop_TitleRollUp, self.currentDevice.name + self.lang.pop_TextRollUp)
        self.log.writeInLog("i", self.currentDevice.name + " rolled up")
        self.currentDevice.rollUp()
        self.currentDevice.status = 1
        self.updateMaingrid(self.MainWindow)

    #connect to the device and add it to the dashboard
    def addDeviceNoPar(self):
        if not self.checkStringForNumber(self.name.text()):
            nameRes = self.name.text()
        else:
            self.showPopup("e", self.lang.pop_TitleNotValidName, self.lang.pop_TextNotValidName)
            self.name.setText("")
            return

        if "COM" in self.port.text():
            portRes = self.port.text()
        else:
            self.showPopup("e", self.lang.pop_TitleNotValidPort, self.lang.pop_TextNotValidPort)
            self.port.setText("COM0")
            return

        if self.checkStringForNumber(self.value.text()):
            valRes = int(self.value.text())
        else:
            self.showPopup("e", self.lang.pop_TitleNotValidNumber, self.lang.pop_TextNotValidNumber)
            self.value.setText("0")
            return

        try:
            maxRollRes = float(self.maxRollLength.text())
        except:
            self.showPopup("e", self.lang.pop_TitleNotValidNumber, self.lang.pop_TextNotValidNumber)
            self.maxRollLength.setText("0")
            return

        self.name.setText("")
        self.port.setText("COM0")
        self.value.setText("0")
        self.maxRollLength.setText("0")

        if nameRes == "":
            self.showPopup("e", self.lang.pop_TitleNoName, self.lang.pop_TextNoName)
            return

        for device in self.devices:
            if device.name == nameRes:
                self.showPopup("e", self.lang.pop_TitleDupNames, self.lang.pop_TextDupNames)
                self.name.setText("")
                return
        try:
            newDevice = Device(nameRes, portRes, self.sensorType, valRes, maxRollRes, self.mainQueue)  # lightRes, tempRes)
            self.devices.append(newDevice)
            self.setCurrentDevice(self.devices[0].name)
            try:
                receiving = Thread(target=self.currentDevice.receive)
                receiving.daemon = True
                receiving.start()
            except Exception as e:
                print(e)
            self.log.writeInLog("i",
                                "New device added: name: " + nameRes + " | Port: " + portRes + " | Sensor type: " + self.sensorType + " | Minimum value: " + str(
                                    valRes) + " | Max roll length: " + str(maxRollRes))
            self.showPopup("i", self.lang.pop_TitleNewDevice, self.lang.pop_TextNewDevice_1  + nameRes + self.lang.pop_TextNewDevice_2)
            try:
                self.updateMaingrid(self.MainWindow)
            except Exception as e:
                print(e)
        except Exception as e:
            print(e)
            self.log.writeInLog("w", "Could not add device: " + nameRes)
            self.showPopup("e", self.lang.pop_TitleNoNewDevice, self.lang.pop_TextNoNewDevice)
            newDevice = None

    #show a popup, can be error or info
    def showPopup(self, type, popupText, popupIText):
        popup = QMessageBox()
        if type == "e":
            popup.setIcon(QMessageBox.Critical)
            popup.setWindowTitle("Error")
            self.log.writeInLog("w", "Error popup shown: " + popupText + " | " + popupIText)
        elif type == "i":
            popup.setIcon(QMessageBox.Information)
            popup.setWindowTitle("Info")
            self.log.writeInLog("i", "Information popup shown: " + popupText + " | " + popupIText)

        popup.setText(popupText)
        popup.setInformativeText(popupIText)

        popup.exec()

    #set the current selected device
    def setCurrentDevice(self, name):
        for device in self.devices:
            if device.name == name:
                self.currentDevice = device

    # sets te text in the given language
    def retranslateUi(self, type):
        # choose language
        self.lang.setLang(type)
        _translate = QtCore.QCoreApplication.translate
        self.MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.addADevice.setText(_translate("MainWindow", self.lang.but_AddADevice))
        self.Manual.setText(_translate("MainWindow", self.lang.but_Manual))
        self.Graphs.setText(_translate("MainWindow", self.lang.but_Graphs))
        self.Settings.setText(_translate("MainWindow", self.lang.but_Settings))
        self.Info.setText(_translate("MainWindow", self.lang.but_Info))
        self.Sky.setText(_translate("MainWindow", self.lang.lab_Sky))
        self.TempUp.setText(_translate("MainWindow", self.lang.lab_Temp))
        self.startRoll.setText("Roll out")
        self.startRoll.setText("Roll up")
        self.goBack.setText(self.lang.but_Ok)
        self.chgMinVal.setText(self.lang.but_ChgMinVal)
        self.goBack2.setText(self.lang.but_Ok)
        self.update.setText(self.lang.but_Update)
        self.addDevice.setText(self.lang.but_AddDevice)
        self.sensor.clear()
        self.sensor.addItem(self.lang.selBox_light)
        self.sensor.addItem(self.lang.selBox_temp)
        self.goBack3.setText(self.lang.but_Ok)
        self.startRoll.setText(self.lang.but_StartRoll)
        self.ok.setText(self.lang.but_Ok)

    # Makes popup with info
    def showInfo(self):
        self.showPopup("i", self.lang.pop_TitleInfo, self.lang.pop_TextInfo)

    #update the maingrid
    def updateMaingrid(self, MainWindow):
        self.page0.setParent(None)
        self.page0 = QtWidgets.QWidget(MainWindow)
        self.mainGrid = MainGrid(self.page0, self.devices)
        self.stackedWidget.insertWidget(0, self.mainGrid.page0)  # this changed right
Exemple #29
0
programma_grammar.addLexicalReduction(LexicalReduction((None, "?"), ("kw", True,  True, True, True), (False, True, False)))

# Identifiers:
programma_grammar.addLexicalReduction(LexicalReduction((None, "?"), ("id", True,  True, True, False), (False, False, True)))
programma_grammar.addLexicalReduction(LexicalReduction(("id", "?"), ("id", False, True, True, False), (False, False, True)))
programma_grammar.addLexicalReduction(LexicalReduction(("id", "?"), ("id", False, False, False, True)))


programma_grammar.parsePhrasalGrammar(GrammarLexer(
'''

'''))

programma_categories = []

programma = Language(programma_grammar, programma_categories)

# We'd like to get the following:
# Generate a conversion procedure from input text to lexable binary.
# Generate a lexer
# Generate a parser
# Generate a full language specification
# Generate a full compiler
# Generate some valid programs

# Roadmap:
# 1. Debug the stuff that outputs lexer_grammar.tex
# 2. Start building the grammar and attach all the necessary stuff to it.
#    This is about language design, not necessarily the framework so much.
# ...
Exemple #30
0
 def test_isPreposition(self):  
     self.h = Preposition(Language())     
     self.assertEqual(self.h.isPreposition("puxod"), False)
     self.assertEqual(self.h.isPreposition("puxood"), False)
     self.assertEqual(self.h.isPreposition("pwdood"), True)
Exemple #31
0
 def test_isVerb(self):
     self.h = Verb( Language() )     
     self.assertEqual(self.h.isVerb("xoxo"), False)        
     self.assertEqual(self.h.isVerb("xoxox"), False)        
     self.assertEqual(self.h.isVerb("xoxoxo"), True)        
     self.assertEqual(self.h.isVerb("xoxoxs"), False)        
Exemple #32
0
 def test_isInLanguage(self):  
     self.h = Language()     
     self.assertEqual(self.h.isInLanguage("xoxox"), True)
 def __init__(self, runFileName):
     Language.__init__(self, runFileName)
Exemple #34
0
 def __init__(self, n_len):
     self.core = Language(path, n_len)
Exemple #35
0
 def __init__(self, runFileName):
     Language.__init__(self, runFileName)