On Thu, Oct 04, 2012 at 04:27:27PM +0200, Michele Gatti wrote:
> Il giorno 04 ottobre 2012 16:12, Vittorio Spina
> <vittorio.sp...@gmail.com>ha scritto:
> >  Il 04/10/2012 15:57, Michele Gatti ha scritto:
> > Il giorno 04 ottobre 2012 15:17, Vittorio Spina 
> > <vittorio.sp...@gmail.com>ha scritto:
> >> quasi, mi ci vorrebbe un programma grafico che fa il writing e poi io
> >> penso al reading.
> >> Perchè il problema è che un cliente dovrebbe farsi la configurazione da
> >> solo...
> >> Non so se mi spiego
> >> V.
> >>
> >> Il 04/10/2012 15:12, Daniele Varrazzo ha scritto:
> >>
> >>  On 2012-10-04 14:03, Vittorio Spina wrote:
> >>>
> >>>  in generale sviluppo applicazioni che sono configurabili da files txt
> >>>> in modo che dopo la compilazione con py2exe, sia possibile modificare
> >>>> alcune impostazioni senza dover "ricompilare".
> >>>> Per questo ho sviluppato una classe che prende un file txt e lo
> >>>> interpreta secondo una sintassi definita.
> >>>>
> >>>
> >>> Perché, questo non andava bene?
> >>> http://docs.python.org/library/configparser.html
> >  e' lo so, ma è la meno elegante.
> > mi sarebbe piaciuto un programma grafico tipo qtstyle con i campi da
> > inserire...
> > sarebbe stato più figo, e una volta generalizzato l'avrei utilizzato per
> > tutti le app che scrivo...
> > mi sa che devo pianificare il parto...
> > grazie comunque
> > v.
> >
> Come mi hanno sempre risposto, l'eleganza a volte andrebbe messa da parte
> per la praticità, poi vedi tu.

forse ma non mi sembra molto impraticabile una cosa simile (vedi
allegati). è molto grezzo ma rende l'idea credo e inoltre puoi
sbizzarrirti un po' ed arrivare ad una cosa di ben altro livello:

        class MySection:
                a = Int()
                b = Float(default=3.14)

        app.add_section(ISection(MySection))

m.
"""
usage: python guiconfig.py [[file] ...]
"""

from __future__ import print_function

import sys
import getopt
import ConfigParser

from gi.repository import Gtk


class Usage(Exception):

    def __init__(self, msg):
        self.msg = msg


class Application:

    def __init__(self, config_parser):
        self.config_parser = config_parser

    def add_section(self, section):
        box = Gtk.Box(spacing=5)
        box.set_orientation(Gtk.Orientation.VERTICAL)
        for option in self.config_parser.options(section):
            hbox = Gtk.Box(spacing=5)
            label = Gtk.Label(option)
            entry = Gtk.Entry()
            entry.set_text(self.config_parser.get(section, option))
            hbox.pack_start(label, False, False, 5)
            hbox.pack_start(entry, True, True, 0)
            box.pack_start(hbox, False, False, 0)
        self.notebook.append_page(box, Gtk.Label(section))

    def run(self):
        self.main_window = Gtk.Window()
        self.main_window.connect("delete-event", Gtk.main_quit)
        self.notebook = Gtk.Notebook()
        self.main_window.add(self.notebook)
        for section in self.config_parser.sections():
            self.add_section(section)
        self.main_window.show_all()
        Gtk.main()


def main(args=None):
    if args is None:
        args = sys.argv[1:]

    try:
        try:
            opts, files = getopt.getopt(args, "h", ["help"])
        except getopt.error, msg:
            raise Usage(msg)

        for o, a in opts:
            if o in ("h", "help"):
                print(__doc__)
                return 0

        try:
            parser = ConfigParser.RawConfigParser()
            parser.read(args)
            app = Application(parser)
            app.run()
            return 0
        except ConfigParser.Error, err:
            print("Error while parsing", file=sys.stderr)
            print(err, file=sys.stderr)
            return 1
        except Exception, err:
            print(err, file=sys.stderr)
            return 1
    except Usage, err:
        print(err.msg, file=sys.stderr)
        print("for help use --help", file=sys.stderr)
        return 2

if __name__ == "__main__":
    sys.exit(main())
[Section1]
int = 15
bool = true
float = 3.1415
baz = fun
bar = Python
foo = %(bar) is %(baz)

[Section2]
baz = fun
bar = Python
foo = %(bar) is %(baz)

[Section3]
int = 15
bool = true
float = 3.1415
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a