Ejemplo n.º 1
0
    def _do_canvas(self):
        '''Crea el canvas principal'''
        scroll_documents = gtk.ScrolledWindow()
        scroll_documents.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        self._documents = Documents(self)

        self._notebook = gtk.Notebook()
        self._subjects = Subjects(self._notebook, self._documents, 
                                  self._go_up_clicked)
        self._subjects.connect('selected',
                               lambda w: self._goup.set_sensitive(True))
        scroll_documents.add_with_viewport(self._documents)

        scroll_subjects = gtk.ScrolledWindow()
        scroll_subjects.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        scroll_subjects.add_with_viewport(self._subjects)

        self._notebook.append_page(scroll_subjects)
        self._notebook.append_page(scroll_documents)
        self._notebook.append_page(documents.HomeWorks(self._subjects._sftp))
        self._notebook.append_page(self._do_homework_canvas())
        self._notebook.set_property("show-tabs", False)

        self._canvas.add(self._notebook)
        self._canvas.show_all()

        self._notebook.set_current_page(0)
Ejemplo n.º 2
0
class Explorer(activity.Activity):
    '''Es la clase que crea la actividad'''
    def __init__(self, handle):
        activity.Activity.__init__(self, handle, True)

        # ToolbarBox:

        toolbarbox = ToolbarBox()
        activitybutton = ActivityButton(self)
        toolbarbox.toolbar.insert(activitybutton, 0)

        separator = gtk.SeparatorToolItem()
        toolbarbox.toolbar.insert(separator, -1)

        explorer_btn = RadioToolButton()
        explorer_btn.set_tooltip('Explorador')
        explorer_btn.props.icon_name = 'activity-explorer'
        toolbarbox.toolbar.insert(explorer_btn, -1)

        self._goup = ToolButton('to-subjects')
        self._goup.connect('clicked', self._go_up_clicked)
        self._goup.set_tooltip('Ver Materias')
        self._goup.set_accelerator("<Shift><M>")
        self._goup.set_sensitive(False)
        toolbarbox.toolbar.insert(self._goup, -1)

        self._select_all = ToolButton('select-all')
        self._select_all.set_tooltip('Seleccionar todo')
        self._select_all.connect("clicked", self._select_all_clicked)
        self._select_all.set_sensitive(False)
        toolbarbox.toolbar.insert(self._select_all, -1)

        self._download = ToolButton('download')
        self._download.set_tooltip('Descargar')
        self._download.set_sensitive(False)
        toolbarbox.toolbar.insert(self._download, -1)

        separator = gtk.SeparatorToolItem()
        toolbarbox.toolbar.insert(separator, -1)

        homework_btn = RadioToolButton()
        homework_btn.set_tooltip('Tareas Domiciliarias')
        homework_btn.props.icon_name = 'homework'
        homework_btn.props.group = explorer_btn

        toolbarbox.toolbar.insert(homework_btn, -1)

        open_btn = ToolButton()
        open_btn.set_tooltip('Seleccionar tarea')
        open_btn.props.icon_name = 'open-from-journal'
        open_btn.set_sensitive(False)
        open_btn.connect("clicked", self._select_hw_from_journal)
        toolbarbox.toolbar.insert(open_btn, -1)

        self._send = ToolButton()
        self._send.set_tooltip('Enviar tarea')
        self._send.connect('clicked', self._send_hw_to_server)
        self._send.props.icon_name = 'document-send'
        self._send.set_sensitive(False)
        toolbarbox.toolbar.insert(self._send, -1)

        homework_btn.connect('clicked', self.homework_btn_cb, open_btn)
        explorer_btn.connect('clicked', self.explorer_btn_cb, open_btn)

        separator = gtk.SeparatorToolItem()
        separator.set_expand(True)
        separator.set_draw(False)
        toolbarbox.toolbar.insert(separator, -1)

        stopbtn = StopButton(self)
        toolbarbox.toolbar.insert(stopbtn, -1)

        self.set_toolbar_box(toolbarbox)
        self._one_alert = None

        # Canvas
        self._canvas = gtk.EventBox()
        self._name = ''
        self._last_name = ''
        self._hw_title = ''
        self._hw_description = ''
        self._hw_path = ''
        self._hw_mimetype = ''

        self.set_canvas(self._canvas)
        self.show_all()
        if not utils.get_group():
            self.choose_group()
        else:
            self._do_canvas()

    def homework_btn_cb(self, button, open_btn):
        '''Se ejecuta cuando se hace click en el boton
        de tareas domiciliarias, se encarga de cambiar de pagina'''
        self._notebook.set_current_page(2)
        self._goup.set_sensitive(False)
        self._select_all.set_sensitive(False)
        self._download.set_sensitive(False)
        open_btn.set_sensitive(True)
        self._send.set_sensitive(False)

    def explorer_btn_cb(self, widget, open_btn):
        '''Se ejecuta cuando se hace click en el boton
        del explorador, se encarga de cambiar de pagina'''
        self._notebook.set_current_page(0)
        open_btn.set_sensitive(False)
        self._send.set_sensitive(False)

    def _select_hw_from_journal(self, widget):
        '''Abre un selector de objetos del diario'''
        chooser = ObjectChooser()
        response = chooser.run()

        if response == gtk.RESPONSE_ACCEPT:
            jobject = chooser.get_selected_object()
            self._hw_path = str(jobject.get_file_path())
            self._notebook.set_current_page(-1)
            self._send.set_sensitive(True)
            self._hw_title.set_text(jobject.get_metadata()["title"])
            self._hw_mimetype = mime.get_for_file(self._hw_path)

    def _send_hw_to_server(self, widget):
        '''Envia las tareas domiciliarias'''
        _buffer = self._hw_description.get_buffer()
        start = _buffer.get_start_iter()
        end = _buffer.get_end_iter()
        comments = _buffer.get_text(start, end)

        utils.send_homework(self._subjects._sftp, 
                                           self._subjects_selector.\
                                           get_active_text(),
                                           self._hw_path,
                                           self._hw_title.get_text(), 
                                           comments,  self._hw_mimetype)

        self._notebook.set_current_page(2)

    def _set_text(self, widget, name=True):
        if name:
            self._name = widget.get_text()
        else:
            self._last_name = widget.get_text()

    def _do_homework_canvas(self):
        '''Arma el canvas para la tareas domiciliarias '''
        main_container = gtk.VBox()

        self._hw_title = widgets.Entry('Escriba el titulo aqui')
        main_container.pack_start(self._hw_title, False, True, 0)

        label = gtk.Label('Comentarios:')
        main_container.pack_start(label, False, True, 10)

        self._hw_description = gtk.TextView()
        self._hw_description.set_property('wrap-mode', gtk.WRAP_WORD_CHAR)
        main_container.pack_start(self._hw_description, True, True, 5)

        hbox = gtk.HBox()
        main_container.pack_start(hbox, False, True)
        self._subjects_selector = widgets.SubjectChooser()
        hbox.pack_start(self._subjects_selector, False, True, 0)

        return main_container

    def choose_group(self):
        '''Selector de los grupos'''
        vbox = gtk.VBox()
        vbox.set_border_width(20)

        title = gtk.Label('Registrate en Aula Virtual')
        title.modify_font(pango.FontDescription('bold 25'))
        vbox.pack_start(title, False, padding=40)

        note = gtk.Label('<span foreground="#FF0000"><i>\
                      * Por favor ingresa los datos correctamente.</i></span>')
        note.set_use_markup(True)
        vbox.pack_start(note, False, True, padding=5)

        hbox = gtk.HBox()
        vbox.pack_start(hbox, False, padding=10)

        label = gtk.Label("Nombre: ")
        hbox.pack_start(label, False, padding=10)

        entry = gtk.Entry()
        entry.connect('changed', self._set_text)
        hbox.pack_start(entry, True, padding=0)

        hbox1 = gtk.HBox()
        hbox1.set_border_width(20)

        label = gtk.Label("Apellido:  ")
        hbox1.pack_start(label, False, padding=0)

        entry = gtk.Entry()
        entry.connect('changed', self._set_text, False)
        hbox1.pack_start(entry, True, padding=0)

        vbox.pack_start(hbox1, False, padding=10)

        hbox2 = gtk.HBox()
        vbox.pack_start(hbox2, False, padding=10)

        label_combo = gtk.Label("Elige tu grupo: ")
        hbox2.pack_start(label_combo, False, True, padding=10)

        combo = gtk.ComboBox()
        liststore = gtk.ListStore(str)
        combo.set_model(liststore)
        cell = gtk.CellRendererText()
        combo.pack_start(cell, True)
        combo.add_attribute(cell, 'text', 0)
        hbox2.pack_start(combo, False, True, padding=10)

        for group in GROUPS:
            liststore.append([group])
        combo.set_active(0)

        accept = gtk.Button('Aceptar')
        accept.connect('clicked', self._accept_clicked, combo, entry, vbox)
        box = gtk.HBox()
        box.pack_end(accept, False)
        vbox.pack_start(box, False)

        self._canvas.add(vbox)
        self.show_all()

    def _accept_clicked(self, widget, combo, entry, vbox):
        '''Se encarga de guardar la informacion de 
        la maquina en el sevidor'''
        group = GROUPS[combo.get_active()]
        utils.GROUP = group
        vbox.destroy()
        self._do_canvas()
        utils.save_me(self._subjects._sftp,
                      group,
                      '%s %s' % (self._name, self._last_name))

    def _go_up_clicked(self, widget):
        '''Mustra la lista de materias'''
        self._notebook.set_current_page(0)
        self._goup.set_sensitive(False)
        self._select_all.set_sensitive(False)
        self._download.set_sensitive(False)

    def _select_all_clicked(self, widget):
        '''Selecciona todo'''
        self._documents.select_all()

    def _do_canvas(self):
        '''Crea el canvas principal'''
        scroll_documents = gtk.ScrolledWindow()
        scroll_documents.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        self._documents = Documents(self)

        self._notebook = gtk.Notebook()
        self._subjects = Subjects(self._notebook, self._documents, 
                                  self._go_up_clicked)
        self._subjects.connect('selected',
                               lambda w: self._goup.set_sensitive(True))
        scroll_documents.add_with_viewport(self._documents)

        scroll_subjects = gtk.ScrolledWindow()
        scroll_subjects.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        scroll_subjects.add_with_viewport(self._subjects)

        self._notebook.append_page(scroll_subjects)
        self._notebook.append_page(scroll_documents)
        self._notebook.append_page(documents.HomeWorks(self._subjects._sftp))
        self._notebook.append_page(self._do_homework_canvas())
        self._notebook.set_property("show-tabs", False)

        self._canvas.add(self._notebook)
        self._canvas.show_all()

        self._notebook.set_current_page(0)

    def get_alert(self):
        '''Devuelve la alerta'''
        if not self._one_alert:
            self._one_alert = Alert()
            self.add_alert(self._one_alert)

        return self._one_alert