Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from msgbox import *
- import sys
- import os
- import datetime
- def removedir(directory):
- lista = os.listdir(directory)
- for i in range(len(lista)):
- os.remove(directory+'/'+lista[i])
- os.rmdir(directory)
- def copyfile(source, dest, buffer_size=1024*1024):
- if not hasattr(source, 'read'):
- source = open(source, 'rb')
- if not hasattr(dest, 'write'):
- dest = open(dest, 'wb')
- while 1:
- copy_buffer = source.read(buffer_size)
- if copy_buffer:
- dest.write(copy_buffer)
- else:
- break
- source.close()
- dest.close()
- scriptdir = os.path.dirname(sys.argv[0]) #costante
- class maingui:
- aperto = 0
- selp = 1
- nomep = ''
- pathp = ''
- splp = ''
- confp = ''
- included = []
- verspyp = ''
- autp = ''
- versscp = ''
- datacp = datetime.datetime.now()
- datamp = datetime.datetime.now()
- aziendap = ''
- licenzap = ''
- descp = ''
- def __init__ (self): #PASSO 1
- #def a(self):
- #form
- self.finestra = Tk()
- self.finestra.title("Python project cretor")
- self.finestra.resizable(False, False)
- #frames
- self.frame1 = Frame(self.finestra, width="445", height="300",
- bd="1", relief="ridge")
- self.frame2 = Frame(self.finestra, height="320", bd="1",
- relief="ridge", bg="white")
- self.frame3 = Frame(self.finestra, height="24",
- bd="1", relief="ridge")
- self.frame2.grid_propagate(0)
- self.frame1.grid(row=0, column=0)
- self.frame2.grid(row=0, column=0, sticky="we")
- self.frame3.grid(row=2, column=0, sticky="we")
- #status label
- self.status = StringVar()
- self.statusl = Label(self.frame3, text="Status: in attesa.", textvariable=self.status)
- self.statusl.place(x=4, y=0)
- self.status.set("Passo 1/3")
- #impostazioni iniziali
- self.iniziof = Label(self.frame2, text="Impostazioni iniziali:", bg="white", font=("Helvetica",11,'bold'))
- self.iniziof.place(x=122,y=5)
- #tipo di progetto
- self.tipo = Label(self.frame2, text="Tipo di progetto:", bg="white", font=("Helvetica",10,'bold'))
- self.tipo.place(x=5,y=50)
- self.rdbvar = IntVar()
- self.consolerdb = Radiobutton(self.finestra,text="Console",variable=self.rdbvar, value=1, bg="white")
- self.consolerdb.place(x=10,y=70)
- self.guirdb = Radiobutton(self.finestra,text="Interfaccia grafica",variable=self.rdbvar, value=2, bg="white")
- self.guirdb.place(x=80,y=70)
- self.librdb = Radiobutton(self.finestra,text="Libreria",variable=self.rdbvar, value=3, bg="white")
- self.librdb.place(x=200,y=70)
- if self.selp == 1:
- self.consolerdb.select()
- elif self.selp == 2:
- self.guirdb.select()
- else:
- self.librdb.select()
- #nome e path
- self.nomel = Label(self.frame2, text="Nome:",bg="white",font=("Helvetica",10,'bold'))
- self.nomel.place(x=5,y=110)
- self.nome = StringVar()
- self.nomee = Entry(textvariable=self.nome,width=30)
- self.nomee.place(x=225,y=113)
- self.nome.set(self.nomep)
- self.pathl = Label(self.frame2, text="Path:",bg="white",font=("Helvetica",10,'bold'))
- self.pathl.place(x=5,y=150)
- self.path = StringVar()
- self.pathe = Entry(textvariable=self.path,width=30)
- self.pathe.place(x=225,y=153)
- self.path.set(self.pathp)
- self.pathb = Button(self.frame2, text="...",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.sfoglia,width=0,height=0)
- self.pathb.place(x=415,y=153)
- self.spl = Label(self.frame2, text="Nome dello script principale:",bg="white",font=("Helvetica",10,'bold'))
- self.spl.place(x=5,y=190)
- self.sp = StringVar()
- self.spe = Entry(textvariable=self.sp,width=30)
- self.spe.place(x=225,y=193)
- self.sp.set(self.splp)
- self.confl = Label(self.frame2,text="Nome del file di configurazione:",bg="white",font=("Helvetica",10,'bold'))
- self.confl.place(x=5,y=230)
- self.conf = StringVar()
- self.confe = Entry(textvariable=self.conf,width=30)
- self.confe.place(x=225,y=233)
- self.conf.set(self.confp)
- #apri
- self.aprib = Button(self.frame2,text="Apri progetto",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.apri)
- self.aprib.place(x=350,y=30)
- #passo 2
- self.ppasso = Button(self.frame2,text="Avanti >",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.passo2)
- self.ppasso.place(x=350,y=280)
- self.finestra.mainloop()
- def apri(self):
- filea = filedialog.askopenfilename(title="Scegli il progetto da aprire",filetypes=[('File di progetto','*.prj')])
- if len(filea) > 0:
- self.aperto = 1
- prj = open(filea,'r')
- for line in prj:
- line = line.strip()
- if line.find('nome=') != -1:
- self.nome.set(line.replace('nome=',''))
- elif line.find('path') != -1:
- self.path.set(line.replace('path=',''))
- elif line.find('nome_script=') != -1:
- self.sp.set(line.replace('nome_script=',''))
- elif line.find('file_conf=') != -1:
- self.conf.set(line.replace('file_conf=',''))
- elif line.find('vers_py=') != -1:
- self.verspyp = line.replace('vers_py=','')
- elif line.find('autore=') != -1:
- self.autp = line.replace('autore=','')
- elif line.find('vers_script=') != -1:
- self.versscp = line.replace('vers_script=','')
- elif line.find('data_creaz=') != -1:
- self.datacp = line.replace('data_creaz=','')
- elif line.find('data_mod=') != -1:
- self.datamp = datetime.datetime.now()
- elif line.find('azienda=') != -1:
- self.aziendap = line.replace('azienda=','')
- elif line.find('licenza=') != -1:
- self.licenzap = line.replace('licenza=','')
- elif line.find('desc=') != -1:
- self.descp = line.replace('desc=','')
- elif line.find('libreria_standard=') != -1:
- self.included.append('[1]'+line.replace('libreria_standard=',''))
- elif line.find('libreria_utente=') != -1:
- self.included.append('[2]'+line.replace('libreria_utente=',''))
- prj.close()
- def passo2(self):
- self.finestra.destroy()
- self.selp = self.rdbvar.get()
- self.nomep = self.nome.get()
- self.pathp = self.path.get()
- self.splp = self.sp.get()
- self.confp = self.conf.get()
- self.passo2gui()
- def sfoglia(self):
- self.dir = filedialog.askdirectory(parent=self.finestra,initialdir=scriptdir,title='Seleziona una cartella')
- if len(self.dir) > 0:
- self.path.set(self.dir+'/')
- def passo2gui(self): #PASSO 2
- #form
- self.finestra = Tk()
- self.finestra.title("Python project cretor")
- self.finestra.resizable(False, False)
- #frames
- self.frame1 = Frame(self.finestra, width="540", height="300",
- bd="1", relief="ridge")
- self.frame2 = Frame(self.finestra, height="380", bd="1",
- relief="ridge", bg="white")
- self.frame3 = Frame(self.finestra, height="24",
- bd="1", relief="ridge")
- self.frame2.grid_propagate(0)
- self.frame1.grid(row=0, column=0)
- self.frame2.grid(row=0, column=0, sticky="we")
- self.frame3.grid(row=2, column=0, sticky="we")
- #status label
- self.status = StringVar()
- self.statusl = Label(self.frame3, text="Status: in attesa.", textvariable=self.status)
- self.statusl.place(x=4, y=0)
- self.status.set("Passo 2/3")
- #librerie
- self.iniziof = Label(self.frame2, text="Librerie:", bg="white", font=("Helvetica",11,'bold'))
- self.iniziof.place(x=172,y=5)
- self.preinclusel = Label(self.frame2, text="Preincluse:", bg="white", font=("Helvetica",10,'bold'))
- self.preinclusel.place(x=5,y=50)
- self.inseritel = Label(self.frame2, text="Inserite:",bg="white",font=("Helvetica",10,'bold'))
- self.inseritel.place(x=275,y=50)
- #listbox 1
- self.pilb = Listbox(self.finestra,width=25,height=13)
- self.pilb.place(x=5,y=80)
- self.pypath = sys.executable
- self.pypath = self.pypath.split('\\')
- self.buff = ''
- for i in range(len(self.pypath)-1):
- self.buff += self.pypath[i]+'\\'
- self.pypath = self.buff+'\\Lib\\'
- self.listdir = os.listdir(self.pypath)
- for i in range(len(self.listdir)):
- self.pilb.insert(END,self.listdir[i])
- self.inseriscib = Button(self.frame2,text="Inserisci >",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.inserisci)
- self.inseriscib.place(x=88,y=295)
- #listbox2
- self.inp = Listbox(self.finestra,width=35,height=13)
- self.inp.place(x=278,y=80)
- for i in range(len(self.included)):
- if self.included[i].find('[1]') != -1:
- self.inp.insert(END,self.included[i].replace('[1]',''))
- else:
- fname = self.included[i].replace('[2]','').split('/')
- fname = fname[len(fname)-1]
- self.inp.insert(END,fname)
- if self.rdbvar.get() == 2:
- self.inp.insert(END,'tkinter.py')
- self.included.append('[1]tkinter.py')
- self.rimuovib = Button(self.frame2,text="Rimuovi /",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.togli)
- self.rimuovib.place(x=278,y=295)
- self.aggiungib = Button(self.frame2,text="Aggiungi file esterno >",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.aggesterno)
- self.aggiungib.place(x=352,y=295)
- #passo3
- self.ppasso3 = Button(self.frame2,text="Avanti >",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.passo3)
- self.ppasso3.place(x=445,y=340)
- self.ppasso2 = Button(self.frame2,text="< Indietro",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.passo1)
- self.ppasso2.place(x=380,y=340)
- self.finestra.mainloop()
- def inserisci(self):
- self.index = self.pilb.curselection()[0]
- self.seltext = self.pilb.get(self.index)
- self.inp.insert(END,self.seltext)
- self.included.append('[1]'+self.seltext)
- def togli(self):
- #print(self.included)
- self.index = self.inp.curselection()[0]
- self.seltext = self.inp.get(self.index)
- try:
- self.arrindex = self.included.index('[1]'+self.seltext)
- del self.included[self.arrindex]
- except:
- pass
- try:
- self.arrindex = self.included.index('[2]'+self.seltext)
- del self.included[self.arrindex]
- except:
- pass
- #print(self.included)
- self.inp.delete(self.index)
- def aggesterno(self):
- file = filedialog.askopenfilename()
- path = file
- file = file.split('/')
- file = file[len(file)-1]
- self.inp.insert(END,file)
- self.included.append('[2]'+path)
- def passo1(self):
- self.finestra.destroy()
- self.__init__()
- def passo3(self):
- self.finestra.destroy()
- self.passo3gui()
- def passo3gui(self):
- #def __init__(self):
- '''
- for i in range(len(self.included)):
- if self.included[i].find('[1]') != -1:
- print("Libreria standard: %s" %(self.included[i].replace('[1]','')))
- else:
- print("Libreria utente: %s" %(self.included[i].replace('[2]','')))
- '''
- #form
- self.finestra = Tk()
- self.finestra.title("Python project cretor")
- self.finestra.resizable(False, False)
- #frames
- self.frame1 = Frame(self.finestra, width="360", height="300",
- bd="1", relief="ridge")
- self.frame2 = Frame(self.finestra, height="380", bd="1",
- relief="ridge", bg="white")
- self.frame3 = Frame(self.finestra, height="24",
- bd="1", relief="ridge")
- self.frame2.grid_propagate(0)
- self.frame1.grid(row=0, column=0)
- self.frame2.grid(row=0, column=0, sticky="we")
- self.frame3.grid(row=2, column=0, sticky="we")
- #status label
- self.status = StringVar()
- self.statusl = Label(self.frame3, text="Status: in attesa.", textvariable=self.status)
- self.statusl.place(x=4, y=0)
- self.status.set("Passo 3/3")
- #titolo
- self.iniziof = Label(self.frame2, text="Dettagli:", bg="white", font=("Helvetica",11,'bold'))
- self.iniziof.place(x=165,y=5)
- #versione
- self.versionel = Label(self.frame2, text="Versione di python:", bg="white")
- self.versionel.place(x=5,y=70)
- self.versionepy = StringVar()
- self.versionee = Entry(textvariable=self.versionepy,width=30)
- self.versionee.place(x=150,y=73)
- self.versionepy.set(self.verspyp)
- #autore
- self.autorel = Label(self.frame2, text="Autore:",bg="white")
- self.autorel.place(x=5,y=100)
- self.autore = StringVar()
- self.autoree = Entry(textvariable=self.autore,width=30)
- self.autoree.place(x=150,y=103)
- self.autore.set(self.autp)
- #versione dello script
- self.versionel = Label(self.frame2, text="Versione dello script:",bg="white")
- self.versionel.place(x=5,y=130)
- self.versionesc = StringVar()
- self.versioneesc = Entry(textvariable=self.versionesc,width=30)
- self.versioneesc.place(x=150,y=133)
- self.versionesc.set(self.versscp)
- #data
- self.datal = Label(self.frame2, text="Data creazione:",bg="white")
- self.datal.place(x=5,y=160)
- self.data = StringVar()
- self.datae = Entry(textvariable=self.data,width=30)
- self.datae.place(x=150,y=163)
- self.data.set(self.datacp)
- #data di modifica
- self.dataml = Label(self.frame2, text="Data modifica:",bg="white")
- self.dataml.place(x=5,y=190)
- self.datam = StringVar()
- self.datame = Entry(textvariable=self.datam,width=30)
- self.datame.place(x=150,y=193)
- self.datam.set(self.datamp)
- #azienda
- self.aziendal = Label(self.frame2, text="Azienda:",bg="white")
- self.aziendal.place(x=5,y=220)
- self.azienda = StringVar()
- self.aziendae = Entry(textvariable=self.azienda,width=30)
- self.aziendae.place(x=150,y=223)
- self.azienda.set(self.aziendap)
- #copyright/licenza
- self.licl = Label(self.frame2, text="Copyright/licenza",bg="white")
- self.licl.place(x=5,y=250)
- self.lic = StringVar()
- self.lice = Entry(textvariable=self.lic,width=30)
- self.lice.place(x=150,y=253)
- self.lic.set(self.licenzap)
- #descrizione/funzione
- self.descl = Label(self.frame2, text="Descrizione/funzione",bg="white")
- self.descl.place(x=5,y=280)
- self.desc = StringVar()
- self.desce = Entry(textvariable=self.desc,width=30)
- self.desce.place(x=150,y=283)
- self.desc.set(self.descp)
- #crea
- if self.aperto == 1:
- creatxt = 'Modifica'
- else:
- creatxt = 'Crea!'
- self.creab = Button(self.frame2,text=creatxt,bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.crea)
- self.creab.place(x=300,y=320)
- #indietro
- self.indietrob = Button(self.frame2,text="< Indietro",bg="white",font=("Helvetica",10),borderwidth=0.8,command=self.passo2_2)
- self.indietrob.place(x=5,y=320)
- self.finestra.mainloop()
- def passo2_2(self):
- self.verspyp = self.versionepy.get()
- self.autp = self.autore.get()
- self.versscp = self.versionesc.get()
- self.datacp = self.data.get()
- self.datamp = self.datam.get()
- self.aziendap = self.azienda.get()
- self.licenzap = self.lic.get()
- self.descp = self.desc.get()
- self.passo2()
- def crea(self):
- self.sel_F = self.rdbvar.get()
- self.nome_F = self.nome.get()
- self.path_F = self.path.get()
- self.spl_F = self.sp.get()
- self.conf_F = self.conf.get()
- self.verspy_F = self.versionepy.get()
- self.autore_F = self.autore.get()
- self.verssc_F = self.versionesc.get()
- self.datac_F = self.data.get()
- self.datam_F = self.datam.get()
- self.azienda_F = self.azienda.get()
- self.lic_F = self.lic.get()
- self.desc_F = self.desc.get()
- if self.aperto == 1:
- try:
- removedir(self.path_F+'/'+self.nome_F)
- except:
- pass
- os.mkdir('%s/%s/' %(self.path_F,self.nome_F))
- progetto = open(self.path_F+'/'+self.nome_F+'/progetto.prj','a')
- progetto.write('nome=%s\n' %self.nome_F)
- progetto.write('path=%s\n' %self.path_F)
- progetto.write('nome_script=%s\n' %self.spl_F)
- progetto.write('file_conf=%s\n' %self.conf_F)
- progetto.write('vers_py=%s\n' %self.verspy_F)
- progetto.write('autore=%s\n' %self.autore_F)
- progetto.write('vers_script=%s\n' %self.verssc_F)
- progetto.write('data_creaz=%s\n' %self.datac_F)
- progetto.write('data_mod=%s\n' %self.datam_F)
- progetto.write('azienda=%s\n' %self.azienda_F)
- progetto.write('licenza=%s\n' %self.lic_F)
- progetto.write('desc=%s\n' %self.desc_F)
- for i in range(len(self.included)):
- if self.included[i].find('[1]') != -1:
- progetto.write('libreria_standard=%s\n' %self.included[i].replace('[1]',''))
- else:
- progetto.write('libreria_utente=%s\n' %self.included[i].replace('[2]',''))
- fname = self.included[i].replace('[2]','').split('/')
- fname = fname[len(fname)-1]
- #print('copio ',fname)
- copyfile(self.included[i].replace('[2]',''),self.path_F+'/'+self.nome_F+'/'+fname)
- progetto.close()
- mainscript = open(self.path_F+'/'+self.nome_F+'/'+self.spl_F+'.py','a')
- mainscript.write('#Nome script: %s\n' %self.nome_F)
- if self.sel_F == 1:
- mainscript.write('#Tipo script: applicazione console\n')
- elif self.sel_F == 2:
- mainscript.write('#Tipo script: applicazione GUI\n')
- else:
- mainscript.write('#Tipo script: libreria\n')
- mainscript.write('#Autore: %s\n' %self.autore_F)
- mainscript.write('#Azienda: %s\n' %self.azienda_F)
- mainscript.write('#Versione script: %s\n' %self.verssc_F)
- mainscript.write('#Versione python: %s\n' %self.verspy_F)
- if self.datac_F != self.datam_F:
- mainscript.write('#Data creazione: %s\nData modifica: %s\n' %(self.datac_F,self.datam_F))
- else:
- mainscript.write('#Data creazione: %s\n' %self.datac_F)
- mainscript.write("#Licenza: %s\n" %self.lic_F)
- mainscript.write("#Funzione: %s\n" %self.desc_F)
- if self.conf_F != '':
- mainscript.write("#File di configurazione: %s\n" %self.conf_F)
- mainscript.write('#Generato con: python project creator 1.0\n\n')
- for i in range(len(self.included)):
- if self.included[i].find('[1]') != -1:
- mainscript.write('import '+self.included[i].replace('[1]','').replace('.py','')+'\n')
- else:
- fname = self.included[i].replace('[2]','').split('/')
- fname = fname[len(fname)-1]
- mainscript.write('import '+fname.replace('.py','')+'\n')
- mainscript.write('\n')
- mainscript.close()
- if self.conf_F != '':
- conf = open(self.path_F+'/'+self.nome_F+'/'+self.conf_F,'a')
- conf.close()
- msgbox(0,'Successo','Progetto creato con successo alla cartella '+self.path_F+self.nome_F+'/')
- prog = maingui()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement