예제 #1
0
파일: d10r.py 프로젝트: alsimoes/d10r
def menu_cfg(msg):
    '''Exibe um diálogo com opções para procurar e copiar um arquivo de
    configuração do d10r, criar um novo arquivo e sair do programa.'''
    botoes = ('Novo', 'Procurar', 'Sair')
    data.CONFIG
    msg += '''

O que deseja fazer?
%s: Criar um novo arquivo
%s: Utilizar um outro arquivo
%s: Sair do programa''' % tuple(botoes)

    botao = gui.menu(msg, botoes)

    if botao == botoes[0]:
        init()
    elif botao == botoes[1]:
        caminho = gui.escolher_arquivo('Escolha o arquivo desejado', 'cfg')
        if caminho:
            if gui.perguntar(
                    'O arquivo selecionado está fora do local padrão, ' +
                    'de forma que o programa sempre perguntará por ele ' +
                    'quando iniciar. Deseja copiar o arquivo para o local ' +
                    'padrão?\n\nSe sim, você precisará fazer backup do arquivo '
                    + 'sempre que for utilizá-lo em outro computador.'):
                shutil.copy2(caminho, data.CONFIG)
                gui.notificar('Arquivo copiado com sucesso!')
            else:
                data.CONFIG = caminho
        else:
            gui.notificar('Preciso do arquivo de configuração para continuar!')
    else:
        raise SystemExit(0)
예제 #2
0
파일: d10r.py 프로젝트: ygormutti/d10r
def menu_cfg(msg):
    '''Exibe um diálogo com opções para procurar e copiar um arquivo de
    configuração do d10r, criar um novo arquivo e sair do programa.'''
    botoes = ('Novo', 'Procurar', 'Sair')
    data.CONFIG
    msg += '''

O que deseja fazer?
%s: Criar um novo arquivo
%s: Utilizar um outro arquivo
%s: Sair do programa''' % tuple(botoes)

    botao = gui.menu(msg, botoes)

    if botao == botoes[0]:
        init()
    elif botao == botoes[1]:
        caminho = gui.escolher_arquivo('Escolha o arquivo desejado', 'cfg')
        if caminho:
            if gui.perguntar('O arquivo selecionado está fora do local padrão, ' +
                         'de forma que o programa sempre perguntará por ele ' +
                         'quando iniciar. Deseja copiar o arquivo para o local ' +
                         'padrão?\n\nSe sim, você precisará fazer backup do arquivo ' +
                         'sempre que for utilizá-lo em outro computador.'):
                shutil.copy2(caminho, data.CONFIG)
                gui.notificar('Arquivo copiado com sucesso!')
            else:
                data.CONFIG = caminho
        else:
            gui.notificar('Preciso do arquivo de configuração para continuar!')
    else:
        raise SystemExit(0)
예제 #3
0
파일: d10r.py 프로젝트: alsimoes/d10r
def init():
    '''Inicializa o arquivo de configuração do d10r.'''
    gui.notificar(
        'Obrigado por usar o d10r (este programa que vos fala).\n' +
        'A seguir eu farei algumas perguntas para que eu possa te ajudar' +
        ' a gerenciar o tempo que você deve gastar com cada atividade da' +
        ' sua rotina. Muita produtividade pra você!')
    atividades = ler_atividades()

    ordprioridade = gui.prioridade_dialog(atividades)

    if not ordprioridade:
        gui.notificar('Se você não sabe, não sou eu quem vai saber.' +
                      '\nMe execute de novo quando decidir. ;)')
        raise SystemExit(1)

    prioridades = calcula_prioridades(ordprioridade)

    toth = gui.entrar('Quantas horas semanais você deseja administrar?', True)
    if not toth:
        gui.notificar('Se não é pra administrar horas, pra quê você me quer?' +
                      ' =|\nTchau!')
        raise SystemExit(1)

    referencial = sum(prioridades.values())

    for nome in atividades:
        pts = (prioridades[nome] * 1.0) / referencial
        data.Atividade(nome, pts, 0)

    data.salvar_config(toth, datetime.date.today().isoweekday(), 0)

    gui.notificar('Configurações salvas com sucesso.')
