[Python-checkins] r64004 - in sandbox/trunk/ttk-gsoc/src/idlelib: PyShell.py config-main.def configDialog.py

guilherme.polo python-checkins at python.org
Sat Jun 7 01:06:21 CEST 2008


Author: guilherme.polo
Date: Sat Jun  7 01:06:20 2008
New Revision: 64004

Log:
Added the possibility to change the display theme when running with Ttk.


Modified:
   sandbox/trunk/ttk-gsoc/src/idlelib/PyShell.py
   sandbox/trunk/ttk-gsoc/src/idlelib/config-main.def
   sandbox/trunk/ttk-gsoc/src/idlelib/configDialog.py

Modified: sandbox/trunk/ttk-gsoc/src/idlelib/PyShell.py
==============================================================================
--- sandbox/trunk/ttk-gsoc/src/idlelib/PyShell.py	(original)
+++ sandbox/trunk/ttk-gsoc/src/idlelib/PyShell.py	Sat Jun  7 01:06:20 2008
@@ -862,6 +862,9 @@
         #
         self.pollinterval = 50  # millisec
 
+        if TTK:
+            self.set_theme(Style(self.root))
+
     def get_standard_extension_names(self):
         return idleConf.GetExtensions(shell_only=True)
 
@@ -878,6 +881,10 @@
     def get_warning_stream(self):
         return warning_stream
 
+    def set_theme(self, ttkstyle):
+        ttkstyle.theme_use(idleConf.GetOption('main', 'Theme',
+            'displaytheme'))
+
     def toggle_debugger(self, event=None):
         if self.executing:
             tkMessageBox.showerror("Don't debug now",

Modified: sandbox/trunk/ttk-gsoc/src/idlelib/config-main.def
==============================================================================
--- sandbox/trunk/ttk-gsoc/src/idlelib/config-main.def	(original)
+++ sandbox/trunk/ttk-gsoc/src/idlelib/config-main.def	Sat Jun  7 01:06:20 2008
@@ -49,7 +49,7 @@
 print-command-posix=lpr %s
 print-command-win=start /min notepad /p %s
 delete-exitfunc= 1
-use-ttk=0
+use-ttk = 0
 
 [EditorWindow]
 width= 80
@@ -69,6 +69,7 @@
 [Theme]
 default= 1
 name= IDLE Classic
+displaytheme = default
 
 [Keys]
 default= 1

Modified: sandbox/trunk/ttk-gsoc/src/idlelib/configDialog.py
==============================================================================
--- sandbox/trunk/ttk-gsoc/src/idlelib/configDialog.py	(original)
+++ sandbox/trunk/ttk-gsoc/src/idlelib/configDialog.py	Sat Jun  7 01:06:20 2008
@@ -359,6 +359,7 @@
         self.startupEdit=IntVar(self)
         self.autoSave=IntVar(self)
         self.encoding=StringVar(self)
+        self.themename = StringVar(self)
         self.userHelpBrowser=BooleanVar(self)
         self.helpBrowser=StringVar(self)
         #widget creation
@@ -372,6 +373,8 @@
         frameWinSize=Frame(frame,borderwidth=2,relief=GROOVE)
         frameParaSize=Frame(frame,borderwidth=2,relief=GROOVE)
         frameEncoding=Frame(frame,borderwidth=2,relief=GROOVE)
+        if TTK:
+            frameTheme = Frame(frame, borderwidth=2, relief=GROOVE)
         frameHelp=LabelFrame(frame,borderwidth=2,relief=GROOVE,
                              text=' Additional Help Sources ')
         #frameRun
@@ -408,6 +411,11 @@
             value="utf-8",text="UTF-8")
         radioEncNone=Radiobutton(frameEncoding,variable=self.encoding,
             value="none",text="None")
+        #frameTheme
+        if TTK:
+            labelTheme = Label(frameTheme, text="Display Theme")
+            comboTheme = Combobox(frameTheme, textvariable=self.themename,
+                values=self.ttkstyle.theme_names(), state='readonly')
         #frameHelp
         frameHelpList=Frame(frameHelp)
         frameHelpListButtons=Frame(frameHelpList)
@@ -430,6 +438,8 @@
         frameWinSize.pack(side=TOP,padx=5,pady=5,fill=X)
         frameParaSize.pack(side=TOP,padx=5,pady=5,fill=X)
         frameEncoding.pack(side=TOP,padx=5,pady=5,fill=X)
+        if TTK:
+            frameTheme.pack(side=TOP, padx=5, pady=5, fill=X)
         frameHelp.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH)
         #frameRun
         labelRunChoiceTitle.pack(side=LEFT,anchor=W,padx=5,pady=5)
@@ -453,6 +463,10 @@
         radioEncNone.pack(side=RIGHT,anchor=E,pady=5)
         radioEncUTF8.pack(side=RIGHT,anchor=E,pady=5)
         radioEncLocale.pack(side=RIGHT,anchor=E,pady=5)
+        #franeTheme
+        if TTK:
+            labelTheme.pack(side=LEFT, anchor=W, padx=5, pady=5)
+            comboTheme.pack(side=RIGHT, anchor=E, padx=5, pady=5)
         #frameHelp
         frameHelpListButtons.pack(side=RIGHT,padx=5,pady=5,fill=Y)
         frameHelpList.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH)
@@ -483,6 +497,7 @@
         self.startupEdit.trace_variable('w',self.VarChanged_startupEdit)
         self.autoSave.trace_variable('w',self.VarChanged_autoSave)
         self.encoding.trace_variable('w',self.VarChanged_encoding)
+        self.themename.trace_variable('w', self.VarChanged_themename)
 
     def VarChanged_fontSize(self,*params):
         value=self.fontSize.get()
@@ -580,6 +595,10 @@
         value=self.encoding.get()
         self.AddChangedItem('main','EditorWindow','encoding',value)
 
+    def VarChanged_themename(self, *params):
+        value = self.themename.get()
+        self.AddChangedItem('main', 'Theme', 'displaytheme', value)
+
     def ResetChangedItems(self):
         #When any config item is changed in this dialog, an entry
         #should be made in the relevant section (config type) of this
@@ -1023,6 +1042,10 @@
         self.PaintThemeSample()
         self.SetHighlightTarget()
 
+        if TTK:
+            displaytheme = idleConf.GetOption('main', 'Theme', 'displaytheme')
+            self.themename.set(displaytheme)
+
     def __ThemeNameIndexCompare(self,a,b):
         if self.themeElements[a][1]<self.themeElements[b][1]: return -1
         elif self.themeElements[a][1]==self.themeElements[b][1]: return 0
@@ -1163,6 +1186,7 @@
             instance.set_notabs_indentwidth()
             instance.ApplyKeybindings()
             instance.reset_help_menu_entries()
+            instance.set_theme(self.ttkstyle)
 
     def Cancel(self):
         self.destroy()


More information about the Python-checkins mailing list