Vous n'êtes pas identifié(e).
Pages : 1
Actuellement, avec manon on a en tête de créer un utilitaire afin de faciliter le theming sur HandyLinux, je vais déjà posté le début de mes idée et bout de code, le topic sera édité au fur et à mesure.
Voici le graphique que j'ai créer avec DIA, oui c'est moche mais je ne suis pas expert de l'utilisation de DIA lol
Et voici 2 petits bout de code:
Celui du test de l'environnement de bureau:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
else:
#execution de l'application
DE_DETECT()
Celui de l'accueil de l'application:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import gtk
class Application():
def __init__(self):
self.window = gtk.Window()
self.window.set_default_size(300, 160)
self.window.set_title("Handy-Tunning")
self.window.set_position(gtk.WIN_POS_CENTER)
self.window.set_border_width(15)
self.create_widgets()
self.connect_signals()
self.window.show_all()
gtk.main()
def create_widgets(self):
self.vbox = gtk.VBox(spacing=10)
accueil = ''' Attention !
Handy-Tunning va completement modifier
l'apparence de votre système.
Utilisez le en toute connaissance de cause.
Pour continuer cliquez sur Suivant.
'''
self.label = gtk.Label(accueil)
self.hbox_2 = gtk.HBox(spacing=100)
self.button_exit = gtk.Button("Annuler")
self.hbox_2.pack_start(self.button_exit)
self.button_ok = gtk.Button("Suivant")
self.hbox_2.pack_start(self.button_ok)
self.vbox.pack_start(self.label)
self.vbox.pack_end(self.hbox_2, False, False, 4)
self.window.add(self.vbox)
def connect_signals(self):
self.button_ok.connect("clicked", self.callback_ok)
self.button_exit.connect("clicked", self.callback_exit)
def callback_ok(self, widget, callback_data=None):
# code de la fenetre suivante...
gtk.main_quit()
def callback_exit(self, widget, callback_data=None):
gtk.main_quit()
if __name__ == "__main__":
app = Application()
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
hihi !!! beau projet pleins d'ambition
Hors ligne
Bon ben j'ai trop de souci pour créer l'assistant tout à la main, je pense que je vais me pencher sur glade avec le module assistant.
j'ai un tuto de base ici:
http://www.irizone.net/irizone5/applica … _assistant
Je verrai comment ça se passe avec.
Je vais aussi regarder dans les sources de pncconf pour m'aider
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Mise à jour du code
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
#settings = gtk.settings_get_default()
#theme = settings.get_property("gtk-theme-name")
#icons = settings.get_property("gtk-icon-theme-name")
#font = settings.get_property("gtk-font-name")
gobject.threads_init()
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
FULL_CONFIG = ['.bashrc', '.config/openbox/menu.xml']
theme_config = {".gtkrc-2.0":HOME_FOLDER+'/.gtkrc-2.0',
"compton.conf":HOME_FOLDER+"/.config/compton.conf",
"rc.xml":HOME_FOLDER+"/.config/openbox/rc.xml",
"autostart":HOME_FOLDER+"/.config/openbox/autostart"}
newFichier, gtkConf = {}, {}
chdir(HOME_FOLDER)
if os.path.isdir("themesHL") != True: #si le dossier n'est pas présent
os.mkdir("themesHL") #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class Assistant:
def __init__(self):
assistant = gtk.Assistant()
assistant.set_title("Handy-Tunning")
assistant.set_position(gtk.WIN_POS_CENTER)
assistant.set_default_size(300, 260)
assistant.connect("apply", self.button_pressed, "Apply")
assistant.connect("cancel", self.button_pressed, "Cancel")
vbox = gtk.VBox()
vbox.set_border_width(5)
page = assistant.append_page(vbox)
assistant.set_page_title(vbox, "Avertissement !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_INTRO)
#button = gtk.Button("À propos")
#button.set_size_request(30,20)
label = gtk.Label("Handy-Tunning va completement modifier l'apparence de votre système. Utilisez le en toute connaissance de cause.\n\nPour continuer cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
#vbox.pack_start(button, False, False, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Configuration !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Selectionnez les option d'importation ou d'exportation de votre thème.")
label.set_line_wrap(True)
filechooserbutton = gtk.FileChooserButton("Select A File", None)
#rbutton1 = gtk.RadioButton(None, "Importer votre thème")
rbutton2 = gtk.RadioButton(None, "Exporter votre thème")
cbutton = gtk.CheckButton("Importer le fond d'écran")
vbox.pack_start(label, True, True, 0)
vbox.pack_start(filechooserbutton, True, True, 0)
vbox.pack_start(rbutton2, False, False, 0)
vbox.pack_start(cbutton, False, False, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Votre thème à été restauré avec succès.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
assistant.show_all()
def listeTheme(self, listeDeroulante):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
listeDeroulante.append_text(theme)
def button_pressed(self, assistant, button):
print "%s button pressed" % button
gtk.main_quit()
Assistant()
gtk.main()
#!/usr/bin/env python
import gtk
class AboutDialog():
def __init__(self):
aboutdialog = gtk.AboutDialog()
aboutdialog.set_name("Handy-Personnal-Theme")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["coyotus & manon"])
aboutdialog.run()
aboutdialog.destroy()
AboutDialog()
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Bon j'ai quand même bosser un peu sur l'interface sans gtk.Assistant()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
gobject.threads_init()
if os.path.isdir(EMPLACEMENT) != True: #si le dossier n'est pas présent
os.mkdir(EMPLACEMENT) #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class HandyTheme():
def __init__(self):
fenetre = gtk.Window()
fenetre.set_title("Handy_Tuning")
fenetre.connect("destroy", self.Quitter)
# Creation VBox Principal contiendra la VBox ACCUEIL et la VBox CONFIGURATION
vboxPRINCIPAL = gtk.VBox()
# Creation VBox d'accueil (contiendra: etiquette Accueil + HBox ACCEUIL)
vboxACCUEIL = gtk.VBox()
#Création d'une étiquette ACUEIL
etiquetteACCUEIL = gtk.Label()
etiquetteACCUEIL.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\n va completement modifier l'apparence de votre système. \n Utilisez le en toute connaissance de cause.\n\n")
etiquetteACCUEIL.set_justify(gtk.JUSTIFY_CENTER) #Change la position du texte. Choix posibles (gtk.JUSTIFY_LEFT (défaut), gtk.JUSTIFY_RIGHT, gtk.JUSTIFY_CENTER, gtk.JUSTIFY_FILL)
etiquetteACCUEIL.set_use_markup(True) #Utiliser la mise en forme
etiquetteACCUEIL.show()
# Creation HBox ACCUEIL (contiendra :bouton AccueilANNULER+ bouton Info + bouton SuivantAccueil)
hboxACCUEIL = gtk.HBox()# Va contenir (boutonAccueilANNULER+ boutonInfo + boutonSuivantAccueil)
# creation des boutons
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
boutonAccueilANNULER = gtk.Button(stock = gtk.STOCK_CANCEL)
boutonSuivantAccueil = gtk.Button(stock = gtk.STOCK_GO_FORWARD)
boutonInfo.show()
boutonAccueilANNULER.show()
boutonSuivantAccueil.show()
# INtegration boutons dans hbox d'accueil
hboxACCUEIL.add(boutonAccueilANNULER)
hboxACCUEIL.add(boutonInfo)
hboxACCUEIL.add(boutonSuivantAccueil)
hboxACCUEIL.show()
# Integration de l'etiquette etla HBOX (qui contient les boutons) dans la VBox accueil
vboxACCUEIL.add(etiquetteACCUEIL)
vboxACCUEIL.add(hboxACCUEIL)
vboxACCUEIL.show()
# VBox Configuration va contenir (etiquette CONFIGURATION, vbox CONFIGURATION, hbox NAVIGATION )
vboxCONFIGURATION = gtk.VBox()
# creation etiquette CONFIGURATION
etiquetteCONFIGURATION = gtk.Label()
etiquetteCONFIGURATION.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\nSelectionnez votre option et cliquez sur Suivant")
etiquetteCONFIGURATION.set_justify(gtk.JUSTIFY_CENTER)
etiquetteCONFIGURATION.set_use_markup(True)
etiquetteCONFIGURATION.show()
#creation liste deroulante
listeDeroulante = gtk.combo_box_new_text()
listeDeroulante.append_text('Thémes Disponible')
listeDeroulante.set_active(0)
listeDeroulante.set_wrap_width(0)
self.listeTheme(listeDeroulante) # appel fonction qui liste les themes disponible et les rajoute a la liste deroulante
listeDeroulante.show()
# HBox NAVIGATION (va contenir Les boutons de navigation(ANNULER, RETOUR, SUIVANT)
hboxNAVIGATION= gtk.HBox()
#creation des boutons
boutonANNULER = gtk.Button(stock = gtk.STOCK_CANCEL)
boutonSuivantConfiguration = gtk.Button(stock = gtk.STOCK_GO_FORWARD)
boutonPrecedent = gtk.Button(stock = gtk.STOCK_GO_BACK)
boutonANNULER.show()
boutonSuivantConfiguration.show()
boutonPrecedent.show()
# INtegration des boutons dans le HBox NAVIGATION
hboxNAVIGATION.add(boutonANNULER)
hboxNAVIGATION.add(boutonPrecedent)
hboxNAVIGATION.add(boutonSuivantConfiguration)
hboxNAVIGATION.show()
# Integration des elements dans la VBox CONFIGURATION
vboxCONFIGURATION.add(etiquetteCONFIGURATION)
vboxCONFIGURATION.add(listeDeroulante)
# Integration HBox NAVIGATION ( boutonANNULER + boutonPRECEDENT + boutonSUIVANT CONFIGURATION)
vboxCONFIGURATION.pack_end(hboxNAVIGATION, False, False, 2)
# Integration des 2 Vbox (accueil etconfiguration) dans le VBox PRINCIPAL
vboxPRINCIPAL.add(vboxACCUEIL)
vboxPRINCIPAL.add(vboxCONFIGURATION)
vboxPRINCIPAL.show()
#connection des boutons
boutonSuivantAccueil.connect("clicked",self.on_suivant_accueil_clicked,
vboxACCUEIL, vboxCONFIGURATION)
boutonAccueilANNULER.connect("clicked", self.Quitter)
boutonANNULER.connect("clicked", self.Quitter)
boutonPrecedent.connect("clicked", self.on_precedent_clicked,
vboxACCUEIL, vboxCONFIGURATION)
boutonInfo.connect("clicked", self.on_info_clicked)
#Integration VBox PRINCIPAL dans la fenetre
fenetre.add(vboxPRINCIPAL)
fenetre.show()
def Quitter(self, widget):
gtk.main_quit()
def listeTheme(self, listeDeroulante):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
listeDeroulante.append_text(theme)
def on_suivant_accueil_clicked(self, widget, vboxACCUEIL, vboxCONFIGURATION):
''' On cache vboxACCUEIL et affiche vboxCONFIGURATION '''
vboxACCUEIL.hide()
vboxCONFIGURATION.show()
def on_precedent_clicked(self, widget, vboxACCUEIL, vboxCONFIGURATION):
''' On cache vboxCONFIGURATION et affiche vboxACCUEIL '''
vboxCONFIGURATION.hide()
vboxACCUEIL.show()
def on_info_clicked(self, widget):
''' ON peut là lancer dans un thread pour garder la main sur la fenetre principal '''
aboutdialog = gtk.AboutDialog()
aboutdialog.set_name("Handy-Tuning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["coyotus & manon"])
aboutdialog.run()
aboutdialog.destroy()
if __name__ == "__main__":
HandyTheme()
gtk.main()
Hors ligne
GG manon, je regarde tout ça chez moi ce soir, j'ai rajouter 2 petites option centrer la fenêtre et l'écartement des boutons.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
gobject.threads_init()
if os.path.isdir(EMPLACEMENT) != True: #si le dossier n'est pas présent
os.mkdir(EMPLACEMENT) #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class HandyTheme():
def __init__(self):
fenetre = gtk.Window()
fenetre.set_title("Handy_Tuning")
fenetre.connect("destroy", self.Quitter)
fenetre.set_position(gtk.WIN_POS_CENTER)
fenetre.set_border_width(5)
# Creation VBox Principal contiendra la VBox ACCUEIL et la VBox CONFIGURATION
vboxPRINCIPAL = gtk.VBox()
# Creation VBox d'accueil (contiendra: etiquette Accueil + HBox ACCEUIL)
vboxACCUEIL = gtk.VBox()
#Création d'une étiquette ACUEIL
etiquetteACCUEIL = gtk.Label()
etiquetteACCUEIL.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\n va completement modifier l'apparence de votre système. \n Utilisez le en toute connaissance de cause.\n\n")
etiquetteACCUEIL.set_justify(gtk.JUSTIFY_CENTER) #Change la position du texte. Choix posibles (gtk.JUSTIFY_LEFT (défaut), gtk.JUSTIFY_RIGHT, gtk.JUSTIFY_CENTER, gtk.JUSTIFY_FILL)
etiquetteACCUEIL.set_use_markup(True) #Utiliser la mise en forme
etiquetteACCUEIL.show()
# Creation HBox ACCUEIL (contiendra :bouton AccueilANNULER+ bouton Info + bouton SuivantAccueil)
hboxACCUEIL = gtk.HBox(spacing=10)# Va contenir (boutonAccueilANNULER+ boutonInfo + boutonSuivantAccueil)
# creation des boutons
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
boutonAccueilANNULER = gtk.Button(stock = gtk.STOCK_CANCEL)
boutonSuivantAccueil = gtk.Button(stock = gtk.STOCK_GO_FORWARD)
boutonInfo.show()
boutonAccueilANNULER.show()
boutonSuivantAccueil.show()
# INtegration boutons dans hbox d'accueil
hboxACCUEIL.add(boutonAccueilANNULER)
hboxACCUEIL.add(boutonInfo)
hboxACCUEIL.add(boutonSuivantAccueil)
hboxACCUEIL.show()
# Integration de l'etiquette etla HBOX (qui contient les boutons) dans la VBox accueil
vboxACCUEIL.add(etiquetteACCUEIL)
vboxACCUEIL.add(hboxACCUEIL)
vboxACCUEIL.show()
# VBox Configuration va contenir (etiquette CONFIGURATION, vbox CONFIGURATION, hbox NAVIGATION )
vboxCONFIGURATION = gtk.VBox()
# creation etiquette CONFIGURATION
etiquetteCONFIGURATION = gtk.Label()
etiquetteCONFIGURATION.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\nSelectionnez votre option et cliquez sur Suivant\n")
etiquetteCONFIGURATION.set_justify(gtk.JUSTIFY_CENTER)
etiquetteCONFIGURATION.set_use_markup(True)
etiquetteCONFIGURATION.show()
#creation liste deroulante
listeDeroulante = gtk.combo_box_new_text()
listeDeroulante.append_text('Thémes Disponible')
listeDeroulante.set_active(0)
listeDeroulante.set_wrap_width(0)
self.listeTheme(listeDeroulante) # appel fonction qui liste les themes disponible et les rajoute a la liste deroulante
listeDeroulante.show()
# HBox NAVIGATION (va contenir Les boutons de navigation(ANNULER, RETOUR, SUIVANT)
hboxNAVIGATION= gtk.HBox()
#creation des boutons
boutonANNULER = gtk.Button(stock = gtk.STOCK_CANCEL)
boutonSuivantConfiguration = gtk.Button(stock = gtk.STOCK_GO_FORWARD)
boutonPrecedent = gtk.Button(stock = gtk.STOCK_GO_BACK)
boutonANNULER.show()
boutonSuivantConfiguration.show()
boutonPrecedent.show()
# INtegration des boutons dans le HBox NAVIGATION
hboxNAVIGATION.add(boutonANNULER)
hboxNAVIGATION.add(boutonPrecedent)
hboxNAVIGATION.add(boutonSuivantConfiguration)
hboxNAVIGATION.show()
# Integration des elements dans la VBox CONFIGURATION
vboxCONFIGURATION.add(etiquetteCONFIGURATION)
vboxCONFIGURATION.add(listeDeroulante)
# Integration HBox NAVIGATION ( boutonANNULER + boutonPRECEDENT + boutonSUIVANT CONFIGURATION)
vboxCONFIGURATION.pack_end(hboxNAVIGATION, False, False, 2)
# Integration des 2 Vbox (accueil etconfiguration) dans le VBox PRINCIPAL
vboxPRINCIPAL.add(vboxACCUEIL)
vboxPRINCIPAL.add(vboxCONFIGURATION)
vboxPRINCIPAL.show()
#connection des boutons
boutonSuivantAccueil.connect("clicked",self.on_suivant_accueil_clicked,
vboxACCUEIL, vboxCONFIGURATION)
boutonAccueilANNULER.connect("clicked", self.Quitter)
boutonANNULER.connect("clicked", self.Quitter)
boutonPrecedent.connect("clicked", self.on_precedent_clicked,
vboxACCUEIL, vboxCONFIGURATION)
boutonInfo.connect("clicked", self.on_info_clicked)
#Integration VBox PRINCIPAL dans la fenetre
fenetre.add(vboxPRINCIPAL)
fenetre.show()
def Quitter(self, widget):
gtk.main_quit()
def listeTheme(self, listeDeroulante):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
listeDeroulante.append_text(theme)
def on_suivant_accueil_clicked(self, widget, vboxACCUEIL, vboxCONFIGURATION):
''' On cache vboxACCUEIL et affiche vboxCONFIGURATION '''
vboxACCUEIL.hide()
vboxCONFIGURATION.show()
def on_precedent_clicked(self, widget, vboxACCUEIL, vboxCONFIGURATION):
''' On cache vboxCONFIGURATION et affiche vboxACCUEIL '''
vboxCONFIGURATION.hide()
vboxACCUEIL.show()
def on_info_clicked(self, widget):
''' ON peut là lancer dans un thread pour garder la main sur la fenetre principal '''
aboutdialog = gtk.AboutDialog()
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tuning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tcoyotus & manon\nUnder licence GPLv3\n http://www.gnu.org/licenses/gpl.txt"])
aboutdialog.run()
aboutdialog.destroy()
if __name__ == "__main__":
HandyTheme()
gtk.main()
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Parfait J'ai fais là même pour le hbox Navigation du coup
J serais pas dispo csoir , on essai de se capter demain soir ?
ligne 101
hboxNAVIGATION= gtk.HBox(spacing=10)
Hors ligne
J'ai encore un peu chipoté avec gtk.assistant()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
#settings = gtk.settings_get_default()
#theme = settings.get_property("gtk-theme-name")
#icons = settings.get_property("gtk-icon-theme-name")
#font = settings.get_property("gtk-font-name")
gobject.threads_init()
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
FULL_CONFIG = ['.bashrc', '.config/openbox/menu.xml']
twidget = gtk.EXPAND | gtk.FILL | gtk.SHRINK
theme_config = {".gtkrc-2.0":HOME_FOLDER+'/.gtkrc-2.0',
"compton.conf":HOME_FOLDER+"/.config/compton.conf",
"rc.xml":HOME_FOLDER+"/.config/openbox/rc.xml",
"autostart":HOME_FOLDER+"/.config/openbox/autostart"}
newFichier, gtkConf = {}, {}
chdir(HOME_FOLDER)
if os.path.isdir("themesHL") != True: #si le dossier n'est pas présent
os.mkdir("themesHL") #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class Assistant:
def __init__(self):
assistant = gtk.Assistant()
progressbar = gtk.ProgressBar(None)
assistant.set_title("Handy-Tunning")
assistant.set_position(gtk.WIN_POS_CENTER)
assistant.set_default_size(300, 260)
assistant.connect("close", self.button_pressed, "Close")
assistant.connect("cancel", self.button_pressed, "Cancel")
vbox = gtk.VBox()
vbox.set_border_width(5)
page = assistant.append_page(vbox)
assistant.set_page_title(vbox, "Avertissement !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_INTRO)
#button = gtk.Button("À propos")
#button.set_size_request(30,20)
label = gtk.Label("Handy-Tunning va completement modifier l'apparence de votre système. Utilisez le en toute connaissance de cause.\n\nPour continuer cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
#vbox.pack_start(button, False, False, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Configuration !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Selectionnez les option d'importation ou d'exportation de votre thème et cliquez sur Suivant.")
label.set_line_wrap(True)
checkOptionSAVE = gtk.CheckButton("Sauvegarder votre Configuration")
checkOptionCHANGE = gtk.CheckButton("Choisir un thème disponible")
checkOptionIMPORT = gtk.CheckButton("Importer un thème télécharger")
checkOptionEXPORT = gtk.CheckButton("Exporter votre thème actuel")
vbox.pack_start(label, True, True, 0)
vbox.pack_start(checkOptionSAVE, True, True, 0)
vbox.pack_start(checkOptionCHANGE, True, True, 0)
vbox.pack_start(checkOptionIMPORT, True, True, 0)
vbox.pack_start(checkOptionEXPORT, True, True, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_PROGRESS)
label = gtk.Label("Vous avez choisi l'option : Choisir un thème disponible\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n")
#creation liste deroulante
listeDeroulante = gtk.combo_box_new_text()
listeDeroulante.append_text('Thémes Disponible')
listeDeroulante.set_active(0)
listeDeroulante.set_wrap_width(0)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(listeDeroulante, True, True, 0)
self.listeTheme(listeDeroulante) # appel fonction qui liste les themes disponible et les rajoute a la liste deroulante
label.set_line_wrap(True)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("Votre thème à été restauré avec succès.\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
def listeTheme(self, listeDeroulante):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
listeDeroulante.append_text(theme)
def on_info_clicked(self, widget):
''' ON peut là lancer dans un thread pour garder la main sur la fenetre principal '''
aboutdialog = gtk.AboutDialog()
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tuning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tHandy-Tunning Copyright (C) 2014\n\t\t\tManon & coyotus\nThis program comes with ABSOLUTELY\nNO WARRANTY for details see\n\thttp://www.gnu.org/licenses/gpl.txt \nThis is free software, and you are welcome\nto redistribute it under certain conditions."])
aboutdialog.run()
aboutdialog.destroy()
def button_pressed(self, assistant, button):
print "%s button pressed" % button
gtk.main_quit()
Assistant()
gtk.main()
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Ok , bon je comprend pas bien comment tu récupére l'option choisi ? La ton bouton suivant va afficher une nouvelle page. ( Avec la liste déroulante )
Quand est t'il si c'est une autre option ? Tu affichera toujours la même page ...
Mon bouton suivant récupére le bouton check active et de là peut s'avoir l'option choisi et donc quoi afficher dans la fenetre : un label ou un autre label + liste déroulante ou gtk.FileChooserButton .
Je comprend pas comment passé des infos avec gtk Assistant....
EDIT:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
gobject.threads_init()
if os.path.isdir(EMPLACEMENT) != True: #si le dossier n'est pas présent
os.mkdir(EMPLACEMENT) #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class HandyTheme():
def __init__(self):
fenetre = gtk.Window()
fenetre.set_title("Handy_Tuning")
fenetre.connect("destroy", self.Quitter)
fenetre.set_position(gtk.WIN_POS_CENTER)
fenetre.set_border_width(5)
# Creation VBox Principal contiendra la VBox ACCUEIL et la VBox CONFIGURATION
vboxPRINCIPAL = gtk.VBox()
# Creation VBox d'accueil (contiendra: etiquette Accueil + HBox ACCEUIL)
vboxACCUEIL = gtk.VBox()
#Création d'une étiquette ACUEIL
etiquetteACCUEIL = gtk.Label()
etiquetteACCUEIL.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\n va completement modifier l'apparence de votre système. \n Utilisez le en toute connaissance de cause.\n\n")
etiquetteACCUEIL.set_justify(gtk.JUSTIFY_CENTER) #Change la position du texte. Choix posibles (gtk.JUSTIFY_LEFT (défaut), gtk.JUSTIFY_RIGHT, gtk.JUSTIFY_CENTER, gtk.JUSTIFY_FILL)
etiquetteACCUEIL.set_use_markup(True) #Utiliser la mise en forme
etiquetteACCUEIL.show()
# Creation HBox ACCUEIL (contiendra :bouton AccueilANNULER+ bouton Info + bouton SuivantAccueil)
hboxACCUEIL = gtk.HBox(spacing=10)# Va contenir (boutonAccueilANNULER+ boutonInfo + boutonSuivantAccueil)
# creation des boutons ACCUEIL
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
boutonAccueilANNULER = gtk.Button(stock = gtk.STOCK_CANCEL)
boutonSuivantAccueil = gtk.Button(stock = gtk.STOCK_GO_FORWARD)
# creation liste boutons ACCUEIL
listeButtonACCUEIL = [boutonAccueilANNULER, boutonInfo, boutonSuivantAccueil]
for button in listeButtonACCUEIL:
# INtegration boutons dans hbox d'accueil
button.show()
hboxACCUEIL.add(button)
hboxACCUEIL.show()
# Integration de l'etiquette etla HBOX (qui contient les boutons) dans la VBox accueil
vboxACCUEIL.add(etiquetteACCUEIL)
vboxACCUEIL.pack_end(hboxACCUEIL, False, False, 2)
vboxACCUEIL.show()
# VBox Configuration va contenir (etiquette CONFIGURATION, vbox CONFIGURATION, hbox NAVIGATION )
vboxCONFIGURATION = gtk.VBox()
# creation etiquette CONFIGURATION
etiquetteCONFIGURATION = gtk.Label()
etiquetteCONFIGURATION.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\nSelectionnez votre option et cliquez sur Suivant\n")
etiquetteCONFIGURATION.set_justify(gtk.JUSTIFY_CENTER)
etiquetteCONFIGURATION.set_use_markup(True)
etiquetteCONFIGURATION.show()
# creation des boutons check Option (gtk.CheckButton)
checkOptionSAVE = gtk.CheckButton("Sauvegarder votre Configuration")
checkOptionCHANGE = gtk.CheckButton("Choisir un thème disponible")
checkOptionIMPORT = gtk.CheckButton("Importer un thème télécharger")
checkOptionEXPORT = gtk.CheckButton("Exporter votre thème actuel")
# Gestion des boutons dans une liste
listeBoutonCheck = [checkOptionSAVE, checkOptionCHANGE, checkOptionIMPORT, checkOptionEXPORT]
for bouton in listeBoutonCheck:
bouton.show()
bouton.connect("clicked", self.on_check_option_clicked, listeBoutonCheck)
#creation liste deroulante
self.listeDeroulante = gtk.combo_box_new_text()
self.listeDeroulante.append_text('Thémes Disponible')
self.listeDeroulante.set_active(0)
self.listeDeroulante.set_wrap_width(0)
self.listeTheme(self.listeDeroulante) # appel fonction qui liste les themes disponible et les rajoute a la liste deroulante
# HBox NAVIGATION (va contenir Les boutons de navigation(ANNULER, RETOUR, SUIVANT)
hboxNAVIGATION= gtk.HBox(spacing=10)
#creation des boutons NAVIGATION
boutonANNULER = gtk.Button(stock = gtk.STOCK_CANCEL)
self.boutonSuivantConfiguration = gtk.Button(stock = gtk.STOCK_GO_FORWARD)
self.boutonPrecedent = gtk.Button(stock = gtk.STOCK_GO_BACK)
self.boutonPrecedentValidation = gtk.Button(stock = gtk.STOCK_GO_BACK)
self.BoutonApply = gtk.Button(stock = gtk.STOCK_APPLY)
# creation liste bouton NAVIGATION
listeBoutonNAVIGATION = [boutonANNULER, self.boutonPrecedent, self.boutonPrecedentValidation, self.boutonSuivantConfiguration, self.BoutonApply]
for bouton in listeBoutonNAVIGATION:
# INtegration des boutons dans le HBox NAVIGATION
hboxNAVIGATION.add(bouton)
bouton.show()
# On cache les boutons qui servent a la validation
listeBoutonNAVIGATION[-1].hide()
listeBoutonNAVIGATION[2].hide()
hboxNAVIGATION.show()
# Integration des elements dans la VBox CONFIGURATION
vboxCONFIGURATION.add(etiquetteCONFIGURATION)
vboxCONFIGURATION.add(checkOptionSAVE)
vboxCONFIGURATION.add(checkOptionCHANGE)
vboxCONFIGURATION.add(checkOptionIMPORT)
vboxCONFIGURATION.add(checkOptionEXPORT)
vboxCONFIGURATION.add(self.listeDeroulante)
# Integration HBox NAVIGATION ( boutonANNULER + boutonPRECEDENT + boutonSUIVANT CONFIGURATION)
vboxCONFIGURATION.pack_end(hboxNAVIGATION, False, False, 2)
# Integration des 2 Vbox (accueil etconfiguration) dans le VBox PRINCIPAL
vboxPRINCIPAL.add(vboxACCUEIL)
vboxPRINCIPAL.add(vboxCONFIGURATION)
vboxPRINCIPAL.show()
#connection des boutons
boutonSuivantAccueil.connect("clicked",self.on_suivant_accueil_clicked,
vboxACCUEIL, vboxCONFIGURATION)
boutonAccueilANNULER.connect("clicked", self.Quitter)
boutonANNULER.connect("clicked", self.Quitter)
self.boutonPrecedent.connect("clicked", self.on_precedent_clicked,
vboxACCUEIL, vboxCONFIGURATION)
boutonInfo.connect("clicked", self.on_info_clicked)
self.boutonSuivantConfiguration.connect("clicked", self.on_suivantCONFIGURATION_clicked,
listeBoutonCheck, etiquetteCONFIGURATION)
self.boutonPrecedentValidation.connect("clicked", self.on_precedentVALIDATION_clicked, listeBoutonCheck, etiquetteCONFIGURATION)
#Integration VBox PRINCIPAL dans la fenetre
fenetre.add(vboxPRINCIPAL)
fenetre.show()
def Quitter(self, widget):
gtk.main_quit()
def listeTheme(self, listeDeroulante):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
listeDeroulante.append_text(theme)
def on_suivant_accueil_clicked(self, widget, vboxACCUEIL, vboxCONFIGURATION):
''' On cache vboxACCUEIL et affiche vboxCONFIGURATION '''
vboxACCUEIL.hide()
vboxCONFIGURATION.show()
def on_precedent_clicked(self, widget, vboxACCUEIL, vboxCONFIGURATION):
''' On cache vboxCONFIGURATION et affiche vboxACCUEIL '''
vboxCONFIGURATION.hide()
vboxACCUEIL.show()
def on_info_clicked(self, widget):
''' ON peut là lancer dans un thread pour garder la main sur la fenetre principal '''
aboutdialog = gtk.AboutDialog()
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tuning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tcoyotus & manon\nUnder licence GPLv3\n http://www.gnu.org/licenses/gpl.txt"])
aboutdialog.run()
aboutdialog.destroy()
def on_check_option_clicked(self, widget, listeBoutonCheck):
''' Active le bouton et desactive les autres '''
if widget.get_active():
for bouton in listeBoutonCheck:
if bouton == widget:
pass
elif bouton != widget:
bouton.set_active(False)
def on_suivantCONFIGURATION_clicked(self, widget, listeBoutonCheck,etiquetteCONFIGURATION):
option = " "
dicOptions = {'Sauvegarder votre Configuration': ('Cliquez sur Appliquer pour enregistrer', ''),
'Choisir un thème disponible': ("Selectionnez le thème à appliquer \net cliquez sur Appliquer", 'choice'),
'Importer un thème télécharger': ("Selectionnez le thème a importer \net cliquez sur Appliquer", 'import'),
'Exporter votre thème actuel': ("Exporter votre thème au format tar.gz", 'export')}
widget.hide()
self.boutonPrecedent.hide()
self.boutonPrecedentValidation.show()
self.BoutonApply.show()
# Recuperation valeur des boutons Option et suppression des bouton de l'affichage
for bouton in listeBoutonCheck:
bouton.hide()
if bouton.get_active():
option = bouton.get_label()
etiquetteCONFIGURATION.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\n" + "Vous avez choisi l'option : " + option + "\n\n" + dicOptions[option][0])
etiquetteCONFIGURATION.set_use_markup(True)
if dicOptions[option][1] == 'choice':
self.listeDeroulante.show()
if dicOptions[option][1] == 'import':
self.listeDeroulante.show()####################################
if option == " ":
etiquetteCONFIGURATION.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\nVous n'avez pas choisi l'option !!!\n\nCliquez sur Précédent pour choisir une Option\n\n")
etiquetteCONFIGURATION.set_use_markup(True)
def on_precedentVALIDATION_clicked(self, widget, listeBoutonCheck,etiquetteCONFIGURATION):
widget.hide()
self.BoutonApply.hide()
self.boutonPrecedent.show()
etiquetteCONFIGURATION.set_text("\n<span size=\"xx-large\">Handy-Tuning </span>\n\nSelectionnez votre option et cliquez sur Suivant\n")
etiquetteCONFIGURATION.set_justify(gtk.JUSTIFY_CENTER)
etiquetteCONFIGURATION.set_use_markup(True)
for bouton in listeBoutonCheck:
bouton.show()
self.boutonSuivantConfiguration.show()
self.listeDeroulante.hide()
if __name__ == "__main__":
HandyTheme()
gtk.main()
Hors ligne
Ok , bon je comprend pas bien comment tu récupére l'option choisi ? La ton bouton suivant va afficher une nouvelle page. ( Avec la liste déroulante )
Quand est t'il si c'est une autre option ? Tu affichera toujours la même page ...Mon bouton suivant récupére le bouton check active et de là peut s'avoir l'option choisi et donc quoi afficher dans la fenetre : un label ou un autre label + liste déroulante ou gtk.FileChooserButton .
Je comprend pas comment passé des infos avec gtk Assistant....
Pour ça j'ai un modèle, je te filerai le lien ce soir si tu veux, j'ai juste regardé l'intégration, j'ai un peu travaillé dessus pour m'entrainer avec, j'ai encore chipoté mais je n'ai pas posté.
J'ai aussi fait des test avec ta version de fenêtre, mais je ne l'ai pas postée, je te montrerai le paste ce soir si tu veux, par contre j'ai un souci avec le bouton précédent, si je refait suivant il le compte comme un précédent aussi, alors qu'a la base c'est un suivant.
Je t'explique, dans la fenêtre ou on doit cocher les options, si je coche rien, j'ai la fenêtre d'erreur, je fais précédent, j'arrive à la première fenêtre et si je fait suivant à partir de là, elle retourne à la fenêtre qui me dit que j'ai pas coché les option et pas à la fenêtre des options.
C'est exactement ce souci que j'avais déjà quand j'ai essayé avant gtk.assistant() et si je force le passage, la fenêtre précédente reste en arrière plan.
Bref on verra tout ça ce soir, je vais regarder ton nouveau code et faire des test voir si je comprend mieux l'astuce.
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Je t'explique, dans la fenêtre ou on doit cocher les options, si je coche rien, j'ai la fenêtre d'erreur, je fais précédent, j'arrive à la première fenêtre et si je fait suivant à partir de là, elle retourne à la fenêtre qui me dit que j'ai pas coché les option et pas à la fenêtre des options.
Tu n'a pas tester mon nouveau code , ça ne fais plus ça Je me connecte sur IRC
Hors ligne
Pour le moment j'en suis ici il me reste encore a régler quelques trucs mais ça avance
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
#settings = gtk.settings_get_default()
#theme = settings.get_property("gtk-theme-name")
#icons = settings.get_property("gtk-icon-theme-name")
#font = settings.get_property("gtk-font-name")
gobject.threads_init()
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
FULL_CONFIG = ['.bashrc', '.config/openbox/menu.xml']
twidget = gtk.EXPAND | gtk.FILL | gtk.SHRINK
theme_config = {".gtkrc-2.0":HOME_FOLDER+'/.gtkrc-2.0',
"compton.conf":HOME_FOLDER+"/.config/compton.conf",
"rc.xml":HOME_FOLDER+"/.config/openbox/rc.xml",
"autostart":HOME_FOLDER+"/.config/openbox/autostart"}
newFichier, gtkConf = {}, {}
chdir(HOME_FOLDER)
if os.path.isdir("themesHL") != True: #si le dossier n'est pas présent
os.mkdir("themesHL") #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class Assistant:
def __init__(self):
assistant = gtk.Assistant()
assistant.set_title("Handy-Tunning")
assistant.set_position(gtk.WIN_POS_CENTER)
assistant.connect("apply", self.button_pressed, "Apply")
assistant.connect("cancel", self.button_pressed, "Cancel")
assistant.connect("close", self.button_pressed, "Close")
assistant.set_default_size( 400, 300 )
vbox = gtk.VBox()
vbox.set_border_width(5)
page = assistant.append_page(vbox)
assistant.set_page_title(vbox, "Avertissement !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_INTRO)
label = gtk.Label("Handy-Tunning va completement modifier l'apparence de votre système. Utilisez le en toute connaissance de cause.\n\nPour continuer cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Configuration !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Selectionnez les option d'importation ou d'exportation de votre thème et cliquez sur Suivant.")
label.set_line_wrap(True)
self.checkOptionSAVE = gtk.CheckButton("Sauvegarder votre Configuration")
self.checkOptionCHANGE = gtk.CheckButton("Choisir un thème disponible")
self.checkOptionIMPORT = gtk.CheckButton("Importer un thème télécharger")
self.checkOptionEXPORT = gtk.CheckButton("Exporter votre thème actuel")
vbox.pack_start(label, True, True, 0)
vbox.pack_start(self.checkOptionSAVE, False, False, 0)
vbox.pack_start(self.checkOptionCHANGE, False, False, 0)
vbox.pack_start(self.checkOptionIMPORT, False, False, 0)
vbox.pack_start(self.checkOptionEXPORT, False, False, 0)
listeBoutonCheck = [self.checkOptionSAVE, self.checkOptionCHANGE, self.checkOptionIMPORT, self.checkOptionEXPORT]
for bouton in listeBoutonCheck:
bouton.show()
bouton.connect("clicked", self.on_check_option_clicked, listeBoutonCheck)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Erreur !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nVous n'avez pas choisi l'option !!!\n\nCliquez sur Précédent pour choisir une Option\n\n\n\n\n")
boutonPrecedentValidation = gtk.Button(stock = gtk.STOCK_GO_BACK)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonPrecedentValidation, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonPrecedentValidation.connect("clicked", self.on_precedent_clicked)
assistant.show_all()
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nVotre thème à été sauvegardé avec succès.\n\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Choisir un thème disponible\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
#creation liste deroulante
listeDeroulante = gtk.combo_box_new_text()
listeDeroulante.append_text('Thémes Disponible')
listeDeroulante.set_active(0)
listeDeroulante.set_wrap_width(0)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(listeDeroulante, True, True, 0)
self.listeTheme(listeDeroulante) # appel fonction qui liste les themes disponible et les rajoute a la liste deroulante
label.set_line_wrap(True)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "fenetre exemple")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Importer un thème télécharger\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
filechooserbutton = gtk.FileChooserButton("Select A File", None)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(filechooserbutton, True, True, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nVotre thème à été exporté avec succès.\n\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
# Set an alternative function to return the next page to go to
assistant.set_forward_page_func(self.pageforward)
def on_check_option_clicked(self, widget, listeBoutonCheck):
''' Active le bouton et desactive les autres '''
if widget.get_active():
for bouton in listeBoutonCheck:
if bouton == widget:
pass
elif bouton != widget:
bouton.set_active(False)
def pageforward(self,page):
"""
Function called when the forward button is pressed,
Arguments:
page:
integer index of the current page
returns:
integer index of the next page to display
"""
if page == 1 and self.checkOptionSAVE.get_active():
return 3
elif page == 1 and self.checkOptionCHANGE.get_active():
return 4
elif page == 1 and self.checkOptionIMPORT.get_active():
return 5
elif page == 1 and self.checkOptionEXPORT.get_active():
return 6
else:
return page+1
def on_precedent_clicked(self, page):
''' On cache vboxCONFIGURATION et affiche vboxACCUEIL '''
if page == 2:
return 1
def listeTheme(self, listeDeroulante):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
listeDeroulante.append_text(theme)
def button_pressed(self, assistant, button):
print "%s button pressed" % button
gtk.main_quit()
def on_info_clicked(self, widget):
''' ON peut là lancer dans un thread pour garder la main sur la fenetre principal '''
aboutdialog = gtk.AboutDialog()
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tuning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tHandy-Tunning Copyright (C) 2014\n\t\t\tManon & coyotus\nThis program comes with ABSOLUTELY\nNO WARRANTY for details see\n\thttp://www.gnu.org/licenses/gpl.txt \nThis is free software, and you are welcome\nto redistribute it under certain conditions."])
aboutdialog.run()
aboutdialog.destroy()
Assistant()
gtk.main()
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
GG
J'ai avancer sur les fonctions pageforward et button_pressed
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
#settings = gtk.settings_get_default()
#theme = settings.get_property("gtk-theme-name")
#icons = settings.get_property("gtk-icon-theme-name")
#font = settings.get_property("gtk-font-name")
gobject.threads_init()
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
FULL_CONFIG = ['.bashrc', '.config/openbox/menu.xml']
twidget = gtk.EXPAND | gtk.FILL | gtk.SHRINK
theme_config = {".gtkrc-2.0":HOME_FOLDER+'/.gtkrc-2.0',
"compton.conf":HOME_FOLDER+"/.config/compton.conf",
"rc.xml":HOME_FOLDER+"/.config/openbox/rc.xml",
"autostart":HOME_FOLDER+"/.config/openbox/autostart"}
newFichier, gtkConf = {}, {}
chdir(HOME_FOLDER)
if os.path.isdir("themesHL") != True: #si le dossier n'est pas présent
os.mkdir("themesHL") #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class Assistant:
def __init__(self):
assistant = gtk.Assistant()
assistant.set_title("Handy-Tunning")
assistant.set_position(gtk.WIN_POS_CENTER)
assistant.connect("apply", self.button_pressed, "Apply")
assistant.connect("cancel", self.button_pressed, "Cancel")
assistant.connect("close", self.button_pressed, "Close")
assistant.set_default_size( 400, 300 )
vbox = gtk.VBox()
vbox.set_border_width(5)
page = assistant.append_page(vbox)
assistant.set_page_title(vbox, "Avertissement !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_INTRO)
label = gtk.Label("Handy-Tunning va completement modifier l'apparence de votre système. Utilisez le en toute connaissance de cause.\n\nPour continuer cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Configuration !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Selectionnez les option d'importation ou d'exportation de votre thème et cliquez sur Suivant.")
label.set_line_wrap(True)
self.checkOptionSAVE = gtk.CheckButton("Sauvegarder votre Configuration")
self.checkOptionSAVE.set_active(1)
self.checkOptionCHANGE = gtk.CheckButton("Choisir un thème disponible")
self.checkOptionIMPORT = gtk.CheckButton("Importer un thème télécharger")
self.checkOptionEXPORT = gtk.CheckButton("Exporter votre thème actuel")
vbox.pack_start(label, True, True, 0)
vbox.pack_start(self.checkOptionSAVE, False, False, 0)
vbox.pack_start(self.checkOptionCHANGE, False, False, 0)
vbox.pack_start(self.checkOptionIMPORT, False, False, 0)
vbox.pack_start(self.checkOptionEXPORT, False, False, 0)
listeBoutonCheck = [self.checkOptionSAVE, self.checkOptionCHANGE, self.checkOptionIMPORT, self.checkOptionEXPORT]
for bouton in listeBoutonCheck:
bouton.show()
bouton.connect("clicked", self.on_check_option_clicked, listeBoutonCheck)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nVotre thème à été sauvegardé avec succès.\n\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Choisir un thème disponible\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
#creation liste deroulante
self.listeDeroulante = gtk.combo_box_new_text()
self.listeDeroulante.append_text('Thèmes Disponible')
self.listeDeroulante.set_active(0)
self.listeDeroulante.set_wrap_width(0)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(self.listeDeroulante, True, True, 0)
self.listeTheme() # appel fonction qui liste les themes disponible et les rajoute a la liste deroulante
label.set_line_wrap(True)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "fenetre exemple")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Importer un thème télécharger\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
filechooserbutton = gtk.FileChooserButton("Select A File", None)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(filechooserbutton, True, True, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nVotre thème à été exporté avec succès.\n\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
# Set an alternative function to return the next page to go to
assistant.set_forward_page_func(self.pageforward)
def on_check_option_clicked(self, widget, listeBoutonCheck):
if widget.get_active():
for bouton in listeBoutonCheck:
if bouton == widget:
pass
elif bouton != widget:
bouton.set_active(False)
def pageforward(self,page):
"""
Function called when the forward button is pressed,
Arguments:
page:
integer index of the current page
returns:
integer index of the next page to display
"""
if page == 0:
return page+1
elif page == 1 and self.checkOptionSAVE.get_active():
return 2
elif page == 1 and self.checkOptionCHANGE.get_active():
return 3
elif page == 1 and self.checkOptionIMPORT.get_active():
return 4
elif page == 1 and self.checkOptionEXPORT.get_active():
return 5
def listeTheme(self):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
self.listeDeroulante.append_text(theme)
def button_pressed(self, assistant, button):
if button == 'Cancel':
gtk.main_quit()
if assistant.get_current_page() == 2:
gtk.main_quit()
if assistant.get_current_page() == 3:
if self.listeDeroulante.get_active_text() == "Thèmes Disponible":
pass
elif self.listeDeroulante.get_active_text() != "Thèmes Disponible":
print(self.listeDeroulante.get_active_text())
def on_info_clicked(self, widget):
''' ON peut là lancer dans un thread pour garder la main sur la fenetre principal '''
aboutdialog = gtk.AboutDialog()
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tuning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tHandy-Tunning Copyright (C) 2014\n\t\t\tManon & coyotus\nThis program comes with ABSOLUTELY\nNO WARRANTY for details see\n\thttp://www.gnu.org/licenses/gpl.txt \nThis is free software, and you are welcome\nto redistribute it under certain conditions."])
aboutdialog.run()
aboutdialog.destroy()
if __name__ == "__main__":
Assistant()
gtk.main()
Hors ligne
j'ai rajouté l'option close, si on choisissait fermer à la dernière fenêtre ça fermais pas
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
#settings = gtk.settings_get_default()
#theme = settings.get_property("gtk-theme-name")
#icons = settings.get_property("gtk-icon-theme-name")
#font = settings.get_property("gtk-font-name")
gobject.threads_init()
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
FULL_CONFIG = ['.bashrc', '.config/openbox/menu.xml']
twidget = gtk.EXPAND | gtk.FILL | gtk.SHRINK
theme_config = {".gtkrc-2.0":HOME_FOLDER+'/.gtkrc-2.0',
"compton.conf":HOME_FOLDER+"/.config/compton.conf",
"rc.xml":HOME_FOLDER+"/.config/openbox/rc.xml",
"autostart":HOME_FOLDER+"/.config/openbox/autostart"}
newFichier, gtkConf = {}, {}
chdir(HOME_FOLDER)
if os.path.isdir("themesHL") != True: #si le dossier n'est pas présent
os.mkdir("themesHL") #on créer le dossier
chdir(EMPLACEMENT)
def DE_DETECT():
DE = os.environ.get('DESKTOP_SESSION')
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
else:
print DE
DE_DETECT()
class Assistant:
def __init__(self):
assistant = gtk.Assistant()
assistant.set_title("Handy-Tunning")
assistant.set_position(gtk.WIN_POS_CENTER)
assistant.connect("apply", self.button_pressed, "Apply")
assistant.connect("cancel", self.button_pressed, "Cancel")
assistant.connect("close", self.button_pressed, "Close")
assistant.set_default_size( 400, 300 )
vbox = gtk.VBox()
vbox.set_border_width(5)
page = assistant.append_page(vbox)
assistant.set_page_title(vbox, "Avertissement !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_INTRO)
label = gtk.Label("Handy-Tunning va completement modifier l'apparence de votre système. Utilisez le en toute connaissance de cause.\n\nPour continuer cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Configuration !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Selectionnez les option d'importation ou d'exportation de votre thème et cliquez sur Suivant.")
label.set_line_wrap(True)
self.checkOptionSAVE = gtk.CheckButton("Sauvegarder votre Configuration")
self.checkOptionSAVE.set_active(1)
self.checkOptionCHANGE = gtk.CheckButton("Choisir un thème disponible")
self.checkOptionIMPORT = gtk.CheckButton("Importer un thème télécharger")
self.checkOptionEXPORT = gtk.CheckButton("Exporter votre thème actuel")
vbox.pack_start(label, True, True, 0)
vbox.pack_start(self.checkOptionSAVE, False, False, 0)
vbox.pack_start(self.checkOptionCHANGE, False, False, 0)
vbox.pack_start(self.checkOptionIMPORT, False, False, 0)
vbox.pack_start(self.checkOptionEXPORT, False, False, 0)
listeBoutonCheck = [self.checkOptionSAVE, self.checkOptionCHANGE, self.checkOptionIMPORT, self.checkOptionEXPORT]
for bouton in listeBoutonCheck:
bouton.show()
bouton.connect("clicked", self.on_check_option_clicked, listeBoutonCheck)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nVotre thème à été sauvegardé avec succès.\n\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Choisir un thème disponible\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
#creation liste deroulante
self.listeDeroulante = gtk.combo_box_new_text()
self.listeDeroulante.append_text('Thèmes Disponible')
self.listeDeroulante.set_active(0)
self.listeDeroulante.set_wrap_width(0)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(self.listeDeroulante, True, True, 0)
self.listeTheme() # appel fonction qui liste les themes disponible et les rajoute a la liste deroulante
label.set_line_wrap(True)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "fenetre exemple")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Importer un thème télécharger\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
filechooserbutton = gtk.FileChooserButton("Select A File", None)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(filechooserbutton, True, True, 0)
assistant.set_page_complete(vbox, True)
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nVotre thème à été exporté avec succès.\n\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
# Set an alternative function to return the next page to go to
assistant.set_forward_page_func(self.pageforward)
def on_check_option_clicked(self, widget, listeBoutonCheck):
if widget.get_active():
for bouton in listeBoutonCheck:
if bouton == widget:
pass
elif bouton != widget:
bouton.set_active(False)
def pageforward(self,page):
"""
Function called when the forward button is pressed,
Arguments:
page:
integer index of the current page
returns:
integer index of the next page to display
"""
if page == 0:
return page+1
elif page == 1 and self.checkOptionSAVE.get_active():
return 2
elif page == 1 and self.checkOptionCHANGE.get_active():
return 3
elif page == 1 and self.checkOptionIMPORT.get_active():
return 4
elif page == 1 and self.checkOptionEXPORT.get_active():
return 5
elif page == 2:
pass
def listeTheme(self):
'''fonction qui liste les themes dispo et les rajoute à la liste déroulante'''
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
self.listeDeroulante.append_text(theme)
def button_pressed(self, assistant, button):
if button == 'Cancel':
gtk.main_quit()
if button == 'Close':
gtk.main_quit()
if assistant.get_current_page() == 2:
gtk.main_quit()
if assistant.get_current_page() == 3:
if self.listeDeroulante.get_active_text() == "Thèmes Disponible":
pass
elif self.listeDeroulante.get_active_text() != "Thèmes Disponible":
print(self.listeDeroulante.get_active_text())
def on_info_clicked(self, widget):
''' ON peut là lancer dans un thread pour garder la main sur la fenetre principal '''
aboutdialog = gtk.AboutDialog()
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tuning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tHandy-Tunning Copyright (C) 2014\n\t\t\tManon & coyotus\nThis program comes with ABSOLUTELY\nNO WARRANTY for details see\n\thttp://www.gnu.org/licenses/gpl.txt \nThis is free software, and you are welcome\nto redistribute it under certain conditions."])
aboutdialog.run()
aboutdialog.destroy()
if __name__ == "__main__":
Assistant()
gtk.main()
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Plop avec 'Close' ça ferme la fenetre quand tu clique sur appliquer ...
J'arrive sur IRC faut que je mange un truc avant
Hors ligne
Plop avec 'Close' ça ferme la fenetre quand tu clique sur appliquer ...
J'arrive sur IRC faut que je mange un truc avant
Il suffit de créer une def pour apply
assistant.connect("apply", self.button_apply_pressed, "Apply")
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
petite angoise ... insomnie
Alors non pas besoin . Je m'explique , gtk.assistant c'est super pratique .
9a permet de vraiment gérer ses page et ses fonction facilement comme pour check button
A chaque page on fait faire ce que l'on veut aux boutons et renvoyer la page désirée autant en profiter
Parce que quelque ligne de code .
def pageforward(self,page):
# page 0 on revoye obligatoirement la page 1
if page == 0:
return page+1
elif page == 1 and self.checkOptionSAVE.get_active():
return 2
elif page == 1 and self.checkOptionCHANGE.get_active():
return 3
elif page == 1 and self.checkOptionIMPORT.get_active():
return 4
elif page == 1 and self.checkOptionEXPORT.get_active():
return 5
# jonction avec button pressed . une fois la fonction fini
# On renvoye la page 2 pour quitter
elif page == 3:
return 2
def button_pressed(self, assistant, button):
if button == 'Cancel':
gtk.main_quit()
if assistant.get_current_page() == 2:
gtk.main_quit()
if assistant.get_current_page() == 3:
# Si c'est la page 3
if self.listeDeroulante.get_active_text() == "Thèmes Disponible":
pass
elif self.listeDeroulante.get_active_text() != "Thèmes Disponible":
#on fait nos trucs on peut faire apparaitre ProgressBar ...
# et quand c'est fini en renvoi on peut renvoyer la page de son choix
# dans la fonction pageforward elif page == 3 : return page 2
time.sleep(10)
print(self.listeDeroulante.get_active_text())
J'espére que tu m'auras suivit
EDIT: past complet ===>>>
Hors ligne
Avec le pass dans ton code j'ai cette erreur
TypeError: an integer is required
Je pense qu'il est préférable de ne pas partager les condition d'une page et de mettre une fonction unique pour chaque page
page save le code de sauvegarde
page avec la liste de thème le code d'install du theme sélectionné
page theme importé pareil
page export pareil
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Je croie bien que l'on a notre interface graphique
J'ai reformatée le code complet pour que l'on se repaire plus vite une archive ici => archive
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
DE = os.environ.get('DESKTOP_SESSION')
gobject.threads_init()
# Si xfce n'est pas l'environnement de bureau, on affiche un message puis coupe le script
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
# Si pas de dossier EMPLACEMENT , Creation du dossier
if os.path.isdir(EMPLACEMENT) != True:
os.mkdir(EMPLACEMENT)
chdir(EMPLACEMENT)
class HandyTunning():
def __init__(self):
assistant = gtk.Assistant()
assistant.set_title("Handy-Tunning")
assistant.set_position(gtk.WIN_POS_CENTER)
assistant.connect("apply", self.button_pressed, "Apply")
assistant.connect("cancel", self.button_pressed, "Cancel")
assistant.connect("close", self.button_pressed, "Close")
assistant.set_default_size( 400, 300 )
# Page 0 Accueil
vbox = gtk.VBox()
vbox.set_border_width(5)
page = assistant.append_page(vbox)
assistant.set_page_title(vbox, "Avertissement !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_INTRO)
label = gtk.Label("Handy-Tunning va completement modifier l'apparence de votre système. Utilisez le en toute connaissance de cause.\n\nPour continuer cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
# Page 1 Choix des options
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Configuration !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Selectionnez les option d'importation ou d'exportation de votre thème et cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.checkOptionSAVE = gtk.CheckButton("Sauvegarder votre Configuration")
self.checkOptionSAVE.set_active(1)
self.checkOptionCHANGE = gtk.CheckButton("Choisir un thème disponible")
self.checkOptionIMPORT = gtk.CheckButton("Importer un thème télécharger")
self.checkOptionEXPORT = gtk.CheckButton("Exporter votre thème actuel")
listeBoutonCheck = [self.checkOptionSAVE, self.checkOptionCHANGE, self.checkOptionIMPORT, self.checkOptionEXPORT]
for bouton in listeBoutonCheck:
bouton.connect("clicked", self.on_check_option_clicked, listeBoutonCheck)
vbox.pack_start(bouton, False, False, 0)
bouton.show()
assistant.set_page_complete(vbox, True)
# Page 2 Sauvegarde
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Sauvegarder votre thème\n\n\tRenseignez le nom du thème à sauvegarder \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.save_theme_entry = gtk.Entry()
self.save_theme_entry.set_text("Votre thème")
vbox.pack_start(self.save_theme_entry )
assistant.set_page_complete(vbox, True)
# Page 3 Choix du thème dans la liste déroulante
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Choisir un thème disponible\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
self.listeDeroulante = gtk.combo_box_new_text()
self.listeDeroulante.append_text('Thèmes Disponible')
self.listeDeroulante.set_active(0)
self.listeDeroulante.set_wrap_width(0)
self.listeTheme() # appel fonction qui liste les themes disponible
vbox.pack_start(label, True, True, 0)
vbox.pack_start(self.listeDeroulante, True, True, 0)
assistant.set_page_complete(vbox, True)
# Page 4 Importation
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Importation")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Importer un thème télécharger\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.filechooserbutton = gtk.FileChooserButton("Select A File", None)
self.filechooserbutton.set_current_folder(HOME_FOLDER + "/Téléchargements")
vbox.pack_start(self.filechooserbutton, True, True, 0)
assistant.set_page_complete(vbox, True)
# Page 5 Exportation
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Exporter votre thème\n\n\tRenseignez le nom du thème à sauvegarder \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.nom_theme_entry = gtk.Entry()
self.nom_theme_entry.set_text("Votre thème")
vbox.pack_start(self.nom_theme_entry )
assistant.set_page_complete(vbox, True)
# Page 6 Error
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Error")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("\n\nVous n'avez pas renseignez de nom\n\nou\n\nVous n' avez pas selectioné de thème \n\n\n\n\t\t\t\t Cliquez sur Précédent\n\n\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
# Page 7 Félicitation
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nOpération réalisée avec succès.\n\n\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_start(boutonInfo, True, True, 0)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
assistant.set_forward_page_func(self.page_forward)
def button_pressed(self, assistant, button):
if button == 'Cancel':
gtk.main_quit()
# Page 2
if assistant.get_current_page() == 2 and self.save_theme_entry.get_text() != "Votre thème":
print(self.save_theme_entry.get_text())
time.sleep(4)
# Page 3 , Si Page 3 et qu'un thème a bien été choisi dans la liste déroulante Thème disponible
if assistant.get_current_page() == 3 and self.listeDeroulante.get_active_text() != "Thèmes Disponible":
# mise en place du thème
time.sleep(4)
# Page 4 Importation
if assistant.get_current_page() == 4 and self.filechooserbutton.get_file() != None:
emplacementfichier = self.filechooserbutton.get_filename()
emplacementfichier = self.m_decode(emplacementfichier)
print(emplacementfichier)
print(os.path.basename(emplacementfichier))
time.sleep(4)
# Page 5 Exportation
if assistant.get_current_page() == 5 and self.nom_theme_entry.get_text() != "Votre thème":
print(self.save_theme_entry.get_text())
time.sleep(4)
# Page 7
if assistant.get_current_page() == 7:
gtk.main_quit()
def page_forward(self, page):
# Page 0
if page == 0:
return page+1
# Page 1
elif page == 1 and self.checkOptionSAVE.get_active():
return 2 # si sur la page 1 le bouton SAVE est actif on renvoie la page 2
elif page == 1 and self.checkOptionCHANGE.get_active():
return 3 #return page 3
elif page == 1 and self.checkOptionIMPORT.get_active():
return 4
elif page == 1 and self.checkOptionEXPORT.get_active():
return 5
# Page 2 Sauvegarde
elif page == 2 and self.save_theme_entry.get_text() != "Votre thème":
return 7
elif page == 2 and self.save_theme_entry.get_text() == "Votre thème":
return 6
# Page 3
elif page == 3 and self.listeDeroulante.get_active_text() != "Thèmes Disponible":
return 7 # retourne page 7 Félicitation
elif page == 3 and self.listeDeroulante.get_active_text() == "Thèmes Disponible":
return 6 # return Page 6 Error
# Page 4
elif page == 4 and self.filechooserbutton.get_file() != None:
return 7
elif page == 4 and self.filechooserbutton.get_file() == None:
return 6
# Page 5
elif page == 5 and self.nom_theme_entry.get_text() != "Votre thème":
return 7
elif page == 5 and self.nom_theme_entry.get_text() == "Votre thème":
return 6
def on_check_option_clicked(self, widget, listeBoutonCheck):
if widget.get_active():
for bouton in listeBoutonCheck:
if bouton == widget:
pass
elif bouton != widget:
bouton.set_active(False)
def listeTheme(self):
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
self.listeDeroulante.append_text(theme)
def m_decode(self, emplacementfichier):
liste = []
searchCode = emplacementfichier.split('%')
searchCode.remove(searchCode[0])
for index, element in enumerate(searchCode):
if len(element) == 2 and element != searchCode[-1]:
liste.append( element + searchCode[index + 1][:2])
emplacementfichier = emplacementfichier.replace('%', '')
for element in liste:
if element in emplacementfichier:
emplacementfichier = emplacementfichier.replace(element, element.decode('hex'))
return emplacementfichier
def on_info_clicked(self, widget):
aboutdialog = gtk.AboutDialog()
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tunning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tHandy-Tunning Copyright (C) 2014\n\t\t\tManon & coyotus\nThis program comes with ABSOLUTELY\nNO WARRANTY for details see\n\thttp://www.gnu.org/licenses/gpl.txt \nThis is free software, and you are welcome\nto redistribute it under certain conditions."])
aboutdialog.run()
aboutdialog.destroy()
if __name__ == "__main__":
HandyTunning()
gtk.main()
Hors ligne
J'ai un peu regardé le code ce matin, et j'ai remarqué quelques petit truc niveau interface.
Déjà il y a une différence entre le fait qu'on utilise compiz ou pas, par exemple, quand je lance le code sur ma debian ou sur le PC test Handy j'ai pas la même taille de fenêtre alors que la taille est sensée être fixée.
J'ai donc commenté la ligne en question et en effet la ligne ne sert à rien dans le code (du moins en session compiz, pour la session normale ,e vais retester chez moi).
assistant.set_default_size( 400, 300 )
J'ai aussi regardé pour l'épaisseur du bouton information de la dernière fenêtre., au lieu de faire des multitude de \n j'ai contourné avec size_request.
Par contre ça ne fonctionne pas pour le menu déroulant ou le bouton d'importation.
vbox.set_border_width(85)
boutonInfo.set_size_request(20, 25)
la valeur (20, 25) seule la seconde est prise en charge là aussi je ne sais pas pourquoi mais ça évite d'avoir un bouton de 2 cm de haut, j'ai donc contourné avec border_wddth
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Hors ligne
Merci, j'avais pas pensé à ça ça marche nickel
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Rajout d'une icone au programme et la modif cité juste avant
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Written by: by manon and coyotus
# Under licence GPLv3 http://www.gnu.org/licenses/gpl.txt
import pygtk
pygtk.require('2.0')
import os, gtk, shutil, tarfile
import threading, time, subprocess, gobject
from os import chdir
from xml.etree import ElementTree as ET
BASE = os.path.expanduser('/')
HOME_FOLDER = os.path.expanduser('~')
EMPLACEMENT = os.path.join(HOME_FOLDER, "themesHL/")
DE = os.environ.get('DESKTOP_SESSION')
gobject.threads_init()
# Si xfce n'est pas l'environnement de bureau, on affiche un message puis coupe le script
if DE != 'xfce':
message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
message.set_markup('Attention environnement de bureau xfce non détecté !\n\n Application uniquement compatible avec:\n\n "HandyLinux et XFCE4"')
message.run()
message.destroy()
quit()
# Si pas de dossier EMPLACEMENT , Creation du dossier
if os.path.isdir(EMPLACEMENT) != True:
os.mkdir(EMPLACEMENT)
chdir(EMPLACEMENT)
class HandyTunning():
def __init__(self):
assistant = gtk.Assistant()
assistant.set_title("Handy-Tunning")
assistant.set_position(gtk.WIN_POS_CENTER)
assistant.connect("apply", self.button_pressed, "Apply")
assistant.connect("cancel", self.button_pressed, "Cancel")
assistant.connect("close", self.button_pressed, "Close")
tune_icon = assistant.render_icon(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU)
assistant.set_icon(tune_icon)
# Page 0 Accueil
vbox = gtk.VBox()
vbox.set_border_width(5)
page = assistant.append_page(vbox)
assistant.set_page_title(vbox, "Avertissement !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_INTRO)
label = gtk.Label("Handy-Tunning va completement modifier l'apparence de votre système. Utilisez le en toute connaissance de cause.\n\nPour continuer cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
# Page 1 Choix des options
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Configuration !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Selectionnez les option d'importation ou d'exportation de votre thème et cliquez sur Suivant.")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.checkOptionSAVE = gtk.CheckButton("Sauvegarder votre Configuration")
self.checkOptionSAVE.set_active(1)
self.checkOptionCHANGE = gtk.CheckButton("Choisir un thème disponible")
self.checkOptionIMPORT = gtk.CheckButton("Importer un thème télécharger")
self.checkOptionEXPORT = gtk.CheckButton("Exporter votre thème actuel")
listeBoutonCheck = [self.checkOptionSAVE, self.checkOptionCHANGE, self.checkOptionIMPORT, self.checkOptionEXPORT]
for bouton in listeBoutonCheck:
bouton.connect("clicked", self.on_check_option_clicked, listeBoutonCheck)
vbox.pack_start(bouton, False, False, 0)
bouton.show()
assistant.set_page_complete(vbox, True)
# Page 2 Sauvegarde
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Sauvegarder votre thème\n\n\tRenseignez le nom du thème à sauvegarder \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.save_theme_entry = gtk.Entry()
self.save_theme_entry.set_text("Votre thème")
vbox.pack_start(self.save_theme_entry )
assistant.set_page_complete(vbox, True)
# Page 3 Choix du thème dans la liste déroulante
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(25)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Choisir un thème disponible\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
self.listeDeroulante = gtk.combo_box_new_text()
self.listeDeroulante.append_text('Thèmes Disponible')
self.listeDeroulante.set_active(0)
self.listeDeroulante.set_wrap_width(0)
self.listeTheme() # appel fonction qui liste les themes disponible
vbox.pack_start(label, True, True, 0)
vbox.pack_end(self.listeDeroulante, False, False, 4)
assistant.set_page_complete(vbox, True)
# Page 4 Importation
vbox = gtk.VBox()
vbox.set_border_width(25)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Importation")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Importer un thème télécharger\n\n\tSelectionnez le thème à appliquer \n\t\tet cliquez sur Appliquer\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.filechooserbutton = gtk.FileChooserButton("Select A File", None)
self.filechooserbutton.set_current_folder(HOME_FOLDER + "/Téléchargements")
vbox.pack_end(self.filechooserbutton, False, False, 4)
assistant.set_page_complete(vbox, True)
# Page 5 Exportation
vbox = gtk.VBox()
table = gtk.Table(2, 2, True)
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Handy-Tunning !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("Vous avez choisi l'option : Exporter votre thème\n\n\tRenseignez le nom du thème à sauvegarder \n\t\tet cliquez sur Appliquer\n\n\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
self.nom_theme_entry = gtk.Entry()
self.nom_theme_entry.set_text("Votre thème")
vbox.pack_start(self.nom_theme_entry )
assistant.set_page_complete(vbox, True)
# Page 6 Error
vbox = gtk.VBox()
vbox.set_border_width(5)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Error")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONFIRM)
label = gtk.Label("\n\nVous n'avez pas renseignez de nom\n\nou\n\nVous n' avez pas selectioné de thème \n\n\n\n\t\t\t\t Cliquez sur Précédent\n\n\n\n")
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
assistant.set_page_complete(vbox, True)
# Page 7 Félicitation
vbox = gtk.VBox()
vbox.set_border_width(25)
assistant.append_page(vbox)
assistant.set_page_title(vbox, "Félicitation !")
assistant.set_page_type(vbox, gtk.ASSISTANT_PAGE_SUMMARY)
label = gtk.Label("\nOpération réalisée avec succès.\n\n\n")
boutonInfo = gtk.Button(stock = gtk.STOCK_DIALOG_INFO)
label.set_line_wrap(True)
vbox.pack_start(label, True, True, 0)
vbox.pack_end(boutonInfo, False, False, 4)
assistant.set_page_complete(vbox, True)
boutonInfo.connect("clicked", self.on_info_clicked)
assistant.show_all()
assistant.set_forward_page_func(self.page_forward)
def button_pressed(self, assistant, button):
if button == 'Cancel':
gtk.main_quit()
# Page 2
if assistant.get_current_page() == 2 and self.save_theme_entry.get_text() != "Votre thème":
print(self.save_theme_entry.get_text())
time.sleep(4)
# Page 3 , Si Page 3 et qu'un thème a bien été choisi dans la liste déroulante Thème disponible
if assistant.get_current_page() == 3 and self.listeDeroulante.get_active_text() != "Thèmes Disponible":
# mise en place du thème
time.sleep(4)
# Page 4 Importation
if assistant.get_current_page() == 4 and self.filechooserbutton.get_file() != None:
emplacementfichier = self.filechooserbutton.get_filename()
emplacementfichier = self.m_decode(emplacementfichier)
print(emplacementfichier)
print(os.path.basename(emplacementfichier))
time.sleep(4)
# Page 5 Exportation
if assistant.get_current_page() == 5 and self.nom_theme_entry.get_text() != "Votre thème":
print(self.save_theme_entry.get_text())
time.sleep(4)
# Page 7
if assistant.get_current_page() == 7:
gtk.main_quit()
def page_forward(self, page):
# Page 0
if page == 0:
return page+1
# Page 1
elif page == 1 and self.checkOptionSAVE.get_active():
return 2 # si sur la page 1 le bouton SAVE est actif on renvoie la page 2
elif page == 1 and self.checkOptionCHANGE.get_active():
return 3 #return page 3
elif page == 1 and self.checkOptionIMPORT.get_active():
return 4
elif page == 1 and self.checkOptionEXPORT.get_active():
return 5
# Page 2 Sauvegarde
elif page == 2 and self.save_theme_entry.get_text() != "Votre thème":
return 7
elif page == 2 and self.save_theme_entry.get_text() == "Votre thème":
return 6
# Page 3
elif page == 3 and self.listeDeroulante.get_active_text() != "Thèmes Disponible":
return 7 # retourne page 7 Félicitation
elif page == 3 and self.listeDeroulante.get_active_text() == "Thèmes Disponible":
return 6 # return Page 6 Error
# Page 4
elif page == 4 and self.filechooserbutton.get_file() != None:
return 7
elif page == 4 and self.filechooserbutton.get_file() == None:
return 6
# Page 5
elif page == 5 and self.nom_theme_entry.get_text() != "Votre thème":
return 7
elif page == 5 and self.nom_theme_entry.get_text() == "Votre thème":
return 6
def on_check_option_clicked(self, widget, listeBoutonCheck):
if widget.get_active():
for bouton in listeBoutonCheck:
if bouton == widget:
pass
elif bouton != widget:
bouton.set_active(False)
def listeTheme(self):
themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
for theme in themes_dispo:
self.listeDeroulante.append_text(theme)
def m_decode(self, emplacementfichier):
liste = []
searchCode = emplacementfichier.split('%')
searchCode.remove(searchCode[0])
for index, element in enumerate(searchCode):
if len(element) == 2 and element != searchCode[-1]:
liste.append( element + searchCode[index + 1][:2])
emplacementfichier = emplacementfichier.replace('%', '')
for element in liste:
if element in emplacementfichier:
emplacementfichier = emplacementfichier.replace(element, element.decode('hex'))
return emplacementfichier
def on_info_clicked(self, widget):
aboutdialog = gtk.AboutDialog()
about_icon = aboutdialog.render_icon(gtk.STOCK_ABOUT, gtk.ICON_SIZE_MENU)
aboutdialog.set_icon(about_icon)
aboutdialog.set_position(gtk.WIN_POS_CENTER)
aboutdialog.set_name("Handy-Tunning")
aboutdialog.set_version("1.0.0")
aboutdialog.set_comments("Tool for import and export handylinux themes and icons")
aboutdialog.set_website("http://www.handylinux.org/")
aboutdialog.set_website_label("HandyLinux Website")
aboutdialog.set_authors(["\tHandy-Tunning Copyright (C) 2014\n\t\t\tManon & coyotus\nThis program comes with ABSOLUTELY\nNO WARRANTY for details see\n\thttp://www.gnu.org/licenses/gpl.txt \nThis is free software, and you are welcome\nto redistribute it under certain conditions."])
aboutdialog.run()
aboutdialog.destroy()
if __name__ == "__main__":
HandyTunning()
gtk.main()
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
et là c'est la grosse honte pour moi ... je suis même pas venu vous dire comme c'est trop bien cet outil !!
et en plus, j'ai mon smiley préféré
Hors ligne
Oui mais on a pas terminé le projet, on en était qu'au tout début là.
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Pages : 1