def delete_partition(self, part):
        'Ejecuta el proceso de eliminar la particion de la lista'
        i = get_row_index(self.lista, part)
        particion = self.lista[i]
        inicio = particion[TblCol.INICIO]
        fin = particion[TblCol.FIN]
        del_sig = del_ant = False

        # Si tiene una fila anterior
        if i > 0:
            p_anterior = self.lista[i - 1]
            if self.is_summable(p_anterior, particion):
                del_ant = True
                inicio = p_anterior[TblCol.INICIO]
        # si tiene una fila siguiente
        if has_next_row(self.lista, i):
            p_siguiente = self.lista[i + 1]
            if self.is_summable(p_siguiente, particion):
                del_sig = True
                fin = p_siguiente[TblCol.FIN]

        tamano = fin - inicio

        temp = copy(particion)
        temp[TblCol.DISPOSITIVO] = ''
        # Validar de que tipo quedará la particion libre
        if is_primary(temp):
            temp[TblCol.TIPO] = msj.particion.primaria
        elif is_logic(temp):
            temp[TblCol.TIPO] = msj.particion.logica
        temp[TblCol.FORMATO] = msj.particion.libre
        temp[TblCol.MONTAJE] = ''
        temp[TblCol.TAMANO] = humanize(tamano)
        temp[TblCol.USADO] = humanize(0)
        temp[TblCol.LIBRE] = humanize(tamano)
        temp[TblCol.INICIO] = inicio
        temp[TblCol.FIN] = fin
        temp[TblCol.FORMATEAR] = False
        temp[TblCol.ESTADO] = PStatus.FREED

        # Sustituimos con los nuevos valores
        self.lista[i] = temp
        # Borramos los esṕacios vacios contiguos si existieren
        if del_sig:
            del self.lista[i + 1]
        if del_ant:
            del self.lista[i - 1]

        # Si lo que se estaeliminando no es un espacio libre
        if not is_free(particion):
            # Agregamos la accion correspondiente
            self.acciones.append(['borrar',
                                  self.disco,
                                  None,
                                  particion[TblCol.INICIO],
                                  particion[TblCol.FIN],
                                  particion[TblCol.FORMATO],
                                  msj.particion.get_tipo_orig(
                                                       particion[TblCol.TIPO]),
                                  0])
Exemple #2
0
    def delete_partition(self, part):
        'Ejecuta el proceso de eliminar la particion de la lista'
        i = get_row_index(self.lista, part)
        particion = self.lista[i]
        inicio = particion[TblCol.INICIO]
        fin = particion[TblCol.FIN]
        del_sig = del_ant = False

        # Si tiene una fila anterior
        if i > 0:
            p_anterior = self.lista[i - 1]
            if self.is_summable(p_anterior, particion):
                del_ant = True
                inicio = p_anterior[TblCol.INICIO]
        # si tiene una fila siguiente
        if has_next_row(self.lista, i):
            p_siguiente = self.lista[i + 1]
            if self.is_summable(p_siguiente, particion):
                del_sig = True
                fin = p_siguiente[TblCol.FIN]

        tamano = fin - inicio

        temp = copy(particion)
        temp[TblCol.DISPOSITIVO] = ''
        # Validar de que tipo quedará la particion libre
        if is_primary(temp):
            temp[TblCol.TIPO] = msj.particion.primaria
        elif is_logic(temp):
            temp[TblCol.TIPO] = msj.particion.logica
        temp[TblCol.FORMATO] = msj.particion.libre
        temp[TblCol.MONTAJE] = ''
        temp[TblCol.TAMANO] = humanize(tamano)
        temp[TblCol.USADO] = humanize(0)
        temp[TblCol.LIBRE] = humanize(tamano)
        temp[TblCol.INICIO] = inicio
        temp[TblCol.FIN] = fin
        temp[TblCol.FORMATEAR] = False
        temp[TblCol.ESTADO] = PStatus.FREED

        # Sustituimos con los nuevos valores
        self.lista[i] = temp
        # Borramos los esṕacios vacios contiguos si existieren
        if del_sig:
            del self.lista[i + 1]
        if del_ant:
            del self.lista[i - 1]

        # Si lo que se estaeliminando no es un espacio libre
        if not is_free(particion):
            # Agregamos la accion correspondiente
            self.acciones.append([
                'borrar', self.disco, None, particion[TblCol.INICIO],
                particion[TblCol.FIN], particion[TblCol.FORMATO],
                msj.particion.get_tipo_orig(particion[TblCol.TIPO]), 0
            ])
    def __init__(self, lista, fila_selec, acciones):
        self.lista = lista
        self.fila_selec = fila_selec
        self.acciones = acciones
        self.disco = fila_selec[TblCol.DISPOSITIVO]

        if is_primary(self.fila_selec, False) or is_logic(self.fila_selec):
            self.delete_partition(self.fila_selec)
        else:
            is_clean = True
            for partition in self.lista:
                if is_logic(partition) and not is_free(partition):
                    message = "Debe borrar primero las particiones lógicas."
                    UserMessage(message, 'ERROR', gtk.MESSAGE_ERROR, gtk.BUTTONS_OK)
                    is_clean = False
                    break;
            if is_clean:
                i = get_row_index(self.lista, self.fila_selec)
                free = self.lista[i + 1]
                self.delete_partition(self.fila_selec)
                free[TblCol.TIPO] = msj.particion.primaria
                self.delete_partition(free)
    def process_response(self, response):

        if response == gtk.RESPONSE_OK:
            i = get_row_index(self.lista, self.particion_act)
            tmp = self.lista[i]
            filesystem = self.fs_box.cmb_fs.get_active_text()
            formatear = self.fs_box.formatear.get_active()
            montaje = self.fs_box.cmb_montaje.get_active_text()

            if montaje == MSG_ENTER_MANUAL:
                montaje = self.fs_box.entrada.get_text().strip()
            elif montaje == MSG_NONE:
                montaje = ''

            tmp[TblCol.FORMATO] = filesystem
            tmp[TblCol.MONTAJE] = montaje
            tmp[TblCol.FORMATEAR] = formatear

            if tmp != list(self.particion_act):

                tmp[TblCol.ESTADO] = PStatus.USED
                self.lista[i] = tmp

                disco = tmp[TblCol.DISPOSITIVO]
                montaje = tmp[TblCol.MONTAJE]
                inicio = tmp[TblCol.INICIO]
                fin = tmp[TblCol.FIN]
                formato = tmp[TblCol.FORMATO]
                tipo = tmp[TblCol.TIPO]

                if formatear:
                    accion = 'formatear'
                else:
                    accion = 'usar'

                self.acciones.append([accion, disco, montaje, inicio, fin, \
                    formato, msj.particion.get_tipo_orig(tipo), 0])

        self.destroy()
    def process_response(self, response):

        if response == gtk.RESPONSE_OK:
            i = get_row_index(self.lista, self.particion_act)
            tmp = self.lista[i]
            filesystem = self.fs_box.cmb_fs.get_active_text()
            formatear = self.fs_box.formatear.get_active()
            montaje = self.fs_box.cmb_montaje.get_active_text()

            if montaje == MSG_ENTER_MANUAL:
                montaje = self.fs_box.entrada.get_text().strip()
            elif montaje == MSG_NONE:
                montaje = ''

            tmp[TblCol.FORMATO] = filesystem
            tmp[TblCol.MONTAJE] = montaje
            tmp[TblCol.FORMATEAR] = formatear

            if tmp != list(self.particion_act):

                tmp[TblCol.ESTADO] = PStatus.USED
                self.lista[i] = tmp

                disco = tmp[TblCol.DISPOSITIVO]
                montaje = tmp[TblCol.MONTAJE]
                inicio = tmp[TblCol.INICIO]
                fin = tmp[TblCol.FIN]
                formato = tmp[TblCol.FORMATO]
                tipo = tmp[TblCol.TIPO]

                if formatear:
                    accion = 'formatear'
                else:
                    accion = 'usar'

                self.acciones.append([accion, disco, montaje, inicio, fin, \
                    formato, msj.particion.get_tipo_orig(tipo), 0])

        self.destroy()
Exemple #6
0
    def __init__(self, lista, fila_selec, acciones):
        self.lista = lista
        self.fila_selec = fila_selec
        self.acciones = acciones
        self.disco = fila_selec[TblCol.DISPOSITIVO]

        if is_primary(self.fila_selec, False) or is_logic(self.fila_selec):
            self.delete_partition(self.fila_selec)
        else:
            is_clean = True
            for partition in self.lista:
                if is_logic(partition) and not is_free(partition):
                    message = _("You must first delete the logical \
partitions.")
                    UserMessage(message, 'ERROR', gtk.MESSAGE_ERROR,
                                gtk.BUTTONS_OK)
                    is_clean = False
                    break
            if is_clean:
                i = get_row_index(self.lista, self.fila_selec)
                free = self.lista[i + 1]
                self.delete_partition(self.fila_selec)
                free[TblCol.TIPO] = msj.particion.primaria
                self.delete_partition(free)
    def __init__(self, padre):
        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
        gtk.Window.set_position(self, gtk.WIN_POS_CENTER_ALWAYS)
        self.disco = padre.disco
        self.sector = get_sector_size(self.disco)
        self.lista = padre.lista
        self.acciones = padre.acciones
        self.particion_act = padre.fila_selec
        # Toma el inicio_part y fin_part de la particion seleccionada
        self.inicio_part = self.particion_act[TblCol.INICIO]
        self.fin_part = self.particion_act[TblCol.FIN]
        self.num_fila_act = get_row_index(self.lista, self.particion_act)
        self.particion_sig = get_next_row(self.lista, self.particion_act,
                                          self.num_fila_act)

        self.set_title(_("New partition"))
        self.set_resizable(0)

        self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
        self.set_default_response(gtk.RESPONSE_CANCEL)

        #Tamaño de la partición
        lbl_tamano = gtk.Label(_("Size:"))
        lbl_tamano.set_alignment(0, 0.5)
        lbl_tamano.show()
        adj = gtk.Adjustment(self.fin_part, self.inicio_part, self.fin_part, \
                             1.0, 1024.0, 0.0)
        self.escala = gtk.HScale()
        self.escala.set_digits(0)
        self.escala.set_draw_value(False)
        self.escala.set_adjustment(adj)
        self.escala.set_size_request(450, -1)
        self.escala.connect("value-changed", self.escala_on_changed)
        self.escala.show()

        self.lblsize = gtk.Label(humanize(self.escala.get_value() - \
                                          self.inicio_part))
        self.lblsize.show()

        hbox = gtk.VBox()
        hbox.show()
        hbox.pack_start(self.escala)
        hbox.pack_start(self.lblsize)

        fs_container = frame_fs(self, self.lista, self.particion_act)
        self.cmb_tipo = fs_container.cmb_tipo

        self.cmb_fs = fs_container.cmb_fs
        self.cmb_fs.connect('changed', self.cmb_fs_changed)

        self.cmb_montaje = fs_container.cmb_montaje
        self.entrada = fs_container.entrada
        fs_container.formatear.set_active(True)
        fs_container.formatear.set_sensitive(False)

        # Contenedor General
        self.cont = gtk.VBox()
        self.cont.pack_start(lbl_tamano)
        self.cont.pack_start(hbox, padding=15)
        self.cont.pack_start(fs_container)
        self.cont.show()
        self.vbox.pack_start(self.cont)

        response = self.run()
        self.process_response(response)
Exemple #8
0
    def __init__(self, padre):
        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
        gtk.Window.set_position(self, gtk.WIN_POS_CENTER_ALWAYS)
        self.disco = padre.disco
        self.sector = get_sector_size(self.disco)
        self.lista = padre.lista
        self.acciones = padre.acciones
        self.particion_act = padre.fila_selec
        # Toma el inicio_part y fin_part de la particion seleccionada
        self.inicio_part = self.particion_act[TblCol.INICIO]
        self.fin_part = self.particion_act[TblCol.FIN]
        self.num_fila_act = get_row_index(self.lista, self.particion_act)
        self.particion_sig = get_next_row(self.lista, self.particion_act,
                                          self.num_fila_act)

        self.set_title(_("New partition"))
        self.set_resizable(0)

        self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
        self.set_default_response(gtk.RESPONSE_CANCEL)

        #Tamaño de la partición
        lbl_tamano = gtk.Label(_("Size:"))
        lbl_tamano.set_alignment(0, 0.5)
        lbl_tamano.show()
        adj = gtk.Adjustment(self.fin_part, self.inicio_part, self.fin_part, \
                             1.0, 1024.0, 0.0)
        self.escala = gtk.HScale()
        self.escala.set_digits(0)
        self.escala.set_draw_value(False)
        self.escala.set_adjustment(adj)
        self.escala.set_size_request(450, -1)
        self.escala.connect("value-changed", self.escala_on_changed)
        self.escala.show()

        self.lblsize = gtk.Label(humanize(self.escala.get_value() - \
                                          self.inicio_part))
        self.lblsize.show()

        hbox = gtk.VBox()
        hbox.show()
        hbox.pack_start(self.escala)
        hbox.pack_start(self.lblsize)

        fs_container = frame_fs(self, self.lista, self.particion_act)
        self.cmb_tipo = fs_container.cmb_tipo

        self.cmb_fs = fs_container.cmb_fs
        self.cmb_fs.connect('changed', self.cmb_fs_changed)

        self.cmb_montaje = fs_container.cmb_montaje
        self.entrada = fs_container.entrada
        fs_container.formatear.set_active(True)
        fs_container.formatear.set_sensitive(False)

        # Contenedor General
        self.cont = gtk.VBox()
        self.cont.pack_start(lbl_tamano)
        self.cont.pack_start(hbox, padding=15)
        self.cont.pack_start(fs_container)
        self.cont.show()
        self.vbox.pack_start(self.cont)

        response = self.run()
        self.process_response(response)
    def __init__(self, disco, lista, fila, acciones):
        self.sector = get_sector_size(disco)
        self.lista = lista
        self.acciones = acciones
        self.num_fila_act = get_row_index(lista, fila)
        self.dispositivo = fila[TblCol.DISPOSITIVO]
        self.formato = fila[TblCol.FORMATO]
        self.inicio = fila[TblCol.INICIO]
        self.fin = fila[TblCol.FIN]
        self.usado = floatify(fila[TblCol.USADO])

        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
        gtk.Window.set_position(self, gtk.WIN_POS_CENTER_ALWAYS)

        self.set_title("Redimensionar Partición")
        self.set_size_request(400, 200)
        self.set_resizable(0)

        self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
        self.set_response_sensitive(gtk.RESPONSE_OK, False)
        self.set_default_response(gtk.RESPONSE_CANCEL)

        self.escala = gtk.HScale()
        self.escala.set_draw_value(False)
        adj = gtk.Adjustment(self.fin, self.inicio, self.get_maximum_size(),
                             1.0, 1024.0, 0.0)
        adj.connect("value-changed", self.escala_value_changed)
        self.escala.set_adjustment(adj)
        self.escala.show()

        self.lbl_dispositivo = gtk.Label("Partición '%s'" % self.dispositivo)
        self.lbl_dispositivo.show()

        self.lbl_tamano = gtk.Label('Tamaño')
        self.lbl_tamano_num = gtk.Label(humanize(
            self.get_new_partition_size()))
        self.vb_tamano = gtk.VBox()
        self.vb_tamano.add(self.lbl_tamano)
        self.vb_tamano.add(self.lbl_tamano_num)
        self.vb_tamano.show_all()

        self.lbl_usado = gtk.Label('Usado')
        self.lbl_usado_num = gtk.Label(humanize(self.usado))
        self.vb_usado = gtk.VBox()
        self.vb_usado.add(self.lbl_usado)
        self.vb_usado.add(self.lbl_usado_num)
        self.vb_usado.show_all()

        self.lbl_libre = gtk.Label('Libre')
        self.lbl_libre_num = gtk.Label(humanize(self.get_free_space()))
        self.vb_libre = gtk.VBox()
        self.vb_libre.add(self.lbl_libre)
        self.vb_libre.add(self.lbl_libre_num)
        self.vb_libre.show_all()

        self.lbl_sin_particion = gtk.Label('Sin Particionar')
        self.lbl_sin_particion_num = gtk.Label(
            humanize(self.get_unasigned_space()))
        self.vb_sin_particion = gtk.VBox()
        self.vb_sin_particion.add(self.lbl_sin_particion)
        self.vb_sin_particion.add(self.lbl_sin_particion_num)
        self.vb_sin_particion.show_all()

        self.hb_leyenda = gtk.HBox()
        self.hb_leyenda.add(self.vb_tamano)
        self.hb_leyenda.add(self.vb_usado)
        self.hb_leyenda.add(self.vb_libre)
        self.hb_leyenda.add(self.vb_sin_particion)
        self.hb_leyenda.show_all()

        self.cont = gtk.VBox()
        self.cont.add(self.lbl_dispositivo)
        self.cont.add(self.hb_leyenda)
        self.cont.add(self.escala)
        self.cont.show()

        self.vbox.pack_start(self.cont)

        self.process_response(self.run())
    def __init__(self, disco, lista, fila, acciones):
        self.sector = get_sector_size(disco)
        self.lista = lista
        self.acciones = acciones
        self.num_fila_act = get_row_index(lista, fila)
        self.dispositivo = fila[TblCol.DISPOSITIVO]
        self.formato = fila[TblCol.FORMATO]
        self.inicio = fila[TblCol.INICIO]
        self.fin = fila[TblCol.FIN]
        self.usado = floatify(fila[TblCol.USADO])

        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
        gtk.Window.set_position(self, gtk.WIN_POS_CENTER_ALWAYS)

        self.set_title("Redimensionar Partición")
        self.set_size_request(400, 200)
        self.set_resizable(0)

        self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
        self.set_response_sensitive(gtk.RESPONSE_OK, False)
        self.set_default_response(gtk.RESPONSE_CANCEL)

        self.escala = gtk.HScale()
        self.escala.set_draw_value(False)
        adj = gtk.Adjustment(self.fin,
                            self.inicio,
                            self.get_maximum_size(),
                            1.0,
                            1024.0,
                            0.0)
        adj.connect("value-changed", self.escala_value_changed)
        self.escala.set_adjustment(adj)
        self.escala.show()

        self.lbl_dispositivo = gtk.Label("Partición '%s'" % self.dispositivo)
        self.lbl_dispositivo.show()

        self.lbl_tamano = gtk.Label('Tamaño')
        self.lbl_tamano_num = gtk.Label(humanize(self.get_new_partition_size()))
        self.vb_tamano = gtk.VBox()
        self.vb_tamano.add(self.lbl_tamano)
        self.vb_tamano.add(self.lbl_tamano_num)
        self.vb_tamano.show_all()

        self.lbl_usado = gtk.Label('Usado')
        self.lbl_usado_num = gtk.Label(humanize(self.usado))
        self.vb_usado = gtk.VBox()
        self.vb_usado.add(self.lbl_usado)
        self.vb_usado.add(self.lbl_usado_num)
        self.vb_usado.show_all()

        self.lbl_libre = gtk.Label('Libre')
        self.lbl_libre_num = gtk.Label(humanize(self.get_free_space()))
        self.vb_libre = gtk.VBox()
        self.vb_libre.add(self.lbl_libre)
        self.vb_libre.add(self.lbl_libre_num)
        self.vb_libre.show_all()

        self.lbl_sin_particion = gtk.Label('Sin Particionar')
        self.lbl_sin_particion_num = gtk.Label(humanize(self.get_unasigned_space()))
        self.vb_sin_particion = gtk.VBox()
        self.vb_sin_particion.add(self.lbl_sin_particion)
        self.vb_sin_particion.add(self.lbl_sin_particion_num)
        self.vb_sin_particion.show_all()

        self.hb_leyenda = gtk.HBox()
        self.hb_leyenda.add(self.vb_tamano)
        self.hb_leyenda.add(self.vb_usado)
        self.hb_leyenda.add(self.vb_libre)
        self.hb_leyenda.add(self.vb_sin_particion)
        self.hb_leyenda.show_all()

        self.cont = gtk.VBox()
        self.cont.add(self.lbl_dispositivo)
        self.cont.add(self.hb_leyenda)
        self.cont.add(self.escala)
        self.cont.show()

        self.vbox.pack_start(self.cont)

        self.process_response(self.run())