Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
d0969d69
Kaydet (Commit)
d0969d69
authored
Tem 21, 2017
tarafından
Terry Jan Reedy
Kaydeden (comit)
GitHub
Tem 21, 2017
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
bpo-30981: IDLE -- Add more configdialog font page tests. (#2794)
üst
a54a8f18
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
63 deletions
+54
-63
configdialog.py
Lib/idlelib/configdialog.py
+28
-45
test_configdialog.py
Lib/idlelib/idle_test/test_configdialog.py
+25
-18
2017-07-21-01-55-14.bpo-30981.ZFvQPt.rst
...NEWS.d/next/IDLE/2017-07-21-01-55-14.bpo-30981.ZFvQPt.rst
+1
-0
No files found.
Lib/idlelib/configdialog.py
Dosyayı görüntüle @
d0969d69
...
...
@@ -154,9 +154,9 @@ class ConfigDialog(Toplevel):
"""Return frame of widgets for Font/Tabs tab.
Tk Variables:
font_name: Font face.
font_size: Font size.
font_bold: Select font bold or not.
font_name: Font face.
Note: these 3 share var_changed_font callback.
space_num: Indentation width.
...
...
@@ -167,8 +167,7 @@ class ConfigDialog(Toplevel):
load_font_cfg: Set vars and fontlist.
on_fontlist_select: Bound to fontlist button release
or key release.
set_font_sample: Command for opt_menu_font_size and
check_font_bold.
set_samples: Notify both samples of any font change.
load_tab_cfg: Get current.
Widget Structure: (*) widgets bound to self
...
...
@@ -181,7 +180,7 @@ class ConfigDialog(Toplevel):
frame_font_param: Frame
font_size_title: Label
(*)opt_menu_font_size: DynOptionMenu - font_size
check_font_bold
: Checkbutton - font_bold
bold_toggle
: Checkbutton - font_bold
frame_font_sample: Frame
(*)font_sample: Label
frame_indent: LabelFrame
...
...
@@ -190,9 +189,9 @@ class ConfigDialog(Toplevel):
(*)scale_indent_size: Scale - space_num
"""
parent
=
self
.
parent
self
.
font_name
=
StringVar
(
parent
)
self
.
font_size
=
StringVar
(
parent
)
self
.
font_bold
=
BooleanVar
(
parent
)
self
.
font_name
=
StringVar
(
parent
)
self
.
space_num
=
IntVar
(
parent
)
self
.
edit_font
=
tkFont
.
Font
(
parent
,
(
'courier'
,
10
,
'normal'
))
...
...
@@ -218,10 +217,10 @@ class ConfigDialog(Toplevel):
self
.
fontlist
.
config
(
yscrollcommand
=
scroll_font
.
set
)
font_size_title
=
Label
(
frame_font_param
,
text
=
'Size :'
)
self
.
opt_menu_font_size
=
DynOptionMenu
(
frame_font_param
,
self
.
font_size
,
None
,
command
=
self
.
set_
font_sample
)
check_font_bold
=
Checkbutton
(
frame_font_param
,
self
.
font_size
,
None
,
command
=
self
.
set_
samples
)
bold_toggle
=
Checkbutton
(
frame_font_param
,
variable
=
self
.
font_bold
,
onvalue
=
1
,
offvalue
=
0
,
text
=
'Bold'
,
command
=
self
.
set_
font_sample
)
offvalue
=
0
,
text
=
'Bold'
,
command
=
self
.
set_
samples
)
frame_font_sample
=
Frame
(
frame_font
,
relief
=
SOLID
,
borderwidth
=
1
)
self
.
font_sample
=
Label
(
frame_font_sample
,
justify
=
LEFT
,
font
=
self
.
edit_font
,
...
...
@@ -247,7 +246,7 @@ class ConfigDialog(Toplevel):
scroll_font
.
pack
(
side
=
LEFT
,
fill
=
Y
)
font_size_title
.
pack
(
side
=
LEFT
,
anchor
=
W
)
self
.
opt_menu_font_size
.
pack
(
side
=
LEFT
,
anchor
=
W
)
check_font_bold
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
20
)
bold_toggle
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
20
)
frame_font_sample
.
pack
(
side
=
TOP
,
padx
=
5
,
pady
=
5
,
expand
=
TRUE
,
fill
=
BOTH
)
self
.
font_sample
.
pack
(
expand
=
TRUE
,
fill
=
BOTH
)
# frame_indent
...
...
@@ -292,7 +291,7 @@ class ConfigDialog(Toplevel):
Widget Structure: (*) widgets bound to self
frame
frame_custom: LabelFrame
(*)
text_
highlight_sample: Text
(*)highlight_sample: Text
(*)frame_color_set: Frame
button_set_color: Button
(*)opt_menu_highlight_target: DynOptionMenu - highlight_target
...
...
@@ -342,11 +341,11 @@ class ConfigDialog(Toplevel):
frame_theme
=
LabelFrame
(
frame
,
borderwidth
=
2
,
relief
=
GROOVE
,
text
=
' Highlighting Theme '
)
#frame_custom
self
.
text_
highlight_sample
=
Text
(
self
.
highlight_sample
=
Text
(
frame_custom
,
relief
=
SOLID
,
borderwidth
=
1
,
font
=
(
'courier'
,
12
,
''
),
cursor
=
'hand2'
,
width
=
21
,
height
=
11
,
takefocus
=
FALSE
,
highlightthickness
=
0
,
wrap
=
NONE
)
text
=
self
.
text_
highlight_sample
text
=
self
.
highlight_sample
text
.
bind
(
'<Double-Button-1>'
,
lambda
e
:
'break'
)
text
.
bind
(
'<B1-Motion>'
,
lambda
e
:
'break'
)
text_and_tags
=
(
...
...
@@ -416,7 +415,7 @@ class ConfigDialog(Toplevel):
#frame_custom
self
.
frame_color_set
.
pack
(
side
=
TOP
,
padx
=
5
,
pady
=
5
,
expand
=
TRUE
,
fill
=
X
)
frame_fg_bg_toggle
.
pack
(
side
=
TOP
,
padx
=
5
,
pady
=
0
)
self
.
text_
highlight_sample
.
pack
(
self
.
highlight_sample
.
pack
(
side
=
TOP
,
padx
=
5
,
pady
=
5
,
expand
=
TRUE
,
fill
=
BOTH
)
button_set_color
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
X
,
padx
=
8
,
pady
=
4
)
self
.
opt_menu_highlight_target
.
pack
(
...
...
@@ -1142,7 +1141,7 @@ class ConfigDialog(Toplevel):
self
.
frame_color_set
.
config
(
bg
=
new_color
)
# Set sample.
plane
=
'foreground'
if
self
.
fg_bg_toggle
.
get
()
else
'background'
sample_element
=
self
.
theme_elements
[
self
.
highlight_target
.
get
()][
0
]
self
.
text_
highlight_sample
.
tag_config
(
sample_element
,
**
{
plane
:
new_color
})
self
.
highlight_sample
.
tag_config
(
sample_element
,
**
{
plane
:
new_color
})
theme
=
self
.
custom_theme
.
get
()
theme_element
=
sample_element
+
'-'
+
plane
changes
.
add_option
(
'highlight'
,
theme
,
theme_element
,
new_color
)
...
...
@@ -1210,41 +1209,25 @@ class ConfigDialog(Toplevel):
"""Handle selecting a font from the list.
Event can result from either mouse click or Up or Down key.
Set font_name and example display to selection.
Attributes updated:
font_name: Set to name selected from fontlist.
Methods:
set_font_sample
Set font_name and example displays to selection.
"""
font
=
self
.
fontlist
.
get
(
ACTIVE
if
event
.
type
.
name
==
'KeyRelease'
else
ANCHOR
)
self
.
font_name
.
set
(
font
.
lower
())
self
.
set_font_sample
()
def
set_font_sample
(
self
,
event
=
None
):
"""Update the screen samples with the font settings from the dialog.
self
.
set_samples
()
Attributes accessed:
font_name
font_bold
font_size
def
set_samples
(
self
,
event
=
None
):
"""Update update both screen samples with the font settings.
Attributes updated:
font_sample: Set to selected font name, size, and weight.
text_highlight_sample: Set to selected font name, size, and weight.
Called from:
handler for opt_menu_font_size and check_font_bold
on_fontlist_select
load_font_cfg
Called on font initialization and change events.
Accesses font_name, font_size, and font_bold Variables.
Updates font_sample and hightlight page highlight_sample.
"""
font_name
=
self
.
font_name
.
get
()
font_weight
=
tkFont
.
BOLD
if
self
.
font_bold
.
get
()
else
tkFont
.
NORMAL
new_font
=
(
font_name
,
self
.
font_size
.
get
(),
font_weight
)
self
.
font_sample
.
config
(
font
=
new_font
)
self
.
text_highlight_sample
.
configure
(
font
=
new_font
)
self
.
font_sample
[
'font'
]
=
new_font
self
.
highlight_sample
[
'font'
]
=
new_font
def
set_highlight_target
(
self
):
"""Set fg/bg toggle and color based on highlight tag target.
...
...
@@ -1289,7 +1272,7 @@ class ConfigDialog(Toplevel):
theme_elements
highlight_target
fg_bg_toggle
text_
highlight_sample
highlight_sample
Attributes updated:
frame_color_set
...
...
@@ -1297,7 +1280,7 @@ class ConfigDialog(Toplevel):
# Set the color sample area.
tag
=
self
.
theme_elements
[
self
.
highlight_target
.
get
()][
0
]
plane
=
'foreground'
if
self
.
fg_bg_toggle
.
get
()
else
'background'
color
=
self
.
text_
highlight_sample
.
tag_cget
(
tag
,
plane
)
color
=
self
.
highlight_sample
.
tag_cget
(
tag
,
plane
)
self
.
frame_color_set
.
config
(
bg
=
color
)
def
paint_theme_sample
(
self
):
...
...
@@ -1310,7 +1293,7 @@ class ConfigDialog(Toplevel):
custom_theme
Attributes updated:
text_
highlight_sample: Set the tag elements to the theme.
highlight_sample: Set the tag elements to the theme.
Methods:
set_color_sample
...
...
@@ -1337,7 +1320,7 @@ class ConfigDialog(Toplevel):
colors
[
'foreground'
]
=
theme_dict
[
element
+
'-foreground'
]
if
element
+
'-background'
in
theme_dict
:
colors
[
'background'
]
=
theme_dict
[
element
+
'-background'
]
self
.
text_
highlight_sample
.
tag_config
(
element
,
**
colors
)
self
.
highlight_sample
.
tag_config
(
element
,
**
colors
)
self
.
set_color_sample
()
def
help_source_selected
(
self
,
event
):
...
...
@@ -1424,7 +1407,7 @@ class ConfigDialog(Toplevel):
font_bold: Set to current font weight.
Methods:
set_
font_sample
set_
samples
"""
# Set base editor font selection list.
fonts
=
list
(
tkFont
.
families
(
self
))
...
...
@@ -1452,7 +1435,7 @@ class ConfigDialog(Toplevel):
# Set font weight.
self
.
font_bold
.
set
(
font_bold
)
# Set font sample.
self
.
set_
font_sample
()
self
.
set_
samples
()
def
load_tab_cfg
(
self
):
"""Load current configuration settings for the tab options.
...
...
Lib/idlelib/idle_test/test_configdialog.py
Dosyayı görüntüle @
d0969d69
...
...
@@ -28,18 +28,12 @@ mainpage = changes['main']
highpage
=
changes
[
'highlight'
]
keyspage
=
changes
[
'keys'
]
class
TestDialog
(
ConfigDialog
):
pass
# Delete?
def
setUpModule
():
global
root
,
dialog
idleConf
.
userCfg
=
testcfg
root
=
Tk
()
# root.withdraw() # Comment out, see issue 30870
dialog
=
TestDialog
(
root
,
'Test'
,
_utest
=
True
)
dialog
=
ConfigDialog
(
root
,
'Test'
,
_utest
=
True
)
def
tearDownModule
():
global
root
,
dialog
...
...
@@ -56,7 +50,7 @@ class FontTabTest(unittest.TestCase):
def
setUp
(
self
):
changes
.
clear
()
def
test_font
(
self
):
def
test_font
_set
(
self
):
# Set values guaranteed not to be defaults.
default_font
=
idleConf
.
GetFont
(
root
,
'main'
,
'EditorWindow'
)
default_size
=
str
(
default_font
[
1
])
...
...
@@ -79,9 +73,22 @@ class FontTabTest(unittest.TestCase):
'font-bold'
:
str
(
not
default_bold
)}}
self
.
assertEqual
(
mainpage
,
expected
)
def
test_set_sample
(
self
):
# Set_font_sample also sets highlight_sample.
pass
def
test_bold_toggle
(
self
):
d
=
dialog
d
.
set_samples
=
Func
()
d
.
bold_toggle
.
toggle
()
self
.
assertEqual
(
d
.
set_samples
.
called
,
1
)
def
test_set_samples
(
self
):
d
=
dialog
d
.
font_sample
,
d
.
highlight_sample
=
{},
{}
d
.
font_name
.
set
(
'test'
)
d
.
font_size
.
set
(
'5'
)
d
.
font_bold
.
set
(
1
)
d
.
set_samples
()
expected
=
{
'font'
:
(
'test'
,
'5'
,
'bold'
)}
self
.
assertTrue
(
d
.
font_sample
==
d
.
highlight_sample
==
expected
)
del
d
.
font_sample
,
d
.
highlight_sample
def
test_tabspace
(
self
):
dialog
.
space_num
.
set
(
6
)
...
...
@@ -90,7 +97,7 @@ class FontTabTest(unittest.TestCase):
class
FontSelectTest
(
unittest
.
TestCase
):
# These two functions test that selecting a new font in the
# list of fonts changes font_name and calls set_
font_sample
.
# list of fonts changes font_name and calls set_
samples
.
# The fontlist widget and on_fontlist_select event handler
# are tested here together.
...
...
@@ -98,14 +105,14 @@ class FontSelectTest(unittest.TestCase):
def
setUpClass
(
cls
):
if
dialog
.
fontlist
.
size
()
<
2
:
cls
.
skipTest
(
'need at least 2 fonts'
)
dialog
.
set_
font_sample
=
Func
()
# Mask instance method.
dialog
.
set_
samples
=
Func
()
# Mask instance method.
@classmethod
def
tearDownClass
(
cls
):
del
dialog
.
set_
font_sample
# Unmask instance method.
del
dialog
.
set_
samples
# Unmask instance method.
def
setUp
(
self
):
dialog
.
set_
font_sample
.
called
=
0
dialog
.
set_
samples
.
called
=
0
changes
.
clear
()
def
test_select_font_key
(
self
):
...
...
@@ -124,7 +131,7 @@ class FontSelectTest(unittest.TestCase):
down_font
=
fontlist
.
get
(
'active'
)
self
.
assertNotEqual
(
down_font
,
font
)
self
.
assertIn
(
dialog
.
font_name
.
get
(),
down_font
.
lower
())
self
.
assertEqual
(
dialog
.
set_
font_sample
.
called
,
1
)
self
.
assertEqual
(
dialog
.
set_
samples
.
called
,
1
)
# Test Up key.
fontlist
.
focus_force
()
...
...
@@ -135,7 +142,7 @@ class FontSelectTest(unittest.TestCase):
up_font
=
fontlist
.
get
(
'active'
)
self
.
assertEqual
(
up_font
,
font
)
self
.
assertIn
(
dialog
.
font_name
.
get
(),
up_font
.
lower
())
self
.
assertEqual
(
dialog
.
set_
font_sample
.
called
,
2
)
self
.
assertEqual
(
dialog
.
set_
samples
.
called
,
2
)
def
test_select_font_mouse
(
self
):
# Click on item should select that item.
...
...
@@ -157,7 +164,7 @@ class FontSelectTest(unittest.TestCase):
select_font
=
fontlist
.
get
(
'anchor'
)
self
.
assertEqual
(
select_font
,
font1
)
self
.
assertIn
(
dialog
.
font_name
.
get
(),
font1
.
lower
())
self
.
assertEqual
(
dialog
.
set_
font_sample
.
called
,
1
)
self
.
assertEqual
(
dialog
.
set_
samples
.
called
,
1
)
class
HighlightTest
(
unittest
.
TestCase
):
...
...
Misc/NEWS.d/next/IDLE/2017-07-21-01-55-14.bpo-30981.ZFvQPt.rst
0 → 100644
Dosyayı görüntüle @
d0969d69
IDLE -- Add more configdialog font page tests.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment