Example #1
0
    def __init__(self, workspace):
        self._player_name = 'unknown'

        self.motion_command = MotionModel()
        self.party = PartyModel('', 0)
        self.network = ClientNetwork(self)
        self.view = MainView(self)
        self.workspace = workspace(self)

        self._flag_network_event = Event()
        self._flag_network_event.clear()
    def __init__(self, root):
        self.root = root

        self.assets = AssetListModel()
        self.assets_to_add = AssetListModel()

        self.checkout_model = CheckoutModel()
        self.main_view = MainView(root, self.assets)

        self.main_view.tree.bind('<<TreeviewSelect>>', self.__on_select)
        self.main_view.tree.bind('<Double-Button-1>', self.__open_browser)

        self.main_view.btn_auto_add.config(command=self.__auto_add)
        self.main_view.btn_check_in.config(command=self.__check_in)
        self.main_view.btn_edit.config(command=self.__edit_view_launcher)
        self.main_view.btn_generate.config(
            command=self.__document_generator_view_launcher)
        self.main_view.btn_refresh.config(command=self.__refresh_assets)
        self.main_view.btn_exit.config(command=Controller.__close_app)

        self.assets.data.add_callback(self.main_view.update_tree_view)

        self.edit_view_controller = EditViewController(self.main_view,
                                                       self.assets)
        self.doc_gen_controller = DocumentGeneratorController(
            self.main_view, self.checkout_model, self.assets)
 def __init__(self, tk, width, height, testMode, fps):
     self.width = width
     self.height = height
     self.tk = tk
     self.fps = fps
     self.testMode = testMode
     self.pMod = PicMod(width, height)
     self.cv2Image = self.pMod.takePic()
     self.backgroundMod = BackgroundSubMod(width, height)
     self.recMod = RecordVideoMod(width, height)
     self.cMod = ConvertImageMod(self.cv2Image)
     self.tkImage = self.cMod.cv2ToImage(self.cv2Image)
     self.paintRectMod = PaintRectMod(self.cv2Image)
     self.mView = MainView(tk, self.tkImage, width, height, self.testMode)
     self.uploadM = FtpUploadMod()
     self.databaseM = mysqlMod()
     self.eventM = EventMod(myRectangle(0,0,0,0,"fake", 5))
     self.startupSettings()
     self.rectList = []
     self.startupRects()
     self.imageList = []
     self.counter = 0
     self.tk.after(0, self.updateLabel())
Example #4
0
from View.MainView import MainView
from PyQt5.QtWidgets import QApplication
import sys
from PyQt5 import QtGui
import os

# launching application
try:
    file_path = os.path.dirname(os.path.abspath(__file__))
    icon_path = os.path.join(file_path, "StudierLogo.png")
    app = QApplication(sys.argv)
    app.setApplicationName("Studier")
    app.setWindowIcon(QtGui.QIcon(icon_path))
    window = MainView()
    window.show()
    app.exec_()
except Exception as e:
    print(str(e))
Example #5
0
 def __init__(self):
     self.view = MainView(self)
     self.model = Model()
Example #6
0
class Presenter:
    def __init__(self):
        self.view = MainView(self)
        self.model = Model()

    def launchView(self):
        self.view.start()

    def getInformationText(self):
        textEditor = TextInformation(self.view.getAttack(),
                                     self.view.getContent())
        scrolledText = textEditor.createScrolledText()
        self.view.displayScrolledText(scrolledText)

    def getResulAttack(self):
        attack = self.view.getAttack()
        file = self.view.getFile()
        content = self.view.getContent()
        interfaceResult = ResultInterface()
        if attack == 'VoIP Eavesdropping':
            self.view.displayAudioWidget(
                interfaceResult.create_results(attack, file, content))
        elif attack == 'ARP Poisoning' or attack == 'DHCP Poisoning':
            result = interfaceResult.create_results(attack, None, content)
            self.view.displayExcel(result)
        elif attack == 'Extract Images':
            interfaceResult.create_results(attack, file, content)
        else:
            pass
