[Libreoffice-commits] core.git: bin/lint-ui.py

2020-12-22 Thread Caolán McNamara (via logerrit)
 bin/lint-ui.py |8 ++--
 1 file changed, 2 insertions(+), 6 deletions(-)

New commits:
commit ad388fa57a0bb280c54998b416f6c6f5118ea9dc
Author: Caolán McNamara 
AuthorDate: Tue Dec 22 13:14:42 2020 +
Commit: Caolán McNamara 
CommitDate: Tue Dec 22 21:05:43 2020 +0100

state GtkAlignment is deprecated in lint-ui

Change-Id: I138d21ed6fdf4c07e77c3f096cdd7ac94c61c292
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108198
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 111fa3e18b21..7bbf46a2a113 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -139,12 +139,8 @@ def check_frames(root):
 frames = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkFrame']
 for frame in frames:
 frame_alignments = 
frame.findall("./child/object[@class='GtkAlignment']")
-assert len(frame_alignments) <= 1
-if len(frame_alignments) < 1:
-lint_assert(False, "No GtkAlignment in GtkFrame with id = '" + 
frame.attrib['id'] + "'", frame)
-if len(frame_alignments) == 1:
-alignment = frame_alignments[0]
-check_alignment_top_padding(alignment)
+if len(frame_alignments) > 0:
+lint_assert(False, "Deprecated GtkAlignment in GtkFrame with id = 
'" + frame.attrib['id'] + "'", frame)
 
 def check_alignment_top_padding(alignment):
 top_padding_properties = 
alignment.findall("./property[@name='top_padding']")
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2020-12-22 Thread Caolán McNamara (via logerrit)
 bin/lint-ui.py |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 99062dba811edbded14c0472b241b1d8c99da712
Author: Caolán McNamara 
AuthorDate: Tue Dec 22 13:12:30 2020 +
Commit: Caolán McNamara 
CommitDate: Tue Dec 22 21:04:52 2020 +0100

fix lint-ui syntax error

Change-Id: I8c94c28363a358e4e1dfe34b827a084c4c0e7a90
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108197
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 84916229c9a0..111fa3e18b21 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -122,7 +122,7 @@ def check_menu_buttons(root):
 images = button.findall("./property[@name='image']")
 assert(len(labels) <= 1)
 if len(labels) < 1 and len(images) < 1:
-if sys.argv[1] == "vcl/uiconfig/ui/combobox.ui": and 
button.attrib['id'] == "overlaybutton":
+if sys.argv[1] == "vcl/uiconfig/ui/combobox.ui" and 
button.attrib['id'] == "overlaybutton":
 pass
 else:
 lint_assert(False, "No label in GtkMenuButton with id = '" + 
button.attrib['id'] + "'", button)
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-07 Thread Noel (via logerrit)
 bin/lint-ui.py |   11 ---
 1 file changed, 4 insertions(+), 7 deletions(-)

New commits:
commit cc1ef0b3dc1449242c23e3c3299c2f7bb803821d
Author: Noel 
AuthorDate: Wed Oct 7 12:47:04 2020 +0200
Commit: Noel Grandin 
CommitDate: Wed Oct 7 18:42:44 2020 +0200

lint-ui: remove checks for top-level widgets

lots of .ui files are loaded, and then widgets extracted by name by
the code, so this check does not make sense.

Change-Id: Ia8292c5808587d98f0015280ad17b00402c8b96d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104056
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 16feed37e678..0518bd5a7da4 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -59,8 +59,8 @@ def lint_assert(predicate, warning=DEFAULT_WARNING_STR, 
node=None):
 def check_top_level_widget(element):
 # check widget type
 widget_type = element.attrib['class']
-lint_assert(widget_type in POSSIBLE_TOP_LEVEL_WIDGETS,
-"Top level widget should be 'GtkDialog', 'GtkFrame', 'GtkBox', 
or 'GtkGrid', but is " + widget_type)
+if not(widget_type in POSSIBLE_TOP_LEVEL_WIDGETS):
+return
 
 # check border_width property
 border_width_properties = element.findall("property[@name='border_width']")
@@ -204,15 +204,12 @@ def main():
 lint_assert('domain' in root.attrib, "interface needs to specify 
translation domain")
 
 top_level_widgets = [element for element in root.findall('object') if 
element.attrib['class'] not in IGNORED_TOP_LEVEL_WIDGETS]
-lint_assert( len(top_level_widgets) <= 1, "should be only one top-level 
widget for us to analyze, found " + str(len(top_level_widgets)))
-if len(top_level_widgets) > 1:
-return
 # eg. one file contains only a Menu, which we don't check
 if len(top_level_widgets) == 0:
 return
 
-top_level_widget = top_level_widgets[0]
-check_top_level_widget(top_level_widget)
+for top_level_widget in top_level_widgets:
+check_top_level_widget(top_level_widget)
 
 # TODO - only do this if we have a GtkDialog?
 # check button box spacing
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-07 Thread Noel (via logerrit)
 bin/lint-ui.py |5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit b03708252bb50dd2fbca0f82fa170e6d90816b82
Author: Noel 
AuthorDate: Wed Oct 7 13:36:48 2020 +0200
Commit: Noel Grandin 
CommitDate: Wed Oct 7 18:43:07 2020 +0200

lint-ui: add exclusion

Change-Id: Idae99392593c87c7d3b36e426c8d1363434786be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104059
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 0518bd5a7da4..84916229c9a0 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -122,7 +122,10 @@ def check_menu_buttons(root):
 images = button.findall("./property[@name='image']")
 assert(len(labels) <= 1)
 if len(labels) < 1 and len(images) < 1:
-lint_assert(False, "No label in GtkMenuButton with id = '" + 
button.attrib['id'] + "'", button)
+if sys.argv[1] == "vcl/uiconfig/ui/combobox.ui": and 
button.attrib['id'] == "overlaybutton":
+pass
+else:
+lint_assert(False, "No label in GtkMenuButton with id = '" + 
button.attrib['id'] + "'", button)
 
 def check_check_buttons(root):
 radios = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkCheckButton']
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-07 Thread Noel (via logerrit)
 bin/lint-ui.py |   36 +---
 1 file changed, 33 insertions(+), 3 deletions(-)

New commits:
commit c356f669e294ca978e9a41e1e8e7ccbb4e9a1a09
Author: Noel 
AuthorDate: Wed Oct 7 12:41:09 2020 +0200
Commit: Noel Grandin 
CommitDate: Wed Oct 7 15:00:23 2020 +0200

lint-ui: add exclusions for remaining capitalisation warnings

Change-Id: I572f914fa9a51f992110585ab032fb500f998bc2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104055
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 8860547bef58..16feed37e678 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -28,7 +28,7 @@ ALIGNMENT_TOP_PADDING = '6'
 MESSAGE_BOX_SPACING = '24'
 MESSAGE_BORDER_WIDTH = '12'
 
-IGNORED_WORDS = ['the', 'of', 'to', 'for', 'a', 'and', 'as', 'from', 'on', 
'into', 'by', 'at', 'or', 'do', 'in', 'when']
+IGNORED_WORDS = ['the', 'of', 'to', 'for', 'a', 'and', 'as', 'from', 'on', 
'into', 'by', 'at', 'or', 'do', 'in', 'when', 'no']
 
 # Hook the XML parser and add line number attributes
 class LineNumberingParser(ET.XMLParser):
@@ -164,14 +164,44 @@ def check_title_labels(root):
 first = True
 for word in words:
 if len(word) and word[0].islower() and (word not in IGNORED_WORDS) 
and not first:
-lint_assert(False, "The word '" + word + "' should be 
capitalized", label)
+context = title.attrib['context']
+# exclude a couple of whole sentences
+if sys.argv[1] == "cui/uiconfig/ui/optpathspage.ui" and 
context == "optpathspage|label1":
+pass
+elif sys.argv[1] == "dbaccess/uiconfig/ui/password.ui" and 
context == "password|label1":
+pass
+elif sys.argv[1] == "sc/uiconfig/scalc/ui/datastreams.ui" and 
context == "datastreams|label4":
+pass
+elif sys.argv[1] == "sc/uiconfig/scalc/ui/scgeneralpage.ui" 
and context == "scgeneralpage|label6":
+pass
+elif sys.argv[1] == "sfx2/uiconfig/ui/documentfontspage.ui" 
and context == "documentfontspage|fontScriptFrameLabel":
+pass
+elif sys.argv[1] == 
"sw/uiconfig/swriter/ui/testmailsettings.ui" and context == 
"testmailsettings|label8":
+pass
+elif sys.argv[1] == "sw/uiconfig/swriter/ui/optcomparison.ui" 
and context == "optcomparison|setting":
+pass
+elif sys.argv[1] == "sw/uiconfig/swriter/ui/optcompatpage.ui" 
and context == "optcompatpage|label11":
+pass
+elif sys.argv[1] == "sw/uiconfig/swriter/ui/optcaptionpage.ui" 
and context == "optcaptionpage|label1":
+pass
+elif sys.argv[1] == 
"sw/uiconfig/swriter/ui/mmresultemaildialog.ui" and context == 
"mmresultemaildialog|attachft":
+pass
+elif sys.argv[1] == "sw/uiconfig/swriter/ui/mailmerge.ui" and 
context == "mailmerge|singledocument":
+pass
+elif sys.argv[1] == "cui/uiconfig/ui/acorexceptpage.ui" and 
context == "acorexceptpage|label2":
+pass
+elif sys.argv[1] == 
"dbaccess/uiconfig/ui/dbwizmysqlintropage.ui" and context == 
"dbwizmysqlintropage|label1":
+pass
+else:
+lint_assert(False, "The word '" + word + "' should be 
capitalized", label)
 first = False
 
 def main():
 tree = ET.parse(sys.argv[1], parser=LineNumberingParser())
 root = tree.getroot()
 
-lint_assert('domain' in root.attrib, "interface needs to specific 
translation domain")
+if sys.argv[1] != "libreofficekit/qa/gtktiledviewer/gtv.ui":
+lint_assert('domain' in root.attrib, "interface needs to specify 
translation domain")
 
 top_level_widgets = [element for element in root.findall('object') if 
element.attrib['class'] not in IGNORED_TOP_LEVEL_WIDGETS]
 lint_assert( len(top_level_widgets) <= 1, "should be only one top-level 
widget for us to analyze, found " + str(len(top_level_widgets)))
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py chart2/uiconfig cui/uiconfig dbaccess/uiconfig extensions/uiconfig sc/uiconfig sd/uiconfig sfx2/uiconfig sw/uiconfig vcl/qa vcl/uiconfig

2020-10-06 Thread Noel (via logerrit)
 bin/lint-ui.py |2 +-
 chart2/uiconfig/ui/sidebarseries.ui|2 +-
 chart2/uiconfig/ui/tp_3D_SceneIllumination.ui  |4 ++--
 cui/uiconfig/ui/numberingformatpage.ui |2 +-
 cui/uiconfig/ui/optfltrembedpage.ui|2 +-
 cui/uiconfig/ui/optlingupage.ui|4 ++--
 cui/uiconfig/ui/optviewpage.ui |4 ++--
 cui/uiconfig/ui/paraindentspacing.ui   |2 +-
 dbaccess/uiconfig/ui/userdetailspage.ui|2 +-
 extensions/uiconfig/sabpilot/ui/gridfieldsselectionpage.ui |2 +-
 extensions/uiconfig/sabpilot/ui/groupradioselectionpage.ui |2 +-
 extensions/uiconfig/scanner/ui/sanedialog.ui   |2 +-
 sc/uiconfig/scalc/ui/datafielddialog.ui|2 +-
 sc/uiconfig/scalc/ui/optcalculatepage.ui   |4 ++--
 sc/uiconfig/scalc/ui/retypepassdialog.ui   |4 ++--
 sd/uiconfig/simpress/ui/dockinganimation.ui|2 +-
 sfx2/uiconfig/ui/documentfontspage.ui  |2 +-
 sfx2/uiconfig/ui/helpindexpage.ui  |2 +-
 sw/uiconfig/swriter/ui/flddbpage.ui|2 +-
 sw/uiconfig/swriter/ui/mmresultemaildialog.ui  |4 ++--
 sw/uiconfig/swriter/ui/mmresultprintdialog.ui  |4 ++--
 sw/uiconfig/swriter/ui/mmresultsavedialog.ui   |2 +-
 sw/uiconfig/swriter/ui/mmsendmails.ui  |4 ++--
 sw/uiconfig/swriter/ui/optcompatpage.ui|2 +-
 sw/uiconfig/swriter/ui/optformataidspage.ui|2 +-
 sw/uiconfig/swriter/ui/viewoptionspage.ui  |2 +-
 vcl/qa/cppunit/builder/demo.ui |6 +++---
 vcl/uiconfig/ui/printdialog.ui |2 +-
 28 files changed, 38 insertions(+), 38 deletions(-)

New commits:
commit 8eff280bc08ec3d7b2312ae4ee48df4d7328b7de
Author: Noel 
AuthorDate: Fri Oct 2 12:35:26 2020 +0200
Commit: Noel Grandin 
CommitDate: Wed Oct 7 08:15:06 2020 +0200

ui files: fix some capitalisation issues

Change-Id: Id2efb6e5f1c115cb31a6afd3f988fe156c5ad56e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103829
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 124e1bf58316..8860547bef58 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -163,7 +163,7 @@ def check_title_labels(root):
 words = re.split(r'[^a-zA-Z0-9:_-]', title.text)
 first = True
 for word in words:
-if len(word) and word[0].islower() and (word not in IGNORED_WORDS 
or first):
+if len(word) and word[0].islower() and (word not in IGNORED_WORDS) 
and not first:
 lint_assert(False, "The word '" + word + "' should be 
capitalized", label)
 first = False
 
diff --git a/chart2/uiconfig/ui/sidebarseries.ui 
b/chart2/uiconfig/ui/sidebarseries.ui
index 568569464a9e..8e600fbfab8d 100644
--- a/chart2/uiconfig/ui/sidebarseries.ui
+++ b/chart2/uiconfig/ui/sidebarseries.ui
@@ -290,7 +290,7 @@
   
 True
 False
-label
+Label
 
   
 
diff --git a/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui 
b/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
index 5c7091ff26ee..b9c2e6d7c586 100644
--- a/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
+++ b/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
@@ -308,7 +308,7 @@
   
 True
 False
-_Light source
+_Light Source
 True
 BTN_LIGHT_1
 0
@@ -391,7 +391,7 @@
   
 True
 False
-_Ambient light
+_Ambient Light
 True
 LB_AMBIENTLIGHT
 0
diff --git a/cui/uiconfig/ui/numberingformatpage.ui 
b/cui/uiconfig/ui/numberingformatpage.ui
index f19a0b797835..c92c42f55749 100644
--- a/cui/uiconfig/ui/numberingformatpage.ui
+++ b/cui/uiconfig/ui/numberingformatpage.ui
@@ -188,7 +188,7 @@
   
 True
 False
-_Format code
+_Format Code
 True
 formatted
 
diff --git a/cui/uiconfig/ui/optfltrembedpage.ui 
b/cui/uiconfig/ui/optfltrembedpage.ui
index 53740a863a72..50e7ee89d6aa 100644
--- a/cui/uiconfig/ui/optfltrembedpage.ui
+++ b/cui/uiconfig/ui/optfltrembedpage.ui
@@ -355,7 +355,7 @@
   
 True
 False
-Lock files
+Lock Files
 
   
 
diff --git a/cui/uiconfig/ui/optlingupage.ui b/cui/uiconfig/ui/optlingupage.ui
index e3172620e90c..3f57

[Libreoffice-commits] core.git: bin/lint-ui.py cui/uiconfig dbaccess/uiconfig fpicker/uiconfig sc/uiconfig sfx2/uiconfig sw/uiconfig

2020-10-06 Thread Noel Grandin (via logerrit)
 bin/lint-ui.py  |   13 +++--
 cui/uiconfig/ui/certdialog.ui   |1 +
 cui/uiconfig/ui/macroselectordialog.ui  |1 +
 cui/uiconfig/ui/specialcharacters.ui|1 +
 cui/uiconfig/ui/tsaurldialog.ui |2 ++
 dbaccess/uiconfig/ui/collectionviewdialog.ui|3 +++
 fpicker/uiconfig/ui/remotefilesdialog.ui|1 +
 sc/uiconfig/scalc/ui/analysisofvariancedialog.ui|1 +
 sc/uiconfig/scalc/ui/chisquaretestdialog.ui |1 +
 sc/uiconfig/scalc/ui/correlationdialog.ui   |1 +
 sc/uiconfig/scalc/ui/covariancedialog.ui|1 +
 sc/uiconfig/scalc/ui/descriptivestatisticsdialog.ui |1 +
 sc/uiconfig/scalc/ui/exponentialsmoothingdialog.ui  |1 +
 sc/uiconfig/scalc/ui/fourieranalysisdialog.ui   |1 +
 sc/uiconfig/scalc/ui/movingaveragedialog.ui |1 +
 sc/uiconfig/scalc/ui/randomnumbergenerator.ui   |2 ++
 sc/uiconfig/scalc/ui/regressiondialog.ui|1 +
 sc/uiconfig/scalc/ui/samplingdialog.ui  |1 +
 sc/uiconfig/scalc/ui/ttestdialog.ui |1 +
 sc/uiconfig/scalc/ui/ztestdialog.ui |1 +
 sfx2/uiconfig/ui/versioncommentdialog.ui|1 +
 sw/uiconfig/swriter/ui/bibliographyentry.ui |1 +
 sw/uiconfig/swriter/ui/indexentry.ui|1 +
 23 files changed, 29 insertions(+), 10 deletions(-)

New commits:
commit 3d056824c687df567c05bf31554fa40ea2baef18
Author: Noel Grandin 
AuthorDate: Tue Oct 6 16:19:19 2020 +0200
Commit: Noel Grandin 
CommitDate: Wed Oct 7 08:14:42 2020 +0200

Revert "lint-ui: check that we only have one has_default==True"

This reverts commit c9e3952e76a9c06d5a1d2f583829ce9eb5b9df64.

Reason for revert: Some of the code manipulates visibility 
programmatically, and it is quite fine to has more than one has_default if only 
one of them is visible at a time.

Change-Id: Ia4f565c7d21d232d3038c3489952782c8e2a7be5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103977
Tested-by: Noel Grandin 
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index c3344c3a3b51..124e1bf58316 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -76,23 +76,16 @@ def check_top_level_widget(element):
 #lint_assert(border_width.text == BORDER_WIDTH,
 #"Top level 'border_width' property should be " + 
BORDER_WIDTH, border_width)
 
-# check that
-# (*) any widget which has 'has-default' also has 'can-default'
-# (*) we have at most one has-default widget
-# 'has-default' means that when ENTER is pressed, this widget is 
triggered, normally the OK button
-has_default_count = 0
+# check that any widget which has 'has-default' also has 'can-default'
 for widget in element.findall('.//object'):
 if not widget.attrib['class']:
 continue
-child_widget_type = widget.attrib['class']
+widget_type = widget.attrib['class']
 has_defaults = widget.findall("./property[@name='has_default']")
 if len(has_defaults) > 0 and has_defaults[0].text == "True":
-has_default_count += 1
 can_defaults = widget.findall("./property[@name='can_default']")
 lint_assert(len(can_defaults)>0 and can_defaults[0].text == "True",
-"has_default without can_default in " + child_widget_type + " 
with id = '" + widget.attrib['id'] + "'", widget)
-lint_assert(has_default_count <= 1,
-"more than one child with has_default=='True' in top-level widget " + 
widget_type, element)
+"has_default without can_default in " + widget_type + " with 
id = '" + widget.attrib['id'] + "'", widget)
 
 def check_button_box_spacing(element):
 spacing = element.findall("property[@name='spacing']")
diff --git a/cui/uiconfig/ui/certdialog.ui b/cui/uiconfig/ui/certdialog.ui
index 0794e6278c4b..39d84c5df216 100644
--- a/cui/uiconfig/ui/certdialog.ui
+++ b/cui/uiconfig/ui/certdialog.ui
@@ -41,6 +41,7 @@
 True
 True
 True
+True
 True
 True
 
diff --git a/cui/uiconfig/ui/macroselectordialog.ui 
b/cui/uiconfig/ui/macroselectordialog.ui
index d9757531fd3e..ea485c283a37 100644
--- a/cui/uiconfig/ui/macroselectordialog.ui
+++ b/cui/uiconfig/ui/macroselectordialog.ui
@@ -42,6 +42,7 @@
 Add
 True
 True
+True
 True
 True
   
diff --git a/cui/uiconfig/ui/specialcharacters.ui 
b/cui/uiconfig/ui/specialcharacters.ui
index 684031a9fe53..9e8e5323828c 100644
--- a/cui/uiconfig/ui/specialcharacters.ui
+++ b/cui/uiconfig/ui/specialcharacters.ui
@@ -24,6 +24,7 @@
 _Insert
 True
 True
+

[Libreoffice-commits] core.git: bin/lint-ui.py cui/uiconfig dbaccess/uiconfig fpicker/uiconfig sc/uiconfig sfx2/uiconfig sw/uiconfig

2020-10-05 Thread Noel (via logerrit)
 bin/lint-ui.py  |   13 ++---
 cui/uiconfig/ui/certdialog.ui   |1 -
 cui/uiconfig/ui/macroselectordialog.ui  |1 -
 cui/uiconfig/ui/specialcharacters.ui|1 -
 cui/uiconfig/ui/tsaurldialog.ui |2 --
 dbaccess/uiconfig/ui/collectionviewdialog.ui|3 ---
 fpicker/uiconfig/ui/remotefilesdialog.ui|1 -
 sc/uiconfig/scalc/ui/analysisofvariancedialog.ui|1 -
 sc/uiconfig/scalc/ui/chisquaretestdialog.ui |1 -
 sc/uiconfig/scalc/ui/correlationdialog.ui   |1 -
 sc/uiconfig/scalc/ui/covariancedialog.ui|1 -
 sc/uiconfig/scalc/ui/descriptivestatisticsdialog.ui |1 -
 sc/uiconfig/scalc/ui/exponentialsmoothingdialog.ui  |1 -
 sc/uiconfig/scalc/ui/fourieranalysisdialog.ui   |1 -
 sc/uiconfig/scalc/ui/movingaveragedialog.ui |1 -
 sc/uiconfig/scalc/ui/randomnumbergenerator.ui   |2 --
 sc/uiconfig/scalc/ui/regressiondialog.ui|1 -
 sc/uiconfig/scalc/ui/samplingdialog.ui  |1 -
 sc/uiconfig/scalc/ui/ttestdialog.ui |1 -
 sc/uiconfig/scalc/ui/ztestdialog.ui |1 -
 sfx2/uiconfig/ui/versioncommentdialog.ui|1 -
 sw/uiconfig/swriter/ui/bibliographyentry.ui |1 -
 sw/uiconfig/swriter/ui/indexentry.ui|1 -
 23 files changed, 10 insertions(+), 29 deletions(-)

New commits:
commit c9e3952e76a9c06d5a1d2f583829ce9eb5b9df64
Author: Noel 
AuthorDate: Mon Oct 5 10:58:01 2020 +0200
Commit: Noel Grandin 
CommitDate: Mon Oct 5 18:33:18 2020 +0200

lint-ui: check that we only have one has_default==True

Change-Id: Ic61e14c3b98a85a5f05b448db9805ac296c041ec
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103953
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 124e1bf58316..c3344c3a3b51 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -76,16 +76,23 @@ def check_top_level_widget(element):
 #lint_assert(border_width.text == BORDER_WIDTH,
 #"Top level 'border_width' property should be " + 
BORDER_WIDTH, border_width)
 
-# check that any widget which has 'has-default' also has 'can-default'
+# check that
+# (*) any widget which has 'has-default' also has 'can-default'
+# (*) we have at most one has-default widget
+# 'has-default' means that when ENTER is pressed, this widget is 
triggered, normally the OK button
+has_default_count = 0
 for widget in element.findall('.//object'):
 if not widget.attrib['class']:
 continue
-widget_type = widget.attrib['class']
+child_widget_type = widget.attrib['class']
 has_defaults = widget.findall("./property[@name='has_default']")
 if len(has_defaults) > 0 and has_defaults[0].text == "True":
+has_default_count += 1
 can_defaults = widget.findall("./property[@name='can_default']")
 lint_assert(len(can_defaults)>0 and can_defaults[0].text == "True",
-"has_default without can_default in " + widget_type + " with 
id = '" + widget.attrib['id'] + "'", widget)
+"has_default without can_default in " + child_widget_type + " 
with id = '" + widget.attrib['id'] + "'", widget)
+lint_assert(has_default_count <= 1,
+"more than one child with has_default=='True' in top-level widget " + 
widget_type, element)
 
 def check_button_box_spacing(element):
 spacing = element.findall("property[@name='spacing']")
diff --git a/cui/uiconfig/ui/certdialog.ui b/cui/uiconfig/ui/certdialog.ui
index 39d84c5df216..0794e6278c4b 100644
--- a/cui/uiconfig/ui/certdialog.ui
+++ b/cui/uiconfig/ui/certdialog.ui
@@ -41,7 +41,6 @@
 True
 True
 True
-True
 True
 True
 
diff --git a/cui/uiconfig/ui/macroselectordialog.ui 
b/cui/uiconfig/ui/macroselectordialog.ui
index ea485c283a37..d9757531fd3e 100644
--- a/cui/uiconfig/ui/macroselectordialog.ui
+++ b/cui/uiconfig/ui/macroselectordialog.ui
@@ -42,7 +42,6 @@
 Add
 True
 True
-True
 True
 True
   
diff --git a/cui/uiconfig/ui/specialcharacters.ui 
b/cui/uiconfig/ui/specialcharacters.ui
index 9e8e5323828c..684031a9fe53 100644
--- a/cui/uiconfig/ui/specialcharacters.ui
+++ b/cui/uiconfig/ui/specialcharacters.ui
@@ -24,7 +24,6 @@
 _Insert
 True
 True
-True
 True
 True
   
diff --git a/cui/uiconfig/ui/tsaurldialog.ui b/cui/uiconfig/ui/tsaurldialog.ui
index 3d005f3faa22..6bcceb4bfeeb 100644
--- a/cui/uiconfig/ui/tsaurldialog.ui
+++ b/cui/uiconfig/ui/tsaurldialog.ui
@@ -51

[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-05 Thread Noel (via logerrit)
 bin/lint-ui.py |   45 +
 1 file changed, 25 insertions(+), 20 deletions(-)

New commits:
commit a52246c4079de02f927582b0e8a476e9edafbc99
Author: Noel 
AuthorDate: Mon Oct 5 11:40:43 2020 +0200
Commit: Noel Grandin 
CommitDate: Mon Oct 5 16:21:35 2020 +0200

lint-ui: disable some checks

which no-one seems to care about at the moment, since there are so
many failures.

Change-Id: Id5c589dc328b553a9052cdd94a4c8d3d009a0f3e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103954
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index a4631e760b4c..124e1bf58316 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -64,17 +64,17 @@ def check_top_level_widget(element):
 
 # check border_width property
 border_width_properties = element.findall("property[@name='border_width']")
-# This one fires so often I don't think it's useful
+# TODO reenable when we are ready to fix
 #if len(border_width_properties) < 1:
 #lint_assert(False, "No border_width set on top level widget. Should 
probably be " + BORDER_WIDTH)
-if len(border_width_properties) == 1:
-border_width = border_width_properties[0]
-if widget_type == "GtkMessageDialog":
-lint_assert(border_width.text == MESSAGE_BORDER_WIDTH,
-"Top level 'border_width' property should be " + 
MESSAGE_BORDER_WIDTH, border_width)
-else:
-lint_assert(border_width.text == BORDER_WIDTH,
-"Top level 'border_width' property should be " + 
BORDER_WIDTH, border_width)
+#if len(border_width_properties) == 1:
+#border_width = border_width_properties[0]
+#if widget_type == "GtkMessageDialog":
+#lint_assert(border_width.text == MESSAGE_BORDER_WIDTH,
+#"Top level 'border_width' property should be " + 
MESSAGE_BORDER_WIDTH, border_width)
+#else:
+#lint_assert(border_width.text == BORDER_WIDTH,
+#"Top level 'border_width' property should be " + 
BORDER_WIDTH, border_width)
 
 # check that any widget which has 'has-default' also has 'can-default'
 for widget in element.findall('.//object'):
@@ -96,7 +96,7 @@ def check_button_box_spacing(element):
 def check_message_box_spacing(element):
 spacing = element.findall("property[@name='spacing']")
 lint_assert(len(spacing) > 0 and spacing[0].text == MESSAGE_BOX_SPACING,
-"Button box 'spacing' should be " + MESSAGE_BOX_SPACING,
+"Message box 'spacing' should be " + MESSAGE_BOX_SPACING,
 element)
 
 def check_radio_buttons(root):
@@ -146,12 +146,13 @@ def check_frames(root):
 def check_alignment_top_padding(alignment):
 top_padding_properties = 
alignment.findall("./property[@name='top_padding']")
 assert len(top_padding_properties) <= 1
-if len(top_padding_properties) < 1:
-lint_assert(False, "No GtkAlignment 'top_padding' set. Should probably 
be " + ALIGNMENT_TOP_PADDING, alignment)
-if len(top_padding_properties) == 1:
-top_padding = top_padding_properties[0]
-lint_assert(top_padding.text == ALIGNMENT_TOP_PADDING,
-"GtkAlignment 'top_padding' should be " + 
ALIGNMENT_TOP_PADDING, alignment)
+# TODO reenable when we are ready to fix
+# if len(top_padding_properties) < 1:
+# lint_assert(False, "No GtkAlignment 'top_padding' set. Should 
probably be " + ALIGNMENT_TOP_PADDING, alignment)
+#if len(top_padding_properties) == 1:
+#top_padding = top_padding_properties[0]
+#lint_assert(top_padding.text == ALIGNMENT_TOP_PADDING,
+#"GtkAlignment 'top_padding' should be " + 
ALIGNMENT_TOP_PADDING, alignment)
 
 def check_title_labels(root):
 labels = root.findall(".//child[@type='label']")
@@ -188,20 +189,24 @@ def main():
 button_box = top_level_widget.findall("./child/object[@id='dialog-vbox1']")
 if len(button_box) > 0:
 element = button_box[0]
-check_button_box_spacing(element)
+# TODO reenable when we are ready to fix
+#check_button_box_spacing(element)
 
 message_box = 
top_level_widget.findall("./child/object[@id='messagedialog-vbox']")
 if len(message_box) > 0:
 element = message_box[0]
-check_message_box_spacing(element)
+# TODO reenable when we are ready to fix
+#check_message_box_spacing(element)
 
 check_frames(root)
 
-check_radio_buttons(root)
+# TODO reenable when we are ready to fix
+#check_radio_buttons(root)
 
 check_menu_buttons(root)
 
-check_check_buttons(root)
+# TODO reenable when we are ready to fix
+#check_check_buttons(root)
 
 check_title_labels(root)
 
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://

[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-05 Thread Noel (via logerrit)
 bin/lint-ui.py |6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

New commits:
commit 5451380641a809b845503860f2bd05497b914151
Author: Noel 
AuthorDate: Mon Oct 5 08:46:04 2020 +0200
Commit: Noel Grandin 
CommitDate: Mon Oct 5 10:37:10 2020 +0200

lint-ui: fix GtkAdjustment check

Change-Id: Ie369cd67f2ac3947c2f4817fb76656216c6df2fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103943
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 26c011f2637a..4f13320a23f3 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -98,11 +98,11 @@ def check_radio_buttons(root):
 
 def check_adjustments(root):
 adjustments = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkAdjustment']
-for adjusment in adjustments:
-uppers = radio.findall("./property[@name='upper']")
+for adjustment in adjustments:
+uppers = adjustment.findall("./property[@name='upper']")
 assert len(uppers) <= 1
 if len(uppers) < 1:
-lint_assert(False, "No upper in GtkAdjustment with id = '" + 
radio.attrib['id'] + "'", radio)
+lint_assert(False, "No upper in GtkAdjustment with id = '" + 
adjustment.attrib['id'] + "'", adjustment)
 
 def check_menu_buttons(root):
 buttons = [element for element in root.findall('.//object') if 
element.attrib['class'] == "GtkMenuButton"]
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-02 Thread Noel (via logerrit)
 bin/lint-ui.py |8 
 1 file changed, 8 insertions(+)

New commits:
commit 4d19361336b32585d5cd5bd5faccba4467b7d5e8
Author: Noel 
AuthorDate: Fri Oct 2 12:56:09 2020 +0200
Commit: Noel Grandin 
CommitDate: Fri Oct 2 19:02:20 2020 +0200

lint-ui: add check for upper in GtkAdjustment

Change-Id: I3a9859dbb4dbb0aeb2446176a239843a19d40e1e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103833
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 5dc33eaaec2a..26c011f2637a 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -96,6 +96,14 @@ def check_radio_buttons(root):
 if len(radio_underlines) < 1:
 lint_assert(False, "No use_underline in GtkRadioButton with id = 
'" + radio.attrib['id'] + "'", radio)
 
+def check_adjustments(root):
+adjustments = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkAdjustment']
+for adjusment in adjustments:
+uppers = radio.findall("./property[@name='upper']")
+assert len(uppers) <= 1
+if len(uppers) < 1:
+lint_assert(False, "No upper in GtkAdjustment with id = '" + 
radio.attrib['id'] + "'", radio)
+
 def check_menu_buttons(root):
 buttons = [element for element in root.findall('.//object') if 
element.attrib['class'] == "GtkMenuButton"]
 for button in buttons:
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-02 Thread Noel (via logerrit)
 bin/lint-ui.py |3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit d9c763e5428379166b96a46295a1cb41120e6eea
Author: Noel 
AuthorDate: Fri Oct 2 10:29:17 2020 +0200
Commit: Noel Grandin 
CommitDate: Fri Oct 2 13:08:30 2020 +0200

lint-ui: add some more valid top-level widgets

Change-Id: Ifedeb65c13b5889941da5dbd7fa215f5e380e64e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103819
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index fd578f72694d..5dc33eaaec2a 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -18,7 +18,8 @@ import re
 
 DEFAULT_WARNING_STR = 'Lint assertion failed'
 
-POSSIBLE_TOP_LEVEL_WIDGETS = ['GtkDialog', 'GtkMessageDialog', 'GtkBox', 
'GtkFrame', 'GtkGrid', 'GtkAssistant']
+POSSIBLE_TOP_LEVEL_WIDGETS = ['GtkDialog', 'GtkMessageDialog', 'GtkBox', 
'GtkFrame', 'GtkGrid',
+'GtkAssistant', 'GtkToolbar', 'GtkNotebook', 'GtkPopover', 'GtkWindow', 
'GtkPaned', 'GtkScrolledWindow']
 IGNORED_TOP_LEVEL_WIDGETS = ['GtkAdjustment', 'GtkImage', 'GtkListStore', 
'GtkSizeGroup', 'GtkMenu', 'GtkTextBuffer', 'GtkTreeStore']
 BORDER_WIDTH = '6'
 BUTTON_BOX_SPACING = '12'
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-02 Thread Noel (via logerrit)
 bin/lint-ui.py |   60 -
 1 file changed, 43 insertions(+), 17 deletions(-)

New commits:
commit 2bfcd0fa8439112c66fd82adc6f860b5d93f789b
Author: Noel 
AuthorDate: Fri Oct 2 10:53:25 2020 +0200
Commit: Noel Grandin 
CommitDate: Fri Oct 2 12:44:33 2020 +0200

lint-ui: put line numbers in error messages

Change-Id: I00c864684fefd1e4afb8370b6255cbe623b63523
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103821
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 9530cb9ac7a8..fd578f72694d 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -10,6 +10,9 @@
 # a consistent look for dialogs
 
 import sys
+# Force python XML parser not faster C accelerators
+# because we can't hook the C implementation
+sys.modules['_elementtree'] = None
 import xml.etree.ElementTree as ET
 import re
 
@@ -26,9 +29,31 @@ MESSAGE_BORDER_WIDTH = '12'
 
 IGNORED_WORDS = ['the', 'of', 'to', 'for', 'a', 'and', 'as', 'from', 'on', 
'into', 'by', 'at', 'or', 'do', 'in', 'when']
 
-def lint_assert(predicate, warning=DEFAULT_WARNING_STR):
+# Hook the XML parser and add line number attributes
+class LineNumberingParser(ET.XMLParser):
+def _start(self, *args, **kwargs):
+# Here we assume the default XML parser which is expat
+# and copy its element position attributes into output Elements
+element = super(self.__class__, self)._start(*args, **kwargs)
+element._start_line_number = self.parser.CurrentLineNumber
+element._start_column_number = self.parser.CurrentColumnNumber
+element._start_byte_index = self.parser.CurrentByteIndex
+return element
+
+def _end(self, *args, **kwargs):
+element = super(self.__class__, self)._end(*args, **kwargs)
+element._end_line_number = self.parser.CurrentLineNumber
+element._end_column_number = self.parser.CurrentColumnNumber
+element._end_byte_index = self.parser.CurrentByteIndex
+return element
+
+
+def lint_assert(predicate, warning=DEFAULT_WARNING_STR, node=None):
 if not predicate:
-print("* " + warning)
+if not(node is None):
+print(sys.argv[1] + ":" + str(node._start_line_number) + ": " + 
warning)
+else:
+print(sys.argv[1] + ": " + warning)
 
 def check_top_level_widget(element):
 # check widget type
@@ -45,20 +70,22 @@ def check_top_level_widget(element):
 border_width = border_width_properties[0]
 if widget_type == "GtkMessageDialog":
 lint_assert(border_width.text == MESSAGE_BORDER_WIDTH,
-"Top level 'border_width' property should be " + 
MESSAGE_BORDER_WIDTH)
+"Top level 'border_width' property should be " + 
MESSAGE_BORDER_WIDTH, border_width)
 else:
 lint_assert(border_width.text == BORDER_WIDTH,
-"Top level 'border_width' property should be " + 
BORDER_WIDTH)
+"Top level 'border_width' property should be " + 
BORDER_WIDTH, border_width)
 
 def check_button_box_spacing(element):
 spacing = element.findall("property[@name='spacing']")
 lint_assert(len(spacing) > 0 and spacing[0].text == BUTTON_BOX_SPACING,
-"Button box 'spacing' should be " + BUTTON_BOX_SPACING)
+"Button box 'spacing' should be " + BUTTON_BOX_SPACING,
+element)
 
 def check_message_box_spacing(element):
 spacing = element.findall("property[@name='spacing']")
 lint_assert(len(spacing) > 0 and spacing[0].text == MESSAGE_BOX_SPACING,
-"Button box 'spacing' should be " + MESSAGE_BOX_SPACING)
+"Button box 'spacing' should be " + MESSAGE_BOX_SPACING,
+element)
 
 def check_radio_buttons(root):
 radios = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkRadioButton']
@@ -66,7 +93,7 @@ def check_radio_buttons(root):
 radio_underlines = radio.findall("./property[@name='use_underline']")
 assert len(radio_underlines) <= 1
 if len(radio_underlines) < 1:
-lint_assert(False, "No use_underline in GtkRadioButton with id = 
'" + radio.attrib['id'] + "'")
+lint_assert(False, "No use_underline in GtkRadioButton with id = 
'" + radio.attrib['id'] + "'", radio)
 
 def check_menu_buttons(root):
 buttons = [element for element in root.findall('.//object') if 
element.attrib['class'] == "GtkMenuButton"]
@@ -75,7 +102,7 @@ def check_menu_buttons(root):
 images = button.findall("./property[@name='image']")
 assert(len(labels) <= 1)
 if len(labels) < 1 and len(images) < 1:
-lint_assert(False, "No label in GtkMenuButton with id = '" + 
button.attrib['id'] + "'")
+lint_assert(False, "No label in GtkMenuButton with id = '" + 
button.attrib['id'] + "'", button)
 
 def check_c

[Libreoffice-commits] core.git: bin/lint-ui.py chart2/uiconfig cui/uiconfig sc/uiconfig sd/uiconfig sw/uiconfig

2020-10-02 Thread Noel (via logerrit)
 bin/lint-ui.py  |   11 +++
 chart2/uiconfig/ui/tp_3D_SceneIllumination.ui   |2 ++
 cui/uiconfig/ui/additionsdialog.ui  |1 +
 cui/uiconfig/ui/menuassignpage.ui   |2 ++
 sc/uiconfig/scalc/ui/scenariodialog.ui  |1 +
 sd/uiconfig/sdraw/ui/copydlg.ui |2 ++
 sd/uiconfig/simpress/ui/customanimationeffecttab.ui |1 +
 sw/uiconfig/swriter/ui/optredlinepage.ui|4 
 sw/uiconfig/swriter/ui/watermarkdialog.ui   |1 +
 9 files changed, 25 insertions(+)

New commits:
commit 2e3afaebd027d0280b871c3515c4999b7912692a
Author: Noel 
AuthorDate: Thu Oct 1 16:26:59 2020 +0200
Commit: Caolán McNamara 
CommitDate: Fri Oct 2 10:17:40 2020 +0200

lint-ui.py check that GtkMenuButton has a label property

Change-Id: Ib1aa8ee050d2425387ddc1080f11f0ddfc2f9236
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103770
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 7148838c1833..9530cb9ac7a8 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -68,6 +68,15 @@ def check_radio_buttons(root):
 if len(radio_underlines) < 1:
 lint_assert(False, "No use_underline in GtkRadioButton with id = 
'" + radio.attrib['id'] + "'")
 
+def check_menu_buttons(root):
+buttons = [element for element in root.findall('.//object') if 
element.attrib['class'] == "GtkMenuButton"]
+for button in buttons:
+labels = button.findall("./property[@name='label']")
+images = button.findall("./property[@name='image']")
+assert(len(labels) <= 1)
+if len(labels) < 1 and len(images) < 1:
+lint_assert(False, "No label in GtkMenuButton with id = '" + 
button.attrib['id'] + "'")
+
 def check_check_buttons(root):
 radios = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkCheckButton']
 for radio in radios:
@@ -145,6 +154,8 @@ def main():
 
 check_radio_buttons(root)
 
+check_menu_buttons(root)
+
 check_check_buttons(root)
 
 check_title_labels(root)
diff --git a/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui 
b/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
index 3f9564e7e33c..5c7091ff26ee 100644
--- a/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
+++ b/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
@@ -253,6 +253,7 @@
 12
 
   
+
 True
 True
 False
@@ -342,6 +343,7 @@
 12
 
   
+
 True
 True
 False
diff --git a/cui/uiconfig/ui/additionsdialog.ui 
b/cui/uiconfig/ui/additionsdialog.ui
index 2d9ccc3fb318..3ce21025e5e8 100644
--- a/cui/uiconfig/ui/additionsdialog.ui
+++ b/cui/uiconfig/ui/additionsdialog.ui
@@ -194,6 +194,7 @@
 
 
   
+
 True
 True
 True
diff --git a/cui/uiconfig/ui/menuassignpage.ui 
b/cui/uiconfig/ui/menuassignpage.ui
index 7081489cfe3c..c7ba93e5253b 100644
--- a/cui/uiconfig/ui/menuassignpage.ui
+++ b/cui/uiconfig/ui/menuassignpage.ui
@@ -498,6 +498,7 @@
 
 
   
+
 True
 True
 end
@@ -520,6 +521,7 @@
 
 
   
+
 True
 True
 end
diff --git a/sc/uiconfig/scalc/ui/scenariodialog.ui 
b/sc/uiconfig/scalc/ui/scenariodialog.ui
index 02f4e7d8ef4c..e2545950b4ab 100644
--- a/sc/uiconfig/scalc/ui/scenariodialog.ui
+++ b/sc/uiconfig/scalc/ui/scenariodialog.ui
@@ -302,6 +302,7 @@
 
 
   
+
 True
 True
 False
diff --git a/sd/uiconfig/sdraw/ui/copydlg.ui b/sd/uiconfig/sdraw/ui/copydlg.ui
index ed202c2aa2e5..b7a710d423a6 100644
--- a/sd/uiconfig/sdraw/ui/copydlg.ui
+++ b/sd/uiconfig/sdraw/ui/copydlg.ui
@@ -489,6 +489,7 @@
 
 
   
+
 True
 True
 False
@@ -511,6 +512,7 @@
 
 
   
+
 True
 True
 False
diff --git a/sd/uiconfig/simpress/ui/customanimationeffecttab.ui 
b/sd/uiconfig/simpr

[Libreoffice-commits] core.git: bin/lint-ui.py

2020-10-01 Thread Noel (via logerrit)
 bin/lint-ui.py |   30 ++
 1 file changed, 18 insertions(+), 12 deletions(-)

New commits:
commit ac6a589e25d014fee3c971ef4588bd64166e6a4b
Author: Noel 
AuthorDate: Thu Oct 1 15:15:37 2020 +0200
Commit: Noel Grandin 
CommitDate: Thu Oct 1 19:45:36 2020 +0200

improvements to lint-ui script

(*) update to python3
(*) add to list of ignored widgets
(*) add to list of valid top-level widgets
(*) remove border_width check, fires a **lot**
(*) improve some checks so they don't generate python exceptions
(*) make some checks more informative

Change-Id: Ie0b1492eaf752aae8be1ab670bf731015eb454d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103767
Tested-by: Jenkins
Reviewed-by: Noel Grandin 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 91c68bb0af60..7148838c1833 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #
 # This file is part of the LibreOffice project.
 #
@@ -15,8 +15,8 @@ import re
 
 DEFAULT_WARNING_STR = 'Lint assertion failed'
 
-POSSIBLE_TOP_LEVEL_WIDGETS = ['GtkDialog', 'GtkMessageDialog', 'GtkBox', 
'GtkFrame', 'GtkGrid']
-IGNORED_TOP_LEVEL_WIDGETS = ['GtkAdjustment', 'GtkImage', 'GtkListStore', 
'GtkSizeGroup', 'GtkMenu', 'GtkTextBuffer']
+POSSIBLE_TOP_LEVEL_WIDGETS = ['GtkDialog', 'GtkMessageDialog', 'GtkBox', 
'GtkFrame', 'GtkGrid', 'GtkAssistant']
+IGNORED_TOP_LEVEL_WIDGETS = ['GtkAdjustment', 'GtkImage', 'GtkListStore', 
'GtkSizeGroup', 'GtkMenu', 'GtkTextBuffer', 'GtkTreeStore']
 BORDER_WIDTH = '6'
 BUTTON_BOX_SPACING = '12'
 ALIGNMENT_TOP_PADDING = '6'
@@ -34,12 +34,13 @@ def check_top_level_widget(element):
 # check widget type
 widget_type = element.attrib['class']
 lint_assert(widget_type in POSSIBLE_TOP_LEVEL_WIDGETS,
-"Top level widget should be 'GtkDialog', 'GtkFrame', 'GtkBox', 
or 'GtkGrid'")
+"Top level widget should be 'GtkDialog', 'GtkFrame', 'GtkBox', 
or 'GtkGrid', but is " + widget_type)
 
 # check border_width property
 border_width_properties = element.findall("property[@name='border_width']")
-if len(border_width_properties) < 1:
-lint_assert(False, "No border_width set on top level widget. Should 
probably be " + BORDER_WIDTH)
+# This one fires so often I don't think it's useful
+#if len(border_width_properties) < 1:
+#lint_assert(False, "No border_width set on top level widget. Should 
probably be " + BORDER_WIDTH)
 if len(border_width_properties) == 1:
 border_width = border_width_properties[0]
 if widget_type == "GtkMessageDialog":
@@ -50,13 +51,13 @@ def check_top_level_widget(element):
 "Top level 'border_width' property should be " + 
BORDER_WIDTH)
 
 def check_button_box_spacing(element):
-spacing = element.findall("property[@name='spacing']")[0]
-lint_assert(spacing.text == BUTTON_BOX_SPACING,
+spacing = element.findall("property[@name='spacing']")
+lint_assert(len(spacing) > 0 and spacing[0].text == BUTTON_BOX_SPACING,
 "Button box 'spacing' should be " + BUTTON_BOX_SPACING)
 
 def check_message_box_spacing(element):
-spacing = element.findall("property[@name='spacing']")[0]
-lint_assert(spacing.text == MESSAGE_BOX_SPACING,
+spacing = element.findall("property[@name='spacing']")
+lint_assert(len(spacing) > 0 and spacing[0].text == MESSAGE_BOX_SPACING,
 "Button box 'spacing' should be " + MESSAGE_BOX_SPACING)
 
 def check_radio_buttons(root):
@@ -106,7 +107,7 @@ def check_title_labels(root):
 words = re.split(r'[^a-zA-Z0-9:_-]', title.text)
 first = True
 for word in words:
-if word[0].islower() and (word not in IGNORED_WORDS or first):
+if len(word) and word[0].islower() and (word not in IGNORED_WORDS 
or first):
 lint_assert(False, "The word '" + word + "' should be 
capitalized")
 first = False
 
@@ -118,7 +119,12 @@ def main():
 lint_assert('domain' in root.attrib, "interface needs to specific 
translation domain")
 
 top_level_widgets = [element for element in root.findall('object') if 
element.attrib['class'] not in IGNORED_TOP_LEVEL_WIDGETS]
-assert len(top_level_widgets) == 1
+lint_assert( len(top_level_widgets) <= 1, "should be only one top-level 
widget for us to analyze, found " + str(len(top_level_widgets)))
+if len(top_level_widgets) > 1:
+return
+# eg. one file contains only a Menu, which we don't check
+if len(top_level_widgets) == 0:
+return
 
 top_level_widget = top_level_widgets[0]
 check_top_level_widget(top_level_widget)
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py chart2/uiconfig cui/uiconfig dbaccess/uiconfig desktop/uiconfig extensions/uiconfig filter/uiconfig formula/uiconfig fpicker/uiconfig reportdesign/uiconf

2018-04-13 Thread Caolán McNamara
 bin/lint-ui.py |   11 
 chart2/uiconfig/ui/dlg_InsertErrorBars.ui  |1 
 chart2/uiconfig/ui/sidebaraxis.ui  |2 +
 chart2/uiconfig/ui/sidebarelements.ui  |   17 +
 chart2/uiconfig/ui/sidebarseries.ui|4 +++
 chart2/uiconfig/ui/tp_ChartType.ui |1 
 chart2/uiconfig/ui/tp_ErrorBars.ui |1 
 chart2/uiconfig/ui/tp_RangeChooser.ui  |1 
 cui/uiconfig/ui/asiantypography.ui |3 ++
 cui/uiconfig/ui/bitmaptabpage.ui   |1 
 cui/uiconfig/ui/borderpage.ui  |2 +
 cui/uiconfig/ui/colorconfigwin.ui  |9 ++
 cui/uiconfig/ui/connpooloptions.ui |1 
 cui/uiconfig/ui/effectspage.ui |5 +++
 cui/uiconfig/ui/hangulhanjaoptdialog.ui|2 +
 cui/uiconfig/ui/hatchpage.ui   |1 
 cui/uiconfig/ui/insertfloatingframe.ui |2 +
 cui/uiconfig/ui/insertoleobject.ui |2 +
 cui/uiconfig/ui/numberingoptionspage.ui|1 
 cui/uiconfig/ui/optadvancedpage.ui |1 
 cui/uiconfig/ui/optbasicidepage.ui |6 
 cui/uiconfig/ui/optctlpage.ui  |1 
 cui/uiconfig/ui/optemailpage.ui|1 
 cui/uiconfig/ui/optgeneralpage.ui  |2 +
 cui/uiconfig/ui/optlanguagespage.ui|1 
 cui/uiconfig/ui/optuserpage.ui |2 +
 cui/uiconfig/ui/optviewpage.ui |2 +
 cui/uiconfig/ui/paraindentspacing.ui   |1 
 cui/uiconfig/ui/password.ui|1 
 cui/uiconfig/ui/positionpage.ui|3 ++
 cui/uiconfig/ui/signatureline.ui   |2 +
 cui/uiconfig/ui/twolinespage.ui|1 
 cui/uiconfig/ui/zoomdialog.ui  |1 
 dbaccess/uiconfig/ui/connectionpage.ui |1 
 dbaccess/uiconfig/ui/dbasepage.ui  |1 
 dbaccess/uiconfig/ui/finalpagewizard.ui|1 
 dbaccess/uiconfig/ui/ldappage.ui   |1 
 dbaccess/uiconfig/ui/mysqlnativepage.ui|1 
 dbaccess/uiconfig/ui/odbcpage.ui   |1 
 desktop/uiconfig/ui/extensionmanager.ui|3 ++
 extensions/uiconfig/sabpilot/ui/datasourcepage.ui  |2 +
 extensions/uiconfig/sbibliography/ui/querydialog.ui|1 
 extensions/uiconfig/scanner/ui/sanedialog.ui   |2 +
 filter/uiconfig/ui/xmlfiltertabpagetransformation.ui   |1 
 formula/uiconfig/ui/formuladialog.ui   |1 
 fpicker/uiconfig/ui/explorerfiledialog.ui  |5 +++
 reportdesign/uiconfig/dbreport/ui/pagenumberdialog.ui  |1 
 sc/uiconfig/scalc/ui/checkwarningdialog.ui |1 
 sc/uiconfig/scalc/ui/databaroptions.ui |1 
 sc/uiconfig/scalc/ui/datastreams.ui|1 
 sc/uiconfig/scalc/ui/formulacalculationoptions.ui  |1 
 sc/uiconfig/scalc/ui/pivottablelayoutdialog.ui |6 
 sc/uiconfig/scalc/ui/printeroptions.ui |1 
 sc/uiconfig/scalc/ui/recalcquerydialog.ui  |1 
 sc/uiconfig/scalc/ui/regressiondialog.ui   |3 ++
 sc/uiconfig/scalc/ui/scgeneralpage.ui  |1 
 sc/uiconfig/scalc/ui/sharedwarningdialog.ui|1 
 sc/uiconfig/scalc/ui/sidebaralignment.ui   |3 ++
 sc/uiconfig/scalc/ui/sortoptionspage.ui|7 +
 sc/uiconfig/scalc/ui/textimportoptions.ui  |1 
 sd/uiconfig/sdraw/ui/drawprinteroptions.ui |2 +
 sd/uiconfig/simpress/ui/customanimationeffecttab.ui|2 +
 sd/uiconfig/simpress/ui/impressprinteroptions.ui   |3 ++
 sd/uiconfig/simpress/ui/photoalbum.ui  |4 +++
 sd/uiconfig/simpress/ui/prntopts.ui|4 +++
 sd/uiconfig/simpress/ui/publishingdialog.ui|2 +
 sd/uiconfig/simpress/ui/sidebarslidebackground.ui  |2 +
 sd/uiconfig/simpress/ui/slidetransitionspanel.ui   |2 +
 sd/uiconfig/simpress/ui/slidetransitionspanelhorizontal.ui |2 +
 sfx2/uiconfig/ui/checkin.ui|1 
 sfx2/uiconfig/ui/optprintpage.ui   |1 
 sfx2/uiconfig/ui/templatedlg.ui|1 
 starmath/uiconfig/

[Libreoffice-commits] core.git: bin/lint-ui.py chart2/uiconfig cui/uiconfig dbaccess/uiconfig extensions/uiconfig sc/uiconfig sd/uiconfig starmath/uiconfig svtools/uiconfig svx/uiconfig sw/uiconfig uu

2018-04-13 Thread Caolán McNamara
 bin/lint-ui.py   |   10 ++
 chart2/uiconfig/ui/dlg_InsertErrorBars.ui|1 
 chart2/uiconfig/ui/sidebarerrorbar.ui|3 +
 chart2/uiconfig/ui/sidebarseries.ui  |2 +
 chart2/uiconfig/ui/tp_ErrorBars.ui   |1 
 chart2/uiconfig/ui/tp_SeriesToAxis.ui|2 +
 cui/uiconfig/ui/colorpage.ui |2 +
 cui/uiconfig/ui/insertfloatingframe.ui   |5 +++
 cui/uiconfig/ui/insertoleobject.ui   |2 +
 cui/uiconfig/ui/optfltrembedpage.ui  |2 +
 cui/uiconfig/ui/personalization_tab.ui   |3 +
 cui/uiconfig/ui/positionpage.ui  |6 +++
 cui/uiconfig/ui/zoomdialog.ui|8 +
 dbaccess/uiconfig/ui/dbwizmysqlintropage.ui  |3 +
 dbaccess/uiconfig/ui/querypropertiesdialog.ui|2 +
 dbaccess/uiconfig/ui/textpage.ui |2 +
 extensions/uiconfig/sabpilot/ui/defaultfieldselectionpage.ui |1 
 extensions/uiconfig/sabpilot/ui/selecttypepage.ui|8 +
 sc/uiconfig/scalc/ui/correlationdialog.ui|2 +
 sc/uiconfig/scalc/ui/covariancedialog.ui |2 +
 sc/uiconfig/scalc/ui/movingaveragedialog.ui  |2 +
 sc/uiconfig/scalc/ui/pivottablelayoutdialog.ui   |5 +++
 sc/uiconfig/scalc/ui/samplingdialog.ui   |2 +
 sc/uiconfig/scalc/ui/sidebaralignment.ui |3 +
 sc/uiconfig/scalc/ui/textimportoptions.ui|2 +
 sd/uiconfig/sdraw/ui/drawprinteroptions.ui   |7 
 sd/uiconfig/simpress/ui/dockinganimation.ui  |2 +
 sd/uiconfig/simpress/ui/impressprinteroptions.ui |7 
 sd/uiconfig/simpress/ui/prntopts.ui  |2 +
 sd/uiconfig/simpress/ui/publishingdialog.ui  |2 +
 sd/uiconfig/simpress/ui/slidetransitionspanel.ui |2 +
 sd/uiconfig/simpress/ui/slidetransitionspanelhorizontal.ui   |2 +
 starmath/uiconfig/smath/ui/printeroptions.ui |3 +
 svtools/uiconfig/ui/graphicexport.ui |8 +
 svx/uiconfig/ui/compressgraphicdialog.ui |2 +
 sw/uiconfig/swriter/ui/bibliographyentry.ui  |2 +
 sw/uiconfig/swriter/ui/converttexttable.ui   |4 ++
 sw/uiconfig/swriter/ui/flddbpage.ui  |2 +
 sw/uiconfig/swriter/ui/footnotepage.ui   |2 +
 sw/uiconfig/swriter/ui/insertbreak.ui|4 ++
 sw/uiconfig/swriter/ui/insertfootnote.ui |4 ++
 sw/uiconfig/swriter/ui/insertscript.ui   |2 +
 sw/uiconfig/swriter/ui/mailmerge.ui  |1 
 sw/uiconfig/swriter/ui/picturepage.ui|3 +
 sw/uiconfig/swriter/ui/sidebarwrap.ui|6 +++
 sw/uiconfig/swriter/ui/sortdialog.ui |   11 ++-
 sw/uiconfig/swriter/ui/splittable.ui |4 ++
 sw/uiconfig/swriter/ui/textgridpage.ui   |3 +
 sw/uiconfig/swriter/ui/titlepage.ui  |4 ++
 sw/uiconfig/swriter/ui/tocentriespage.ui |6 +++
 sw/uiconfig/swriter/ui/tocindexpage.ui   |2 +
 uui/uiconfig/ui/unknownauthdialog.ui |1 
 vcl/qa/cppunit/builder/demo.ui   |   17 ++-
 vcl/uiconfig/ui/printdialog.ui   |8 +
 54 files changed, 202 insertions(+), 2 deletions(-)

New commits:
commit b31ed9dc1d3a8a93f924d10cd441cf756847cc5f
Author: Caolán McNamara 
Date:   Fri Apr 13 16:02:37 2018 +0100

look for radio buttons without underlines

Change-Id: I0ed97515a03a5633628a492ec7797fc3ade8a3d8
Reviewed-on: https://gerrit.libreoffice.org/52846
Tested-by: Jenkins 
Reviewed-by: Caolán McNamara 
Tested-by: Caolán McNamara 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 34669c85690a..27447be36165 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -59,6 +59,14 @@ def check_message_box_spacing(element):
 lint_assert(spacing.text == MESSAGE_BOX_SPACING,
 "Button box 'spacing' should be " + MESSAGE_BOX_SPACING)
 
+def check_radio_buttons(root):
+radios = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkRadioButton']
+for radio in radios:
+radio_underlines = radio.findall("./property[@name='use_underline']")
+assert len(radio_underlines) <= 1
+if len(radio_underlines) < 1:
+lint_assert(False,

[Libreoffice-commits] core.git: bin/lint-ui.py

2017-09-21 Thread Samuel Mehrbrodt
 bin/lint-ui.py |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit f22ad61038d5bf10dbe9f2ce0bdf0ef996be72f6
Author: Samuel Mehrbrodt 
Date:   Wed Sep 20 10:05:17 2017 +0200

lint-ui: Error when label contains a colon

Change-Id: I6c71db450fdd41c83e4b4b3e6dff9719a42ef2d8
Reviewed-on: https://gerrit.libreoffice.org/42520
Tested-by: Jenkins 
Reviewed-by: Samuel Mehrbrodt 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 88fb2cc460a1..34669c85690a 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -86,7 +86,7 @@ def check_title_labels(root):
 for title in titles:
 if title is None:
 continue
-words = re.split(r'[^a-zA-Z0-9_-]', title.text)
+words = re.split(r'[^a-zA-Z0-9:_-]', title.text)
 first = True
 for word in words:
 if word[0].islower() and (word not in IGNORED_WORDS or first):
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2015-06-25 Thread Rosemary
 bin/lint-ui.py |   18 ++
 1 file changed, 18 insertions(+)

New commits:
commit b4a224d1a91232a16b70be4531a3e6fd2d9bc9ae
Author: Rosemary 
Date:   Tue Jun 23 14:34:06 2015 +0530

tdf#80387 Extended lint-ui.py to check for UI title labels

Change-Id: I47ab882b0d54711050da4fc8fa288b195949eb60
Reviewed-on: https://gerrit.libreoffice.org/16425
Reviewed-by: Caolán McNamara 
Tested-by: Caolán McNamara 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index 54e1d27..2ed80c2 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -11,6 +11,7 @@
 
 import sys
 import xml.etree.ElementTree as ET
+import re
 
 DEFAULT_WARNING_STR = 'Lint assertion failed'
 
@@ -23,6 +24,8 @@ ALIGNMENT_TOP_PADDING = '6'
 MESSAGE_BOX_SPACING = '24'
 MESSAGE_BORDER_WIDTH = '12'
 
+IGNORED_WORDS = ['the', 'of', 'to', 'for', 'a', 'and', 'as', 'from', 'on', 
'into', 'by', 'at', 'or', 'do', 'in', 'when']
+
 def lint_assert(predicate, warning=DEFAULT_WARNING_STR):
 if not predicate:
 print("* " + warning)
@@ -77,6 +80,19 @@ def check_alignment_top_padding(alignment):
 lint_assert(top_padding.text == ALIGNMENT_TOP_PADDING,
 "GtkAlignment 'top_padding' should be " + 
ALIGNMENT_TOP_PADDING)
 
+def check_title_labels(root):
+labels = root.findall(".//child[@type='label']")
+titles = [label.find(".//property[@name='label']") for label in labels]
+for title in titles:
+if title is None:
+continue
+words = re.split(r'[^a-zA-Z0-9_-]', title.text)
+first = True
+for word in words:
+if word[0].islower() and (word not in IGNORED_WORDS or first):
+lint_assert(False, "The word '" + word + "' should be 
capitalized")
+first = False
+
 def main():
 print(" == " + sys.argv[1] + " ==")
 tree = ET.parse(sys.argv[1])
@@ -102,5 +118,7 @@ def main():
 
 check_frames(root)
 
+check_title_labels(root)
+
 if __name__ == "__main__":
 main()
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2013-08-12 Thread Caolán McNamara
 bin/lint-ui.py |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 1b40fa9b6d318debf97e934894c81f2bf99ebe40
Author: Caolán McNamara 
Date:   Mon Aug 12 12:39:41 2013 +0100

drop explicit python3 from shebang line

Change-Id: I3b7ca808b8e2ac4723c1f26e6190c4875e88936e

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
index cef326c..54e1d27 100755
--- a/bin/lint-ui.py
+++ b/bin/lint-ui.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/env python
 #
 # This file is part of the LibreOffice project.
 #
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: bin/lint-ui.py

2013-03-15 Thread Jack Leigh
 bin/lint-ui.py |   89 +
 1 file changed, 89 insertions(+)

New commits:
commit 1b5898a3151097e85c768144e69ebb5601d5babb
Author: Jack Leigh 
Date:   Fri Mar 15 17:07:02 2013 +

first crack at writing a linter for .ui files

Change-Id: I51fd2b426e3292647ca618bf867d22275d7ed4fd
Reviewed-on: https://gerrit.libreoffice.org/2762
Tested-by: Caolán McNamara 
Reviewed-by: Caolán McNamara 

diff --git a/bin/lint-ui.py b/bin/lint-ui.py
new file mode 100755
index 000..0c8a9ac
--- /dev/null
+++ b/bin/lint-ui.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python3
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, you can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Takes a LibreOffice .ui file and provides linting tips for maintaining
+# a consistent look for dialogs
+
+import sys
+import xml.etree.ElementTree as ET
+
+DEFAULT_WARNING_STR = 'Lint assertion failed'
+
+POSSIBLE_TOP_LEVEL_WIDGETS = ['GtkDialog', 'GtkBox', 'GtkFrame', 'GtkGrid']
+IGNORED_TOP_LEVEL_WIDGETS = ['GtkAdjustment', 'GtkImage', 'GtkListStore', 
'GtkSizeGroup', 'GtkMenu', 'GtkTextBuffer']
+BORDER_WIDTH = '6'
+BUTTON_BOX_SPACING = '12'
+ALIGNMENT_TOP_PADDING = '6'
+
+def lint_assert(predicate, warning=DEFAULT_WARNING_STR):
+if not predicate:
+print("* " + warning)
+
+def check_top_level_widget(element):
+# check widget type
+widget_type = element.attrib['class']
+lint_assert(widget_type in POSSIBLE_TOP_LEVEL_WIDGETS,
+"Top level widget should be 'GtkDialog', 'GtkFrame', 'GtkBox', 
or 'GtkGrid'")
+
+# check border_width property
+border_width_properties = element.findall("property[@name='border_width']")
+if len(border_width_properties) < 1:
+lint_assert(False, "No border_width set on top level widget. Should 
probably be " + BORDER_WIDTH)
+if len(border_width_properties) == 1:
+border_width = border_width_properties[0]
+lint_assert(border_width.text == BORDER_WIDTH,
+"Top level 'border_width' property should be " + 
BORDER_WIDTH)
+
+def check_button_box_spacing(element):
+spacing = element.findall("property[@name='spacing']")[0]
+lint_assert(spacing.text == BUTTON_BOX_SPACING,
+"Button box 'spacing' should be " + BUTTON_BOX_SPACING)
+
+def check_frames(root):
+frames = [element for element in root.findall('.//object') if 
element.attrib['class'] == 'GtkFrame']
+for frame in frames:
+frame_alignments = 
frame.findall("./child/object[@class='GtkAlignment']")
+assert len(frame_alignments) <= 1
+if len(frame_alignments) < 1:
+lint_assert(False, "No GtkAlignment in GtkFrame with id = '" + 
frame.attrib['id'] + "'")
+if len(frame_alignments) == 1:
+alignment = frame_alignments[0]
+check_alignment_top_padding(alignment)
+
+def check_alignment_top_padding(alignment):
+top_padding_properties = 
alignment.findall("./property[@name='top_padding']")
+assert len(top_padding_properties) <= 1
+if len(top_padding_properties) < 1:
+lint_assert(False, "No GtkAlignment 'top_padding' set. Should probably 
be " + ALIGNMENT_TOP_PADDING)
+if len(top_padding_properties) == 1:
+top_padding = top_padding_properties[0]
+lint_assert(top_padding.text == ALIGNMENT_TOP_PADDING,
+"GtkAlignment 'top_padding' should be " + 
ALIGNMENT_TOP_PADDING)
+
+def main():
+print(" == " + sys.argv[1] + " ==")
+tree = ET.parse(sys.argv[1])
+root = tree.getroot()
+
+top_level_widgets = [element for element in root.findall('object') if 
element.attrib['class'] not in IGNORED_TOP_LEVEL_WIDGETS]
+assert len(top_level_widgets) == 1
+
+top_level_widget = top_level_widgets[0]
+check_top_level_widget(top_level_widget)
+
+# TODO - only do this if we have a GtkDialog?
+# check button box spacing
+button_box = top_level_widget.findall("child[@id='dialog-vbox1']")
+if len(button_box) > 0:
+element = button_box[0]
+check_button_box_spacing(element)
+
+check_frames(root)
+
+if __name__ == "__main__":
+main()
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits