示例#1
0
    def __init__(self):        
        'Initial method to generate the "Messenger" menu'

        # =============Messenger tab creation===============        
        # (1) TABLE: Widget container
        ## --9 x 8 table creation
        self.table = gtk.Table(9, 8, True)
        self.table.show()
        
        # (2) LABEL: Window title
        titulo = Label('Messenger', 'Neuropol 31', orange, 0.5, 0.5, gtk.JUSTIFY_CENTER)
        self.table.attach(titulo, 6, 8, 0, 2)

        # (3) FRAMES & IMAGES: General menu images
        GralIconsON = []
        ## --'Necessities and Desires' option
        url = 'Images\\Necessity&Desire\\SNecessities_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[0], 2, 3, 0, 2)
        ## --'Mobility' option
        url = 'Images\\Mobility\\SMobility_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[1], 3, 4, 0, 2)
        ## --'Environmental Control' option
        url = 'Images\\EnvControl\\SHomeControl_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[2], 4, 5, 0, 2)
        ## --'Messenger' option
        url = 'Images\\Messenger\\LChat_on.png'
        msg_event, msg_image = Event_Image(url, ground)
        msg_event.set_border_width(10)
        GralIconsON.append(msg_image)
        self.table.attach(msg_event, 5, 6, 0, 2)
        
        # (4) IMAGES: Icons for cue indication
        CueSignals = []
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\left.png'
        image = Image(url)
        CueSignals.append(image)        
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\right.png'
        image = Image(url)
        CueSignals.append(image) 
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\idle.png'
        image = Image(url)
        CueSignals.append(image)  

        # (5) TEXT ENTRY
        ## -- text entry
        entry = gtk.Entry(False)
        entry.modify_font(pango.FontDescription(small_font))
        entry.show()
        self.table.attach(entry, 1, 8, 2, 3)
        ## -- text- image
        url = 'Images\\Messenger\\Text_off.png'
        writeOFF = Image(url)
        self.table.attach(writeOFF, 0, 1, 2, 3)

        # (6) BUTTONS: Messenger main menu
        mainmenu_labels, mainmenu_buttons = [], []
        labels = ['a b c d e', 'f g h i j', 'k l m n o',\
                  'p q r s t', 'uv wx yz', 'Options', 'Emotions', 'E X I T']
        for index in range(8):
            button, label = Button_Label(labels[index], lblue, lblue, medium_font)     
            label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)       
            self.table.attach(button, index, index+1, 3, 4)
            mainmenu_labels.append(label)
            mainmenu_buttons.append(button)        

        # (7) BUTTONS: Messenger sub - menu
        submenu_buttons, submenu_labels = [], []
        for x in range(8):
            subutton, sublabel = Button_Label('', lblue, 'white', medium_font)
            sublabel.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
            self.table.attach(subutton, x, x+1, 4, 5)
            submenu_buttons.append(subutton)
            submenu_labels.append(sublabel)        

        # (8) TEXT DISPLAY
        frame_win, textview, textbuffer, tagB, tagG = Window_TextView(medium_font, blue) 
        self.table.attach(frame_win, 0, 8, 5, 8)

        # (9) FRAME & LABEL: Available options
        ## --frame creation        
        frame, label = Frame_Label('AVAILABLE OPTIONS', ground, lblue, small_font, 0, 0.5, gtk.JUSTIFY_CENTER)
        self.table.attach(frame, 0, 8, 8, 9) 
        ## --menu of options
        options_menu = []
        for index in range(8):
            option = Label('', medium_font, 'black', 0.5, 0.5, gtk.JUSTIFY_CENTER)
            self.table.attach(option, index, index+1, 8, 9)
            options_menu.append(option)       
        
        # (10) IMAGES: general menu images 
        GralIconsOFF = []
        GralIconsOFF.append(Image('Images\\Necessity&Desire\\SNecessities_off.png'))
        GralIconsOFF.append(Image('Images\\Mobility\\SMobility_off.png'))
        GralIconsOFF.append(Image('Images\\EnvControl\\SHomeControl_off.png'))        
        GralIconsOFF.append(Image('Images\\Messenger\\LChat_off.png'))
        writeON = Image('Images\\Messenger\\Text_on.png')
        self.msg_MI = Image('Images\\Messenger\\LChat_MI.png') 
        
        #(11) IMAGES: emotion submenu 
        SelectedEmotion = []
        SelectedEmotion.append(Image('Images\\Messenger\\joy_selection.png'))
        SelectedEmotion.append(Image('Images\\Messenger\\sadness_selection.png'))
        SelectedEmotion.append(Image('Images\\Messenger\\trust_selection.png'))
        SelectedEmotion.append(Image('Images\\Messenger\\disgust_selection.png'))
        SelectedEmotion.append(Image('Images\\Messenger\\fear_selection.png'))
        SelectedEmotion.append(Image('Images\\Messenger\\anger_selection.png'))
        SelectedEmotion.append(Image('Images\\Messenger\\surprise_selection.png'))
        SelectedEmotion.append(Image('Images\\Messenger\\anticipation_selection.png'))     
        
        #(12) Widgets assignation to enable them in the following
        #     methods
        ## -- ButtonS
        self.mainmenu_buttons = mainmenu_buttons
        self.submenu_buttons = submenu_buttons
        ## -- ImageS
        self.msg_image = msg_image
        self.writeOFF = writeOFF
        self.writeON  = writeON
        self.GralIconsOFF = GralIconsOFF
        self.GralIconsON  = GralIconsON
        self.SelectedEmotion = SelectedEmotion
        ## -- FrameS
        self.msg_event = msg_event
        self.frame_win = frame_win
        ## -- LabelS
        self.CueSignals = CueSignals
        self.titulo = titulo
        self.mainmenu_labels = mainmenu_labels
        self.submenu_labels = submenu_labels
        self.options_menu = options_menu
        ## -- TextEntrY
        self.entry = entry
        ## -- TextDiplaY
        self.textview = textview
        self.textbuffer = textbuffer
        self.tagB, self.tagG = tagB, tagG
        ## -- Variable Declaration
        self.CUE = None
        #     Messages variables
        self.text, self.OPTIONS, self.num_space = '', ['','','','','','','',''], 0
示例#2
0
    def __init__(self):
        'Initial method to generate the "Environment Control" menu'

        # ======== Environment Control tab creation=========
        # (1) TABLE: Widget container
        ## --9 x 8 table creation
        self.table = gtk.Table(9, 8, True)
        self.table.show()

        # (2) LABEL: Window title
        titulo = Label('Environment\nControl', 'Neuropol 31', orange, 0.5, 0.5,
                       gtk.JUSTIFY_CENTER)
        self.table.attach(titulo, 6, 8, 0, 2)

        # (3) FRAMES & IMAGES: General menu images
        GralIconsON = []
        ## --'Necessities and Desires' option
        url = 'Images\\Necessity&Desire\\SNecessities_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[0], 2, 3, 0, 2)
        ## --'Mobility' option
        url = 'Images\\Mobility\\SMobility_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[1], 3, 4, 0, 2)
        ## --'Environmental Control' option
        url = 'Images\\EnvControl\\LHomeControl_on.png'
        EC_event, EC_image = Event_Image(url, ground)
        EC_event.set_border_width(10)
        GralIconsON.append(EC_image)
        self.table.attach(EC_event, 4, 5, 0, 2)
        ## --'Messenger' option
        url = 'Images\\Messenger\\SChat_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[3], 5, 6, 0, 2)

        # (4) IMAGES: Icons for cue indication
        CueSignals = []
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\left.png'
        image = Image(url)
        CueSignals.append(image)
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\right.png'
        image = Image(url)
        CueSignals.append(image)
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\idle.png'
        image = Image(url)
        CueSignals.append(image)

        # (5) LABELS: Icon labels for main menu
        mainmenu_labels, x, y = [], 1, 4
        # --- exit
        label = Label('Exit', medium_font, lblue, 0.1, 0.8, gtk.JUSTIFY_LEFT)
        self.table.attach(label, 0, 2, 2, 4)
        mainmenu_labels.append(label)
        # --- switch room
        label = Label('Switch\nRoom', medium_font, lblue, 0.5, 0.8,
                      gtk.JUSTIFY_CENTER)
        self.table.attach(label, 0, 3, 2, 4)
        mainmenu_labels.append(label)
        # --- rooms
        # room label
        self.table.attach(Image('Images\\EnvControl\\border.png'), 2, 6, 2, 3)
        Current_Room = Label(ROOMS[0], 'Neuropol 20', "#644080", 0.5, 0.5,
                             gtk.JUSTIFY_CENTER)
        self.table.attach(Current_Room, 6, 8, 2, 3)
        # internal items
        Rooms = [
            'Blinds ||\nCurtains', 'Doors', 'Heating', 'Light',
            'Stereo  ||\nTelevision', 'Windows'
        ]
        for room in Rooms[:-1]:
            label = Label(room, medium_font, lblue, 0.5, 0.8,
                          gtk.JUSTIFY_CENTER)
            self.table.attach(label, x, y, 2, 4)
            mainmenu_labels.append(label)
            x += 1
            y += 1
        # last item
        label = Label(Rooms[-1], medium_font, lblue, 0.9, 0.8,
                      gtk.JUSTIFY_RIGHT)
        self.table.attach(label, 6, 8, 2, 4)
        mainmenu_labels.append(label)

        # (6) EVENTS & IMAGES: main menu images
        mainmenu_events, mainmenu_imagesOFF, x, y = [], [], 0, 1
        URLs = ['Images\\EnvControl\\Exit_off.png',\
                'Images\\EnvControl\\Switch_off.png',\
                'Images\\EnvControl\\Curtains_off.png',\
                'Images\\EnvControl\\Door_off.png',\
                'Images\\EnvControl\\Heating_off.png',\
                'Images\\EnvControl\\Light_off.png',\
                'Images\\EnvControl\\Television_off.png',\
                'Images\\EnvControl\\Windows_off.png']
        for url in URLs:
            eventbox, image = Event_Image(url, ground)
            self.table.attach(eventbox, x, y, 4, 6)
            mainmenu_events.append(eventbox)
            mainmenu_imagesOFF.append(image)
            x += 1
            y += 1

        # (7) BUTTONS: list of EC Tasks
        submenu_labels, submenu_buttons = [], []
        for x in range(0, 8):
            button, label = Button_Label('', lblue, 'white', medium_font)
            label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
            self.table.attach(button, x, x + 1, 6, 8)
            submenu_labels.append(label)
            submenu_buttons.append(button)

        # (8) IMAGES: general menu images for OFF state
        GralIconsOFF = []
        GralIconsOFF.append(
            Image('Images\\Necessity&Desire\\SNecessities_off.png'))
        GralIconsOFF.append(Image('Images\\Mobility\\SMobility_off.png'))
        GralIconsOFF.append(Image('Images\\EnvControl\\LHomeControl_off.png'))
        GralIconsOFF.append(Image('Images\\Messenger\\SChat_off.png'))

        # (9) IMAGES: main menu images for ON state
        mainmenu_imagesON = []
        mainmenu_imagesON.append(Image('Images\\EnvControl\\Exit_on.png'))
        mainmenu_imagesON.append(Image('Images\\EnvControl\\Switch_on.png'))
        mainmenu_imagesON.append(Image('Images\\EnvControl\\Curtains_on.png'))
        mainmenu_imagesON.append(Image('Images\\EnvControl\\Door_on.png'))
        mainmenu_imagesON.append(Image('Images\\EnvControl\\Heating_on.png'))
        mainmenu_imagesON.append(Image('Images\\EnvControl\\Light_on.png'))
        mainmenu_imagesON.append(
            Image('Images\\EnvControl\\Television_on.png'))
        mainmenu_imagesON.append(Image('Images\\EnvControl\\Windows_on.png'))

        # (10) IMAGE: general menu image for MI state
        self.EC_MI = Image('Images\\EnvControl\\LHomeControl_MI.png')

        #(11) FRAME & LABELS: history of the selected tasks
        frame, label = Frame_Label('HISTORY - Recently Selected Tasks', ground,
                                   lblue, small_font, 0, 0.5,
                                   gtk.JUSTIFY_CENTER)
        self.table.attach(frame, 0, 8, 8, 9)
        History_Labels = []
        History_Labels.append(
            Label('', small_font, 'black', 0.1, 0.9, gtk.JUSTIFY_LEFT))
        self.table.attach(History_Labels[0], 0, 1, 8, 9)
        for index in range(1, 8):
            History_Labels.append(
                Label('', small_font, lblue, 0.1, 0.9, gtk.JUSTIFY_LEFT))
            self.table.attach(History_Labels[index], index, index + 1, 8, 9)

        # (12) Widgets assignation to enable them in the following
        #     methods
        # -- ButtonS
        self.submenu_buttons = submenu_buttons
        # -- ImageS
        self.GralIconsON = GralIconsON
        self.GralIconsOFF = GralIconsOFF
        self.mainmenu_imagesOFF = mainmenu_imagesOFF
        self.mainmenu_imagesON = mainmenu_imagesON
        # -- Events
        self.mainmenu_events = mainmenu_events
        # -- FrameS
        self.EC_event = EC_event
        # -- LabelS
        self.CueSignals = CueSignals
        self.Current_Room = Current_Room
        self.titulo = titulo
        self.mainmenu_labels = mainmenu_labels
        self.submenu_labels = submenu_labels
        self.History_Labels = History_Labels
        # -- Variable Declaration
        self.History, self.CUE = ['', '', '', '', '', '', '', ''], None
示例#3
0
    def __init__(self):
        'Initial method to generate the "Mobility" menu'

        # =============Mobility tab creation===============
        # (1) TABLE: Widget container
        ## --9 x 8 table creation
        self.table = gtk.Table(9, 8, True)
        self.table.show()

        # (2) LABEL: Window title
        titulo = Label('Mobility', 'Neuropol 31', orange, 0.5, 0.5,
                       gtk.JUSTIFY_CENTER)
        self.table.attach(titulo, 6, 8, 0, 2)

        # (3) FRAMES & IMAGES: General menu images
        GralIconsON = []
        ## --'Necessities and Desires' option
        url = 'Images\\Necessity&Desire\\SNecessities_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[0], 2, 3, 0, 2)
        ## --'Mobility' option
        url = 'Images\\Mobility\\LMobility_on.png'
        mob_event, mob_image = Event_Image(url, ground)
        mob_event.set_border_width(10)
        GralIconsON.append(mob_image)
        self.table.attach(mob_event, 3, 4, 0, 2)
        ## --'Environmental Control' option
        url = 'Images\\EnvControl\\SHomeControl_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[2], 4, 5, 0, 2)
        ## --'Messenger' option
        url = 'Images\\Messenger\\SChat_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[3], 5, 6, 0, 2)

        # (4) IMAGES: Icons for cue indication
        CueSignals = []
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\left.png'
        image = Image(url)
        CueSignals.append(image)
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\right.png'
        image = Image(url)
        CueSignals.append(image)
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\idle.png'
        image = Image(url)
        CueSignals.append(image)

        # (5) EVENTS & IMAGES: Room Selection
        mainmenu_icons, mainmenu_imagesOFF = [], []
        # --- exit
        eventbox, image = Event_Image('Images\\Mobility\\Exit_off.png', ground)
        eventbox.set_size_request(95, 95)
        self.table.attach(eventbox, 0, 1, 3, 5)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)
        # --- caregiver's room
        eventbox, image = Event_Image('Images\\Mobility\\BedRoom2_off.png',
                                      ground)
        eventbox.set_size_request(250, 95)
        self.table.attach(eventbox, 1, 3, 3, 5)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)
        # --- bathroom
        eventbox, image = Event_Image('Images\\Mobility\\BathRoom_off.png',
                                      ground)
        eventbox.set_size_request(250, 95)
        self.table.attach(eventbox, 3, 5, 3, 5)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)
        # ---my bedroom
        eventbox, image = Event_Image('Images\\Mobility\\BedRoom1_off.png',
                                      ground)
        eventbox.set_size_request(250, 95)
        self.table.attach(eventbox, 5, 7, 3, 5)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)
        # --- exit
        eventbox, image = Event_Image('Images\\Mobility\\Exit_off.png', ground)
        eventbox.set_size_request(95, 95)
        self.table.attach(eventbox, 7, 8, 3, 5)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)
        # --- living room
        eventbox, image = Event_Image('Images\\Mobility\\LivingRoom_off.png',
                                      ground)
        eventbox.set_size_request(250, 95)
        self.table.attach(eventbox, 1, 3, 5, 7)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)
        # --- entrance
        eventbox, image = Event_Image('Images\\Mobility\\Entrance_off.png',
                                      ground)
        eventbox.set_size_request(250, 95)
        self.table.attach(eventbox, 3, 5, 5, 7)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)
        # --- kitchen
        eventbox, image = Event_Image('Images\\Mobility\\Kitchen_off.png',
                                      ground)
        eventbox.set_size_request(250, 95)
        self.table.attach(eventbox, 5, 7, 5, 7)
        mainmenu_icons.append(eventbox)
        mainmenu_imagesOFF.append(image)

        # (6) LABELS: Icon labels for main menu
        mainmenu_labels = []
        # --- exit
        label = Label('Exit', medium_font, lblue, 0.5, 0.8, gtk.JUSTIFY_CENTER)
        label.set_size_request(95, 20)
        self.table.attach(label, 0, 1, 2, 3)
        mainmenu_labels.append(label)
        # --- caregiver's room
        label = Label('Carer-Room', medium_font, lblue, 0.5, 0.8,
                      gtk.JUSTIFY_CENTER)
        label.set_size_request(250, 20)
        self.table.attach(label, 1, 3, 2, 3)
        mainmenu_labels.append(label)
        # --- bathroom
        label = Label('Bathroom', medium_font, lblue, 0.5, 0.8,
                      gtk.JUSTIFY_CENTER)
        label.set_size_request(250, 20)
        self.table.attach(label, 3, 5, 2, 3)
        mainmenu_labels.append(label)
        # ---my bedroom
        label = Label('My Bedroom', medium_font, lblue, 0.5, 0.8,
                      gtk.JUSTIFY_CENTER)
        label.set_size_request(250, 20)
        mainmenu_labels.append(label)
        self.table.attach(label, 5, 7, 2, 3)
        # --- exit
        label = Label('Exit', medium_font, lblue, 0.5, 0.8, gtk.JUSTIFY_CENTER)
        eventbox.set_size_request(95, 20)
        mainmenu_labels.append(label)
        self.table.attach(label, 7, 8, 2, 3)
        # --- living room
        label = Label('Living-Room', medium_font, lblue, 0.5, 0.2,
                      gtk.JUSTIFY_CENTER)
        label.set_size_request(250, 20)
        mainmenu_labels.append(label)
        self.table.attach(label, 1, 3, 7, 8)
        # --- entrance
        label = Label('Entrance', medium_font, lblue, 0.5, 0.2,
                      gtk.JUSTIFY_CENTER)
        label.set_size_request(250, 20)
        mainmenu_labels.append(label)
        self.table.attach(label, 3, 5, 7, 8)
        # --- kitchen
        label = Label('Kitchen', medium_font, lblue, 0.5, 0.2,
                      gtk.JUSTIFY_CENTER)
        label.set_size_request(250, 20)
        mainmenu_labels.append(label)
        self.table.attach(label, 5, 7, 7, 8)

        # (7) IMAGES: general menu images for OFF state
        GralIconsOFF = []
        GralIconsOFF.append(
            Image('Images\\Necessity&Desire\\SNecessities_off.png'))
        GralIconsOFF.append(Image('Images\\Mobility\\LMobility_off.png'))
        GralIconsOFF.append(Image('Images\\EnvControl\\SHomeControl_off.png'))
        GralIconsOFF.append(Image('Images\\Messenger\\SChat_off.png'))

        # (8) IMAGES: main menu images for ON state
        mainmenu_imagesON = []
        mainmenu_imagesON.append(Image('Images\\Mobility\\Exit_on.png'))
        mainmenu_imagesON.append(Image('Images\\Mobility\\BedRoom2_on.png'))
        mainmenu_imagesON.append(Image('Images\\Mobility\\BathRoom_on.png'))
        mainmenu_imagesON.append(Image('Images\\Mobility\\BedRoom1_on.png'))
        mainmenu_imagesON.append(Image('Images\\Mobility\\Exit_on.png'))
        mainmenu_imagesON.append(Image('Images\\Mobility\\LivingRoom_on.png'))
        mainmenu_imagesON.append(Image('Images\\Mobility\\Entrance_on.png'))
        mainmenu_imagesON.append(Image('Images\\Mobility\\Kitchen_on.png'))
        mainmenu_selection = []
        mainmenu_selection.append(Image('Images\\Mobility\\Exit.png'))
        mainmenu_selection.append(Image('Images\\Mobility\\BedRoom2.png'))
        mainmenu_selection.append(Image('Images\\Mobility\\BathRoom.png'))
        mainmenu_selection.append(Image('Images\\Mobility\\BedRoom1.png'))
        mainmenu_selection.append(Image('Images\\Mobility\\Exit.png'))
        mainmenu_selection.append(Image('Images\\Mobility\\LivingRoom.png'))
        mainmenu_selection.append(Image('Images\\Mobility\\Entrance.png'))
        mainmenu_selection.append(Image('Images\\Mobility\\Kitchen.png'))

        # (9) IMAGE: general menu image for MI state
        self.mob_MI = Image('Images\\Mobility\\LMobility_MI.png')

        # (10) FRAME & LABELS: history of the selected tasks
        frame, label = Frame_Label('HISTORY - Recently Selected Places',
                                   ground, lblue, small_font, 0, 0.5,
                                   gtk.JUSTIFY_CENTER)
        self.table.attach(frame, 0, 8, 8, 9)
        History_Labels = []
        History_Labels.append(
            Label('', small_font, 'black', 0.1, 0.6, gtk.JUSTIFY_LEFT))
        self.table.attach(History_Labels[0], 0, 1, 8, 9)
        for index in range(1, 8):
            History_Labels.append(
                Label('', small_font, lblue, 0.1, 0.6, gtk.JUSTIFY_LEFT))
            self.table.attach(History_Labels[index], index, index + 1, 8, 9)

        #(11) Widgets assignation to enable them in following
        #     methods
        ## -- ContainerS
        self.mainmenu_icons = mainmenu_icons
        self.mob_event = mob_event
        ## -- ImageS
        self.CueSignals = CueSignals
        self.GralIconsON = GralIconsON
        self.GralIconsOFF = GralIconsOFF
        self.mainmenu_imagesON = mainmenu_imagesON
        self.mainmenu_imagesOFF = mainmenu_imagesOFF
        self.mainmenu_selection = mainmenu_selection
        ## -- LabelS
        self.mainmenu_labels = mainmenu_labels
        self.titulo = titulo
        self.History_Labels = History_Labels
        ## -- Variable Declaration
        self.History, self.CUE = ['', '', '', '', '', '', '', ''], None
示例#4
0
    def __init__(self):        
        'Initial method to generate the "User-Tutorial" menu'
        
        # ============User-Tutorial tab creation==============        
        # (1) TABLE: Widget container
        ## --9 x 8 table creation
        self.table = gtk.Table(9, 8, False)
        self.table.show()
        
        # (2) LABEL: Window title
        titulo = Label('Menu 1', 'Neuropol 33', orange, 0.5, 0.5, gtk.JUSTIFY_CENTER)        
        titulo.hide()
        self.table.attach(titulo, 6, 8, 0, 2) 

        # (3) IMAGES: Icons for cue indication (Tutorial_MI mode)
        CueSignals = [[],[]]
        # -- cue: MI preparation
        url = 'Images\\User_Tutorial\\cue_warning.png'
        image = Image(url)        
        CueSignals[0].append(image)        
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\cue_left.png'
        image = Image(url)
        CueSignals[0].append(image)        
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\cue_right.png'
        image = Image(url)
        CueSignals[0].append(image) 
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\cue_idle.png'
        image = Image(url)
        CueSignals[0].append(image)      
        
        # (4) IMAGES: Icons for cue indication (Tutorial_CMD mode)     
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\left.png'
        image = Image(url)
        CueSignals[1].append(image)        
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\right.png'
        image = Image(url)
        CueSignals[1].append(image) 
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\idle.png'
        image = Image(url)
        CueSignals[1].append(image)             
        
        # (5) IMAGES: General menu images
        MiniIconsON, GralEvents = [], []
        for index in range(2,6):
            url = 'Images\\User_Tutorial\\minimenu_on.png'
            event, image = Event_Image(url, ground)
            event.hide()
            MiniIconsON.append(image)
            GralEvents.append(event)
            self.table.attach(event, index, index+1, 0, 2)  
        
        # (6) LABELS: main menu labels
        mainmenu_labels, x, y = [], 0, 1
        Mnum = 'TAB  1'.split()[-1]
        for item in MainMenu:
            if item.lower() != 'exit':
                rename= item.split(' ')
                rename= [rename[0], '\n', Mnum, '.', rename[-1]]
                item  = ''.join(rename)
            label = Label(item, medium_font, lblue, 0.5, 0.9, gtk.JUSTIFY_CENTER)
            label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
            label.hide()
            mainmenu_labels.append(label) 
            self.table.attach(label, x, y, 2, 4)
            x += 1
            y += 1       
                        
        # (7) IMAGES: main menu images
        mainmenu_events, mainmenu_imagesOFF = [], []
        for index in range(7):
            url = 'Images\\User_Tutorial\\option_off.png'
            event, image = Event_Image(url, ground)
            event.hide()
            mainmenu_events.append(event)
            mainmenu_imagesOFF.append(image)
            self.table.attach(event, index, index+1, 4, 6)
        url = 'Images\\User_Tutorial\\Exit_off.png'
        event, image = Event_Image(url, ground)
        event.hide()
        mainmenu_events.append(event)
        mainmenu_imagesOFF.append(image)
        self.table.attach(event, 7, 8, 4, 6)

        # (8) BUTTONS: list of tasks
        submenu_labels, submenu_buttons= [], []
        for x in range(0,8):
            button, label = Button_Label('', lblue, 'white', medium_font)
            label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
            button.hide()
            self.table.attach(button, x, x+1, 6, 8)
            submenu_labels.append(label)
            submenu_buttons.append(button)       
        
        # (9) IMAGES: menu images for OFF or ON states
        MiniIconsOFF, GralIconsON, GralIconsOFF, mainmenu_imagesON, submenu_imagesON = [], [], [], [], []
        for index in range(4):
            MiniIconsOFF.append(Image('Images\\User_Tutorial\\minimenu_off.png')) 
            GralIconsON.append(Image('Images\\User_Tutorial\\menu_on.png')) 
            GralIconsOFF.append(Image('Images\\User_Tutorial\\menu_off.png'))                 
        for index in range(7): mainmenu_imagesON.append(Image('Images\\User_Tutorial\\option_on.png'))
        mainmenu_imagesON.append(Image('Images\\User_Tutorial\\Exit_on.png'))
        for index in range(8): submenu_imagesON.append(Image('Images\\User_Tutorial\\task_on.png'))
               
        # (10) FRAME & LABELS: history of the selected tasks
        self.History_Frame, label = Frame_Label('HISTORY - Recently Selected Tasks', ground, lblue, small_font, 0, 0.5, gtk.JUSTIFY_CENTER)
        self.History_Frame.hide()
        self.table.attach(self.History_Frame, 0, 8, 8, 9)
        History_Labels = []
        History_Labels.append(Label('', small_font, 'black', 0.1, 0.7, gtk.JUSTIFY_LEFT))
        self.table.attach(History_Labels[0], 0, 1, 8, 9)
        for index in range(1,8):
            History_Labels.append(Label('', small_font, lblue, 0.1, 0.7, gtk.JUSTIFY_LEFT))
            self.table.attach(History_Labels[index], index, index+1, 8, 9) 
        for widget in History_Labels: widget.hide()
        
        #(11)Widgets assignation to enable them in the following
        #    methods        
        # -- ImageS
        self.CueSignals = CueSignals
        self.MiniIconsON = MiniIconsON
        self.MiniIconsOFF = MiniIconsOFF 
        self.GralIconsON = GralIconsON
        self.GralIconsOFF = GralIconsOFF
        self.mainmenu_imagesOFF = mainmenu_imagesOFF
        self.mainmenu_imagesON  = mainmenu_imagesON        
        # -- Events        
        self.GralEvents = GralEvents
        self.mainmenu_events = mainmenu_events
        # -- Labels
        self.mainmenu_labels= mainmenu_labels
        self.submenu_labels = submenu_labels
        self.History_Labels = History_Labels
        self.titulo = titulo
        # -- ButtonS
        self.submenu_buttons = submenu_buttons    
        # -- Variable Declaration
        self.History = ['','','','','','','','']   
示例#5
0
class UT_menu():
    'Class to control the "User-Tutorial" tab'

    #.............Method 1: Initialization Process..........
    def __init__(self):        
        'Initial method to generate the "User-Tutorial" menu'
        
        # ============User-Tutorial tab creation==============        
        # (1) TABLE: Widget container
        ## --9 x 8 table creation
        self.table = gtk.Table(9, 8, False)
        self.table.show()
        
        # (2) LABEL: Window title
        titulo = Label('Menu 1', 'Neuropol 33', orange, 0.5, 0.5, gtk.JUSTIFY_CENTER)        
        titulo.hide()
        self.table.attach(titulo, 6, 8, 0, 2) 

        # (3) IMAGES: Icons for cue indication (Tutorial_MI mode)
        CueSignals = [[],[]]
        # -- cue: MI preparation
        url = 'Images\\User_Tutorial\\cue_warning.png'
        image = Image(url)        
        CueSignals[0].append(image)        
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\cue_left.png'
        image = Image(url)
        CueSignals[0].append(image)        
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\cue_right.png'
        image = Image(url)
        CueSignals[0].append(image) 
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\cue_idle.png'
        image = Image(url)
        CueSignals[0].append(image)      
        
        # (4) IMAGES: Icons for cue indication (Tutorial_CMD mode)     
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\left.png'
        image = Image(url)
        CueSignals[1].append(image)        
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\right.png'
        image = Image(url)
        CueSignals[1].append(image) 
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\idle.png'
        image = Image(url)
        CueSignals[1].append(image)             
        
        # (5) IMAGES: General menu images
        MiniIconsON, GralEvents = [], []
        for index in range(2,6):
            url = 'Images\\User_Tutorial\\minimenu_on.png'
            event, image = Event_Image(url, ground)
            event.hide()
            MiniIconsON.append(image)
            GralEvents.append(event)
            self.table.attach(event, index, index+1, 0, 2)  
        
        # (6) LABELS: main menu labels
        mainmenu_labels, x, y = [], 0, 1
        Mnum = 'TAB  1'.split()[-1]
        for item in MainMenu:
            if item.lower() != 'exit':
                rename= item.split(' ')
                rename= [rename[0], '\n', Mnum, '.', rename[-1]]
                item  = ''.join(rename)
            label = Label(item, medium_font, lblue, 0.5, 0.9, gtk.JUSTIFY_CENTER)
            label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
            label.hide()
            mainmenu_labels.append(label) 
            self.table.attach(label, x, y, 2, 4)
            x += 1
            y += 1       
                        
        # (7) IMAGES: main menu images
        mainmenu_events, mainmenu_imagesOFF = [], []
        for index in range(7):
            url = 'Images\\User_Tutorial\\option_off.png'
            event, image = Event_Image(url, ground)
            event.hide()
            mainmenu_events.append(event)
            mainmenu_imagesOFF.append(image)
            self.table.attach(event, index, index+1, 4, 6)
        url = 'Images\\User_Tutorial\\Exit_off.png'
        event, image = Event_Image(url, ground)
        event.hide()
        mainmenu_events.append(event)
        mainmenu_imagesOFF.append(image)
        self.table.attach(event, 7, 8, 4, 6)

        # (8) BUTTONS: list of tasks
        submenu_labels, submenu_buttons= [], []
        for x in range(0,8):
            button, label = Button_Label('', lblue, 'white', medium_font)
            label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
            button.hide()
            self.table.attach(button, x, x+1, 6, 8)
            submenu_labels.append(label)
            submenu_buttons.append(button)       
        
        # (9) IMAGES: menu images for OFF or ON states
        MiniIconsOFF, GralIconsON, GralIconsOFF, mainmenu_imagesON, submenu_imagesON = [], [], [], [], []
        for index in range(4):
            MiniIconsOFF.append(Image('Images\\User_Tutorial\\minimenu_off.png')) 
            GralIconsON.append(Image('Images\\User_Tutorial\\menu_on.png')) 
            GralIconsOFF.append(Image('Images\\User_Tutorial\\menu_off.png'))                 
        for index in range(7): mainmenu_imagesON.append(Image('Images\\User_Tutorial\\option_on.png'))
        mainmenu_imagesON.append(Image('Images\\User_Tutorial\\Exit_on.png'))
        for index in range(8): submenu_imagesON.append(Image('Images\\User_Tutorial\\task_on.png'))
               
        # (10) FRAME & LABELS: history of the selected tasks
        self.History_Frame, label = Frame_Label('HISTORY - Recently Selected Tasks', ground, lblue, small_font, 0, 0.5, gtk.JUSTIFY_CENTER)
        self.History_Frame.hide()
        self.table.attach(self.History_Frame, 0, 8, 8, 9)
        History_Labels = []
        History_Labels.append(Label('', small_font, 'black', 0.1, 0.7, gtk.JUSTIFY_LEFT))
        self.table.attach(History_Labels[0], 0, 1, 8, 9)
        for index in range(1,8):
            History_Labels.append(Label('', small_font, lblue, 0.1, 0.7, gtk.JUSTIFY_LEFT))
            self.table.attach(History_Labels[index], index, index+1, 8, 9) 
        for widget in History_Labels: widget.hide()
        
        #(11)Widgets assignation to enable them in the following
        #    methods        
        # -- ImageS
        self.CueSignals = CueSignals
        self.MiniIconsON = MiniIconsON
        self.MiniIconsOFF = MiniIconsOFF 
        self.GralIconsON = GralIconsON
        self.GralIconsOFF = GralIconsOFF
        self.mainmenu_imagesOFF = mainmenu_imagesOFF
        self.mainmenu_imagesON  = mainmenu_imagesON        
        # -- Events        
        self.GralEvents = GralEvents
        self.mainmenu_events = mainmenu_events
        # -- Labels
        self.mainmenu_labels= mainmenu_labels
        self.submenu_labels = submenu_labels
        self.History_Labels = History_Labels
        self.titulo = titulo
        # -- ButtonS
        self.submenu_buttons = submenu_buttons    
        # -- Variable Declaration
        self.History = ['','','','','','','','']   


    #..........Method 2: Returning widgets container........
    def UT_container(self):
        'User_Tutorial table for being appended to the notebook'
        
        return self.table
    
    
    #.. Method 3: System Preconfiguration - CMD Tutorial ...
    def UT_CMDSysConfig(self):
        'Configuration of the Command-Tutorial System: \
         1) Widget Visibility & 2) Variable Declaration'
        
        # (1) Control variable declaration
        self.gralmenu_indexes = range(4)
        self.current_menu = self.gralmenu_indexes.pop(0)
        self.gralmenu_indexes.append(self.current_menu)
        self.Titles = ['TAB  1','TAB  2','TAB  3','TAB  4']
        # --- Current selected button and available message
        self.current_icons = range(8)
        self.current_subuttons = range(8)
        # (2) Table Re-Size
        self.table.set_homogeneous(True)
        # (3) Reset Procedure
        # --- titulo set
        self.titulo.set_text(self.Titles[0])
        self.titulo.modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(orange))
        # --- image changes        
        children = self.GralEvents[self.current_menu].get_children()
        self.GralEvents[self.current_menu].remove(children[0])
        self.GralEvents[self.current_menu].add(self.GralIconsON[self.current_menu])        
        for index in range(1, len(self.GralEvents)):   
            children = self.GralEvents[index].get_children()
            self.GralEvents[index].remove(children[0])       
            self.GralEvents[index].add(self.MiniIconsON[index])     
        # --- mainmenu-label/image/event modifications
        Mnum = self.Titles[0].split(' ')[-1]
        for index in range(len(self.mainmenu_events)):
            # labels
            label = MainMenu[index]
            if label.lower() != 'exit':
                label = label.split(' ')
                label = [label[0], '\n', Mnum, '.', label[-1]]
                label = ''.join(label)
            self.mainmenu_labels[index].set_text(label)
            self.mainmenu_labels[index].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(lblue))
            self.mainmenu_labels[index].modify_font(pango.FontDescription(medium_font)) 
            # images       
            children = self.mainmenu_events[index].get_children()
            self.mainmenu_events[index].remove(children[0])
            self.mainmenu_events[index].add(self.mainmenu_imagesOFF[index])    
            # events
            STYLE = self.mainmenu_events[index].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[index].get_colormap().alloc_color(ground)
            self.mainmenu_events[index].set_style(STYLE)                            
        # --- Sub-menu buttons background desactivation
            # labels
            self.submenu_labels[index].set_text('')
            self.submenu_labels[index].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse('white'))
            self.submenu_labels[index].modify_font(pango.FontDescription(medium_font)) 
            # events
            STYLE = self.submenu_buttons[index].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL] = self.submenu_buttons[index].get_colormap().alloc_color(lblue)
            self.submenu_buttons[index].set_style(STYLE)
        # --- history of the selected tasks
        for widget in self.History_Labels: widget.set_text('')
        self.History = ['','','','','','','','']
        # (4) Widget Visibility
        self.titulo.show()
        for widget in self.GralEvents: widget.show()
        for widget in self.mainmenu_labels: widget.show()
        for widget in self.mainmenu_events: widget.show()
        for widget in self.submenu_buttons: widget.show()
        for widget in self.History_Labels:  widget.show()
        self.History_Frame.show()    
        return False

    #...... Method 4: Warning Sign for the Tutorial_MI .....
    def UT_WarningMI(self):
        'Warning for the MI of the User_Tutorial'

        # (1) Image attachment   
        self.table.attach(self.CueSignals[0][0],2, 6, 2, 6)    
    
    
    #.....Method 5: Warning Sign for the COMMAND Stage......
    def UT_WarningCMD(self, submenu):
        'Warning for the COMMAND part of the User_Tutorial'

        # (1) Automatic Selection Initialization
        if submenu: self.Auto_Control()
        # (2) Event Background Modification 
        # --- Execution on General Menu
        if not(submenu):            
            STYLE = self.GralEvents[self.current_menu].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= self.GralEvents[self.current_menu].get_colormap().alloc_color(light_orange)
            self.GralEvents[self.current_menu].set_style(STYLE)                  
        # --- Execution on Main Menu
        else:           
            self.mainmenu_labels[self.selected_icon].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(light_orange))                            
            STYLE = self.mainmenu_events[self.selected_icon].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[self.selected_icon].get_colormap().alloc_color(light_orange)
            self.mainmenu_events[self.selected_icon].set_style(STYLE)            
        return
        
    
    #....Method 6: Cue Delivery for the MI Stage......
    def UT_CueMI(self, target):
        'Cue Delivery for the MI part of the User_Tutorial'
    
        # (1) Image Removal        
        self.table.remove(self.CueSignals[0][0])   
        # (2) Selecting the appropriate cue
        if target == 'left':
            self.table.attach(self.CueSignals[0][1],2, 6, 2, 6)            
        elif target == 'right':
            self.table.attach(self.CueSignals[0][2],2, 6, 2, 6)
        elif target == 'idle':
            self.table.attach(self.CueSignals[0][3],2, 6, 2, 6)   
    
    
    #....Method 7: Cue Delivery for the COMMAND Stage......
    def UT_CueCMD(self, submenu, target):
        'Cue Delivery for the COMMAND part of the User_Tutorial'
        
        # (1) Selection of the appropiate Cue
        if target == 'left':
            self.table.attach(self.CueSignals[1][0],0, 2, 0, 2)
        elif target == 'right':
            self.table.attach(self.CueSignals[1][1],0, 2, 0, 2) 
        elif target == 'idle':
            self.table.attach(self.CueSignals[1][2],0, 2, 0, 2) 
        # (2) Event Background Modification        
        # --- Execution on General Menu
        if not(submenu):            
            STYLE = self.GralEvents[self.current_menu].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= self.GralEvents[self.current_menu].get_colormap().alloc_color(orange)
            self.GralEvents[self.current_menu].set_style(STYLE)                  
        # --- Execution on Main Menu
        else:
            self.mainmenu_labels[self.selected_icon].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(orange))  
            STYLE = self.mainmenu_events[self.selected_icon].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[self.selected_icon].get_colormap().alloc_color(orange)
            self.mainmenu_events[self.selected_icon].set_style(STYLE)         
        return
    

    #...........Method 8: Right MI for COMMAND PART.........
    def UT_NextIcon(self):
        'Navigation through the Gral Menu'
        
        # (1) Previous icon change
        STYLE = self.GralEvents[self.current_menu].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL]= self.GralEvents[self.current_menu].get_colormap().alloc_color(ground)
        self.GralEvents[self.current_menu].set_style(STYLE) 
        self.GralEvents[self.current_menu].remove(self.GralIconsON[self.current_menu])
        self.GralEvents[self.current_menu].add(self.MiniIconsON[self.current_menu])
        # (2) Gral menu control update
        self.current_menu = self.gralmenu_indexes.pop(0)
        self.gralmenu_indexes.append(self.current_menu)
        # (3) Previous icon change
        self.GralEvents[self.current_menu].remove(self.MiniIconsON[self.current_menu])
        self.GralEvents[self.current_menu].add(self.GralIconsON[self.current_menu])
        # (4) Title & MainMenu Modifications 
        self.Titles.append(self.Titles.pop(0))
        self.titulo.set_text(self.Titles[0])
        Mnum = self.Titles[0].split(' ')[-1]
        for index in range(len(self.mainmenu_events)):
            label = MainMenu[index]
            if label.lower() != 'exit':
                label = MainMenu[index].split(' ')
                label = [label[0], '\n', Mnum, '.', label[-1]]
                label = ''.join(label)
            self.mainmenu_labels[index].set_text(label)
        
        
        
    #.........Method 9: UT-menu activation - COMMAND........
    def UT_Activation(self):
        '"navigation" and "select" commands switched to UT-menu'

        # =======main menu variables initialization=========      
        self.selected_subutton = 0  
        # (1) GUI~VE control command
        self.GUI_VE = []  
        # ===============UT-menu modifications==============
        # (1) General menu icons modification to indicate INACCESSIBLE navigation    
        # --- title colour deselection
        self.titulo.modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(lblue))    
        # --- image and background changes        
        self.GralEvents[self.current_menu].remove(self.GralIconsON[self.current_menu])
        self.GralEvents[self.current_menu].add(self.GralIconsOFF[self.current_menu])
        STYLE = self.GralEvents[self.current_menu].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL]= self.GralEvents[self.current_menu].get_colormap().alloc_color(ground)
        self.GralEvents[self.current_menu].set_style(STYLE)
        for index in self.gralmenu_indexes[:-1]:           
            children = self.GralEvents[index].get_children()
            self.GralEvents[index].remove(children[0])
            self.GralEvents[index].add(self.MiniIconsOFF[index])        
        # (2) Main Menu Activation        
        # --- label modifications
        for item in self.mainmenu_labels: item.modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse('black'))
        # --- image changes
        for index in range(len(self.mainmenu_events)):
            self.mainmenu_events[index].remove(self.mainmenu_imagesOFF[index])
            self.mainmenu_events[index].add(self.mainmenu_imagesON[index])            
        # (3) Sub-menu buttons Activation
        for item in self.submenu_buttons:
            STYLE = item.get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= item.get_colormap().alloc_color(blue)
            item.set_style(STYLE)           
        # (4) Control of Cal menu
        HOME = self.UT_Control()        
        return HOME

    
    #...... Method 10: UT-menu RE-activation - COMMAND......
    def UT_Reactivation(self):
        'Main Menu Reactivation'

        # (1) Resetting the submenu labels
        for item in self.submenu_labels: item.modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse('white'))         
        # (2) Control of N & D menu
        HOME = self.UT_Control()
        return HOME


    #....... Method 11: UT-menu deactivation - COMMAND......
    def UT_Deactivation(self):
        '"navigation" and "select" commands switched to general menu'

        # (1) General menu icons modification to indicate ACCESIBLE navigation   
        # --- title colour deselection
        self.titulo.modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(orange))     
        # --- image changes        
        self.GralEvents[self.current_menu].remove(self.GralIconsOFF[self.current_menu])
        self.GralEvents[self.current_menu].add(self.GralIconsON[self.current_menu])        
        for index in self.gralmenu_indexes[:-1]:   
            children = self.GralEvents[index].get_children()
            self.GralEvents[index].remove(children[0])       
            self.GralEvents[index].add(self.MiniIconsON[index])   
        # (2) Main menu Deactivation        
        # --- label modifications
        for item in self.mainmenu_labels: item.modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(lblue))
        self.mainmenu_labels[self.current_icons[0]].modify_font(pango.FontDescription(medium_font))
        # --- image changes
        for index in range(len(self.mainmenu_events)):
            self.mainmenu_events[index].remove(self.mainmenu_imagesON[index])
            self.mainmenu_events[index].add(self.mainmenu_imagesOFF[index])    
        # --- event background deselection
        STYLE = self.mainmenu_events[0].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[0].get_colormap().alloc_color(ground)
        self.mainmenu_events[0].set_style(STYLE)                  
        STYLE = self.mainmenu_events[7].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[7].get_colormap().alloc_color(ground)
        self.mainmenu_events[7].set_style(STYLE)            
        # (3) Sub-menu buttons background desactivation
        for item in self.submenu_buttons:
            STYLE = item.get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= item.get_colormap().alloc_color(lblue)
            item.set_style(STYLE)
        

    #..........Method 12: UT-menu control - COMMAND.........
    def UT_Control(self):
        'Control of the User_Tutorial menu'
        
        # (1) Updating the current selected button
        self.selected_icon = self.current_icons.pop(0)
        self.current_icons.append(self.selected_icon)   
        # (2) Subutton labels modification
        ## -- current sub-labels
        self.submenu_labels[self.selected_subutton].modify_font(pango.FontDescription(medium_font)) 
        for index in range(8): self.submenu_labels[index].set_label(SubMenu[self.selected_icon][index])      
        ## -- next sublabel pre-deselection
        self.submenu_labels[self.current_subuttons[0]].modify_font(pango.FontDescription(medium_font))         
        # (3) Selection and deselection in main menu   
        ## -- last icon label deselection
        self.mainmenu_labels[self.current_icons[6]].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse('black'))
        self.mainmenu_labels[self.current_icons[6]].modify_font(pango.FontDescription(medium_font))  
        ## -- current icon label selection
        self.mainmenu_labels[self.selected_icon].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(blue))      
        self.mainmenu_labels[self.selected_icon].modify_font(pango.FontDescription(medium_font))     
        ## -- last event_box background deselection
        STYLE = self.mainmenu_events[self.current_icons[6]].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL] = \
        self.mainmenu_events[self.current_icons[6]].get_colormap().alloc_color(ground)
        self.mainmenu_events[self.current_icons[6]].set_style(STYLE)        
        ## -- current event_box background selection
        STYLE = self.mainmenu_events[self.selected_icon].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[self.selected_icon].get_colormap().alloc_color(blue)
        self.mainmenu_events[self.selected_icon].set_style(STYLE) 
        ## -- SubMenu-Text update
        Mnum = self.Titles[0].split(' ')[-1]
        for index in range(len(self.mainmenu_events)):
            if self.mainmenu_labels[self.selected_icon].get_text().lower() == 'exit': break
            label = SubMenu[self.selected_icon][index].split(' ')
            label = [label[0], '\n', Mnum, '.', label[-1]]
            self.submenu_labels[index].set_text(''.join(label))
        ## -- different icons from 'Home'
        if self.selected_icon != 7:
            ## a.- commands belong to main menu
            return False
        else: 
            ## b.- commands could belong to general menu
            return True


    #............ Method 13: UT-menu Blank - MI ............
    def UT_BlankMI(self, target):
        'Rest and Random Intertrial Gap for Tutorial_MI'
               
        # (1) Image Removal
        if target == 'left':
            self.table.remove(self.CueSignals[0][1])
        elif target == 'right':
            self.table.remove(self.CueSignals[0][2]) 
        elif target == 'idle':
            self.table.remove(self.CueSignals[0][3])
        # (2) Return FALSE to avoid calling the idle_function again
        return False


    #............ Method 14: UT-menu Blank - CMD ...........
    def UT_BlankCMD(self, target):
        'Rest and Random Intertrial Gap for Tutorial_CMD'
               
        # (1) Image Removal
        if target == 'left':
            self.table.remove(self.CueSignals[1][0])
        elif target == 'right':
            self.table.remove(self.CueSignals[1][1]) 
        elif target == 'idle':
            self.table.remove(self.CueSignals[1][2])
        # (2) Return FALSE to avoid calling the idle_function again
        return False
    
    
    #.......... Method 15: UT-menu No Control - CMD ........
    def UT_NoControl(self, submenu):
        'No Identified Motor Imaginary Movement'
        
        # (1) Execution on General Menu
        if not(submenu):            
            STYLE = self.GralEvents[self.current_menu].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= self.GralEvents[self.current_menu].get_colormap().alloc_color(ground)
            self.GralEvents[self.current_menu].set_style(STYLE)              
        # (2) Execution on Main Menu
        else:            
            ## -- mainmenu labels
            self.mainmenu_labels[self.current_icons[0]].modify_font(pango.FontDescription(medium_font))
            self.mainmenu_labels[self.selected_icon].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(blue))  
            STYLE = self.mainmenu_events[self.selected_icon].get_style().copy()
            STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[self.selected_icon].get_colormap().alloc_color(blue)
            self.mainmenu_events[self.selected_icon].set_style(STYLE) 
            ## -- submenu label
            self.submenu_labels[self.selected_subutton].modify_font(pango.FontDescription(medium_font))
        return 
    
    
    #........... Method 16: UT-Menu writer - CMD ...........
    def UT_Writing(self):
        'GUI~VE control command writer'
        
        self.GUI_VE = []
        # (1) Number of the current tab
        self.GUI_VE.append(0)
        # (2) Number of the current icon
        self.GUI_VE.append(self.selected_icon)
        # (3) Number of the current subutton
        self.GUI_VE.append(self.selected_subutton)
        # (4) Main Menu Update             
        ## -- current label                         
        self.mainmenu_labels[self.selected_icon].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(blue))
        self.mainmenu_labels[self.selected_icon].modify_font(pango.FontDescription(medium_font))   
        STYLE = self.mainmenu_events[self.selected_icon].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL]= self.mainmenu_events[self.selected_icon].get_colormap().alloc_color(blue)
        self.mainmenu_events[self.selected_icon].set_style(STYLE)       
        ## -- next label pre-deselection
        self.mainmenu_labels[self.current_icons[0]].modify_font(pango.FontDescription(medium_font))
        # (5) Selecting a task            
        self.submenu_labels[self.selected_subutton].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse(blue)) 
        self.submenu_labels[self.selected_subutton].modify_font(pango.FontDescription(medium_font)) 
        STYLE = self.submenu_buttons[self.selected_subutton].get_style().copy()
        STYLE.bg[gtk.STATE_NORMAL]= \
        self.submenu_buttons[self.selected_subutton].get_colormap().alloc_color('white')
        self.submenu_buttons[self.selected_subutton].set_style(STYLE)                     
        # (6) Updating the History of the selected tasks
        label = self.submenu_labels[self.selected_subutton].get_text()     
        self.History.pop()
        self.History.insert(0, label)   
        for index in range(len(self.History)): self.History_Labels[index].set_text(self.History[index]) 
        return self.GUI_VE
    

    #.......Method 16: Automatic Control of the Submenu.....
    def Auto_Control(self):
        'Auto-Selection of the subuttons menu'

        # (1) Button selection in main~menu
        self.mainmenu_labels[self.current_icons[0]].modify_font(pango.FontDescription(font)) 
        self.mainmenu_labels[self.current_icons[-1]].modify_font(pango.FontDescription(medium_font))   
        if self.mainmenu_labels[self.selected_icon].get_text() != 'EXIT':
            for i in range(8):
                # (2) Updating the current selected subutton
                self.selected_subutton = self.current_subuttons.pop(0)
                self.current_subuttons.append(self.selected_subutton)
                # (3) Button deselection in sub~menu 
                STYLE = self.submenu_buttons[self.current_subuttons[6]].get_style().copy()
                STYLE.bg[gtk.STATE_NORMAL]=self.submenu_buttons[self.current_subuttons[6]].get_colormap().alloc_color(blue)
                self.submenu_buttons[self.current_subuttons[6]].set_style(STYLE)        
                ## -- sublabel deselection
                self.submenu_labels[self.current_subuttons[6]].modify_fg(gtk.STATE_NORMAL,gtk.gdk.color_parse('white'))                  
                self.submenu_labels[self.current_subuttons[6]].modify_font(pango.FontDescription(medium_font)) 
                ## -- current subutton font selection                                         
                self.submenu_labels[self.selected_subutton].modify_font(pango.FontDescription(font))
                if self.submenu_labels[self.selected_subutton].get_text() != '': break                                          