Example #7
0
class ClientController(BaseController, ClientInterface):
    def __init__(self, workspace):
        self._player_name = 'unknown'

        self.motion_command = MotionModel()
        self.party = PartyModel('', 0)
        self.network = ClientNetwork(self)
        self.view = MainView(self)
        self.workspace = workspace(self)

        self._flag_network_event = Event()
        self._flag_network_event.clear()

    # -------------------- CONTROLLER CORE --------------------
    def get_name(self):
        return self._player_name

    def set_player_name(self, name: str) -> None:
        self._player_name = name

    def set_connexion_info(self, host: str, port: int) -> None:
        self.network.set_connexion(host, port)

    def start(self) -> None:
        self.network.start()
        self.view.start()
        self.workspace.start()

    def join(self) -> None:
        self.network.stop()

    def stop(self):
        self.join()
        self.view.close()

    def set_network_event(self):
        self._flag_network_event.set()

    def clear_network_event(self):
        self._flag_network_event.clear()

    # -------------------- BUTTON CALL BACK --------------------
    def callback_join_party(self):
        _party_name = self.view.get_party_selected()
        if _party_name is not None:
            self.watch_party(_party_name)

    def callback_watch_party(self):
        _party_name = self.view.get_party_selected()
        if _party_name is not None:
            self.join_party(_party_name)

    def callback_show_party_list(self):
        self.view.show_parties_list()

    def callback_show_party_form(self):
        self.view.show_party_form()

    # -------------------- NETWORK FUNC --------------------
    def get_parties_from_server(self) -> list:
        return self.network.get_party_list()

    def join_party(self, party_name):
        if self.network.watch_party(party_name):
            self.party = PartyModel(party_name)
            self.change_mode_to_playing()

    def watch_party(self, party_name):
        if self.network.join_party(party_name):
            self.party = PartyModel(party_name)
            self.change_mode_to_playing()

    def create_party(self, party_model):
        if self.network.create_party(party_model):
            _name, _limit, _player = party_model
            self.party = PartyModel(_name, _limit)
            self.callback_show_party_list()

    def wait_until_event(self) -> bool:
        _resp = self._flag_network_event.wait(timeout=1)
        self.clear_network_event()
        return _resp

    # -------------------- CLIENT MODEL --------------------
    def get_update_model(self) -> dict:
        return {
            Cmd.CMD_UPDATE_STATUS: self._player_name,
            Cmd.PLAYER_INFO: self.motion_command.to_dict(),
            Cmd.GAME_INFO: self.party.name,
        }

    def update_party(self, model: dict) -> None:
        try:
            if not self.party.name == model[PartyKey.KEY_NAME]:
                self.party = PartyModel(model[PartyKey.KEY_NAME],
                                        model[PartyKey.KEY_LIMIT])

            self.party.update(model)
        except Exception as e:
            print('> [ERR] update party: {}: {}'.format(type(e).__name__, e))

    # -------------------- VIEW CONTROL --------------------
    def change_mode_to_playing(self):
        self.view.show_playing_mode()
        self.network.set_ping_pong_mode()

    def change_mode_to_menu(self):
        self.view.show_parties_list()
        self.network.set_sender_mode()
        self.callback_show_party_list()

    # -------------------- PARTY FUNC --------------------
    # >> PARTY MOBILE OBJECTS
    def get_mobs_in_radius(self,
                           near_point: np.ndarray,
                           radius: int,
                           enemy_only=True):
        if enemy_only:
            return [
                _mob for _mob in self.party.get_mobs_iterator()
                if np.linalg.norm(_mob.xy - near_point) < radius
                and not _mob.name == self.get_name()
            ]
        else:
            return [
                _mob for _mob in self.party.get_mobs_iterator()
                if np.linalg.norm(_mob.xy - near_point) < radius
            ]

    def get_data_from_players(self, enemy_only=False):
        if enemy_only:
            return [
                _player for _player in self.party.get_players_iterator()
                if not _player.name == self.get_name()
            ]
        else:
            return self.party.get_players_iterator()

    def get_data_from_asteroids(self):
        return self.party.get_asteroids_iterator()

    def get_data_from_bolts(self):
        return self.party.get_bolts_iterator()

    def get_player(self, name: str):
        return self.party.get_player(name)

    def get_players_name(self):
        return self.party.get_players_name()

    def get_asteroid(self, name: str):
        return self.party.get_asteroid(name)

    def get_data_from_mobs(self, enemy_only=False):
        if enemy_only:
            return [
                _mob for _mob in self.party.get_mobs_iterator()
                if not _mob.name == self.get_name()
            ]
        return self.party.get_mobs_iterator()

    def is_spectator(self):
        return not self.get_name() in self.party.get_players_name()

    # >> PLAYER MOTION
    def set_motion_command(self, motion: MotionModel):
        self.motion_command = motion

    def get_motion_from_party(self):
        try:
            return self.party.motions[-1]
        except:
            return dict()

    # >> PARTY MODEL
    def get_time_left(self):
        return self.party.get_time_left()

    def get_dead_zone_radius(self):
        return self.party.get_dead_zone_radius()

    def get_dead_zone_center(self):
        return self.party.get_dead_zone_center()

    def get_winner(self):
        return self.party.dead_pool[-1]

    def get_rank_board(self):
        return self.party.dead_pool

    # >> PARTY STATES
    def is_party_done(self):
        try:
            return self.party.is_done()
        except Exception as e:
            return False

    def is_party_waiting(self):
        return self.party.state == PartyState.STATE_WAITING_FOR_PLAYERS

    def is_party_ready_to_fight(self):
        return self.party.state == PartyState.STATE_READY_TO_FIGHT

    def is_party_in_progress(self):
        return self.party.state == PartyState.STATE_IN_PROGRESS

    def has_party_winner(self):
        return self.party.state == PartyState.STATE_WINNER

    def get_party_name(self):
        return self.party.name
