def __init__(self): super().__init__() self.url = 'https://jobfinderapp.herokuapp.com/api/v1' self.cities_row = [] self.cities = {} self.sp_row = [] self.sp = {} self.set_cities() self.set_sp() self.ui = Ui_mainWindow() self.ui.setupUi(self) self.set_comboBox() self.init_GUI()
class ArmageddonByArrows(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_mainWindow() self.ui.setupUi(self) self.armageddon = Armageddon() QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("pressed()"), self.move_left) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("pressed()"), self.move_right) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("pressed()"), self.move_up) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("pressed()"), self.move_down) QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.fireButton, QtCore.SIGNAL("clicked()"), self.fire) def move_left(self): self.armageddon.send_cmd(self.armageddon.LEFT) def move_right(self): self.armageddon.send_cmd(self.armageddon.RIGHT) def move_up(self): self.armageddon.send_cmd(self.armageddon.UP) def move_down(self): self.armageddon.send_cmd(self.armageddon.DOWN) def stop_movement(self): self.armageddon.send_cmd(self.armageddon.STOP) def fire(self): self.armageddon.send_cmd(self.armageddon.FIRE)
class ArmageddonByArrows(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_mainWindow() self.ui.setupUi(self) self.armageddon = Armageddon() QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("pressed()"), self.move_left) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("pressed()"), self.move_right) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("pressed()"), self.move_up) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("pressed()"), self.move_down) QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.fireButton, QtCore.SIGNAL("clicked()"), self.fire) QtCore.QObject.connect(self.ui.fireallButton, QtCore.SIGNAL("clicked()"), self.fire_all) def move_left(self): self.armageddon.send_cmd(self.armageddon.LEFT) def move_right(self): self.armageddon.send_cmd(self.armageddon.RIGHT) def move_up(self): self.armageddon.send_cmd(self.armageddon.UP) def move_down(self): self.armageddon.send_cmd(self.armageddon.DOWN) def stop_movement(self): self.armageddon.send_cmd(self.armageddon.STOP) def fire(self): self.armageddon.send_cmd(self.armageddon.FIRE) def fire_all(self): for x in range(0, 4): self.armageddon.send_cmd(self.armageddon.FIRE) # The missle launcher needs 3.1 seconds till it can fire again sleep(3.1)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_mainWindow() self.ui.setupUi(self) self.armageddon = Armageddon() QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("pressed()"), self.move_left) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("pressed()"), self.move_right) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("pressed()"), self.move_up) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("pressed()"), self.move_down) QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.fireButton, QtCore.SIGNAL("clicked()"), self.fire)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_mainWindow() self.ui.setupUi(self) self.armageddon = Armageddon() QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("pressed()"), self.move_left) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("pressed()"), self.move_right) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("pressed()"), self.move_up) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("pressed()"), self.move_down) QtCore.QObject.connect(self.ui.leftButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.rightButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.upButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.downButton, QtCore.SIGNAL("released()"), self.stop_movement) QtCore.QObject.connect(self.ui.fireButton, QtCore.SIGNAL("clicked()"), self.fire) QtCore.QObject.connect(self.ui.fireallButton, QtCore.SIGNAL("clicked()"), self.fire_all)
def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_mainWindow() self.ui.setupUi(self) # Force consistent theme and font size QtGui.QApplication.setStyle(QtGui.QStyleFactory.create("Plastique")) self.setStyleSheet("font-size: 11pt") # Disable resizing self.setFixedSize(self.size()) # Disable settings frame until a set is selected self.ui.frame.setEnabled(False) self.msg("Enabling frame.") # Clear lists self.ui.listSets.clear() self.ui.listPhonemes.clear() # Indices of objects currently selected in the interface self.levelIndex = 0 self.setIndex = None self.phonemeIndex = None # Instantiate all levels self.levels = [] for n in range(0, NUM_LEVELS): self.levels.append(Level()) self.msg("Adding level " + str(n+1)) # Update the displayed list of sets self.update_sets() self.msg("Updating set list.") # Display images self.show_images() ####################################################### # Interface Object Connections # ####################################################### itemClicked = QtCore.SIGNAL("itemClicked(QListWidgetItem *)") clicked = QtCore.SIGNAL("clicked()") ## List Widgets QtCore.QObject.connect(self.ui.listSets, itemClicked, self.select_set) QtCore.QObject.connect(self.ui.listPhonemes,itemClicked, self.select_phoneme) ## Buttons QtCore.QObject.connect(self.ui.btnAddSet, clicked, self.add_set) QtCore.QObject.connect(self.ui.btnRemoveSet, clicked, self.remove_set) QtCore.QObject.connect(self.ui.btnAddPhoneme, clicked, self.add_phoneme) QtCore.QObject.connect(self.ui.btnRemovePhoneme, clicked, self.remove_phoneme) QtCore.QObject.connect(self.ui.btnSetGoal, clicked, self.set_goal) QtCore.QObject.connect(self.ui.btnLoadImage, clicked, self.load_image) QtCore.QObject.connect(self.ui.btnModifySounds, clicked, self.modify_sounds) QtCore.QObject.connect(self.ui.btnSave, clicked, self.save) QtCore.QObject.connect(self.ui.btnLoad, clicked, self.load) QtCore.QObject.connect(self.ui.btnInstall, clicked, self.install) QtCore.QObject.connect(self.ui.btnCustom, clicked, self.custom_sound) QtCore.QObject.connect(self.ui.btnA, clicked, self.a) QtCore.QObject.connect(self.ui.btnO, clicked, self.o) QtCore.QObject.connect(self.ui.btnEU, clicked, self.eu) QtCore.QObject.connect(self.ui.btnE_grave, clicked, self.e_grave) QtCore.QObject.connect(self.ui.btnE_acute, clicked, self.e_acute) QtCore.QObject.connect(self.ui.btnE, clicked, self.e) QtCore.QObject.connect(self.ui.btnI, clicked, self.i) QtCore.QObject.connect(self.ui.btnU, clicked, self.u) QtCore.QObject.connect(self.ui.btnOU, clicked, self.ou) QtCore.QObject.connect(self.ui.btnAN, clicked, self.an) QtCore.QObject.connect(self.ui.btnON, clicked, self.on) QtCore.QObject.connect(self.ui.btnUN, clicked, self.un) QtCore.QObject.connect(self.ui.btnIN, clicked, self.in2) QtCore.QObject.connect(self.ui.btnUI, clicked, self.ui2) QtCore.QObject.connect(self.ui.btnILL, clicked, self.ill) QtCore.QObject.connect(self.ui.btnOI, clicked, self.oi) QtCore.QObject.connect(self.ui.btnP, clicked, self.p) QtCore.QObject.connect(self.ui.btnB, clicked, self.b) QtCore.QObject.connect(self.ui.btnF, clicked, self.f) QtCore.QObject.connect(self.ui.btnV, clicked, self.v) QtCore.QObject.connect(self.ui.btnM, clicked, self.m) QtCore.QObject.connect(self.ui.btnR, clicked, self.r) QtCore.QObject.connect(self.ui.btnT, clicked, self.t) QtCore.QObject.connect(self.ui.btnD, clicked, self.d) QtCore.QObject.connect(self.ui.btnS, clicked, self.s) QtCore.QObject.connect(self.ui.btnZ, clicked, self.z) QtCore.QObject.connect(self.ui.btnN, clicked, self.n) QtCore.QObject.connect(self.ui.btnL, clicked, self.l) QtCore.QObject.connect(self.ui.btnK, clicked, self.k) QtCore.QObject.connect(self.ui.btnG, clicked, self.g) QtCore.QObject.connect(self.ui.btnCH, clicked, self.ch) QtCore.QObject.connect(self.ui.btnJ, clicked, self.j) QtCore.QObject.connect(self.ui.btnGN, clicked, self.gn) ## Others QtCore.QObject.connect(self.ui.txtNewPhoneme, QtCore.SIGNAL("textChanged(const QString&)"), self.check_new_phoneme) QtCore.QObject.connect(self.ui.txtNewPhoneme, QtCore.SIGNAL("returnPressed()"), self.press_enter) QtCore.QObject.connect(self.ui.verticalSlider, QtCore.SIGNAL("valueChanged(int)"), self.change_level) QtCore.QObject.connect(self.ui.sldrFailedAttempts, QtCore.SIGNAL("valueChanged(int)"), self.update_sliders) QtCore.QObject.connect(self.ui.sldrHintsRequested, QtCore.SIGNAL("valueChanged(int)"), self.update_sliders) QtCore.QObject.connect(self.ui.sldrTime, QtCore.SIGNAL("valueChanged(int)"), self.update_sliders)
class StartQT4(QtGui.QMainWindow): def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_mainWindow() self.ui.setupUi(self) # Force consistent theme and font size QtGui.QApplication.setStyle(QtGui.QStyleFactory.create("Plastique")) self.setStyleSheet("font-size: 11pt") # Disable resizing self.setFixedSize(self.size()) # Disable settings frame until a set is selected self.ui.frame.setEnabled(False) self.msg("Enabling frame.") # Clear lists self.ui.listSets.clear() self.ui.listPhonemes.clear() # Indices of objects currently selected in the interface self.levelIndex = 0 self.setIndex = None self.phonemeIndex = None # Instantiate all levels self.levels = [] for n in range(0, NUM_LEVELS): self.levels.append(Level()) self.msg("Adding level " + str(n+1)) # Update the displayed list of sets self.update_sets() self.msg("Updating set list.") # Display images self.show_images() ####################################################### # Interface Object Connections # ####################################################### itemClicked = QtCore.SIGNAL("itemClicked(QListWidgetItem *)") clicked = QtCore.SIGNAL("clicked()") ## List Widgets QtCore.QObject.connect(self.ui.listSets, itemClicked, self.select_set) QtCore.QObject.connect(self.ui.listPhonemes,itemClicked, self.select_phoneme) ## Buttons QtCore.QObject.connect(self.ui.btnAddSet, clicked, self.add_set) QtCore.QObject.connect(self.ui.btnRemoveSet, clicked, self.remove_set) QtCore.QObject.connect(self.ui.btnAddPhoneme, clicked, self.add_phoneme) QtCore.QObject.connect(self.ui.btnRemovePhoneme, clicked, self.remove_phoneme) QtCore.QObject.connect(self.ui.btnSetGoal, clicked, self.set_goal) QtCore.QObject.connect(self.ui.btnLoadImage, clicked, self.load_image) QtCore.QObject.connect(self.ui.btnModifySounds, clicked, self.modify_sounds) QtCore.QObject.connect(self.ui.btnSave, clicked, self.save) QtCore.QObject.connect(self.ui.btnLoad, clicked, self.load) QtCore.QObject.connect(self.ui.btnInstall, clicked, self.install) QtCore.QObject.connect(self.ui.btnCustom, clicked, self.custom_sound) QtCore.QObject.connect(self.ui.btnA, clicked, self.a) QtCore.QObject.connect(self.ui.btnO, clicked, self.o) QtCore.QObject.connect(self.ui.btnEU, clicked, self.eu) QtCore.QObject.connect(self.ui.btnE_grave, clicked, self.e_grave) QtCore.QObject.connect(self.ui.btnE_acute, clicked, self.e_acute) QtCore.QObject.connect(self.ui.btnE, clicked, self.e) QtCore.QObject.connect(self.ui.btnI, clicked, self.i) QtCore.QObject.connect(self.ui.btnU, clicked, self.u) QtCore.QObject.connect(self.ui.btnOU, clicked, self.ou) QtCore.QObject.connect(self.ui.btnAN, clicked, self.an) QtCore.QObject.connect(self.ui.btnON, clicked, self.on) QtCore.QObject.connect(self.ui.btnUN, clicked, self.un) QtCore.QObject.connect(self.ui.btnIN, clicked, self.in2) QtCore.QObject.connect(self.ui.btnUI, clicked, self.ui2) QtCore.QObject.connect(self.ui.btnILL, clicked, self.ill) QtCore.QObject.connect(self.ui.btnOI, clicked, self.oi) QtCore.QObject.connect(self.ui.btnP, clicked, self.p) QtCore.QObject.connect(self.ui.btnB, clicked, self.b) QtCore.QObject.connect(self.ui.btnF, clicked, self.f) QtCore.QObject.connect(self.ui.btnV, clicked, self.v) QtCore.QObject.connect(self.ui.btnM, clicked, self.m) QtCore.QObject.connect(self.ui.btnR, clicked, self.r) QtCore.QObject.connect(self.ui.btnT, clicked, self.t) QtCore.QObject.connect(self.ui.btnD, clicked, self.d) QtCore.QObject.connect(self.ui.btnS, clicked, self.s) QtCore.QObject.connect(self.ui.btnZ, clicked, self.z) QtCore.QObject.connect(self.ui.btnN, clicked, self.n) QtCore.QObject.connect(self.ui.btnL, clicked, self.l) QtCore.QObject.connect(self.ui.btnK, clicked, self.k) QtCore.QObject.connect(self.ui.btnG, clicked, self.g) QtCore.QObject.connect(self.ui.btnCH, clicked, self.ch) QtCore.QObject.connect(self.ui.btnJ, clicked, self.j) QtCore.QObject.connect(self.ui.btnGN, clicked, self.gn) ## Others QtCore.QObject.connect(self.ui.txtNewPhoneme, QtCore.SIGNAL("textChanged(const QString&)"), self.check_new_phoneme) QtCore.QObject.connect(self.ui.txtNewPhoneme, QtCore.SIGNAL("returnPressed()"), self.press_enter) QtCore.QObject.connect(self.ui.verticalSlider, QtCore.SIGNAL("valueChanged(int)"), self.change_level) QtCore.QObject.connect(self.ui.sldrFailedAttempts, QtCore.SIGNAL("valueChanged(int)"), self.update_sliders) QtCore.QObject.connect(self.ui.sldrHintsRequested, QtCore.SIGNAL("valueChanged(int)"), self.update_sliders) QtCore.QObject.connect(self.ui.sldrTime, QtCore.SIGNAL("valueChanged(int)"), self.update_sliders) # Updates the displayed list of sets with the internal list. def update_sets(self): # get the list of sets in the selected level level = self.get_level() levelSets = level.sets # clear the displayed sets self.ui.listSets.clear() self.msg("Clearing set list.") # add each set to the list index = 1 for item in levelSets: self.ui.listSets.addItem("Set " + str(index)) self.msg("Adding set index " + str(index)) index += 1 # disable 'remove set' button if necessary if len(levelSets) < 2: self.ui.btnRemoveSet.setEnabled(False) self.msg("Disabling remove set button. (sets = " + str(len(levelSets)) + ")") else: self.ui.btnRemoveSet.setEnabled(True) self.msg("Enabling remove set button. (sets = " + str(len(levelSets)) + ")") # This function is called when the user selects a set from the list def select_set(self, item): # show frame if it isn't there already self.ui.frame.setEnabled(True) # get the index of the selected item index = self.set_index(item) # remember index self.setIndex = index # load phonemes from the current set self.update_phonemes() # clear current phoneme and current goal self.phonemeIndex = None # disable phoneme-specific ui elements self.reset_phoneme_ui() # debug string currentSet = self.get_set() string = "Selecting set at index " + str(index) + ":" string += currentSet.toString() self.msg(string) # This function removes phoneme-specific content from the UI def reset_phoneme_ui(self): self.ui.btnRemovePhoneme.setEnabled(False) self.ui.btnSetGoal.setEnabled(False) self.ui.soundsGroup.setEnabled(False) self.ui.imageGroup.setEnabled(False) self.ui.lblSoundPath.clear() self.ui.lblImagePath = "" self.ui.imgPhoneme.clear() # Enables phoneme-specific content in the UI def enable_phoneme_ui(self): self.ui.btnRemovePhoneme.setEnabled(True) self.ui.btnSetGoal.setEnabled(True) self.ui.soundsGroup.setEnabled(True) self.ui.imageGroup.setEnabled(True) # Updates the phoneme lists def update_phonemes(self): # clear phoneme list self.ui.listPhonemes.clear() # add phonemes into appropriate lists phonemes = self.get_set().phonemes if phonemes != None: for p in range(0, len(phonemes)): # get current phoneme phoneme = phonemes[p] if phoneme.goal: self.ui.listPhonemes.addItem(phoneme.name + " (GOAL)") else: self.ui.listPhonemes.addItem(phoneme.name) # This function is called whenever the user selects an items from the phoneme list def select_phoneme(self, phoneme): # enable 'make goal' button self.enable_phoneme_ui() # get the index of the selected item index = self.phoneme_index(phoneme) # remember index self.phonemeIndex = index # Enable phoneme sounds and load image button self.ui.soundsGroup.setEnabled(True) self.ui.btnLoadImage.setEnabled(True) self.ui.lblSoundPath.clear() # Update interface with phoneme information p = self.get_phoneme() self.msg("Index: " + str(index)) self.msg("Selected phoneme at index " + str(index) + ":\n" + p.toString()) if p.image_path != "": self.ui.lblImagePath = p.image_path self.ui.imgPhoneme.setPixmap(QtGui.QPixmap(p.image_path)) else: self.ui.lblImagePath = "" self.ui.imgPhoneme.clear() self.select_sound(p.text) # Select appropriate sound self.select_sound(p.text) # Enables or disables the 'add phoneme' button as necessary def check_new_phoneme(self, text): # ensure text isn't blank if text != "": # ensure text is unique uniqueName = True currentSet = self.get_set() phonemes = currentSet.phonemes if phonemes != None: for p in range(0, len(phonemes)): phoneme = phonemes[p] if phoneme.name == str(text): uniqueName = False if uniqueName: self.ui.btnAddPhoneme.setEnabled(True) else: self.ui.btnAddPhoneme.setEnabled(False) else: self.ui.btnAddPhoneme.setEnabled(False) # Enter key while editing new phoneme text functionality def press_enter(self): if self.ui.btnAddPhoneme.isEnabled(): self.add_phoneme() # Loads an image into the interface and saves it into the phoneme object def load_image(self): phoneme = self.get_phoneme() phoneme.image_path = str(QtGui.QFileDialog.getOpenFileName()) phoneme.image_file = basename(phoneme.image_path) self.ui.imgPhoneme.setPixmap(QtGui.QPixmap(phoneme.image_path)) self.ui.lblImagePath = phoneme.image_file # Returns the currently selected level def get_level(self): return self.levels[self.levelIndex] # Returns the currently selected set def get_set(self): level = self.levels[self.levelIndex] if self.setIndex != None: return level.sets[self.setIndex] else: return None # Returns the currently selected phoneme def get_phoneme(self): set = self.get_set() if self.phonemeIndex != None: return set.phonemes[self.phonemeIndex] else: return None # Returns the index of a given set as an integer. def set_index(self, item): return int(item.text()[4:]) - 1 # get text from set string # Returns the index of a given phoneme as an integer. def phoneme_index(self, item): currentSet = self.get_set() phonemes = currentSet.phonemes for i in range(0, len(phonemes)): phoneme = phonemes[i] self.msg("Phoneme name: " + str(phoneme.name)) self.msg("Item text: " + str(item.text())) self.msg("Item text [:-7]: " + str(item.text())[:-7]) if str(phoneme.name) == str(item.text()): self.msg("Item text == phoneme name") return i elif str(phoneme.name) == str(item.text())[:-7]: self.msg("Item text + goal == phoneme name") return i return None # Adds a set to the currently selected level def add_set(self): level = self.get_level() self.msg("Adding set.") level.add_set() self.update_sets() # Removes a set from the currently selected level def remove_set(self): if self.setIndex != None: level = self.get_level() self.msg("Removing set at index " + str(self.setIndex)) level.remove_set(self.setIndex) self.update_sets() # Adds a phoneme to the currently selected set def add_phoneme(self): if self.get_num_phonemes() <= MAX_PHONEMES: # build phoneme phoneme = Phoneme() phoneme.name = str(self.ui.txtNewPhoneme.text()) # clear input text self.ui.txtNewPhoneme.clear() # add phoneme to set currentSet = self.get_set() self.msg("Adding phoneme " + phoneme.name) currentSet.add_phoneme(phoneme) self.msg("Current set: " + currentSet.toString()) # update phoneme list self.update_phonemes() else: QtGui.QMessageBox.warning(self, "Phoneme Limit Reached", "You have reached the limit of " + str(MAX_PHONEMES) + " phonemes.\nPlease remove some existing phonemes to add new ones.") # Removes a phoneme from the currently selected set def remove_phoneme(self): if self.phonemeIndex != None: currentSet = self.get_set() self.msg("Removing phoneme at index " + str(self.phonemeIndex)) currentSet.remove_phoneme(self.phonemeIndex) self.reset_phoneme_ui() self.update_phonemes() # Returns the number of phonemes currently in the game. def get_num_phonemes(self): n = 0 for level in self.levels: for set in level.sets: for phoneme in set.phonemes: n += 1 return n # Sets the currently selected phoneme as the goal for the set def set_goal(self): if self.phonemeIndex != None: currentSet = self.get_set() currentSet.set_goal_index(self.phonemeIndex) self.update_phonemes() # Loads the phoneme sound modification inderface def modify_sounds(self): # load up sounds UI self.Sounds = Sounds(self) self.Sounds.show() # Print debug messages, if needed def msg(self, message): if DEBUG: print(str(datetime.time(datetime.now())) + " > DEBUG: " + message) # Switches the interface to edit another level. def change_level(self, newLevel): self.msg("Switching to level " + str(newLevel)) self.levelIndex = newLevel - 1 self.update_sets() self.reset_phoneme_ui() self.ui.listPhonemes.clear() # Updates the sound paths of all phonemes using the sounds config file. def update_sound_paths(self): try: # get the collection from the sounds config file with open("sounds.pk", 'rb') as input: collection = pickle.load(input) self.msg("Data loaded from sounds.pk.") currentSet = self.get_set() phonemes = currentSet.phonemes # for each phoneme, update the path using the text for i in range(0, len(phonemes)): phoneme = phonemes[i] # iterate through every Phoneme_Sound to find a match for ps in collection: if ps.text == phoneme.text: phoneme.sound_path = ps.path except: self.msg("Warning: sounds config file not found.") # Saves the entire configuration as a file using the pickle module. # The file contains a single Game() object as defined in phoneme.py. # The object consists of a list of levels as well as values for each # difficulty slider (failed attempts, hints requested, and time). def save(self): # construct the game object to save game = Game() game.levels = self.levels game.failedAttemptsWeight = self.ui.sldrFailedAttempts.value() game.hintsRequestedWeight = self.ui.sldrHintsRequested.value() game.timeWeight = self.ui.sldrTime.value() # get path to save file to path = QtGui.QFileDialog.getSaveFileName(self, "Save File", "", "Phoneme Awareness Configuration File (*.cfg)") path = str(path) + ".cfg" try: with open(str(path), 'wb') as output: pickle.dump(game, output, pickle.HIGHEST_PROTOCOL) self.msg("Save successful.") except: self.msg("Save failed.") # additionally, save the slider values into a text file #try: # with open("sliders.txt", 'wb') as output: # output.write(str(game.failedAttemptsWeight) + "\n") # output.write(str(game.hintsRequestedWeight) + "\n") # output.write(str(game.timeWeight) + "\n") #except: # self.msg("Slider file output failed.") # Load button functionality def load(self): # get path to load file from path = str(QtGui.QFileDialog.getOpenFileName(self, "Load File", "", "Phoneme Awareness Configuration File (*.cfg)")) # get game object from file game = None try: with open(path, 'rb') as input: game = pickle.load(input) self.levels = game.levels self.ui.sldrFailedAttempts.setValue(game.failedAttemptsWeight) self.ui.sldrHintsRequested.setValue(game.hintsRequestedWeight) self.ui.sldrTime.setValue(game.timeWeight) self.update_sliders() self.msg("Settings file loaded successfully.") self.update_sets() except: self.msg("Settings could not be loaded.") # Installs the game with the current configuration to the Sifteos def install(self): # construct the game object QtGui.QMessageBox.information(self, "Starting Installation", "This will begin installing the game to the Sifteo cubes.\n\nYou will be notified when the installation is complete.") try: game = Game() game.levels = self.levels game.failedAttemptsWeight = self.ui.sldrFailedAttempts.value() game.hintsRequestedWeight = self.ui.sldrHintsRequested.value() game.timeWeight = self.ui.sldrTime.value() generate_files(game, '..\PhonemeFrenzy') compile_elf() install_elf() QtGui.QMessageBox.information(self, "Installation Complete", "The installation is complete.") except Exception as e: QtGui.QMessageBox.warning(self, "Installation Error", "An error occurred. The following exception was given:\n\n" + str(e)) # Allows the user to define a custom sound file def custom_sound(self): phoneme = self.get_phoneme() path = str(QtGui.QFileDialog.getOpenFileName()) if path != "": phoneme.sound_path = path phoneme.text = "custom" self.lblSoundPath.setText(basename(path)) # Updates the displayed values for the sliders. def update_sliders(self): self.ui.lblAttempts.setText(str(self.ui.sldrFailedAttempts.value()) + "%") self.ui.lblHints.setText(str(self.ui.sldrHintsRequested.value()) + "%") self.ui.lblTimeValue.setText(str(self.ui.sldrTime.value()) + "%") def show_images(self): self.ui.btnRemoveSet.setIcon(QtGui.QIcon("minus.png")) self.ui.btnAddSet.setIcon(QtGui.QIcon("plus.png")) self.ui.btnRemovePhoneme.setIcon(QtGui.QIcon("minus.png")) self.ui.btnAddPhoneme.setIcon(QtGui.QIcon("plus.png")) # Individual phoneme sound button functions def a(self): self.select_sound("a") def o(self): self.select_sound("o") def eu(self): self.select_sound("eu") def e_grave(self): self.select_sound("e_grave") def e_acute(self): self.select_sound("e_acute") def e(self): self.select_sound("e") def i(self): self.select_sound("i") def u(self): self.select_sound("u") def ou(self): self.select_sound("ou") def an(self): self.select_sound("an") def on(self): self.select_sound("on") def un(self): self.select_sound("un") def in2(self): self.select_sound("in") def ui2(self): self.select_sound("ui") def ill(self): self.select_sound("ill") def oi(self): self.select_sound("oi") def p(self): self.select_sound("p") def b(self): self.select_sound("b") def f(self): self.select_sound("f") def v(self): self.select_sound("v") def m(self): self.select_sound("m") def r(self): self.select_sound("r") def t(self): self.select_sound("t") def d(self): self.select_sound("d") def s(self): self.select_sound("s") def z(self): self.select_sound("z") def n(self): self.select_sound("n") def l(self): self.select_sound("l") def k(self): self.select_sound("k") def g(self): self.select_sound("g") def ch(self): self.select_sound("ch") def j(self): self.select_sound("j") def gn(self): self.select_sound("gn") # Selects a specific sound button def select_sound(self, s): self.deselect_all() if s == "a": self.ui.btnA.setChecked(True) elif s == "o": self.ui.btnO.setChecked(True) elif s == "eu": self.ui.btnEU.setChecked(True) elif s == "e_grave": self.ui.btnE_grave.setChecked(True) elif s == "e_acute": self.ui.btnE_acute.setChecked(True) elif s == "i": self.ui.btnI.setChecked(True) elif s == "u": self.ui.btnU.setChecked(True) elif s == "ou": self.ui.btnOU.setChecked(True) elif s == "an": self.ui.btnAN.setChecked(True) elif s == "on": self.ui.btnON.setChecked(True) elif s == "un": self.ui.btnUN.setChecked(True) elif s == "in": self.ui.btnIN.setChecked(True) elif s == "ui": self.ui.btnUI.setChecked(True) elif s == "ill" or s == "y": self.ui.btnILL.setChecked(True) elif s == "oi" or s == "w": self.ui.btnOI.setChecked(True) elif s == "p": self.ui.btnP.setChecked(True) elif s == "b": self.ui.btnB.setChecked(True) elif s == "f": self.ui.btnF.setChecked(True) elif s == "v": self.ui.btnV.setChecked(True) elif s == "m": self.ui.btnM.setChecked(True) elif s == "r": self.ui.btnR.setChecked(True) elif s == "t": self.ui.btnT.setChecked(True) elif s == "d": self.ui.btnD.setChecked(True) elif s == "s": self.ui.btnS.setChecked(True) elif s == "z": self.ui.btnZ.setChecked(True) elif s == "n": self.ui.btnN.setChecked(True) elif s == "l": self.ui.btnL.setChecked(True) elif s == "k": self.ui.btnK.setChecked(True) elif s == "g": self.ui.btnG.setChecked(True) elif s == "ch": self.ui.btnCH.setChecked(True) elif s == "j": self.ui.btnJ.setChecked(True) elif s == "gn": self.ui.btnGN.setChecked(True) # update current phoneme sound if s != "": phoneme = self.get_phoneme() phoneme.text = s self.update_sound_paths() self.ui.lblSoundPath.setText(basename(phoneme.sound_path)) sound = QtGui.QSound(phoneme.sound_path) sound.play() # Deselects all sound buttons in the phoneme sounds section def deselect_all(self): self.ui.btnA.setChecked(False) self.ui.btnO.setChecked(False) self.ui.btnEU.setChecked(False) self.ui.btnE_grave.setChecked(False) self.ui.btnE_acute.setChecked(False) self.ui.btnE.setChecked(False) self.ui.btnI.setChecked(False) self.ui.btnU.setChecked(False) self.ui.btnOU.setChecked(False) self.ui.btnAN.setChecked(False) self.ui.btnON.setChecked(False) self.ui.btnUN.setChecked(False) self.ui.btnIN.setChecked(False) self.ui.btnUI.setChecked(False) self.ui.btnILL.setChecked(False) self.ui.btnOI.setChecked(False) self.ui.btnP.setChecked(False) self.ui.btnB.setChecked(False) self.ui.btnF.setChecked(False) self.ui.btnV.setChecked(False) self.ui.btnM.setChecked(False) self.ui.btnR.setChecked(False) self.ui.btnT.setChecked(False) self.ui.btnD.setChecked(False) self.ui.btnS.setChecked(False) self.ui.btnZ.setChecked(False) self.ui.btnN.setChecked(False) self.ui.btnL.setChecked(False) self.ui.btnK.setChecked(False) self.ui.btnG.setChecked(False) self.ui.btnCH.setChecked(False) self.ui.btnJ.setChecked(False) self.ui.btnGN.setChecked(False)
class VacancyGetter(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.url = 'https://jobfinderapp.herokuapp.com/api/v1' self.cities_row = [] self.cities = {} self.sp_row = [] self.sp = {} self.set_cities() self.set_sp() self.ui = Ui_mainWindow() self.ui.setupUi(self) self.set_comboBox() self.init_GUI() def init_GUI(self): self.ui.pushButton.clicked.connect(self.get_data) def set_cities(self): url = self.url + '/cities/' resp = requests.get(url) if resp.status_code == 200: self.cities_row = resp.json() for row in self.cities_row: self.cities[row['name']] = row['slug'] def set_sp(self): url = self.url + '/specialties/' resp = requests.get(url) if resp.status_code == 200: self.sp_row = resp.json() for row in self.sp_row: self.sp[row['name']] = row['slug'] def set_comboBox(self): _translate = QtCore.QCoreApplication.translate for i, row in enumerate(self.cities_row): self.ui.comboBox_city.addItem("") name = row['name'] self.ui.comboBox_city.setItemText( i, _translate("mainWindow", name)) for i, row in enumerate(self.sp_row): self.ui.comboBox_laguage.addItem("") name = row['name'] self.ui.comboBox_laguage.setItemText( i, _translate("mainWindow", name)) def get_data(self): city = str(self.ui.comboBox_city.currentText()) sp = str(self.ui.comboBox_laguage.currentText()) params = '/vacancies/?city={}&sp={}'.format( self.cities[city], self.sp[sp] ) date = self.ui.date if date: date_str = date.toString('yyyy-MM-dd') params += f'&date={date_str}' url = self.url + params resp = requests.get(url) if resp.status_code == 200: text = '' for i, row in enumerate(resp.json(), 1): description = row["description"].replace('\n', ' ').replace('\t', ' ').strip() title = row["title"].replace('\n', '') text += f'{i}) {title}\n{description}\n{row["url"]}\n{row["timestamp"]}\n\n' if not text: text = 'Согласно Вашего запроса данные отсутствуют. Измените параметры' self.ui.textBrowser.setText(text) else: self.ui.textBrowser.setText(str(resp.status_code))