From 6b7190d3f024ce38ffdd5ee35b07a037313e7095 Mon Sep 17 00:00:00 2001 From: Jonathan Wiedemann Date: Sat, 20 Feb 2016 13:25:26 +0100 Subject: [PATCH 01/16] Arch BIM IFC : Add IFC Properties spreadsheet container --- src/Mod/Arch/ArchCommands.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 3281189a3..487904333 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -1208,7 +1208,13 @@ class _CommandComponent: FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() -def makeIfcSpreadsheet(obj=None): +def makeIfcSpreadsheet(archobj=None): + ifc_container = None + for obj in FreeCAD.ActiveDocument.Objects : + if obj.Name == "IfcPropertiesContainer" : + ifc_container = obj + if not ifc_container : + ifc_container = FreeCAD.ActiveDocument.addObject('App::DocumentObjectGroup','IfcPropertiesContainer') import Spreadsheet ifc_spreadsheet = FreeCAD.ActiveDocument.addObject('Spreadsheet::Sheet','IfcProperties') ifc_spreadsheet.set('A1', translate("Arch","Category")) @@ -1216,14 +1222,15 @@ def makeIfcSpreadsheet(obj=None): ifc_spreadsheet.set('C1', translate("Arch","Type")) ifc_spreadsheet.set('D1', translate("Arch","Value")) ifc_spreadsheet.set('E1', translate("Arch","Unit")) - if obj : - if hasattr(obj,"IfcProperties"): - obj.IfcProperties = ifc_spreadsheet + ifc_container.addObject(ifc_spreadsheet) + if archobj : + if hasattr(obj,"IfcProperties") : + archobj.IfcProperties = ifc_spreadsheet return ifc_spreadsheet else : - FreeCAD.Console.PrintWarning(translate("Arch", "The object have not IfcProperties attribute. Cancel spreadsheet creation for object : ") + obj.Label) + FreeCAD.Console.PrintWarning(translate("Arch", "The object have not IfcProperties attribute. Cancel spreadsheet creation for object : ") + archobj.Label) FreeCAD.ActiveDocument.removeObject(ifc_spreadsheet) - else: + else : return ifc_spreadsheet class _CommandIfcSpreadsheet: From c6af697230f26d502ffb1c1c3d5f1f89b40158bf Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 22 Feb 2016 20:16:51 -0300 Subject: [PATCH 02/16] Draft: avoid blocking keys in fields that can be used for units --- src/Mod/Draft/DraftGui.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 6bc11f95f..2ec10273c 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -1368,15 +1368,15 @@ class DraftToolBar: self.isRelative.setChecked(not self.isRelative.isChecked()) self.relativeMode = self.isRelative.isChecked() spec = True - elif txt.endswith("i"): + elif txt.endswith("I"): if self.hasFill.isVisible(): self.hasFill.setChecked(not self.hasFill.isChecked()) spec = True - elif txt.endswith("f"): + elif txt.endswith("F"): if self.finishButton.isVisible(): self.finish() spec = True - elif txt.endswith("t"): + elif txt.endswith("T"): self.toggleContinue() spec = True elif txt.endswith("w"): @@ -1415,7 +1415,8 @@ class DraftToolBar: self.closeLine() elif self.isCopy.isVisible(): self.isCopy.setChecked(not self.isCopy.isChecked()) - elif txt.endswith("n"): + spec = True + elif txt.endswith("N"): if self.continueCmd.isVisible(): self.continueCmd.setChecked(not self.continueCmd.isChecked()) spec = True From 869e7870f5ba6269c615185ea4928b0f7e1ed5c9 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 23 Feb 2016 11:34:04 +0100 Subject: [PATCH 03/16] + in pad dialog make sure not to compare quantities with different units --- src/Mod/PartDesign/Gui/TaskPadParameters.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp index cf93b10da..56d962655 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp @@ -293,7 +293,7 @@ void TaskPadParameters::onModeChanged(int index) case 0: pcPad->Type.setValue("Length"); // Avoid error message - if (ui->lengthEdit->value() < Precision::Confusion()) + if (ui->lengthEdit->value() < Base::Quantity(Precision::Confusion(), Base::Unit::Length)) ui->lengthEdit->setValue(5.0); break; case 1: pcPad->Type.setValue("UpToLast"); break; From f4b288fcf87b0fbca7a7b38abddf6fcdff95ad24 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 23 Feb 2016 13:05:48 +0100 Subject: [PATCH 04/16] + fix to get gridline-color of stylesheet in property editor --- src/Gui/propertyeditor/PropertyItemDelegate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gui/propertyeditor/PropertyItemDelegate.cpp b/src/Gui/propertyeditor/PropertyItemDelegate.cpp index ba10d2ef8..879286f8f 100644 --- a/src/Gui/propertyeditor/PropertyItemDelegate.cpp +++ b/src/Gui/propertyeditor/PropertyItemDelegate.cpp @@ -91,7 +91,7 @@ void PropertyItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem & QItemDelegate::paint(painter, option, index); - QColor color = static_cast(QApplication::style()->styleHint(QStyle::SH_Table_GridLineColor, &option)); + QColor color = static_cast(QApplication::style()->styleHint(QStyle::SH_Table_GridLineColor, &opt, qobject_cast(parent()))); painter->setPen(QPen(color)); if (index.column() == 1 || !(property && property->isSeparator())) { int right = (option.direction == Qt::LeftToRight) ? option.rect.right() : option.rect.left(); From c8d8df59b1df1de2b1d6e8ee79abd51f728ab38c Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 23 Feb 2016 11:45:37 -0300 Subject: [PATCH 05/16] Updated the FreeCAD icon to the new style --- src/Gui/Icons/freecad-doc.png | Bin 2493 -> 2585 bytes src/Gui/Icons/freecad-icon-16.png | Bin 862 -> 662 bytes src/Gui/Icons/freecad-icon-32.png | Bin 1930 -> 1340 bytes src/Gui/Icons/freecad-icon-48.png | Bin 2900 -> 2022 bytes src/Gui/Icons/freecad-icon-64.png | Bin 4414 -> 2803 bytes src/Gui/Icons/freecad.svg | 119 ++++++--- src/Gui/Icons/freecad.xpm | 410 ++++-------------------------- 7 files changed, 128 insertions(+), 401 deletions(-) diff --git a/src/Gui/Icons/freecad-doc.png b/src/Gui/Icons/freecad-doc.png index 75c7d56758501b50d80c30cf4f0ae6650fe5ddec..be7b5df6f0c453d68e622de900802b9f11f48d88 100644 GIT binary patch delta 2533 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
EXwl%8*YS
z3SXE3p_?lor;Xt4yy1zr&MdesoBbxEqkpPi{}8x--)~8Ev=K}6Fp)?txc`bR-^N-A
z7|x76)o>7+!vHD3LRv4h%st!hrt9ik=)LwwxP@s(PaLEtyPq%J{WIe2NxY(_d-tt$
zZ{Cl!mc)jCK9W~`hqN9-#p8H9(#Yv_TC?y&C*AY(q{bfqCGqkPG
zvUbNFq>>0JkU|hlyt%SopuU1$q)BiTY^sLCf=wyO8>9cAC%YdZKx;)Trg{0{2N*y8
zHbd`!&bz-Yy?3*D?*WLdEr%DG9d!5H&IhNTYk1OC7X!k$`ocy~%-aD`_H?tJtwwyO
zat`-y-^aRb*8zecFue293!FaoCPT*$F6evoILdDf|U?;c-C^)zl*p!!;sm3fo)sIhMRApXV)G)*QYe+a`eS#89IJ&
z@iC3h?Bob0)`h`=%+7MN0SrCeS}(BdvUtS-Y)A;6FYRJY?@esH<|dNqBz^$Jxf0eI
zN;CQM_GtqjuaGAogYQKu+x{Hbr8CHtvjNl;V|+s?_g_kd0!k~SEXM}E=M!r`|4Ute
zAvIQ~@!iT|^COTu4&Dr>-+#KbHsBLggetd=4nIz|?_Ne;{54LZgLVBk&~?>~Xh(C!
zbzf&|-vNeC{9%!qB?xpUrP&gcK7tPi85{XyT|2v+`POX&m*;;f@qX2)&Fgt~`(4C8
zw~a(c2EBF*na|%yw)X&|ryec;-**6iWQ;`bZ4~Fca$mC_EIWf-nSw~Tczgbuq!loI
z<}?8bgcKyV+`z`pUUq)%R|KUz$?RTC+h&R-9}`qiT+;{Vjy0wB*jN>?m0aJ&#F6W-!FT~)$-^zUHFbtKti77e+wS81_a19Z?$Q(nM0ekRoQDOS
zS2CL~BBcO-4qM70+BV|*hQO~_`=A6L9R*W@%r0=+p|cPE_r@j6fat=*e7}YP*=={i
zh5@`{5k7hcawq1iBiru)QHh$y{>tcy-<6-~{Vv2iz%4L3a;UCdZ8!t!>Fl9%hR0@1
zH4vKiEw%5ZM~9yv+j|duILPRK@DuaE^xgwAW6+*02Rdf{bG*@0zrQpJB1?7p)PF|m
zN=Qa39wGYs$jO6j-TC7(0CN){%tgI~SvebUF;Y4Q<1fS91S3O_w`^G5NIG4Nj0`>2
z(EeIq61#+CIdhel+v1z*1wOS5Sglge+$EoKXR;9jSWZ1a
zUT(X;+&N!T-wI#SUf^=I0ZRcOE&~-17o!550J&Ul!H0{hL2|iVc)AA2eNq4n;N@~T
zC(_|+5|1T58LekqQ^{0R?QipF07*qoM6N<$
Eg2-Zp<^TWy

diff --git a/src/Gui/Icons/freecad-icon-16.png b/src/Gui/Icons/freecad-icon-16.png
index 188653a47d461529968f7f1a7f74b10239989a23..0b250268bc18588dd329381770191c54c0261db5 100644
GIT binary patch
delta 591
zcmV-V0^IDOcr
zMJ*GdjSX0BLZ}pkq>@sZ@y^Vh^R^hBAtVEP;C#NEhx2=R;6Eh_!cOjE4a5Zk4}1Y*
zz&QxHD|6x8RtAP0lz#~<#0>-%Vg^K@>>!Lz$mi1Z-waG;7O(==tgq_>p`@OWe$x04
zgR03AR>F!t>Nsm_8=bh#XWDt
zd2Yx>+FM-XVYnvKVa^RYXRh+0dlJB_B8Y&MW<6S$J|puTUw;w@24V>}U<{Os0;>Jx
zNc&43MVBwk{)r&#JK+Lq-cGLEZt-Hg3lc(5$AtCeycoG71}E?xUspCaQ3NovGp2R?
zT+`qY=V&iSy3o9Lch9G>OE15^=pIzZV^#LyVoRhlBQ=Do^v&tmt;K}O%^(DIth^rT
ziZ-gH0zae5X@3FLnOYO~dzBpcc2qv*`szE!565D5*ji2k1J0Hn6n^=q3I%-{6{#mM
zO=P>5YX}OcR+5KkZmReF+Nv(+S0TU3z1)(w9IolBs7M1~2;Jq4U)2yCmE-}mKi?JR
zi(RNrAvzCo1>_rW9rPkblYf#Y{j|3DX>E(QRWDPSgDjvzde|qGStONt#J1IuInJT6
d*6kZ?q2F77%**XR|DFH<002ovPDHLkV1n8-5{Li*

delta 792
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
V?T%=2lK=n!00>D%PDHLkV1g<`%3lBg

delta 2819
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
V0ZP5#NB#f+002ovPDHLkV1niDkk0@B

diff --git a/src/Gui/Icons/freecad-icon-64.png b/src/Gui/Icons/freecad-icon-64.png
index 227f83edfc35a51531116519d431962144f89169..13674de03e0a837756f5a397fb0d8e1d853c74f4 100644
GIT binary patch
delta 2751
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
 
+
 
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="freecad.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
   
     
     
-    
     
       
     
-    
     
+    
+      
+      
+    
+    
+    
+      
+      
+    
+    
+    
   
   
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
   
     
@@ -104,19 +136,24 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     
-      
-      
+       inkscape:label="Layer 1"
+       id="layer1-4"
+       transform="translate(-6e-6,-0.36363683)">
+      
+        
+        
+      
     
   
 
-
- 	  	 
diff --git a/src/Gui/Icons/freecad.xpm b/src/Gui/Icons/freecad.xpm
index 9b846a06f..491df9aa9 100644
--- a/src/Gui/Icons/freecad.xpm
+++ b/src/Gui/Icons/freecad.xpm
@@ -1,362 +1,52 @@
 /* XPM */
 static char * freecad_xpm[] = {
-"32 32 327 2",
-"  	c None",
-". 	c #5D0900",
-"+ 	c #AF0D00",
-"@ 	c #AF1001",
-"# 	c #AF1601",
-"$ 	c #AF1A02",
-"% 	c #AF2003",
-"& 	c #AF2404",
-"* 	c #AF2904",
-"= 	c #AF2C05",
-"- 	c #AF2F05",
-"; 	c #AF3105",
-"> 	c #370700",
-", 	c #AD0C00",
-"' 	c #FF1100",
-") 	c #FF1A01",
-"! 	c #FF2203",
-"~ 	c #FF2B04",
-"{ 	c #FF3305",
-"] 	c #FF3B07",
-"^ 	c #FF4308",
-"/ 	c #FF4909",
-"( 	c #FF4E0A",
-"_ 	c #FF500A",
-": 	c #FF4F0A",
-"< 	c #FF4B09",
-"[ 	c #FF4608",
-"} 	c #470C01",
-"| 	c #FF1300",
-"1 	c #FF1D02",
-"2 	c #FF2603",
-"3 	c #FF2E04",
-"4 	c #FF3706",
-"5 	c #FF3F07",
-"6 	c #FF4708",
-"7 	c #FF4D09",
-"8 	c #FF520A",
-"9 	c #FF530A",
-"0 	c #FF1601",
-"a 	c #FF1F02",
-"b 	c #FF2904",
-"c 	c #FF3205",
-"d 	c #FF3A06",
-"e 	c #FF4A09",
-"f 	c #FF510A",
-"g 	c #FF560B",
-"h 	c #FF570B",
-"i 	c #FF540B",
-"j 	c #FF4709",
-"k 	c #FF1901",
-"l 	c #FF3505",
-"m 	c #FF3E07",
-"n 	c #FF550B",
-"o 	c #FF5A0C",
-"p 	c #AD0E00",
-"q 	c #FF1C01",
-"r 	c #FF2503",
-"s 	c #FF3806",
-"t 	c #FF4107",
-"u 	c #FF590B",
-"v 	c #FF5E0C",
-"w 	c #FF5D0C",
-"x 	c #01043C",
-"y 	c #0E2470",
-"z 	c #040C4A",
-"A 	c #AD0F00",
-"B 	c #FF1E02",
-"C 	c #FF2803",
-"D 	c #FF3105",
-"E 	c #EA3505",
-"F 	c #701802",
-"G 	c #7D1F03",
-"H 	c #7D2304",
-"I 	c #7D2504",
-"J 	c #7D2604",
-"K 	c #7D2103",
-"L 	c #7D1D02",
-"M 	c #310606",
-"N 	c #091452",
-"O 	c #2858B8",
-"P 	c #1E47A1",
-"Q 	c #040943",
-"R 	c #AD1101",
-"S 	c #FF2102",
-"T 	c #FF2A04",
-"U 	c #FF3405",
-"V 	c #DC3306",
-"W 	c #420B00",
-"X 	c #070739",
-"Y 	c #1D3881",
-"Z 	c #3366C2",
-"` 	c #2E60BD",
-" .	c #08114E",
-"..	c #01063F",
-"+.	c #000541",
-"@.	c #00053F",
-"#.	c #AD1201",
-"$.	c #FF2303",
-"%.	c #FF2D04",
-"&.	c #FF3606",
-"*.	c #DC3506",
-"=.	c #4E0F01",
-"-.	c #030943",
-";.	c #193380",
-">.	c #0C1754",
-",.	c #060D46",
-"'.	c #03063D",
-").	c #3662B3",
-"!.	c #3D73CB",
-"~.	c #386BC6",
-"{.	c #224596",
-"].	c #02053E",
-"^.	c #01043D",
-"/.	c #091B62",
-"(.	c #0A3197",
-"_.	c #012995",
-":.	c #AD1301",
-"<.	c #FF2F05",
-"[.	c #DC3707",
-"}.	c #0F2264",
-"|.	c #386CC6",
-"1.	c #4076CD",
-"2.	c #3A68B8",
-"3.	c #254186",
-"4.	c #4476C5",
-"5.	c #4C85D8",
-"6.	c #477ED3",
-"7.	c #2D5FBC",
-"8.	c #204AA6",
-"9.	c #1A47AC",
-"0.	c #0F3AA2",
-"a.	c #052B95",
-"b.	c #00043F",
-"c.	c #AD1501",
-"d.	c #FF2703",
-"e.	c #DC3807",
-"f.	c #4F1101",
-"g.	c #4F1201",
-"h.	c #430D04",
-"i.	c #070A41",
-"j.	c #396ABE",
-"k.	c #4981D5",
-"l.	c #518BDC",
-"m.	c #5793E1",
-"n.	c #5A95E3",
-"o.	c #5691E1",
-"p.	c #5089DB",
-"q.	c #3D72CA",
-"r.	c #3365C1",
-"s.	c #1E4BAF",
-"t.	c #123EA5",
-"u.	c #041B70",
-"v.	c #FA4308",
-"w.	c #E44509",
-"x.	c #E44C0A",
-"y.	c #E4540A",
-"z.	c #923206",
-"A.	c #190522",
-"B.	c #172A6A",
-"C.	c #4F88DA",
-"D.	c #5995E3",
-"E.	c #62A0EB",
-"F.	c #65A3ED",
-"G.	c #426DB2",
-"H.	c #1C306E",
-"I.	c #152562",
-"J.	c #1F3A81",
-"K.	c #3060B8",
-"L.	c #2A5BBA",
-"M.	c #1F4DB0",
-"N.	c #143FA6",
-"O.	c #01053F",
-"P.	c #AD1601",
-"Q.	c #FF3D07",
-"R.	c #FF5F0C",
-"S.	c #AD3D08",
-"T.	c #02053C",
-"U.	c #5089DA",
-"V.	c #5D99E6",
-"W.	c #68A6EF",
-"X.	c #243975",
-"Y.	c #091047",
-"Z.	c #040A42",
-"`.	c #21489F",
-" +	c #1F4EB0",
-".+	c #041765",
-"++	c #000238",
-"@+	c #AD1702",
-"#+	c #FD4608",
-"$+	c #F24A09",
-"%+	c #F2510A",
-"&+	c #F2570B",
-"*+	c #892D0D",
-"=+	c #0C0836",
-"-+	c #152666",
-";+	c #5A96E4",
-">+	c #3C61A6",
-",+	c #080E44",
-"'+	c #040B46",
-")+	c #1E4AAD",
-"!+	c #072D94",
-"~+	c #00156B",
-"{+	c #000A4B",
-"]+	c #000440",
-"^+	c #00053E",
-"/+	c #AD1802",
-"(+	c #DC3B07",
-"_+	c #310B12",
-":+	c #0E0938",
-"<+	c #0D134B",
-"[+	c #234592",
-"}+	c #3F73C9",
-"|+	c #4B83D7",
-"1+	c #538DDE",
-"2+	c #0F1A53",
-"3+	c #030942",
-"4+	c #13358D",
-"5+	c #103BA3",
-"6+	c #052D99",
-"7+	c #002795",
-"8+	c #002692",
-"9+	c #00033D",
-"0+	c #020840",
-"a+	c #112C7C",
-"b+	c #2959B8",
-"c+	c #3265C1",
-"d+	c #3B70C9",
-"e+	c #437AD0",
-"f+	c #4A82D5",
-"g+	c #080E46",
-"h+	c #02063E",
-"i+	c #0E2B80",
-"j+	c #0B359F",
-"k+	c #012896",
-"l+	c #002289",
-"m+	c #000239",
-"n+	c #AD1902",
-"o+	c #02043E",
-"p+	c #0A1C63",
-"q+	c #224FAE",
-"r+	c #2C5DBB",
-"s+	c #3467C2",
-"t+	c #3A6FC8",
-"u+	c #3F75CC",
-"v+	c #0E1B58",
-"w+	c #030842",
-"x+	c #0D2F8C",
-"y+	c #072F9B",
-"z+	c #001A75",
-"A+	c #000A4C",
-"B+	c #000540",
-"C+	c #DC3A07",
-"D+	c #020842",
-"E+	c #071050",
-"F+	c #1A3886",
-"G+	c #3063BF",
-"H+	c #3468C3",
-"I+	c #274B9C",
-"J+	c #040941",
-"K+	c #030C4A",
-"L+	c #0A339C",
-"M+	c #002895",
-"N+	c #002083",
-"O+	c #00033B",
-"P+	c #214CA7",
-"Q+	c #295AB9",
-"R+	c #2B5CBA",
-"S+	c #16307A",
-"T+	c #020740",
-"U+	c #020A46",
-"V+	c #0A2E93",
-"W+	c #022A97",
-"X+	c #001569",
-"Y+	c #00023A",
-"Z+	c #FF3506",
-"`+	c #FF3C07",
-" @	c #01063E",
-".@	c #13348B",
-"+@	c #1E4CAF",
-"@@	c #1A409E",
-"#@	c #0D2575",
-"$@	c #0A1E68",
-"%@	c #0B277E",
-"&@	c #09319B",
-"*@	c #00248E",
-"=@	c #00043E",
-"-@	c #010844",
-";@	c #103BA2",
-">@	c #133EA6",
-",@	c #133FA6",
-"'@	c #123DA5",
-")@	c #062E9A",
-"!@	c #00156A",
-"~@	c #FF2C04",
-"{@	c #FF3906",
-"]@	c #4E0E01",
-"^@	c #01186D",
-"/@	c #052E9A",
-"(@	c #07309B",
-"_@	c #072C92",
-":@	c #062582",
-"<@	c #072F9A",
-"[@	c #032B98",
-"}@	c #001261",
-"|@	c #00105A",
-"1@	c #002288",
-"2@	c #00258F",
-"3@	c #000137",
-"4@	c #DC3105",
-"5@	c #00023B",
-"6@	c #001975",
-"7@	c #001466",
-"8@	c #00043D",
-"9@	c #002693",
-"0@	c #000746",
-"a@	c #000C4F",
-"b@	c #000645",
-"c@	c #510C00",
-"d@	c #510D01",
-"e@	c #430900",
-"f@	c #400900",
-"g@	c #001A76",
-"h@	c #000A4D",
-"i@	c #001D7C",
-"j@	c #00063F",
-"k@	c #00033C",
-"l@	c #000C51",
-"                                                                ",
-"                                                                ",
-"                                                                ",
-"    . + @ # $ % & * = - ; ; - = >                               ",
-"    , ' ) ! ~ { ] ^ / ( _ : < [ }                               ",
-"    , | 1 2 3 4 5 6 7 8 9 8 7 6 }                               ",
-"    , 0 a b c d ^ e f g h i : j }                               ",
-"    , k ! ~ l m [ ( n o o g : j }                               ",
-"    p q r 3 s t e 8 u v w h _ j } x y z                         ",
-"    A B C D E F G H I J I H K L M N O P Q                       ",
-"    R S T U V W         X         Y Z `  .      ..+.@.          ",
-"    #.$.%.&.*.=.      -.;.>.,.  '.).!.~.{.].^./.(._.+.          ",
-"    :.r <.s [.=.      }.|.1.2.3.4.5.6.1.~.7.8.9.0.a.b.          ",
-"    c.d.D d e.> f.g.h.i.j.k.l.m.n.o.p.6.q.r.O s.t.u.            ",
-"    c.b c ] v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.            ",
-"    P.T { Q.[ : h R.S.  T.U.V.W.X.Y.      Z.`. +N..+++          ",
-"    @+~ l m #+$+%+&+*+=+-+p.;+>+,+          '+)+t.!+~+{+]+^+    ",
-"    /+%.&.m (+> _+:+<+[+}+|+1+2+            3+4+5+6+7+7+8+9+    ",
-"    /+%.&.5 (+=.0+a+b+c+d+e+f+g+            h+i+j+k+7+7+l+m+    ",
-"    n+3 &.m (+=.o+p+q+r+s+t+u+v+            w+x+y+7+z+A+B+      ",
-"    n+3 &.m C+=.  D+D+E+F+G+H+I+J+          K+L+M+N+O+          ",
-"    n+3 &.Q.e.=.        ].P+Q+R+S+T+    0+U+V+W+7+X+Y+          ",
-"    n+3 Z+`+[.=.         @.@+@ + +@@#@$@%@&@W+7+7+*@=@          ",
-"    n+%.U d *.=.        -@;@>@N.,@'@0.j+)@7+7+7+7+7+!@=@        ",
-"    n+~@{ {@V ]@        ^@/@(@_@:@<@[@7+7+*@}@|@1@7+2@3@        ",
-"    /+~ D 4 4@]@      5@6@8+7@]+8@=@9@7+7+0@    +.a@b@          ",
-"    > c@d@d@e@f@        @.5@      @.g@7+8++.                    ",
-"                                    h@7+i@j@                    ",
-"                                    k@l@O+                      ",
-"                                                                ",
-"                                                                ",
-"                                                                "};
+"32 32 17 1",
+" 	c None",
+".	c #002CA9",
+"+	c #0231A9",
+"@	c #0036AB",
+"#	c #FF0000",
+"$	c #0D3AA9",
+"%	c #0141AB",
+"&	c #383B8F",
+"*	c #1648A9",
+"=	c #FF1A00",
+"-	c #1250AB",
+";	c #FF1E0A",
+">	c #1E57AB",
+",	c #1A5DAC",
+"'	c #FF2C0B",
+")	c #2A64AC",
+"!	c #3469AB",
+"                                ",
+"                                ",
+"                                ",
+"  ###===;;;'''';                ",
+"  ###==;;;''''';                ",
+"  ##===;;'''''';                ",
+"  ##==;;;'''''''                ",
+"  ##==;;;'''''''                ",
+"  #===;;''''''''  %$            ",
+"  #===;;'''''''; %%%            ",
+"  #==;;          -**%   +.      ",
+"  #==;;    %*-  ----*%%$+..     ",
+"  #==;;    *-->>,>>--*%$@+      ",
+"  ===;;'    ->,,),,>-*%%@+      ",
+"  ==;;;'''' >>,)!),>-*%%@+      ",
+"  ==;;;'''' >,)!!     %%@+      ",
+"  ==;;;'''' ->,)       %@+...   ",
+"  ==;;;  &**->,,       $@.....  ",
+"  ==;;;  %%*-->>       @+.....  ",
+"  ==;;;  $%%*---       @+...    ",
+"  ==;;;     %***      @+..      ",
+"  ==;;;      %%%%%   @+...      ",
+"  ==;;;      $$%%$$@@+.....     ",
+"  ==;;;     +@@@@@++.......     ",
+"  ==;;;     ..++++.........     ",
+"  ===;;     ...  .....   ..     ",
+"                  ...           ",
+"                  ...           ",
+"                   .            ",
+"                                ",
+"                                ",
+"                                "};

From 5342b67122a2f4aeeb2f77872f9723d23cd955ec Mon Sep 17 00:00:00 2001
From: wmayer 
Date: Tue, 23 Feb 2016 19:47:54 +0100
Subject: [PATCH 06/16] + when cutting scattered points then also remove
 colors, grey values or normals if available

---
 src/Mod/Points/App/Properties.cpp   |  8 ++--
 src/Mod/Points/Gui/ViewProvider.cpp | 60 ++++++++++++++++++++++++++---
 2 files changed, 57 insertions(+), 11 deletions(-)

diff --git a/src/Mod/Points/App/Properties.cpp b/src/Mod/Points/App/Properties.cpp
index 1c94f60d8..0c901023b 100644
--- a/src/Mod/Points/App/Properties.cpp
+++ b/src/Mod/Points/App/Properties.cpp
@@ -190,22 +190,21 @@ unsigned int PropertyGreyValueList::getMemSize (void) const
 
 void PropertyGreyValueList::removeIndices( const std::vector& uIndices )
 {
-#if 0
     // We need a sorted array
     std::vector uSortedInds = uIndices;
     std::sort(uSortedInds.begin(), uSortedInds.end());
 
-    const std::vector& rValueList = getValues();
+    const std::vector& rValueList = getValues();
 
     assert( uSortedInds.size() <= rValueList.size() );
     if ( uSortedInds.size() > rValueList.size() )
         return;
 
-    std::vector remainValue;
+    std::vector remainValue;
     remainValue.reserve(rValueList.size() - uSortedInds.size());
 
     std::vector::iterator pos = uSortedInds.begin();
-    for ( std::vector::const_iterator it = rValueList.begin(); it != rValueList.end(); ++it ) {
+    for ( std::vector::const_iterator it = rValueList.begin(); it != rValueList.end(); ++it ) {
         unsigned long index = it - rValueList.begin();
         if (pos == uSortedInds.end())
             remainValue.push_back( *it );
@@ -216,7 +215,6 @@ void PropertyGreyValueList::removeIndices( const std::vector& uIn
     }
 
     setValues(remainValue);
-#endif
 }
 
 PropertyNormalList::PropertyNormalList()
diff --git a/src/Mod/Points/Gui/ViewProvider.cpp b/src/Mod/Points/Gui/ViewProvider.cpp
index a3d35e0fc..5d41b4a5a 100644
--- a/src/Mod/Points/Gui/ViewProvider.cpp
+++ b/src/Mod/Points/Gui/ViewProvider.cpp
@@ -428,6 +428,15 @@ void ViewProviderScattered::updateData(const App::Property* prop)
         // The number of points might have changed, so force also a resize of the Inventor internals
         setActiveMode();
     }
+    else if (prop->getTypeId() == Points::PropertyNormalList::getClassTypeId()) {
+        setActiveMode();
+    }
+    else if (prop->getTypeId() == Points::PropertyGreyValueList::getClassTypeId()) {
+        setActiveMode();
+    }
+    else if (prop->getTypeId() == App::PropertyColorList::getClassTypeId()) {
+        setActiveMode();
+    }
 }
 
 void ViewProviderScattered::cut(const std::vector& picked, Gui::View3DInventorViewer &Viewer)
@@ -446,24 +455,63 @@ void ViewProviderScattered::cut(const std::vector& picked, Gui::View3DI
     SbViewVolume  vol = pCam->getViewVolume();
 
     // search for all points inside/outside the polygon
-    Points::PointKernel newKernel;
-    for (Points::PointKernel::const_iterator jt = points.begin(); jt != points.end(); ++jt) {
+    std::vector removeIndices;
+    removeIndices.reserve(points.size());
+
+    unsigned long index = 0;
+    for (Points::PointKernel::const_iterator jt = points.begin(); jt != points.end(); ++jt, ++index) {
         SbVec3f pt(jt->x,jt->y,jt->z);
 
         // project from 3d to 2d
         vol.projectToScreen(pt, pt);
-        if (!cPoly.Contains(Base::Vector2D(pt[0],pt[1])))
-            newKernel.push_back(*jt);
+        if (cPoly.Contains(Base::Vector2D(pt[0],pt[1])))
+            removeIndices.push_back(index);
     }
 
-    if (newKernel.size() == points.size())
+    if (removeIndices.empty())
         return; // nothing needs to be done
 
     //Remove the points from the cloud and open a transaction object for the undo/redo stuff
     Gui::Application::Instance->activeDocument()->openCommand("Cut points");
 
     // sets the points outside the polygon to update the Inventor node
-    fea->Points.setValue(newKernel);
+    fea->Points.removeIndices(removeIndices);
+
+    std::map Map;
+    pcObject->getPropertyMap(Map);
+
+    for (std::map::iterator it = Map.begin(); it != Map.end(); ++it) {
+        Base::Type type = it->second->getTypeId();
+        if (type == Points::PropertyNormalList::getClassTypeId()) {
+            static_cast(it->second)->removeIndices(removeIndices);
+        }
+        else if (type == Points::PropertyGreyValueList::getClassTypeId()) {
+            static_cast(it->second)->removeIndices(removeIndices);
+        }
+        else if (type == App::PropertyColorList::getClassTypeId()) {
+            //static_cast(it->second)->removeIndices(removeIndices);
+            const std::vector& colors = static_cast(it->second)->getValues();
+
+            if (removeIndices.size() > colors.size())
+                break;
+
+            std::vector remainValue;
+            remainValue.reserve(colors.size() - removeIndices.size());
+
+            std::vector::iterator pos = removeIndices.begin();
+            for (std::vector::const_iterator jt = colors.begin(); jt != colors.end(); ++jt) {
+                unsigned long index = jt - colors.begin();
+                if (pos == removeIndices.end())
+                    remainValue.push_back( *jt );
+                else if (index != *pos)
+                    remainValue.push_back( *jt );
+                else 
+                    ++pos;
+            }
+
+            static_cast(it->second)->setValues(remainValue);
+        }
+    }
 
     // unset the modified flag because we don't need the features' execute() to be called
     Gui::Application::Instance->activeDocument()->commitCommand();

From 35fa65ec969e83a6e318c70a766c376fc8e40027 Mon Sep 17 00:00:00 2001
From: wmayer 
Date: Wed, 24 Feb 2016 20:59:04 +0100
Subject: [PATCH 07/16] + fix possible crash in parameter editor

---
 src/Gui/DlgParameterImp.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/Gui/DlgParameterImp.cpp b/src/Gui/DlgParameterImp.cpp
index 6914bae4a..ea7f85f24 100644
--- a/src/Gui/DlgParameterImp.cpp
+++ b/src/Gui/DlgParameterImp.cpp
@@ -265,10 +265,9 @@ void DlgParameterImp::onChangeParameterSet(int index)
     hGrp = hGrp->GetGroup("ParameterEditor");
     QString path = QString::fromUtf8(hGrp->GetASCII("LastParameterGroup").c_str());
     QStringList paths = path.split(QLatin1String("."), QString::SkipEmptyParts);
-    if (paths.empty())
-        return;
+
     QTreeWidgetItem* parent = 0;
-    for (int index=0; index < paramGroup->topLevelItemCount(); index++) {
+    for (int index=0; index < paramGroup->topLevelItemCount() && !paths.empty(); index++) {
         QTreeWidgetItem* child = paramGroup->topLevelItem(index);
         if (child->text(0) == paths.front()) {
             paths.pop_front();

From d891ddba33d8ba70b1c1d52ef4ca63b68504f72f Mon Sep 17 00:00:00 2001
From: wmayer 
Date: Wed, 24 Feb 2016 21:00:26 +0100
Subject: [PATCH 08/16] + fix a memory leak in mesh selection

---
 src/Mod/Mesh/Gui/MeshSelection.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/Mod/Mesh/Gui/MeshSelection.cpp b/src/Mod/Mesh/Gui/MeshSelection.cpp
index b3cb4524f..df6eb31cf 100644
--- a/src/Mod/Mesh/Gui/MeshSelection.cpp
+++ b/src/Mod/Mesh/Gui/MeshSelection.cpp
@@ -170,6 +170,8 @@ void MeshSelection::prepareBrushSelection(bool add,SoEventCallbackCB *cb)
     if (viewer) {
         stopInteractiveCallback(viewer);
         startInteractiveCallback(viewer, cb);
+        viewer->navigationStyle()->stopSelection();
+
         // set cross cursor
         Gui::BrushSelection* brush = new Gui::BrushSelection();
         brush->setClosed(true);

From e6624bf1c30426e07eec4e04746338f6ad89d0de Mon Sep 17 00:00:00 2001
From: wmayer 
Date: Wed, 24 Feb 2016 21:00:55 +0100
Subject: [PATCH 09/16] + add method to get display mask mode from view
 provider

---
 src/Gui/ViewProvider.cpp | 10 ++++++++++
 src/Gui/ViewProvider.h   |  2 ++
 2 files changed, 12 insertions(+)

diff --git a/src/Gui/ViewProvider.cpp b/src/Gui/ViewProvider.cpp
index 7aaa985c5..b4c54ec1e 100644
--- a/src/Gui/ViewProvider.cpp
+++ b/src/Gui/ViewProvider.cpp
@@ -266,6 +266,16 @@ void ViewProvider::setDisplayMaskMode( const char* type )
     setModeSwitch();
 }
 
+SoNode* ViewProvider::getDisplayMaskMode(const char* type) const
+{
+    std::map::const_iterator it = _sDisplayMaskModes.find( type );
+    if (it != _sDisplayMaskModes.end()) {
+        return pcModeSwitch->getChild(it->second);
+    }
+
+    return 0;
+}
+
 std::vector ViewProvider::getDisplayMaskModes() const
 {
     std::vector types;
diff --git a/src/Gui/ViewProvider.h b/src/Gui/ViewProvider.h
index f410ffaea..694d72b27 100644
--- a/src/Gui/ViewProvider.h
+++ b/src/Gui/ViewProvider.h
@@ -308,6 +308,8 @@ protected:
     void addDisplayMaskMode( SoNode *node, const char* type );
     /// Activates the display mask mode \a type
     void setDisplayMaskMode( const char* type );
+    /// Get the node to the display mask mode \a type
+    SoNode* getDisplayMaskMode(const char* type) const;
     /// Returns a list of added display mask modes
     std::vector getDisplayMaskModes() const;
     void setDefaultMode(int);

From 660a30ce012625017b2f1bbdce8c502a083b636f Mon Sep 17 00:00:00 2001
From: wmayer 
Date: Wed, 24 Feb 2016 21:04:47 +0100
Subject: [PATCH 10/16] + fix some weirdness in Application class

---
 src/App/Application.cpp | 11 +++--------
 src/App/Application.h   |  2 +-
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/src/App/Application.cpp b/src/App/Application.cpp
index 4215d6185..9053b6acb 100644
--- a/src/App/Application.cpp
+++ b/src/App/Application.cpp
@@ -165,13 +165,8 @@ PyDoc_STRVAR(Console_doc,
      "FreeCAD Console\n"
     );
 
-Application::Application(ParameterManager * /*pcSysParamMngr*/,
-                         ParameterManager * /*pcUserParamMngr*/,
-                         std::map &mConfig)
-    ://_pcSysParamMngr(pcSysParamMngr),
-    //_pcUserParamMngr(pcUserParamMngr),
-    _mConfig(mConfig),
-    _pActiveDoc(0)
+Application::Application(std::map &mConfig)
+  : _mConfig(mConfig), _pActiveDoc(0)
 {
     //_hApp = new ApplicationOCC;
     mpcPramManager["System parameter"] = _pcSysParamMngr;
@@ -1277,7 +1272,7 @@ void Application::initApplication(void)
 
     // creating the application
     if (!(mConfig["Verbose"] == "Strict")) Console().Log("Create Application\n");
-    Application::_pcSingleton = new Application(0,0,mConfig);
+    Application::_pcSingleton = new Application(mConfig);
 
     // set up Unit system default
     ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath
diff --git a/src/App/Application.h b/src/App/Application.h
index 1fee610b4..2be65a6e9 100644
--- a/src/App/Application.h
+++ b/src/App/Application.h
@@ -273,7 +273,7 @@ protected:
 
 private:
     /// Constructor
-    Application(ParameterManager *pcSysParamMngr, ParameterManager *pcUserParamMngr,std::map &mConfig);
+    Application(std::map &mConfig);
     /// Destructor
     virtual ~Application();
 

From 63e09bcbc223465cff815dd1a80b0ee27c3607e4 Mon Sep 17 00:00:00 2001
From: wmayer 
Date: Wed, 24 Feb 2016 21:31:12 +0100
Subject: [PATCH 11/16] + add convenience methods to query/alter selection of
 mesh object

---
 src/Mod/Mesh/App/Mesh.cpp         | 16 ++++++++++++----
 src/Mod/Mesh/App/Mesh.h           |  2 ++
 src/Mod/Mesh/Gui/ViewProvider.cpp | 25 +++++++++++++++++++++++++
 src/Mod/Mesh/Gui/ViewProvider.h   |  2 ++
 4 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/src/Mod/Mesh/App/Mesh.cpp b/src/Mod/Mesh/App/Mesh.cpp
index 43f619bed..6a2e726b3 100644
--- a/src/Mod/Mesh/App/Mesh.cpp
+++ b/src/Mod/Mesh/App/Mesh.cpp
@@ -592,16 +592,24 @@ void MeshObject::getPointsFromSelection(std::vector& inds) const
     MeshCore::MeshAlgorithm(this->_kernel).GetPointsFlag(inds, MeshCore::MeshPoint::SELECTED);
 }
 
+unsigned long MeshObject::countSelectedFacets() const
+{
+    return MeshCore::MeshAlgorithm(this->_kernel).CountFacetFlag(MeshCore::MeshFacet::SELECTED);
+}
+
 bool MeshObject::hasSelectedFacets() const
 {
-    unsigned long ct = MeshCore::MeshAlgorithm(this->_kernel).CountFacetFlag(MeshCore::MeshFacet::SELECTED);
-    return ct > 0;
+    return (countSelectedFacets() > 0);
+}
+
+unsigned long MeshObject::countSelectedPoints() const
+{
+    return MeshCore::MeshAlgorithm(this->_kernel).CountPointFlag(MeshCore::MeshPoint::SELECTED);
 }
 
 bool MeshObject::hasSelectedPoints() const
 {
-    unsigned long ct = MeshCore::MeshAlgorithm(this->_kernel).CountPointFlag(MeshCore::MeshPoint::SELECTED);
-    return ct > 0;
+    return (countSelectedPoints() > 0);
 }
 
 std::vector MeshObject::getPointsFromFacets(const std::vector& facets) const
diff --git a/src/Mod/Mesh/App/Mesh.h b/src/Mod/Mesh/App/Mesh.h
index 74d224382..5e75bf3ee 100644
--- a/src/Mod/Mesh/App/Mesh.h
+++ b/src/Mod/Mesh/App/Mesh.h
@@ -220,7 +220,9 @@ public:
     void addPointsToSelection(const std::vector&) const;
     void removeFacetsFromSelection(const std::vector&) const;
     void removePointsFromSelection(const std::vector&) const;
+    unsigned long countSelectedFacets() const;
     bool hasSelectedFacets() const;
+    unsigned long countSelectedPoints() const;
     bool hasSelectedPoints() const;
     void getFacetsFromSelection(std::vector&) const;
     void getPointsFromSelection(std::vector&) const;
diff --git a/src/Mod/Mesh/Gui/ViewProvider.cpp b/src/Mod/Mesh/Gui/ViewProvider.cpp
index 3cf05a785..fc0b8dd50 100644
--- a/src/Mod/Mesh/Gui/ViewProvider.cpp
+++ b/src/Mod/Mesh/Gui/ViewProvider.cpp
@@ -1697,6 +1697,13 @@ void ViewProviderMesh::deselectFacet(unsigned long facet)
     }
 }
 
+bool ViewProviderMesh::isFacetSelected(unsigned long facet)
+{
+    const Mesh::MeshObject& rMesh = static_cast(pcObject)->Mesh.getValue();
+    const MeshCore::MeshFacetArray& faces = rMesh.getKernel().GetFacets();
+    return faces[facet].IsFlag(MeshCore::MeshFacet::SELECTED);
+}
+
 void ViewProviderMesh::selectComponent(unsigned long uFacet)
 {
     std::vector selection;
@@ -1766,6 +1773,24 @@ void ViewProviderMesh::removeSelection(const std::vector& indices
         unhighlightSelection();
 }
 
+void ViewProviderMesh::invertSelection()
+{
+    const Mesh::MeshObject& rMesh = static_cast(pcObject)->Mesh.getValue();
+    const MeshCore::MeshFacetArray& faces = rMesh.getKernel().GetFacets();
+    unsigned long num_notsel = std::count_if(faces.begin(), faces.end(),
+        std::bind2nd(MeshCore::MeshIsNotFlag(),
+        MeshCore::MeshFacet::SELECTED));
+    std::vector notselect;
+    notselect.reserve(num_notsel);
+    MeshCore::MeshFacetArray::_TConstIterator beg = faces.begin();
+    MeshCore::MeshFacetArray::_TConstIterator end = faces.end();
+    for (MeshCore::MeshFacetArray::_TConstIterator jt = beg; jt != end; ++jt) {
+        if (!jt->IsFlag(MeshCore::MeshFacet::SELECTED))
+            notselect.push_back(jt-beg);
+    }
+    setSelection(notselect);
+}
+
 void ViewProviderMesh::clearSelection()
 {
     const Mesh::MeshObject& rMesh = static_cast(pcObject)->Mesh.getValue();
diff --git a/src/Mod/Mesh/Gui/ViewProvider.h b/src/Mod/Mesh/Gui/ViewProvider.h
index c684e5abf..d0e5af03d 100644
--- a/src/Mod/Mesh/Gui/ViewProvider.h
+++ b/src/Mod/Mesh/Gui/ViewProvider.h
@@ -138,6 +138,7 @@ public:
     /** @name Editing */
     //@{
     bool doubleClicked(void){ return false; }
+    bool isFacetSelected(unsigned long facet);
     void selectComponent(unsigned long facet);
     void deselectComponent(unsigned long facet);
     void selectFacet(unsigned long facet);
@@ -145,6 +146,7 @@ public:
     void setSelection(const std::vector&);
     void addSelection(const std::vector&);
     void removeSelection(const std::vector&);
+    void invertSelection();
     void clearSelection();
     void deleteSelection();
     void getFacetsFromPolygon(const std::vector& picked,

From 52fac57d73dc9b89d93b05f336f94a1226bd9cf1 Mon Sep 17 00:00:00 2001
From: wmayer 
Date: Wed, 24 Feb 2016 21:32:30 +0100
Subject: [PATCH 12/16] + fix bug in MDIView

---
 src/Gui/MDIView.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/Gui/MDIView.cpp b/src/Gui/MDIView.cpp
index 9bf3cb0d5..56c5dae1f 100644
--- a/src/Gui/MDIView.cpp
+++ b/src/Gui/MDIView.cpp
@@ -84,6 +84,10 @@ void MDIView::deleteSelf()
         parent->deleteLater();
     else
         this->deleteLater();
+
+    // detach from document
+    if (_pcDocument)
+        onClose();
     _pcDocument = 0;
 }
 

From 8de9436c367874ca1bb87dfb921b00d1a5364d75 Mon Sep 17 00:00:00 2001
From: maurerpe 
Date: Sun, 21 Feb 2016 13:16:51 -0500
Subject: [PATCH 13/16] Add missing header files

Needed for Qt5, recommended for Qt4
---
 src/Gui/InputField.cpp                        | 1 +
 src/Gui/QuantitySpinBox.cpp                   | 1 +
 src/Gui/iisTaskPanel/src/iisiconlabel.h       | 1 +
 src/Gui/iisTaskPanel/src/iistaskbox.h         | 5 +++++
 src/Gui/iisTaskPanel/src/iistaskgroup.h       | 4 ++++
 src/Gui/iisTaskPanel/src/iistaskheader.cpp    | 6 ++++++
 src/Gui/iisTaskPanel/src/iistaskheader.h      | 4 ++++
 src/Gui/iisTaskPanel/src/iistaskpanel.h       | 2 ++
 src/Gui/iisTaskPanel/src/iistaskpanelscheme.h | 4 ++++
 9 files changed, 28 insertions(+)

diff --git a/src/Gui/InputField.cpp b/src/Gui/InputField.cpp
index 122e32436..245218382 100644
--- a/src/Gui/InputField.cpp
+++ b/src/Gui/InputField.cpp
@@ -39,6 +39,7 @@
 #include "Command.h"
 #include "InputField.h"
 #include "BitmapFactory.h"
+#include "propertyeditor/PropertyItem.h"
 
 using namespace Gui;
 using namespace App;
diff --git a/src/Gui/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp
index e2af8c1d2..e69fe525a 100644
--- a/src/Gui/QuantitySpinBox.cpp
+++ b/src/Gui/QuantitySpinBox.cpp
@@ -38,6 +38,7 @@
 #include "QuantitySpinBox.h"
 #include "QuantitySpinBox_p.h"
 #include "DlgExpressionInput.h"
+#include "propertyeditor/PropertyItem.h"
 #include "BitmapFactory.h"
 #include "Command.h"
 #include 
diff --git a/src/Gui/iisTaskPanel/src/iisiconlabel.h b/src/Gui/iisTaskPanel/src/iisiconlabel.h
index 0d1ffe13f..8ce6229c9 100644
--- a/src/Gui/iisTaskPanel/src/iisiconlabel.h
+++ b/src/Gui/iisTaskPanel/src/iisiconlabel.h
@@ -9,6 +9,7 @@
 #define IISICONLABEL_H
 
 #include 
+#include 
 
 #include "iistaskpanel_global.h"
 
diff --git a/src/Gui/iisTaskPanel/src/iistaskbox.h b/src/Gui/iisTaskPanel/src/iistaskbox.h
index a62d2c93b..09788d0d8 100644
--- a/src/Gui/iisTaskPanel/src/iistaskbox.h
+++ b/src/Gui/iisTaskPanel/src/iistaskbox.h
@@ -9,6 +9,11 @@
 #define IISTASKBOX_H
 
 #include 
+#include 
+#include 
+#include 
+#include 
+#include 
 
 #include "iistaskpanel_global.h"
 
diff --git a/src/Gui/iisTaskPanel/src/iistaskgroup.h b/src/Gui/iisTaskPanel/src/iistaskgroup.h
index 522eadc3e..7f4b5e654 100644
--- a/src/Gui/iisTaskPanel/src/iistaskgroup.h
+++ b/src/Gui/iisTaskPanel/src/iistaskgroup.h
@@ -9,6 +9,10 @@
 #define IISTASKGROUP_H
 
 #include 
+#include 
+#include 
+#include 
+#include 
 
 #include "iistaskpanel_global.h"
 
diff --git a/src/Gui/iisTaskPanel/src/iistaskheader.cpp b/src/Gui/iisTaskPanel/src/iistaskheader.cpp
index 31b714cc2..479df3e7c 100644
--- a/src/Gui/iisTaskPanel/src/iistaskheader.cpp
+++ b/src/Gui/iisTaskPanel/src/iistaskheader.cpp
@@ -5,6 +5,12 @@
  *                                                                         *
  ***************************************************************************/
 
+#include 
+#include 
+#include 
+#include 
+#include 
+
 #include "iistaskheader.h"
 #include "iistaskpanelscheme.h"
 #include "iisiconlabel.h"
diff --git a/src/Gui/iisTaskPanel/src/iistaskheader.h b/src/Gui/iisTaskPanel/src/iistaskheader.h
index c64b4b2cd..cebe26b8a 100644
--- a/src/Gui/iisTaskPanel/src/iistaskheader.h
+++ b/src/Gui/iisTaskPanel/src/iistaskheader.h
@@ -9,6 +9,10 @@
 #define IISTASKHEADER_H
 
 #include 
+#include 
+#include 
+#include 
+#include 
 
 #include "iistaskpanel_global.h"
 
diff --git a/src/Gui/iisTaskPanel/src/iistaskpanel.h b/src/Gui/iisTaskPanel/src/iistaskpanel.h
index 4a3d0bb16..a8277d95f 100644
--- a/src/Gui/iisTaskPanel/src/iistaskpanel.h
+++ b/src/Gui/iisTaskPanel/src/iistaskpanel.h
@@ -20,6 +20,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 
 #include "iistaskpanel_global.h"
 
diff --git a/src/Gui/iisTaskPanel/src/iistaskpanelscheme.h b/src/Gui/iisTaskPanel/src/iistaskpanelscheme.h
index f4e0ef95d..a66ecb84d 100644
--- a/src/Gui/iisTaskPanel/src/iistaskpanelscheme.h
+++ b/src/Gui/iisTaskPanel/src/iistaskpanelscheme.h
@@ -9,6 +9,10 @@
 #define IISTASKPANELSCHEME_H
 
 #include 
+#include 
+#include 
+#include 
+#include 
 
 #include "iistaskpanel_global.h"
 

From 31fd2d1762e72b059ded66972133c019c1a700d0 Mon Sep 17 00:00:00 2001
From: maurerpe 
Date: Sun, 21 Feb 2016 13:20:46 -0500
Subject: [PATCH 14/16] Ensure mutexes are always properly unlocked

Error exists with Qt4 and Qt5.  Qt5 generated helpful warnings that made
it easier to debug.
---
 src/Gui/CommandTest.cpp          | 40 +++++++++++++++-----------------
 src/Gui/Quarter/SignalThread.cpp | 11 ++++-----
 src/Gui/Splashscreen.cpp         |  2 +-
 3 files changed, 25 insertions(+), 28 deletions(-)

diff --git a/src/Gui/CommandTest.cpp b/src/Gui/CommandTest.cpp
index 3f4cc9b1e..243eac15e 100644
--- a/src/Gui/CommandTest.cpp
+++ b/src/Gui/CommandTest.cpp
@@ -27,6 +27,7 @@
 # include 
 # include 
 # include 
+# include 
 # include 
 # include 
 # include 
@@ -294,10 +295,10 @@ CmdTestProgress1::CmdTestProgress1()
 
 void CmdTestProgress1::activated(int iMsg)
 {
+    QMutex mutex;
+    QMutexLocker ml(&mutex);
     try
     {
-        QMutex mutex;
-        mutex.lock();
         unsigned long steps = 1000;
         Base::SequencerLauncher seq("Starting progress bar", steps);
 
@@ -306,8 +307,6 @@ void CmdTestProgress1::activated(int iMsg)
             seq.next(true);
             QWaitCondition().wait(&mutex, 30);
         }
-
-        mutex.unlock();
     }
     catch (...)
     {
@@ -337,10 +336,11 @@ CmdTestProgress2::CmdTestProgress2()
 
 void CmdTestProgress2::activated(int iMsg)
 {
+    QMutex mutex;
+    QMutexLocker ml(&mutex);
+
     try
     {
-        QMutex mutex;
-        mutex.lock();
         unsigned long steps = 1000;
         Base::SequencerLauncher seq("Starting progress bar", steps);
 
@@ -378,11 +378,12 @@ CmdTestProgress3::CmdTestProgress3()
 
 void CmdTestProgress3::activated(int iMsg)
 {
+    QMutex mutex;
+    QMutexLocker ml(&mutex);
+    
     try
     {
         // level 1
-        QMutex mutex;
-        mutex.lock();
         unsigned long steps = 5;
         Base::SequencerLauncher seq1("Starting progress bar", steps);
         for (unsigned long i=0; isteps;i++)
@@ -519,7 +522,6 @@ public:
                 seq.next(true);
                 QWaitCondition().wait(&mutex, 5);
             }
-            mutex.unlock();
         }
         catch (...)
         {
@@ -662,27 +664,23 @@ public:
     }
     virtual void Warning(const char * msg)
     {
-        mutex.lock();
+        QMutexLocker ml(&mutex);
         matchWrn += strcmp(msg, "Write a warning to the console output.\n");
-        mutex.unlock();
     }
     virtual void Message(const char * msg)
     {
-        mutex.lock();
+        QMutexLocker ml(&mutex);
         matchMsg += strcmp(msg, "Write a message to the console output.\n");
-        mutex.unlock();
     }
     virtual void Error(const char * msg)
     {
-        mutex.lock();
+        QMutexLocker ml(&mutex);
         matchErr += strcmp(msg, "Write an error to the console output.\n");
-        mutex.unlock();
     }
     virtual void Log(const char * msg)
     {
-        mutex.lock();
+        QMutexLocker ml(&mutex);
         matchLog += strcmp(msg, "Write a log to the console output.\n");
-        mutex.unlock();
     }
 };
 
diff --git a/src/Gui/Quarter/SignalThread.cpp b/src/Gui/Quarter/SignalThread.cpp
index bcd9b78c6..2b7254d3c 100644
--- a/src/Gui/Quarter/SignalThread.cpp
+++ b/src/Gui/Quarter/SignalThread.cpp
@@ -30,6 +30,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 \**************************************************************************/
 
+#include 
+
 #include "SignalThread.h"
 
 using namespace SIM::Coin3D::Quarter;
@@ -47,25 +49,23 @@ void
 SignalThread::trigger(void)
 {
   // lock first to make sure the QThread is actually waiting for a signal
-  this->mutex.lock();
+  QMutexLocker ml(&this->mutex);
   this->waitcond.wakeOne();
-  this->mutex.unlock();
 }
 
 void
 SignalThread::stopThread(void)
 {
-  this->mutex.lock();
+  QMutexLocker ml(&this->mutex);
   this->isstopped = true;
   this->waitcond.wakeOne();
-  this->mutex.unlock();
 }
 
 
 void
 SignalThread::run(void)
 {
-  this->mutex.lock();
+  QMutexLocker ml(&this->mutex);
   while (!this->isstopped) {
     // just wait, and trigger every time we receive a signal
     this->waitcond.wait(&this->mutex);
@@ -73,5 +73,4 @@ SignalThread::run(void)
       emit triggerSignal();
     }
   }
-  this->mutex.unlock();
 }
diff --git a/src/Gui/Splashscreen.cpp b/src/Gui/Splashscreen.cpp
index a20077620..0e6610abe 100644
--- a/src/Gui/Splashscreen.cpp
+++ b/src/Gui/Splashscreen.cpp
@@ -134,7 +134,7 @@ public:
 
         splash->showMessage(msg.replace(QLatin1String("\n"), QString()), alignment, textColor);
         QMutex mutex;
-        mutex.lock();
+        QMutexLocker ml(&mutex);
         QWaitCondition().wait(&mutex, 50);
     }
 

From e1f3fe1be404b35ca22ff2e7510ff4afecd5c85a Mon Sep 17 00:00:00 2001
From: maurerpe 
Date: Sun, 21 Feb 2016 13:25:13 -0500
Subject: [PATCH 15/16] Change numBytes() to byteCount()

numBytes() is obsolete in Qt 4.8 and removed in Qt5.  byteCount() is a
drop in replacement that works in 4.8 and 5.
---
 src/Gui/BitmapFactory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Gui/BitmapFactory.cpp b/src/Gui/BitmapFactory.cpp
index da7a9a9f4..9dac5cd12 100644
--- a/src/Gui/BitmapFactory.cpp
+++ b/src/Gui/BitmapFactory.cpp
@@ -589,7 +589,7 @@ void BitmapFactoryInst::convert(const QImage& p, SoSFImage& img) const
     size[0] = p.width();
     size[1] = p.height();
 
-    int buffersize = p.numBytes();
+    int buffersize = p.byteCount();
     int numcomponents = 0;
     QVector table = p.colorTable();
     if (!table.isEmpty()) {

From 3f3d8a95f5355e8bd2e1904f4d89d446bcc371a8 Mon Sep 17 00:00:00 2001
From: maurerpe 
Date: Sun, 21 Feb 2016 13:33:37 -0500
Subject: [PATCH 16/16] Fix remaining toAscii/fromAscii

Qt5 does not have toAscii or fromAscii.  Use toLatin1 and fromLatin1
respectively.  Both replacement functions exist in Qt4.8.
---
 src/Gui/ProgressDialog.cpp                    |  2 +-
 src/Mod/Sandbox/App/DocumentThread.cpp        |  2 +-
 src/Mod/Sandbox/Gui/Command.cpp               | 34 ++++-----
 src/Mod/Sandbox/Gui/GLGraphicsView.cpp        |  2 +-
 src/Mod/Sandbox/Gui/Overlay.cpp               |  6 +-
 src/Mod/Sandbox/Gui/TaskPanelView.cpp         | 76 +++++++++----------
 src/Mod/Sandbox/Gui/Workbench.cpp             |  4 +-
 src/Tools/ImageTools/ImageConv/imageconv.cpp  | 16 ++--
 src/Tools/ImageTools/ImageConv/main.cpp       |  2 +-
 .../imageformats/svg/qsvgiohandler.cpp        |  8 +-
 10 files changed, 76 insertions(+), 76 deletions(-)

diff --git a/src/Gui/ProgressDialog.cpp b/src/Gui/ProgressDialog.cpp
index 10c444bc8..c1eccae10 100644
--- a/src/Gui/ProgressDialog.cpp
+++ b/src/Gui/ProgressDialog.cpp
@@ -195,7 +195,7 @@ void SequencerDialog::showRemainingTime()
             QTime time( 0,0, 0);
             time = time.addSecs( rest/1000 );
             QString remain = Gui::ProgressDialog::tr("Remaining: %1").arg(time.toString());
-            QString status = QString::fromAscii("%1\t[%2]").arg(txt).arg(remain);
+            QString status = QString::fromLatin1("%1\t[%2]").arg(txt).arg(remain);
 
             if (thr != currentThread) {
                 QMetaObject::invokeMethod(d->dlg, "setLabelText",
diff --git a/src/Mod/Sandbox/App/DocumentThread.cpp b/src/Mod/Sandbox/App/DocumentThread.cpp
index 7f13cb304..ecec31d77 100644
--- a/src/Mod/Sandbox/App/DocumentThread.cpp
+++ b/src/Mod/Sandbox/App/DocumentThread.cpp
@@ -53,7 +53,7 @@ void DocumentThread::run()
 {
     App::Document* doc = App::GetApplication().getActiveDocument();
     DocumentProtector dp(doc);
-    dp.addObject("Mesh::Ellipsoid", (const char*)objectName().toAscii());
+    dp.addObject("Mesh::Ellipsoid", (const char*)objectName().toLatin1());
     dp.recompute();
 }
 
diff --git a/src/Mod/Sandbox/Gui/Command.cpp b/src/Mod/Sandbox/Gui/Command.cpp
index 1e2bf3637..f97e2ca1d 100644
--- a/src/Mod/Sandbox/Gui/Command.cpp
+++ b/src/Mod/Sandbox/Gui/Command.cpp
@@ -100,7 +100,7 @@ void CmdSandboxDocumentThread::activated(int iMsg)
     App::GetApplication().newDocument("Thread");
     for (int i=0; i<5; i++) {
         Sandbox::DocumentThread* dt = new Sandbox::DocumentThread();
-        dt->setObjectName(QString::fromAscii("MyMesh_%1").arg(i));
+        dt->setObjectName(QString::fromLatin1("MyMesh_%1").arg(i));
         QObject::connect(dt, SIGNAL(finished()), dt, SLOT(deleteLater()));
         dt->start();
     }
@@ -178,7 +178,7 @@ void CmdSandboxDocThreadWithSeq::activated(int iMsg)
 {
     App::GetApplication().newDocument("Thread");
     Sandbox::DocumentThread* dt = new Sandbox::DocumentThread();
-    dt->setObjectName(QString::fromAscii("MyMesh"));
+    dt->setObjectName(QString::fromLatin1("MyMesh"));
     QObject::connect(dt, SIGNAL(finished()), dt, SLOT(deleteLater()));
     dt->start();
 #ifdef FC_DEBUG
@@ -217,7 +217,7 @@ void CmdSandboxDocThreadBusy::activated(int iMsg)
 {
     App::GetApplication().newDocument("Thread");
     Sandbox::DocumentThread* dt = new Sandbox::DocumentThread();
-    dt->setObjectName(QString::fromAscii("MyMesh"));
+    dt->setObjectName(QString::fromLatin1("MyMesh"));
     QObject::connect(dt, SIGNAL(finished()), dt, SLOT(deleteLater()));
     dt->start();
 #ifdef FC_DEBUG
@@ -410,7 +410,7 @@ void CmdSandboxPythonThread::activated(int iMsg)
     App::GetApplication().newDocument("Thread");
     for (int i=0; i<5; i++) {
         Sandbox::PythonThread* pt = new Sandbox::PythonThread();
-        pt->setObjectName(QString::fromAscii("MyMesh_%1").arg(i));
+        pt->setObjectName(QString::fromLatin1("MyMesh_%1").arg(i));
         QObject::connect(pt, SIGNAL(finished()), pt, SLOT(deleteLater()));
         pt->start();
     }
@@ -462,7 +462,7 @@ void CmdSandboxDocThreadWithDialog::activated(int iMsg)
 {
     App::GetApplication().newDocument("Thread");
     Sandbox::DocumentThread* dt = new Sandbox::DocumentThread();
-    dt->setObjectName(QString::fromAscii("MyMesh"));
+    dt->setObjectName(QString::fromLatin1("MyMesh"));
     QObject::connect(dt, SIGNAL(finished()), dt, SLOT(deleteLater()));
     dt->start();
     //QFileDialog::getOpenFileName();
@@ -489,7 +489,7 @@ void CmdSandboxDocThreadWithFileDlg::activated(int iMsg)
 {
     App::GetApplication().newDocument("Thread");
     Sandbox::DocumentThread* dt = new Sandbox::DocumentThread();
-    dt->setObjectName(QString::fromAscii("MyMesh"));
+    dt->setObjectName(QString::fromLatin1("MyMesh"));
     QObject::connect(dt, SIGNAL(finished()), dt, SLOT(deleteLater()));
     dt->start();
     QFileDialog::getOpenFileName();
@@ -1014,9 +1014,9 @@ public:
         painter.drawPath(path);
         painter.setPen(Qt::white);
         painter.drawText(25, 40, 70, 20, Qt::AlignHCenter|Qt::AlignVCenter,
-            QString::fromAscii("Distance: 2.784mm"));
+            QString::fromLatin1("Distance: 2.784mm"));
         //QPainterPath text;
-        //text.addText(25,55,QFont(), QString::fromAscii("Distance"));
+        //text.addText(25,55,QFont(), QString::fromLatin1("Distance"));
         //painter.setBrush(QBrush(Qt::white, Qt::SolidPattern));
         //painter.drawPath(text);
     }
@@ -1054,7 +1054,7 @@ CmdTestImageNode::CmdTestImageNode()
 
 void CmdTestImageNode::activated(int iMsg)
 {
-    QString text = QString::fromAscii("Distance: 2.7jgiorjgor84mm");
+    QString text = QString::fromLatin1("Distance: 2.7jgiorjgor84mm");
     QFont font;
     QFontMetrics fm(font);
     int w = fm.width(text);
@@ -1168,10 +1168,10 @@ void CmdTestRedirectPaint::activated(int iMsg)
     QCalendarWidget* cal = new QCalendarWidget();
     QLabel* label = new QLabel();
     QPainter::setRedirected(cal,label);
-    cal->setWindowTitle(QString::fromAscii("QCalendarWidget"));
+    cal->setWindowTitle(QString::fromLatin1("QCalendarWidget"));
     cal->show();
     label->show();
-    label->setWindowTitle(QString::fromAscii("QLabel"));
+    label->setWindowTitle(QString::fromLatin1("QLabel"));
 }
 
 //===========================================================================
@@ -1193,7 +1193,7 @@ void CmdTestCryptographicHash::activated(int iMsg)
 {
     QByteArray data = "FreeCAD";
     QByteArray hash = QCryptographicHash::hash(data, QCryptographicHash::Md5);
-    QMessageBox::information(0,QLatin1String("Hash of: FreeCAD"),QString::fromAscii(hash));
+    QMessageBox::information(0,QLatin1String("Hash of: FreeCAD"),QString::fromLatin1(hash));
 }
 
 //===========================================================================
@@ -1353,13 +1353,13 @@ void CmdMengerSponge::activated(int iMsg)
 {
     bool ok;
     int level = QInputDialog::getInteger(Gui::getMainWindow(),
-        QString::fromAscii("Menger sponge"),
-        QString::fromAscii("Recursion depth:"),
+        QString::fromLatin1("Menger sponge"),
+        QString::fromLatin1("Recursion depth:"),
         3, 1, 5, 1, &ok);
     if (!ok) return;
     int ret = QMessageBox::question(Gui::getMainWindow(),
-        QString::fromAscii("Parallel"),
-        QString::fromAscii("Do you want to run this in a thread pool?"),
+        QString::fromLatin1("Parallel"),
+        QString::fromLatin1("Do you want to run this in a thread pool?"),
         QMessageBox::Yes|QMessageBox::No);
     bool parallel=(ret == QMessageBox::Yes);
     float x0=0,y0=0,z0=0;
@@ -1405,7 +1405,7 @@ CmdTestGraphicsView::CmdTestGraphicsView()
 void CmdTestGraphicsView::activated(int iMsg)
 {
     Gui::GraphicsView3D* view3D = new Gui::GraphicsView3D(getActiveGuiDocument(), Gui::getMainWindow());
-    view3D->setWindowTitle(QString::fromAscii("Graphics scene"));
+    view3D->setWindowTitle(QString::fromLatin1("Graphics scene"));
     view3D->setWindowIcon(QApplication::windowIcon());
     view3D->resize(400, 300);
     Gui::getMainWindow()->addWindow(view3D);
diff --git a/src/Mod/Sandbox/Gui/GLGraphicsView.cpp b/src/Mod/Sandbox/Gui/GLGraphicsView.cpp
index 26c7bf441..0c6feddef 100644
--- a/src/Mod/Sandbox/Gui/GLGraphicsView.cpp
+++ b/src/Mod/Sandbox/Gui/GLGraphicsView.cpp
@@ -265,7 +265,7 @@ void GraphicsScene::drawBackground(QPainter *painter, const QRectF &)
 
     painter->save();
     painter->fillRect(40,40,40,60,Qt::lightGray);
-    painter->drawText(50,50, QString::fromAscii("Done with QPainter"));
+    painter->drawText(50,50, QString::fromLatin1("Done with QPainter"));
     painter->restore();
 
     QTimer::singleShot(20, this, SLOT(update()));
diff --git a/src/Mod/Sandbox/Gui/Overlay.cpp b/src/Mod/Sandbox/Gui/Overlay.cpp
index 273887135..b355d680c 100644
--- a/src/Mod/Sandbox/Gui/Overlay.cpp
+++ b/src/Mod/Sandbox/Gui/Overlay.cpp
@@ -59,7 +59,7 @@ public:
         {
             QPainter p(&img);
             p.setPen(Qt::white);
-            p.drawText(200,200,QString::fromAscii("Render to QImage"));
+            p.drawText(200,200,QString::fromLatin1("Render to QImage"));
         }
 
         img = QGLWidget::convertToGLFormat(img);
@@ -70,7 +70,7 @@ public:
         {
             QPainter p(fbo);
             p.setPen(Qt::white);
-            p.drawText(200,200,QString::fromAscii("Render to QGLFramebufferObject"));
+            p.drawText(200,200,QString::fromLatin1("Render to QGLFramebufferObject"));
             p.end();
             //img = fbo->toImage();
             //img = QGLWidget::convertToGLFormat(img);
@@ -498,7 +498,7 @@ void DrawingPlane::terminate()
     SoGLRenderAction a(SbViewportRegion(128,128));
     a.apply(_pcView3D->getSoRenderManager()->getSceneGraph());
     fbo->release();
-    fbo->toImage().save(QString::fromAscii("C:/Temp/DrawingPlane.png"));
+    fbo->toImage().save(QString::fromLatin1("C:/Temp/DrawingPlane.png"));
     delete fbo;
 }
 
diff --git a/src/Mod/Sandbox/Gui/TaskPanelView.cpp b/src/Mod/Sandbox/Gui/TaskPanelView.cpp
index b9723c148..1ebe6952f 100644
--- a/src/Mod/Sandbox/Gui/TaskPanelView.cpp
+++ b/src/Mod/Sandbox/Gui/TaskPanelView.cpp
@@ -388,62 +388,62 @@ TaskPanelView::TaskPanelView(QWidget *parent)
     tabWidget->addTab(page1, QLatin1String("Action Box"));
 
     // setup ActionBox 1
-    ui->ActionBox1->setIcon(QPixmap(QString::fromAscii(":/icons/document-open.svg")));
-    ui->ActionBox1->header()->setText(QString::fromAscii("Header of the group"));
+    ui->ActionBox1->setIcon(QPixmap(QString::fromLatin1(":/icons/document-open.svg")));
+    ui->ActionBox1->header()->setText(QString::fromLatin1("Header of the group"));
     connect(ui->ActionBox1->header(), SIGNAL(clicked()), action, SIGNAL(triggered()));
 
-    QSint::ActionLabel *a1 = ui->ActionBox1->createItem(QString::fromAscii("This action has no icon"));
+    QSint::ActionLabel *a1 = ui->ActionBox1->createItem(QString::fromLatin1("This action has no icon"));
     connect(a1, SIGNAL(clicked()), action, SIGNAL(triggered()));
-    QSint::ActionLabel *a2 = ui->ActionBox1->createItem(QPixmap(QString::fromAscii(":/icons/document-print.svg")),
-                                                QString::fromAscii("This action has icon"));
+    QSint::ActionLabel *a2 = ui->ActionBox1->createItem(QPixmap(QString::fromLatin1(":/icons/document-print.svg")),
+                                                QString::fromLatin1("This action has icon"));
     connect(a2, SIGNAL(clicked()), action, SIGNAL(triggered()));
 
     QLayout *hbl1 = ui->ActionBox1->createHBoxLayout();
-    QSint::ActionLabel *a3 = ui->ActionBox1->createItem(QString::fromAscii("1st action in row"), hbl1);
+    QSint::ActionLabel *a3 = ui->ActionBox1->createItem(QString::fromLatin1("1st action in row"), hbl1);
     connect(a3, SIGNAL(clicked()), action, SIGNAL(triggered()));
-    QSint::ActionLabel *a4 = ui->ActionBox1->createItem(QString::fromAscii("2nd action in row"), hbl1);
+    QSint::ActionLabel *a4 = ui->ActionBox1->createItem(QString::fromLatin1("2nd action in row"), hbl1);
     connect(a4, SIGNAL(clicked()), action, SIGNAL(triggered()));
 
     // setup ActionBox 2
-    ui->ActionBox2->setIcon(QPixmap(QString::fromAscii(":/icons/document-save.png")));
-    ui->ActionBox2->header()->setText(QString::fromAscii("Checkable actions allowed"));
+    ui->ActionBox2->setIcon(QPixmap(QString::fromLatin1(":/icons/document-save.png")));
+    ui->ActionBox2->header()->setText(QString::fromLatin1("Checkable actions allowed"));
     connect(ui->ActionBox2->header(), SIGNAL(clicked()), action, SIGNAL(triggered()));
 
-    QSint::ActionLabel *b1 = ui->ActionBox2->createItem(QString::fromAscii("Action 1 (Exclusive)"));
+    QSint::ActionLabel *b1 = ui->ActionBox2->createItem(QString::fromLatin1("Action 1 (Exclusive)"));
     b1->setCheckable(true);
     b1->setAutoExclusive(true);
     b1->setChecked(true);
-    QSint::ActionLabel *b2 = ui->ActionBox2->createItem(QString::fromAscii("Action 2 (Exclusive)"));
+    QSint::ActionLabel *b2 = ui->ActionBox2->createItem(QString::fromLatin1("Action 2 (Exclusive)"));
     b2->setCheckable(true);
     b2->setAutoExclusive(true);
-    QSint::ActionLabel *b3 = ui->ActionBox2->createItem(QString::fromAscii("Action 3 (Exclusive)"));
+    QSint::ActionLabel *b3 = ui->ActionBox2->createItem(QString::fromLatin1("Action 3 (Exclusive)"));
     b3->setCheckable(true);
     b3->setAutoExclusive(true);
 
-    QSint::ActionLabel *b4 = ui->ActionBox2->createItem(QString::fromAscii("Non-exclusive but still checkable"));
+    QSint::ActionLabel *b4 = ui->ActionBox2->createItem(QString::fromLatin1("Non-exclusive but still checkable"));
     b4->setCheckable(true);
 
     // setup ActionBox 3
-    ui->ActionBox3->setIcon(QPixmap(QString::fromAscii(":/icons/document-print.png")));
-    ui->ActionBox3->header()->setText(QString::fromAscii("Also, widgets allowed as well"));
+    ui->ActionBox3->setIcon(QPixmap(QString::fromLatin1(":/icons/document-print.png")));
+    ui->ActionBox3->header()->setText(QString::fromLatin1("Also, widgets allowed as well"));
 
-    ui->ActionBox3->addWidget(new QPushButton(QString::fromAscii("PushButton"), this));
-    ui->ActionBox3->addWidget(new QCheckBox(QString::fromAscii("CheckBox"), this));
+    ui->ActionBox3->addWidget(new QPushButton(QString::fromLatin1("PushButton"), this));
+    ui->ActionBox3->addWidget(new QCheckBox(QString::fromLatin1("CheckBox"), this));
     QLayout *hbl3 = ui->ActionBox3->createHBoxLayout();
-    ui->ActionBox3->addWidget(new QRadioButton(QString::fromAscii("RadioButton 1"), this), hbl3);
-    ui->ActionBox3->addWidget(new QRadioButton(QString::fromAscii("RadioButton 2"), this), hbl3);
+    ui->ActionBox3->addWidget(new QRadioButton(QString::fromLatin1("RadioButton 1"), this), hbl3);
+    ui->ActionBox3->addWidget(new QRadioButton(QString::fromLatin1("RadioButton 2"), this), hbl3);
 
     // setup ActionBox 4
-    ui->ActionBox4->setIcon(QPixmap(QString::fromAscii(":/icons/document-open.png")));
-    ui->ActionBox4->header()->setText(QString::fromAscii("ActionBox with different scheme"));
+    ui->ActionBox4->setIcon(QPixmap(QString::fromLatin1(":/icons/document-open.png")));
+    ui->ActionBox4->header()->setText(QString::fromLatin1("ActionBox with different scheme"));
 
-    ui->ActionBox4->createItem(QString::fromAscii("This action has no icon"));
-    ui->ActionBox4->createItem(QPixmap(QString::fromAscii(":/icons/document-print.png")),
-                                                QString::fromAscii("This action has icon"));
+    ui->ActionBox4->createItem(QString::fromLatin1("This action has no icon"));
+    ui->ActionBox4->createItem(QPixmap(QString::fromLatin1(":/icons/document-print.png")),
+                                                QString::fromLatin1("This action has icon"));
     QLayout *hbl4 = ui->ActionBox4->createHBoxLayout();
-    ui->ActionBox4->createItem(QString::fromAscii("1st action in row"), hbl4);
-    ui->ActionBox4->createItem(QString::fromAscii("2nd action in row"), hbl4);
-    ui->ActionBox4->createItem(QString::fromAscii("3rd action in row"), hbl4);
+    ui->ActionBox4->createItem(QString::fromLatin1("1st action in row"), hbl4);
+    ui->ActionBox4->createItem(QString::fromLatin1("2nd action in row"), hbl4);
+    ui->ActionBox4->createItem(QString::fromLatin1("3rd action in row"), hbl4);
 
     const char* ActionBoxNewStyle =
         "QSint--ActionBox {"
@@ -490,17 +490,17 @@ TaskPanelView::TaskPanelView(QWidget *parent)
         "}"
     ;
 
-    ui->ActionBox4->setStyleSheet(QString::fromAscii(ActionBoxNewStyle));
+    ui->ActionBox4->setStyleSheet(QString::fromLatin1(ActionBoxNewStyle));
 
     // setup ActionBox 5
     Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
-    ui->ActionBox5->setIcon(QPixmap(QString::fromAscii(":/icons/document-save.png")));
-    ui->ActionBox5->header()->setText(QString::fromAscii("TaskGroup with different scheme"));
+    ui->ActionBox5->setIcon(QPixmap(QString::fromLatin1(":/icons/document-save.png")));
+    ui->ActionBox5->header()->setText(QString::fromLatin1("TaskGroup with different scheme"));
 
     rcCmdMgr.addTo("Std_New", ui->ActionBox5);
     rcCmdMgr.addTo("Std_Open", ui->ActionBox5);
     rcCmdMgr.addTo("Std_Save", ui->ActionBox5);
-    ui->ActionBox5->setStyleSheet(QString::fromAscii(ActionBoxNewStyle));
+    ui->ActionBox5->setStyleSheet(QString::fromLatin1(ActionBoxNewStyle));
     }
     {
     Ui_TaskGroup* ui(new Ui_TaskGroup);
@@ -512,22 +512,22 @@ TaskPanelView::TaskPanelView(QWidget *parent)
 
     // create ActionGroups on ActionPanel
     QIcon save = QIcon::fromTheme(QString::fromLatin1("document-save"));
-    QSint::ActionGroup *group1 = ui->ActionPanel->createGroup(save.pixmap(24,24), QString::fromAscii("Expandable Group"));
+    QSint::ActionGroup *group1 = ui->ActionPanel->createGroup(save.pixmap(24,24), QString::fromLatin1("Expandable Group"));
     group1->addAction(ui->actionNew);
     group1->addAction(ui->actionLoad);
-    group1->addWidget(new QPushButton(QString::fromAscii("Just a button"), this));
+    group1->addWidget(new QPushButton(QString::fromLatin1("Just a button"), this));
     group1->addAction(ui->actionSave);
     group1->addAction(ui->actionPrint);
-    group1->addWidget(new QPushButton(QString::fromAscii("Just another button"), this));
+    group1->addWidget(new QPushButton(QString::fromLatin1("Just another button"), this));
 
     QIcon redo = QIcon::fromTheme(QString::fromLatin1("edit-redo"));
-    QSint::ActionGroup *group2 = ui->ActionPanel->createGroup(redo.pixmap(24,24), QString::fromAscii("Non-Expandable Group"), false);
+    QSint::ActionGroup *group2 = ui->ActionPanel->createGroup(redo.pixmap(24,24), QString::fromLatin1("Non-Expandable Group"), false);
     group2->addAction(ui->actionNew);
     group2->addAction(ui->actionLoad);
     group2->addAction(ui->actionSave);
     group2->addAction(ui->actionPrint);
 
-    ui->ActionPanel->addWidget(new QLabel(QString::fromAscii("Action Group without header"), this));
+    ui->ActionPanel->addWidget(new QLabel(QString::fromLatin1("Action Group without header"), this));
 
     QSint::ActionGroup *group3 = ui->ActionPanel->createGroup();
     group3->addAction(ui->actionNew);
@@ -585,7 +585,7 @@ TaskPanelView::TaskPanelView(QWidget *parent)
     QGridLayout* gridLayout = new QGridLayout(this);
     iisTaskPanel *taskPanel = new iisTaskPanel(this);
     iisTaskBox *tb1 = new iisTaskBox(
-        QPixmap(QString::fromAscii(":/icons/document-save.svg")),QLatin1String("Expandable Group"),true, this);
+        QPixmap(QString::fromLatin1(":/icons/document-save.svg")),QLatin1String("Expandable Group"),true, this);
     taskPanel->addWidget(tb1);
     gridLayout->addWidget(taskPanel, 0, 0, 2, 1);
 
@@ -678,7 +678,7 @@ TaskPanelView::~TaskPanelView()
 
 void TaskPanelView::executeAction()
 {
-    QMessageBox::about(0, QString::fromAscii("Action clicked"), QString::fromAscii("Do something here :)"));
+    QMessageBox::about(0, QString::fromLatin1("Action clicked"), QString::fromLatin1("Do something here :)"));
 }
 
 void TaskPanelView::on_rbDefaultScheme_toggled(bool b)
diff --git a/src/Mod/Sandbox/Gui/Workbench.cpp b/src/Mod/Sandbox/Gui/Workbench.cpp
index 9f732814e..e2de1b877 100644
--- a/src/Mod/Sandbox/Gui/Workbench.cpp
+++ b/src/Mod/Sandbox/Gui/Workbench.cpp
@@ -51,7 +51,7 @@ Workbench::Workbench()
 {
     // Tree view
     Gui::DockWindow* tree = new Gui::DockWindow(0, Gui::getMainWindow());
-    tree->setWindowTitle(QString::fromAscii("Tree view"));
+    tree->setWindowTitle(QString::fromLatin1("Tree view"));
     Gui::TreeView* treeWidget = new Gui::TreeView(tree);
     treeWidget->setRootIsDecorated(false);
     ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/TreeView");
@@ -63,7 +63,7 @@ Workbench::Workbench()
     pLayout->addWidget(treeWidget, 0, 0);
 
     tree->setObjectName
-        (QString::fromAscii(QT_TRANSLATE_NOOP("QDockWidget","Tree view (MVC)")));
+        (QString::fromLatin1(QT_TRANSLATE_NOOP("QDockWidget","Tree view (MVC)")));
     tree->setMinimumWidth(210);
     Gui::DockWindowManager* pDockMgr = Gui::DockWindowManager::instance();
     pDockMgr->registerDockWindow("Std_TreeViewMVC", tree);
diff --git a/src/Tools/ImageTools/ImageConv/imageconv.cpp b/src/Tools/ImageTools/ImageConv/imageconv.cpp
index c644f832e..99dc7df42 100644
--- a/src/Tools/ImageTools/ImageConv/imageconv.cpp
+++ b/src/Tools/ImageTools/ImageConv/imageconv.cpp
@@ -83,7 +83,7 @@ bool CImageConvApp::Save(const QString& fn)
     {
         if (!fn.isEmpty())
         {
-            return m_clPixmap.save(fn, ext.toUpper().toAscii());
+            return m_clPixmap.save(fn, ext.toUpper().toLatin1());
         }
     }
 
@@ -113,7 +113,7 @@ bool CImageConvApp::ConvertToXPM(bool bAppendToFile)
     cout << "Try converting to XPM..." << endl;
     if (list.count() == 0)
     {
-        cout << "Cannot find " << (const char*)m_Dir.nameFilters().join(" ").toAscii() << endl;
+        cout << "Cannot find " << (const char*)m_Dir.nameFilters().join(" ").toLatin1() << endl;
         return false;
     }
 
@@ -126,7 +126,7 @@ bool CImageConvApp::ConvertToXPM(bool bAppendToFile)
         if (m_Output == *it)
             continue; // if the file is the output file itself
 
-        cout << "Converting " << (const char*)(*it).toAscii() << " ...";
+        cout << "Converting " << (const char*)(*it).toLatin1() << " ...";
     
         if (Load(*it) == true)
         {
@@ -250,21 +250,21 @@ bool CImageConvApp::AppendToFile(const QString& file)
 
 void CImageConvApp::Error()
 {
-    cerr << "Usage: " << (const char*)m_Executable.toAscii() << " [OPTION(S)] -i input file(s) {-o output file}" << endl;
-    cerr << "Try '"   << (const char*)m_Executable.toAscii() << " --help' for more information." << endl;
+    cerr << "Usage: " << (const char*)m_Executable.toLatin1() << " [OPTION(S)] -i input file(s) {-o output file}" << endl;
+    cerr << "Try '"   << (const char*)m_Executable.toLatin1() << " --help' for more information." << endl;
 
     exit(0);
 }
 
 void CImageConvApp::Version()
 {
-    cerr << (const char*)m_Executable.toAscii() << " 1.0.0 " << endl;
+    cerr << (const char*)m_Executable.toLatin1() << " 1.0.0 " << endl;
     exit(0);
 }
 
 void CImageConvApp::Usage()
 {
-    cerr << "Usage: " << (const char*)m_Executable.toAscii() << " [OPTION(S)] -i input file(s) {-o output file}\n" << endl;
+    cerr << "Usage: " << (const char*)m_Executable.toLatin1() << " [OPTION(S)] -i input file(s) {-o output file}\n" << endl;
     cerr << "Options:" << endl;
 
     cerr << "  -i       \tSpecify the input file(s).\n"
@@ -297,7 +297,7 @@ void CImageConvApp::Usage()
 
     cerr << "This program supports the following image formats:\n"
             " BMP, GIF, JPEG, MNG, PNG, PNM, XBM and XPM\n\n"
-         << (const char*)m_Executable.toAscii() << " uses Qt Version " << qVersion() << "\n"
+         << (const char*)m_Executable.toLatin1() << " uses Qt Version " << qVersion() << "\n"
             "Qt can be downloaded at http://www.trolltech.com." << endl;
 
     exit(0);
diff --git a/src/Tools/ImageTools/ImageConv/main.cpp b/src/Tools/ImageTools/ImageConv/main.cpp
index 7ce23857a..d65f399fc 100644
--- a/src/Tools/ImageTools/ImageConv/main.cpp
+++ b/src/Tools/ImageTools/ImageConv/main.cpp
@@ -136,7 +136,7 @@ int main( int argc, char **argv )
     }
     catch(const CICException& e)
     {
-        cerr << (const char*)e.what().toAscii() << endl;
+        cerr << (const char*)e.what().toLatin1() << endl;
         CImageConvApp::Error();
     }
     catch(...)
diff --git a/src/Tools/plugins/imageformats/svg/qsvgiohandler.cpp b/src/Tools/plugins/imageformats/svg/qsvgiohandler.cpp
index 0a1a53253..5144194c6 100644
--- a/src/Tools/plugins/imageformats/svg/qsvgiohandler.cpp
+++ b/src/Tools/plugins/imageformats/svg/qsvgiohandler.cpp
@@ -111,13 +111,13 @@ bool QSvgIOHandlerPrivate::load(QIODevice *device)
         loaded = true;
     }
 #else
-    webView.setContent(device->readAll(), QString::fromAscii("image/svg+xml"));
-    QString node = QString::fromAscii("document.rootElement.nodeName");
+    webView.setContent(device->readAll(), QString::fromLatin1("image/svg+xml"));
+    QString node = QString::fromLatin1("document.rootElement.nodeName");
     QString root = webView.page()->mainFrame()->evaluateJavaScript(node).toString();
 
     if (!root.isEmpty() && root.compare(QLatin1String("svg"), Qt::CaseInsensitive) == 0) {
-        QString w = QString::fromAscii("document.rootElement.width.baseVal.value");
-        QString h = QString::fromAscii("document.rootElement.height.baseVal.value");
+        QString w = QString::fromLatin1("document.rootElement.width.baseVal.value");
+        QString h = QString::fromLatin1("document.rootElement.height.baseVal.value");
         double ww = webView.page()->mainFrame()->evaluateJavaScript(w).toDouble();
         double hh = webView.page()->mainFrame()->evaluateJavaScript(h).toDouble();