class GuardianController:
    '''
        Initialize all mods and variables for use
    '''
    def __init__(self, tk, width, height, testMode, fps):
        self.width = width
        self.height = height
        self.tk = tk
        self.fps = fps
        self.testMode = testMode
        self.pMod = PicMod(width, height)
        self.cv2Image = self.pMod.takePic()
        self.backgroundMod = BackgroundSubMod(width, height)
        self.recMod = RecordVideoMod(width, height)
        self.cMod = ConvertImageMod(self.cv2Image)
        self.tkImage = self.cMod.cv2ToImage(self.cv2Image)
        self.paintRectMod = PaintRectMod(self.cv2Image)
        self.mView = MainView(tk, self.tkImage, width, height, self.testMode)
        self.uploadM = FtpUploadMod()
        self.databaseM = mysqlMod()
        self.eventM = EventMod(myRectangle(0,0,0,0,"fake", 5))
        self.startupSettings()
        self.rectList = []
        self.startupRects()
        self.imageList = []
        self.counter = 0
        self.tk.after(0, self.updateLabel())

    '''
        Set the first picture in tkinter
    '''
    def updateLabel(self):
        self.mView.setPic(self.tkImage)
        self.tk.after(100, func=lambda :self.updateLabel())
    """
        sets up the sideRectangles 
    """
    def startupRects(self):
        right = myRectangle(0,2,10,self.height,"Left", 2)
        left = myRectangle(self.width-10,0,self.width,self.height,"Right", 2)
        self.rectList.append(left)
        self.rectList.append(right)

    """
        Read in the saved settings from file and set them
        in the mods.
    """
    def startupSettings(self):
        file = open('Data/settings.txt', 'r')
        tmp = 0
        for line in file:
            if tmp == 0:
                self.backgroundMod.maxCont = int(line)
                self.mView.setSetting(str(self.backgroundMod.maxCont), 1)
            if tmp == 1:
                self.backgroundMod.minCont = int(line)
                self.mView.setSetting(str(self.backgroundMod.minCont), 2)
            if tmp == 2:
                self.eventM.timeEvent = int(line)
                self.mView.setSetting(str(self.eventM.timeEvent), 3)
            tmp+=1
    """
        Function for changing settings
    """
    def settingChange(self, sett):
        if sett == 1:
            self.backgroundMod.maxCont+=10
            self.mView.setSetting(str(self.backgroundMod.maxCont), 1)
        if sett == 2:
            if self.backgroundMod.maxCont > self.backgroundMod.minCont+10:
                self.backgroundMod.maxCont-=10
            self.mView.setSetting(str(self.backgroundMod.maxCont), 1)
        if sett == 3:
            if self.backgroundMod.minCont < self.backgroundMod.maxCont-10:
                self.backgroundMod.minCont+=10
            self.mView.setSetting(str(self.backgroundMod.minCont), 2)
        if sett == 4:
            if self.backgroundMod.minCont > 10:
                self.backgroundMod.minCont-=10
            self.mView.setSetting(str(self.backgroundMod.minCont), 2)
        if sett == 5:
            self.eventM.timeEvent += 1
            self.mView.setSetting(str(self.eventM.timeEvent), 3)
        if sett == 6:
            if self.eventM.timeEvent > 0:
                self.eventM.timeEvent -= 1
            self.mView.setSetting(str(self.eventM.timeEvent), 3)

    '''
        Save all settings
    '''
    def saveSettings(self):
        file = open("Data/settings.txt", 'w')
        file.write(str(self.backgroundMod.maxCont)+"\n")
        file.write(str(self.backgroundMod.minCont)+"\n")
        file.write(str(self.eventM.timeEvent)+"\n")