예제 #4
0
파일: d10r.py 프로젝트: ygormutti/d10r
def init():
    '''Inicializa o arquivo de configuração do d10r.'''
    gui.notificar('Obrigado por usar o d10r (este programa que vos fala).\n' +
              'A seguir eu farei algumas perguntas para que eu possa te ajudar' +
              ' a gerenciar o tempo que você deve gastar com cada atividade da' +
              ' sua rotina. Muita produtividade pra você!')
    atividades = ler_atividades()

    ordprioridade = gui.prioridade_dialog(atividades)

    if not ordprioridade:
        gui.notificar('Se você não sabe, não sou eu quem vai saber.' +
                  '\nMe execute de novo quando decidir. ;)')
        raise SystemExit(1)

    prioridades = calcula_prioridades(ordprioridade)

    toth = gui.entrar('Quantas horas semanais você deseja administrar?', True)
    if not toth:
        gui.notificar('Se não é pra administrar horas, pra quê você me quer?' +
                  ' =|\nTchau!')
        raise SystemExit(1)

    referencial = sum(prioridades.values())

    for nome in atividades:
        pts = (prioridades[nome] * 1.0) / referencial
        data.Atividade(nome, pts, 0)

    data.salvar_config(toth, datetime.date.today().isoweekday(), 0)

    gui.notificar('Configurações salvas com sucesso.')
예제 #5
0
파일: d10r.py 프로젝트: alsimoes/d10r
def ler_atividades():
    '''ler_atividades(msg) -> lista de entradas

    Exibe uma janela para que o usuário entre com o nome das atividades.'''
    entradas = []
    while True:
        msg = 'Informe uma nova atividade ou cancele para continuar.'
        if entradas:
            complemento = u'\nAs seguintes atividades já foram adicionadas:\n'
            atividades = '\n'.join([' - ' + e for e in entradas])
            msg += complemento + atividades

        entrada = gui.entrar(msg)
        if entrada:
            entradas.append(entrada)
            entradas = list(set(entradas))  # remove duplicadas
        else:  # cancelar foi pressionado
            if len(entradas) >= 2:
                return set(entradas)
            else:
                gui.notificar('É preciso informar ao menos duas atividades.' +
                              '\nVocê é monotarefa?')
                raise SystemExit(1)
예제 #6
0
파일: d10r.py 프로젝트: ygormutti/d10r
def ler_atividades():
    '''ler_atividades(msg) -> lista de entradas

    Exibe uma janela para que o usuário entre com o nome das atividades.'''
    entradas = []
    while True:
        msg = 'Informe uma nova atividade ou cancele para continuar.'
        if entradas:
            complemento = u'\nAs seguintes atividades já foram adicionadas:\n'
            atividades = '\n'.join([' - ' + e for e in entradas])
            msg += complemento + atividades

        entrada = gui.entrar(msg)
        if entrada:
            entradas.append(entrada)
            entradas = list(set(entradas)) # remove duplicadas
        else: # cancelar foi pressionado
            if len(entradas) >= 2:
                return set(entradas)
            else:
                gui.notificar('É preciso informar ao menos duas atividades.' +
                          '\nVocê é monotarefa?')
                raise SystemExit(1)
예제 #7
0
파일: d10r.py 프로젝트: alsimoes/d10r
            if data.creditar_tudo(toth, inicio, timestamp):
                # guarda a data do último crédito
                timestamp = datetime.date.today()

        debito = 0
        try:
            atividade = escolher_ativ()

            if atividade.saldo > 0:
                debito = debitar(atividade)
            else:
                if gui.perguntar(
                        'Esta atividade não possui mais horas a serem' +
                        ' cumpridas.\nDeseja continuar mesmo assim?'):
                    debito = debitar(atividade, False)
        except gui.FimAlcancado:
            debito = atividade.saldo
            gui.notificar(u'Você acabou de cumprir as horas da atividade:\n' +
                          atividade.nome)
        except AttributeError, e:  # usuário clicou em Sair, ou não... =/
            break
        finally:
            if debito and gui.perguntar(u'Confirma %s horas gastas com %s?' %
                                        (formatah(debito), atividade.nome)):
                atividade.debitarh(debito)
            data.salvar_config(toth, inicio, timestamp)


if __name__ == '__main__':
    main()
예제 #8
0
파일: d10r.py 프로젝트: ygormutti/d10r
        if (not timestamp) or (datetime.date.today() > timestamp):
                        if data.creditar_tudo(toth, inicio, timestamp):
                            # guarda a data do último crédito
                            timestamp = datetime.date.today()

        debito = 0
        try:
            atividade = escolher_ativ()

            if atividade.saldo > 0:
                debito = debitar(atividade)
            else:
                if gui.perguntar('Esta atividade não possui mais horas a serem' +
                             ' cumpridas.\nDeseja continuar mesmo assim?'):
                    debito = debitar(atividade, False)
        except gui.FimAlcancado:
            debito = atividade.saldo
            gui.notificar(u'Você acabou de cumprir as horas da atividade:\n' +
                      atividade.nome)
        except AttributeError, e: # usuário clicou em Sair, ou não... =/
            break
        finally:
            if debito and gui.perguntar(u'Confirma %s horas gastas com %s?' %
                         (formatah(debito), atividade.nome)):
                atividade.debitarh(debito)
            data.salvar_config(toth, inicio, timestamp)


if __name__ == '__main__':
    main()