示例#6
0
    def __init__(self):        
        'Initial method to generate the "Necessities & Desires" menu'
        
        # =======Necessities & Desires tab creation=========        
        # (1) TABLE: Widget container
        ## --9 x 8 table creation
        self.table = gtk.Table(9, 8, True)
        self.table.show()

        # (2) LABEL: Window title
        titulo = Label('Necessities\n & Desires', 'Neuropol 31', orange, 0.5, 0.5, gtk.JUSTIFY_CENTER)        
        self.table.attach(titulo, 6, 8, 0, 2)        

        # (3) FRAMES & IMAGES: General menu images
        GralIconsON = []
        ## --'Necessities and Desires' option
        url = 'Images\\Necessity&Desire\\LNecessities_on.png'
        nd_event, nd_image = Event_Image(url, ground)
        nd_event.set_border_width(10)
        GralIconsON.append(nd_image)
        self.table.attach(nd_event, 2, 3, 0, 2)
        ## --'Mobility' option
        url = 'Images\\Mobility\\SMobility_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[1], 3, 4, 0, 2)
        ## --'Environmental Control' option
        url = 'Images\\EnvControl\\SHomeControl_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[2], 4, 5, 0, 2)
        ## --'Messenger' option
        url = 'Images\\Messenger\\SChat_on.png'
        GralIconsON.append(Image(url))
        self.table.attach(GralIconsON[3], 5, 6, 0, 2)
        
        # (4) IMAGES: Icons for cue indication
        CueSignals = []
        # -- cue: Left MI performance
        url = 'Images\\User_Tutorial\\left.png'
        image = Image(url)
        CueSignals.append(image)        
        # -- cue: Right MI performance
        url = 'Images\\User_Tutorial\\right.png'
        image = Image(url)
        CueSignals.append(image) 
        # -- cue: Idle MI performance
        url = 'Images\\User_Tutorial\\idle.png'
        image = Image(url)
        CueSignals.append(image)          
        
        # (5) LABELS: Icon labels for main menu
        # -- variable declaration
        mainmenu_labels, x, y = [], 0, 3
        Main_Menu = ['Exit','Cleanness','Personal\nCare','Toilet\nSupport',\
                     'Exit','Dressing\nfor...','Food\nProvision','Body\nPostures']
        # -- first item
        label = Label(Main_Menu[0], medium_font, lblue, 0.1, 0.8, gtk.JUSTIFY_LEFT)
        self.table.attach(label, 0, 2, 2, 4)
        mainmenu_labels.append(label)           
        # -- internal items
        for menu in Main_Menu[1:-1]:
            label = Label(menu, medium_font, lblue, 0.5, 0.8, gtk.JUSTIFY_CENTER)
            self.table.attach(label, x, y, 2, 4)
            mainmenu_labels.append(label) 
            x += 1
            y += 1               
        # -- last item
        label = Label(Main_Menu[-1], medium_font, lblue, 0.9, 0.8, gtk.JUSTIFY_RIGHT)
        self.table.attach(label, 6, 8, 2, 4)
        mainmenu_labels.append(label)    

        # (6) EVENTS & IMAGES: main menu images
        mainmenu_events, mainmenu_imagesOFF, x, y = [], [], 0, 1
        URLs = ['Images\\Necessity&Desire\\Exit_off.png',\
                'Images\\Necessity&Desire\\Cleanness_off.png',\
                'Images\\Necessity&Desire\\PersonalCare_off.png',\
                'Images\\Necessity&Desire\\ToiletHelp_off.png',\
                'Images\\Necessity&Desire\\Exit_off.png',\
                'Images\\Necessity&Desire\\Dressing_off.png',\
                'Images\\Necessity&Desire\\FoodProvision_off.png',\
                'Images\\Necessity&Desire\\BodyPostures_off.png']
        for url in URLs:
            eventbox, image = Event_Image(url, ground)
            self.table.attach(eventbox, x, y, 4, 6)
            mainmenu_events.append(eventbox)
            mainmenu_imagesOFF.append(image)
            x += 1
            y += 1 

        # (7) BUTTONS: list of necessities and desires
        submenu_labels, submenu_buttons= [], []
        for x in range(0,8):
            button, label = Button_Label('', lblue, 'white', medium_font)
            label.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
            self.table.attach(button, x, x+1, 6, 8)
            submenu_labels.append(label)
            submenu_buttons.append(button)       
        
        # (8) IMAGES: general menu images for OFF state
        GralIconsOFF = []
        GralIconsOFF.append(Image('Images\\Necessity&Desire\\LNecessities_off.png')) 
        GralIconsOFF.append(Image('Images\\Mobility\\SMobility_off.png'))
        GralIconsOFF.append(Image('Images\\EnvControl\\SHomeControl_off.png'))
        GralIconsOFF.append(Image('Images\\Messenger\\SChat_off.png'))         
        
        # (9) IMAGES: main menu images for ON state
        mainmenu_imagesON = [] 
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\Exit_on.png'))
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\Cleanness_on.png'))
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\PersonalCare_on.png'))
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\ToiletHelp_on.png'))
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\Exit_on.png'))
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\Dressing_on.png'))
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\FoodProvision_on.png'))
        mainmenu_imagesON.append(Image('Images\\Necessity&Desire\\BodyPostures_on.png'))   
        
        # (10) FRAME & LABELS: history of the selected tasks
        frame, label = Frame_Label(' HISTORY  -  Recently Selected Tasks ', ground, lblue, small_font, 0, 0.5, gtk.JUSTIFY_CENTER)
        self.table.attach(frame, 0, 8, 8, 9)
        History_Labels = []
        History_Labels.append(Label('', small_font, 'black', 0.1, 0.9, gtk.JUSTIFY_LEFT))
        self.table.attach(History_Labels[0], 0, 1, 8, 9)
        for index in range(1,8):
            History_Labels.append(Label('', small_font, lblue, 0.1, 0.9, gtk.JUSTIFY_LEFT))
            self.table.attach(History_Labels[index], index, index+1, 8, 9) 
        
        #(11) Widgets assignation to enable them in the following
        #     methods
        # -- ButtonS
        self.submenu_buttons = submenu_buttons
        # -- ImageS
        self.CueSignals = CueSignals
        self.GralIconsON  = GralIconsON
        self.GralIconsOFF = GralIconsOFF
        self.mainmenu_imagesOFF = mainmenu_imagesOFF
        self.mainmenu_imagesON  = mainmenu_imagesON
        # -- Events        
        self.mainmenu_events = mainmenu_events
        # -- FrameS
        self.nd_event = nd_event
        # -- LabelS
        self.titulo = titulo
        self.mainmenu_labels = mainmenu_labels        
        self.submenu_labels = submenu_labels
        self.History_Labels = History_Labels
        # -- Variable Declaration
        self.History, self.CUE = ['','','','','','','',''], None